/* 能飞后台：长页面、基础资料管理与操作反馈统一收口 */
.nf-flash-stack{position:fixed;top:82px;right:22px;z-index:12050;display:flex;flex-direction:column;gap:10px;width:min(420px,calc(100vw - 32px));pointer-events:none}
.nf-flash-stack .nf-flash-toast{margin:0!important;box-shadow:0 16px 42px rgba(22,34,48,.18);border-radius:12px!important;pointer-events:auto;animation:nfToastIn .18s ease-out both}
.nf-flash-stack .nf-flash-toast.is-leaving{animation:nfToastOut .16s ease-in both}
@keyframes nfToastIn{from{opacity:0;transform:translateY(-8px) scale(.985)}to{opacity:1;transform:none}}
@keyframes nfToastOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(-6px) scale(.985)}}

body.app-body.raw-route-catalog .nf-catalog-tabs{position:sticky;top:74px;z-index:24;display:flex;gap:6px;overflow-x:auto;margin:0 0 14px;padding:6px;border:1px solid #E5EAF0;border-radius:12px;background:rgba(255,255,255,.96);box-shadow:0 4px 18px rgba(20,34,50,.05);backdrop-filter:blur(10px)}
body.app-body.raw-route-catalog .nf-catalog-tabs a{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border-radius:9px;color:#617184;font-weight:760;white-space:nowrap;text-decoration:none}
body.app-body.raw-route-catalog .nf-catalog-tabs a:hover{background:#F7F9FB;color:#304459}
body.app-body.raw-route-catalog .nf-catalog-tabs a.active{background:#FAEEE9;color:#C74726}
body.app-body.raw-route-catalog .nf-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:20px;padding:0 6px;border-radius:999px;background:#F1F4F7;color:#6C7B8D;font-size:11px;font-weight:800}
body.app-body.raw-route-catalog .nf-catalog-tabs a.active .nf-tab-count{background:#FFF8F4;color:#C74726}
body.app-body.raw-route-catalog .nf-catalog-filter{padding:12px 14px;margin-bottom:14px}
body.app-body.raw-route-catalog .nf-catalog-filter .toolbar{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:0}
body.app-body.raw-route-catalog .nf-catalog-filter .toolbar>div{margin:0}
body.app-body.raw-route-catalog .nf-filter-grow{flex:1 1 360px;min-width:260px}
body.app-body.raw-route-catalog .nf-filter-actions{display:flex;gap:8px;align-items:center;padding-bottom:1px}
body.app-body.raw-route-catalog .panel-head{align-items:center;gap:14px}
body.app-body.raw-route-catalog .panel-head>details{flex:0 0 auto}
body.app-body.raw-route-catalog .table-actions{gap:6px}
body.app-body.raw-route-catalog .table-wrap td.wrap{max-width:340px;white-space:normal;line-height:1.5}
body.app-body.raw-route-catalog .empty{padding:26px 18px;text-align:center;color:#8A97A6}

@media(max-width:980px){
  .nf-flash-stack{top:70px;right:12px;width:calc(100vw - 24px)}
  body.app-body.raw-route-catalog .nf-catalog-tabs{top:62px}
  body.app-body.raw-route-catalog .nf-catalog-filter .toolbar{display:grid;grid-template-columns:1fr 1fr}
  body.app-body.raw-route-catalog .nf-filter-grow{grid-column:1/-1;min-width:0}
  body.app-body.raw-route-catalog .nf-filter-actions{grid-column:1/-1}
}
@media(max-width:620px){
  body.app-body.raw-route-catalog .nf-catalog-filter .toolbar{grid-template-columns:1fr}
  body.app-body.raw-route-catalog .nf-filter-grow,body.app-body.raw-route-catalog .nf-filter-actions{grid-column:auto}
  body.app-body.raw-route-catalog .nf-filter-actions .btn{flex:1}
}

/* 全后台长页面快速导航 */
.nf-long-page-nav{position:sticky;top:70px;z-index:23;margin:0 0 14px;padding:6px;border:1px solid #E4E9EF;border-radius:13px;background:rgba(255,255,255,.96);box-shadow:0 5px 18px rgba(24,39,58,.055);backdrop-filter:blur(10px)}
.nf-long-page-nav-inner{display:flex;align-items:center;gap:6px;overflow-x:auto;scrollbar-width:thin}
.nf-long-page-nav a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:9px;white-space:nowrap;text-decoration:none;color:#617184;font-size:13px;font-weight:760}
.nf-long-page-nav a:hover{background:#F7F9FB;color:#32485E}.nf-long-page-nav a.active{background:#FAEEE9;color:#B8482C}
.nf-long-section{scroll-margin-top:128px}
.btn.is-submitting{opacity:.62;cursor:wait;pointer-events:none}

/* 管理型页面统一减少无效纵向空间；仅调整密度，不改业务组件语义 */
body.app-body.raw-route-enterprise_view .panel,
body.app-body.raw-route-manufacturer_aftersales .panel,
body.app-body.raw-route-service_network_v5 .panel,
body.app-body.raw-route-academy .panel,
body.app-body.raw-route-commercial_products .panel,
body.app-body.raw-route-maintenance_center .panel{scroll-margin-top:128px}
body.app-body .table-actions form,body.app-body .row-actions form{margin:0}
body.app-body .table-actions,body.app-body .row-actions{align-items:center}

@media(max-width:980px){.nf-long-page-nav{top:60px;margin-left:-2px;margin-right:-2px}.nf-long-section{scroll-margin-top:116px}}

/* ============================================================
   2026-09-24 角色权限页最终布局修复（最后加载层）
   原因：该页权限卡与超宽权限对照表共同参与文档宽度计算，且前序
   样式给 content 设置 overflow-x 后会破坏 sticky，导致首列被固定
   侧栏覆盖、页面产生整页横向滚动、角色切换条无法持续可见。
   ============================================================ */
html:has(body.app-body.raw-route-roles),
body.app-body.raw-route-roles{
  max-width:100%!important;
  overflow-x:hidden!important;
}
body.app-body.raw-route-roles .app-shell{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:hidden!important;
}
@media (min-width:981px){
  body.app-body.raw-route-roles .content{
    margin-left:252px!important;
    width:auto!important;
    max-width:calc(100vw - 252px)!important;
    min-width:0!important;
    flex:1 1 auto!important;
    overflow:visible!important;
  }
}
body.app-body.raw-route-roles .page{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding-left:22px!important;
  padding-right:22px!important;
  padding-bottom:150px!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .page>*{
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .permission-editor,
body.app-body.raw-route-roles .nf-role-permission-panel,
body.app-body.raw-route-roles .nf-role-editor-panel,
body.app-body.raw-route-roles .nf-role-library-panel{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin-left:0!important;
  margin-right:0!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:12px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  position:static!important;
  transform:none!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  height:auto!important;
  max-height:none!important;
  margin:0!important;
  padding:14px!important;
  overflow:visible!important;
  position:static!important;
  transform:none!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .permission-group-head,
body.app-body.raw-route-roles .permission-item,
body.app-body.raw-route-roles .permission-item>span{
  min-width:0!important;
  max-width:100%!important;
}
body.app-body.raw-route-roles .permission-item b,
body.app-body.raw-route-roles .permission-item small{
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
}
body.app-body.raw-route-roles .nf-role-switcher-panel{
  position:sticky!important;
  top:74px!important;
  z-index:24!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0 0 12px!important;
  padding:11px 13px!important;
  overflow:hidden!important;
  background:rgba(255,255,255,.98)!important;
  border:1px solid #E2E7EA!important;
  box-shadow:0 8px 22px rgba(32,42,51,.08)!important;
  backdrop-filter:blur(10px)!important;
}
body.app-body.raw-route-roles .nf-role-switcher-row{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  min-width:0!important;
}
body.app-body.raw-route-roles .nf-role-switcher-copy{min-width:180px!important;flex:1 1 auto!important}
body.app-body.raw-route-roles .nf-role-switcher{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important;flex:0 0 auto!important;margin:0!important}
body.app-body.raw-route-roles .nf-role-switcher select{min-width:210px!important;max-width:300px!important;height:38px!important}
body.app-body.raw-route-roles .nf-role-quick-list{
  display:flex!important;
  align-items:center!important;
  gap:6px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin-top:9px!important;
  padding-top:9px!important;
  border-top:1px solid #EDF0F2!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  scrollbar-width:thin!important;
  overscroll-behavior-inline:contain!important;
}
body.app-body.raw-route-roles .nf-role-quick-chip{
  flex:0 0 auto!important;
  display:inline-flex!important;
  align-items:center!important;
  min-height:30px!important;
  padding:0 10px!important;
  border:1px solid #E2E7EA!important;
  border-radius:999px!important;
  background:#F8FAFA!important;
  color:#53616D!important;
  font-size:12px!important;
  font-weight:750!important;
  text-decoration:none!important;
  white-space:nowrap!important;
}
body.app-body.raw-route-roles .nf-role-quick-chip.active{
  border-color:#D96542!important;
  background:#FFF0EA!important;
  color:#B84F34!important;
}
body.app-body.raw-route-roles .nf-role-matrix-panel{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
}
body.app-body.raw-route-roles .nf-role-matrix-panel>.table-wrap{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-inline:contain!important;
}
body.app-body.raw-route-roles .nf-role-matrix-panel .permission-matrix{
  width:max-content!important;
  min-width:100%!important;
  max-width:none!important;
}
body.app-body.raw-route-roles .nf-role-matrix-panel .permission-matrix th,
body.app-body.raw-route-roles .nf-role-matrix-panel .permission-matrix td{white-space:nowrap!important}

@media(max-width:1180px){
  body.app-body.raw-route-roles .nf-role-permission-grid{grid-template-columns:1fr!important}
  body.app-body.raw-route-roles .nf-role-switcher-row{align-items:flex-start!important;flex-direction:column!important}
  body.app-body.raw-route-roles .nf-role-switcher{width:100%!important;justify-content:flex-start!important;flex-wrap:wrap!important}
}
@media(max-width:980px){
  body.app-body.raw-route-roles .content{margin-left:0!important;max-width:100%!important;overflow:visible!important}
  body.app-body.raw-route-roles .page{padding-left:16px!important;padding-right:16px!important}
  body.app-body.raw-route-roles .nf-role-switcher-panel{top:64px!important}
}
@media(max-width:700px){
  body.app-body.raw-route-roles .page{padding-left:10px!important;padding-right:10px!important}
  body.app-body.raw-route-roles .nf-role-switcher-panel{position:relative!important;top:auto!important}
  body.app-body.raw-route-roles .nf-role-switcher select{width:100%!important;max-width:none!important}
}

/* ============================================================
   角色权限矩阵：消除侧栏覆盖并优化权限分组
   1) 角色页桌面端退出 flex 宽度推导，工作区固定占用“视口 - 左侧栏”
   2) 权限模块改为纵向完整分组，每组内部 3/2/1 列，避免卡片长短交错
   3) 取消底部 sticky 保存条，避免长页面底部内容被覆盖
   ============================================================ */
@media (min-width:981px){
  body.app-body.raw-route-roles .app-shell{
    display:block!important;
    position:relative!important;
    width:100vw!important;
    max-width:100vw!important;
    min-width:0!important;
    overflow-x:hidden!important;
  }
  body.app-body.raw-route-roles .sidebar{
    width:248px!important;
  }
  body.app-body.raw-route-roles .content{
    display:block!important;
    position:relative!important;
    margin-left:248px!important;
    width:calc(100vw - 248px)!important;
    max-width:calc(100vw - 248px)!important;
    min-width:0!important;
    flex:none!important;
    overflow-x:hidden!important;
    box-sizing:border-box!important;
  }
  body.app-body.raw-route-roles .topbar{
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  body.app-body.raw-route-roles .page{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    margin:0!important;
    padding:18px 20px 150px!important;
    box-sizing:border-box!important;
    overflow:visible!important;
  }
}

/* 权限编辑区只允许自身占满主工作区，不再参与整页横向宽度计算 */
body.app-body.raw-route-roles .nf-role-permission-panel,
body.app-body.raw-route-roles .permission-editor,
body.app-body.raw-route-roles .nf-role-permission-grid{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}

/* 外层不再做两列/三列卡片墙，彻底避免长短不一的错落 */
body.app-body.raw-route-roles .nf-role-permission-grid{
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
}

/* 每个业务模块占一整行；权限项在模块内部规则排成三列 */
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:8px 10px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  height:auto!important;
  max-height:none!important;
  margin:0!important;
  padding:14px 15px 15px!important;
  overflow:visible!important;
  align-self:stretch!important;
  border:1px solid #E5EAED!important;
  border-radius:13px!important;
  background:#fff!important;
  box-shadow:0 4px 14px rgba(32,42,51,.035)!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-group-head{
  grid-column:1/-1!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  min-height:38px!important;
  margin:0 0 2px!important;
  padding:0 0 9px!important;
  border-bottom:1px solid #EDF0F2!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-group-head h3{
  margin:0!important;
  color:#26343F!important;
  font-size:15px!important;
  line-height:1.35!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-item{
  display:flex!important;
  align-items:flex-start!important;
  gap:8px!important;
  min-width:0!important;
  min-height:58px!important;
  margin:0!important;
  padding:9px 10px!important;
  border:1px solid #EDF0F2!important;
  border-radius:10px!important;
  background:#FAFBFB!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-item:hover{
  border-color:#E7C7BB!important;
  background:#FFF9F6!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-item input{
  flex:0 0 auto!important;
  margin-top:3px!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-item>span{
  min-width:0!important;
  width:100%!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-item b{
  display:block!important;
  color:#34414C!important;
  font-size:13px!important;
  line-height:1.4!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-item small{
  display:block!important;
  margin-top:2px!important;
  color:#87939D!important;
  font-size:10.8px!important;
  line-height:1.45!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
}

/* 顶部已有“保存当前权限”，底部保存只做普通收口，不再悬浮遮住后面的权限 */
body.app-body.raw-route-roles .permission-save{
  position:static!important;
  bottom:auto!important;
  z-index:auto!important;
  margin:16px 0 0!important;
  padding:14px 0 0!important;
  border-top:1px solid #ECEFF1!important;
  background:transparent!important;
}

/* 超宽角色对照表只能在自身区域滚动，绝不能撑宽主页面 */
body.app-body.raw-route-roles .nf-role-matrix-panel{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
}
body.app-body.raw-route-roles .nf-role-matrix-panel>.table-wrap{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
}

@media(max-width:1380px) and (min-width:981px){
  body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:980px){
  body.app-body.raw-route-roles .app-shell{display:block!important;width:100%!important;max-width:100%!important;overflow-x:hidden!important}
  body.app-body.raw-route-roles .content{margin-left:0!important;width:100%!important;max-width:100%!important;min-width:0!important;flex:none!important;overflow-x:hidden!important}
  body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:680px){
  body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group{grid-template-columns:1fr!important;padding:12px!important}
  body.app-body.raw-route-roles .nf-role-permission-grid>.permission-group>.permission-item{min-height:54px!important}
}

/* ============================================================
   角色权限矩阵：结构优化
   根因：角色资料表单历史 HTML 存在多余闭合 DIV，导致后续权限编辑区
   被浏览器移出 .page 正常布局树；此前仅用 CSS 补偿，因此滚动到不同
   配合 roles.php 修正 DOM 结构，以下
   样式只负责正常布局，不再使用位移/视口宽度补偿。
   ============================================================ */
@media (min-width:981px){
  body.app-body.raw-route-roles .app-shell{
    display:flex!important;
    width:auto!important;
    max-width:none!important;
    min-width:0!important;
    overflow:visible!important;
  }
  body.app-body.raw-route-roles .sidebar{width:252px!important}
  body.app-body.raw-route-roles .content{
    display:block!important;
    position:relative!important;
    margin-left:252px!important;
    width:auto!important;
    max-width:none!important;
    min-width:0!important;
    flex:1 1 auto!important;
    overflow-x:hidden!important;
    box-sizing:border-box!important;
  }
  body.app-body.raw-route-roles .page{
    width:auto!important;
    max-width:1840px!important;
    min-width:0!important;
    margin:0 auto!important;
    padding:18px 22px 120px!important;
    overflow:visible!important;
    box-sizing:border-box!important;
  }
}

/* 角色页所有主要块必须留在 page 正常文档流内 */
body.app-body.raw-route-roles .page>.panel,
body.app-body.raw-route-roles .page>.permission-domain-tabs,
body.app-body.raw-route-roles .nf-role-library-panel,
body.app-body.raw-route-roles .nf-role-switcher-panel,
body.app-body.raw-route-roles .nf-role-editor-panel,
body.app-body.raw-route-roles .nf-role-permission-panel,
body.app-body.raw-route-roles .nf-role-matrix-panel{
  position:relative!important;
  left:auto!important;
  right:auto!important;
  transform:none!important;
  width:auto!important;
  max-width:100%!important;
  min-width:0!important;
  margin-left:0!important;
  margin-right:0!important;
  box-sizing:border-box!important;
}

/* 角色切换区：不再横向滑动，角色标签自动换行 */
body.app-body.raw-route-roles .nf-role-switcher-panel{
  position:relative!important;
  top:auto!important;
  z-index:2!important;
  overflow:visible!important;
  padding:14px 16px!important;
  background:#fff!important;
}
body.app-body.raw-route-roles .nf-role-switcher-row{
  display:grid!important;
  grid-template-columns:minmax(220px,1fr) auto!important;
  gap:12px!important;
  align-items:center!important;
}
body.app-body.raw-route-roles .nf-role-switcher-copy span{display:block;margin-top:3px;color:#8A96A0;font-size:12px}
body.app-body.raw-route-roles .nf-role-switcher{
  display:flex!important;
  gap:8px!important;
  align-items:center!important;
  justify-content:flex-end!important;
  flex-wrap:wrap!important;
}
body.app-body.raw-route-roles .nf-role-switcher select{width:220px!important;min-width:220px!important;max-width:260px!important}
body.app-body.raw-route-roles .nf-role-quick-list{
  display:flex!important;
  flex-wrap:wrap!important;
  align-items:center!important;
  gap:7px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:11px 0 0!important;
  padding:11px 0 0!important;
  overflow:visible!important;
  border-top:1px solid #EDF0F2!important;
  scrollbar-width:auto!important;
}
body.app-body.raw-route-roles .nf-role-quick-chip{
  flex:0 0 auto!important;
  min-height:30px!important;
  max-width:100%!important;
  white-space:nowrap!important;
}

/* 角色资料操作与表单分离，禁止 form 闭合破坏 DOM */
body.app-body.raw-route-roles .nf-role-meta-form{margin:0!important}
body.app-body.raw-route-roles .nf-role-state-actions{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  margin-top:12px!important;
  padding-top:12px!important;
  border-top:1px solid #EDF0F2!important;
}
body.app-body.raw-route-roles .nf-role-state-actions form{margin:0!important}

/* 权限编辑区：完全放弃嵌套 panel 卡片，使用稳定的“模块行 + 权限网格” */
body.app-body.raw-route-roles .nf-role-permission-panel{
  overflow:hidden!important;
  padding:0!important;
}
body.app-body.raw-route-roles .nf-role-permission-panel>.panel-head{margin:0!important}
body.app-body.raw-route-roles .nf-role-permission-panel>.permission-editor{
  display:block!important;
  position:relative!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:14px 16px 18px!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-permission-toolbar{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  width:100%!important;
  margin:0 0 12px!important;
  padding:10px 12px!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-permission-toolbar .muted{flex:1 1 360px!important;min-width:220px!important}
body.app-body.raw-route-roles .nf-permission-top-save{margin-left:auto!important}

body.app-body.raw-route-roles .nf-role-permission-list{
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-section{
  display:block!important;
  position:relative!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:14px 15px 15px!important;
  border:1px solid #E5EAED!important;
  border-radius:13px!important;
  background:#fff!important;
  box-shadow:0 4px 14px rgba(32,42,51,.035)!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-section>.permission-group-head{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  width:100%!important;
  min-width:0!important;
  margin:0 0 10px!important;
  padding:0 0 9px!important;
  border-bottom:1px solid #EDF0F2!important;
}
body.app-body.raw-route-roles .nf-role-permission-section>.permission-group-head h3{margin:0!important;font-size:15px!important;color:#26343F!important}
body.app-body.raw-route-roles .nf-role-permission-items{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:8px 10px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item{
  display:flex!important;
  align-items:flex-start!important;
  gap:8px!important;
  width:100%!important;
  min-width:0!important;
  min-height:62px!important;
  margin:0!important;
  padding:10px!important;
  border:1px solid #EDF0F2!important;
  border-radius:10px!important;
  background:#FAFBFB!important;
  box-sizing:border-box!important;
}
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item:hover{border-color:#E7C7BB!important;background:#FFF9F6!important}
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item input{flex:0 0 auto!important;margin:3px 0 0!important}
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item>span{display:block!important;min-width:0!important;width:100%!important}
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item b,
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item small{display:block!important;white-space:normal!important;overflow-wrap:anywhere!important;word-break:break-word!important}
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item b{font-size:13px!important;line-height:1.4!important;color:#34414C!important}
body.app-body.raw-route-roles .nf-role-permission-items>.permission-item small{margin-top:3px!important;font-size:10.8px!important;line-height:1.45!important;color:#87939D!important}
body.app-body.raw-route-roles .permission-save{position:static!important;margin:16px 0 0!important;padding:14px 0 0!important;border-top:1px solid #EDF0F2!important;background:transparent!important}

/* 旧权限网格不再参与页面布局 */
body.app-body.raw-route-roles .nf-role-permission-grid{display:none!important}

/* 权限对照表只允许表内横向滚动，不影响上方角色/权限编辑区域 */
body.app-body.raw-route-roles .nf-role-matrix-panel{overflow:hidden!important}
body.app-body.raw-route-roles .nf-role-matrix-panel>.table-wrap{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-inline:contain!important;
  scrollbar-gutter:stable!important;
}
body.app-body.raw-route-roles .nf-role-matrix-panel .permission-matrix{width:max-content!important;min-width:100%!important;max-width:none!important}

@media(max-width:1380px){
  body.app-body.raw-route-roles .nf-role-permission-items{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:980px){
  body.app-body.raw-route-roles .content{margin-left:0!important;width:auto!important;max-width:none!important}
  body.app-body.raw-route-roles .page{width:auto!important;max-width:100%!important;margin:0!important;padding:14px 12px 100px!important}
  body.app-body.raw-route-roles .nf-role-switcher-row{grid-template-columns:1fr!important;align-items:start!important}
  body.app-body.raw-route-roles .nf-role-switcher{justify-content:flex-start!important}
  body.app-body.raw-route-roles .nf-role-permission-items{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:680px){
  body.app-body.raw-route-roles .nf-role-switcher select{width:100%!important;min-width:0!important;max-width:none!important}
  body.app-body.raw-route-roles .nf-role-switcher>*{flex:1 1 100%!important}
  body.app-body.raw-route-roles .nf-role-permission-items{grid-template-columns:1fr!important}
  body.app-body.raw-route-roles .nf-permission-toolbar .muted{flex-basis:100%!important}
  body.app-body.raw-route-roles .nf-permission-top-save{margin-left:0!important}
}


/* ============================================================
   2026-09-24 角色切换区精简：删除重复角色标签，只保留一行操作
   - 上方角色库已经承担角色浏览/选择，不再重复渲染快速标签
   - 当前角色、下拉框、切换角色、角色管理保持同一行
   ============================================================ */
body.app-body.raw-route-roles .nf-role-switcher-panel{
  padding:12px 16px!important;
  overflow:visible!important;
}
body.app-body.raw-route-roles .nf-role-switcher-row{
  display:grid!important;
  grid-template-columns:minmax(240px,1fr) auto!important;
  gap:16px!important;
  align-items:center!important;
  width:100%!important;
  min-width:0!important;
}
body.app-body.raw-route-roles .nf-role-switcher-copy{
  min-width:0!important;
  display:flex!important;
  align-items:baseline!important;
  gap:12px!important;
  flex-wrap:wrap!important;
}
body.app-body.raw-route-roles .nf-role-switcher-copy>b{
  flex:0 0 auto!important;
  margin:0!important;
  white-space:nowrap!important;
}
body.app-body.raw-route-roles .nf-role-switcher-copy>span{
  display:inline!important;
  margin:0!important;
  min-width:0!important;
  color:#8A96A0!important;
  font-size:12px!important;
  white-space:normal!important;
}
body.app-body.raw-route-roles .nf-role-switcher{
  display:grid!important;
  grid-template-columns:220px auto auto!important;
  gap:8px!important;
  align-items:center!important;
  justify-content:end!important;
  width:auto!important;
  min-width:0!important;
  margin:0!important;
}
body.app-body.raw-route-roles .nf-role-switcher select{
  width:220px!important;
  min-width:220px!important;
  max-width:220px!important;
  height:38px!important;
  margin:0!important;
}
body.app-body.raw-route-roles .nf-role-switcher .btn{
  min-height:38px!important;
  height:38px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  margin:0!important;
  white-space:nowrap!important;
}
/* 旧版本即使浏览器缓存了旧HTML，也隐藏重复快捷角色标签 */
body.app-body.raw-route-roles .nf-role-quick-list,
body.app-body.raw-route-roles .nf-role-quick-chip{
  display:none!important;
}
@media(max-width:1120px){
  body.app-body.raw-route-roles .nf-role-switcher-row{
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  body.app-body.raw-route-roles .nf-role-switcher{
    justify-content:start!important;
  }
}
@media(max-width:680px){
  body.app-body.raw-route-roles .nf-role-switcher-copy{
    display:block!important;
  }
  body.app-body.raw-route-roles .nf-role-switcher-copy>span{
    display:block!important;
    margin-top:4px!important;
  }
  body.app-body.raw-route-roles .nf-role-switcher{
    grid-template-columns:1fr 1fr!important;
    width:100%!important;
  }
  body.app-body.raw-route-roles .nf-role-switcher select{
    grid-column:1/-1!important;
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
  }
}


/* AI能力中心：按可用内容宽度分配岗位和治理面板，操作表格在面板内滚动。 */
body.app-body.raw-route-ai_center .ai-workforce-grid{
  display:grid!important;grid-template-columns:minmax(0,1fr)!important;
  align-items:start!important;gap:14px!important;overflow:visible!important
}
body.app-body.raw-route-ai_center .ai-workforce-grid>.panel{min-width:0!important;max-width:100%!important;overflow:hidden!important}
body.app-body.raw-route-ai_center .ai-workforce-grid .table-wrap{max-width:100%!important;overflow-x:auto!important;overscroll-behavior-x:contain}
body.app-body.raw-route-ai_center .ai-agent-table{width:100%!important;min-width:960px!important;table-layout:fixed!important}
body.app-body.raw-route-ai_center .ai-agent-table th:nth-child(1){width:14%!important}
body.app-body.raw-route-ai_center .ai-agent-table th:nth-child(2){width:12%!important}
body.app-body.raw-route-ai_center .ai-agent-table th:nth-child(3){width:25%!important}
body.app-body.raw-route-ai_center .ai-agent-table th:nth-child(4){width:18%!important}
body.app-body.raw-route-ai_center .ai-agent-table th:nth-child(5){width:16%!important}
body.app-body.raw-route-ai_center .ai-agent-table th:nth-child(6){width:15%!important}
body.app-body.raw-route-ai_center .ai-agent-table td{white-space:normal!important;overflow-wrap:anywhere!important}
body.app-body.raw-route-ai_center .ai-agent-table td.ai-agent-status{min-width:125px!important;white-space:nowrap!important}
body.app-body.raw-route-ai_center .ai-demand-table-wrap{overflow-x:auto!important;overflow-y:visible!important}
body.app-body.raw-route-ai_center .ai-demand-table{width:100%!important;min-width:1260px!important;table-layout:fixed!important}
body.app-body.raw-route-ai_center .ai-demand-table th:last-child,
body.app-body.raw-route-ai_center .ai-demand-table td:last-child{width:180px!important;min-width:180px!important;white-space:normal!important}
body.app-body.raw-route-ai_center .ai-demand-open{min-width:104px!important;white-space:nowrap!important}
body.app-body.raw-route-ai_center .ai-demand-dialog{width:min(560px,calc(100vw - 36px))!important;max-width:none!important;max-height:min(82vh,700px)!important;margin:auto!important;padding:22px!important;overflow:auto!important;border:1px solid #e0e7ec!important;border-radius:16px!important;background:#fff!important;color:#334b5d!important;box-shadow:0 20px 70px rgba(24,42,56,.24)!important}
body.app-body.raw-route-ai_center .ai-demand-dialog::backdrop{background:rgba(20,34,46,.48)!important;backdrop-filter:blur(2px)}
body.app-body.raw-route-ai_center .ai-demand-dialog-head{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin-bottom:18px!important;padding-bottom:13px!important;border-bottom:1px solid #edf0f2!important}
body.app-body.raw-route-ai_center .ai-demand-dialog-head strong{font-size:18px!important;color:#273d50!important}
body.app-body.raw-route-ai_center .ai-demand-row-form{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important;width:100%!important;min-width:0!important;align-items:end!important}
body.app-body.raw-route-ai_center .ai-demand-row-form>div{min-width:0!important}
body.app-body.raw-route-ai_center .ai-demand-row-form label{display:block!important;margin:0 0 6px!important;font-size:13px!important;font-weight:700!important;color:#4a5d6d!important}
body.app-body.raw-route-ai_center .ai-demand-row-form select,
body.app-body.raw-route-ai_center .ai-demand-row-form input{width:100%!important;min-width:0!important;max-width:100%!important;min-height:42px!important}
body.app-body.raw-route-ai_center .ai-demand-row-form .grid-full{grid-column:1/-1!important}
body.app-body.raw-route-ai_center .ai-demand-row-form .grid-full input{min-height:42px!important}
body.app-body.raw-route-ai_center .ai-demand-dialog-actions{grid-column:1/-1!important;display:flex!important;justify-content:flex-end!important;padding-top:5px!important}
body.app-body.raw-route-ai_center .ai-ops-metrics{grid-template-columns:repeat(4,minmax(0,1fr))!important}
body.app-body.raw-route-ai_center .ai-ops-metrics .stat-card{min-width:0!important}
body.app-body.raw-route-ai_center .ai-ops-metrics .stat-card small{display:block!important;margin-top:5px!important;line-height:1.45!important}
@media(max-width:1900px){body.app-body.raw-route-ai_center .ai-workforce-grid{grid-template-columns:minmax(0,1fr)!important}}
@media(max-width:760px){
  body.app-body.raw-route-ai_center .ai-workforce-grid{grid-template-columns:minmax(0,1fr)!important}
  body.app-body.raw-route-ai_center .ai-ops-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  body.app-body.raw-route-ai_center .ai-demand-table{min-width:1260px!important}
  body.app-body.raw-route-ai_center .ai-demand-dialog{width:calc(100vw - 28px)!important;padding:18px!important}
  body.app-body.raw-route-ai_center .ai-demand-row-form{grid-template-columns:minmax(0,1fr)!important}
  body.app-body.raw-route-ai_center .ai-demand-row-form .grid-full,body.app-body.raw-route-ai_center .ai-demand-dialog-actions{grid-column:1!important}
}
body.app-body.raw-route-ai_center .ai-mode-options{display:grid!important;gap:9px!important;margin-top:8px!important}
body.app-body.raw-route-ai_center .ai-mode-options .check-label{align-items:flex-start!important;white-space:normal!important;line-height:1.5!important}

/* 维修工单阶段摘要：浅色背景配深色正文，装饰层不拦截点击。 */
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main{
  background:linear-gradient(132deg,#fff6f1 0%,#fffdfb 100%)!important;
  border:1px solid #efd8cf!important;color:#344b5d!important;box-shadow:0 8px 22px rgba(31,51,66,.045)!important
}
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main,
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main *{text-shadow:none!important}
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main small{color:#536b7c!important}
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main h2{color:#913b27!important}
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main p{color:#40596b!important;line-height:1.6!important}
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main .muted{color:#536b7c!important}
body.app-body.raw-route-order_view .nf-repair-detail-workbench .workbench-main:after{border-color:rgba(169,67,44,.12)!important;box-shadow:none!important;pointer-events:none!important}
body.app-body.raw-route-order_view .nf-repair-detail-hero .nf-detail-meta,
body.app-body.raw-route-order_view .nf-repair-detail-hero .nf-detail-meta span{color:rgba(255,255,255,.96)!important}
body.app-body.raw-route-order_view .nf-repair-detail-hero .nf-text-action{color:#fff!important;font-weight:800!important;text-decoration:underline!important;text-underline-offset:3px}
@media(max-width:1180px){body.app-body.raw-route-order_view .nf-repair-detail-workbench{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:780px){body.app-body.raw-route-order_view .nf-repair-detail-workbench{grid-template-columns:minmax(0,1fr)!important}}
