/*
 * 能飞后台深层弹窗与隐藏表单最终母版
 * 目标：所有 details/popover 深层操作统一到正式母版，不改业务字段与提交逻辑。
 */
body.app-body{
  --nf-modal-orange:#d96542;
  --nf-modal-orange-deep:#c9583a;
  --nf-modal-navy:#1d415b;
  --nf-modal-text:#263746;
  --nf-modal-muted:#7b8896;
  --nf-modal-line:#e5e9ed;
  --nf-modal-soft:#f8fafb;
  --nf-modal-warm:#fffaf7;
  --nf-modal-danger:#cf4938;
}

body.app-body.nf-modal-open{overflow:hidden!important}
body.app-body .nf-modal-backdrop{
  background:rgba(18,31,43,.46)!important;
  backdrop-filter:blur(4px)!important;
  -webkit-backdrop-filter:blur(4px)!important;
}
body.app-body .nf-modal-floating{
  width:min(760px,calc(100vw - 56px))!important;
  max-width:calc(100vw - 56px)!important;
  max-height:min(86vh,860px)!important;
  padding:0!important;
  overflow:hidden!important;display:flex!important;flex-direction:column!important;
  border:1px solid rgba(224,228,233,.98)!important;
  border-radius:20px!important;
  background:#fff!important;
  color:var(--nf-modal-text)!important;
  box-shadow:0 30px 90px rgba(21,36,49,.28)!important;
}
body.app-body .nf-modal-floating.compact{width:min(620px,calc(100vw - 56px))!important}
body.app-body .nf-modal-floating.wide{width:min(980px,calc(100vw - 64px))!important}
body.app-body .nf-modal-floating.nf-modal-xwide{width:min(1120px,calc(100vw - 64px))!important}

body.app-body .nf-modal-head{
  position:sticky!important;top:0!important;z-index:8!important;
  display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:20px!important;
  min-height:82px!important;padding:20px 22px 17px!important;
  margin:0!important;border-bottom:1px solid var(--nf-modal-line)!important;
  background:linear-gradient(180deg,#fff 0%,#fffdfa 100%)!important;
}
body.app-body .nf-modal-head-copy{min-width:0!important;padding-right:10px!important}
body.app-body .nf-modal-title{
  margin:0!important;color:var(--nf-modal-navy)!important;font-size:20px!important;line-height:1.25!important;
  font-weight:900!important;letter-spacing:-.2px!important;
}
body.app-body .nf-modal-subtitle{
  margin:6px 0 0!important;color:var(--nf-modal-muted)!important;font-size:12px!important;line-height:1.6!important;
}
body.app-body .nf-modal-close{
  flex:0 0 auto!important;width:36px!important;height:36px!important;min-width:36px!important;padding:0!important;
  display:grid!important;place-items:center!important;border:1px solid #dfe5ea!important;border-radius:10px!important;
  background:#f9fbfc!important;color:#657485!important;box-shadow:none!important;cursor:pointer!important;
}
body.app-body .nf-modal-close:hover{background:#f2f5f7!important;color:var(--nf-modal-navy)!important;border-color:#cfd8e1!important}
body.app-body .nf-modal-close span{font-size:21px!important;line-height:1!important;font-weight:500!important}

body.app-body .nf-modal-body{
  flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;
  overscroll-behavior:contain!important;padding:22px 24px 30px!important;background:#fff!important;
  scrollbar-width:thin;scrollbar-color:#d7dee5 transparent;
}
body.app-body .nf-modal-body::-webkit-scrollbar{width:7px;height:7px}
body.app-body .nf-modal-body::-webkit-scrollbar-thumb{background:#d7dee5;border-radius:999px}
body.app-body .nf-modal-body>h3{margin:22px 0 10px!important;color:var(--nf-modal-navy)!important}
body.app-body .nf-modal-body>.identity-link-box{margin:16px 0!important}

body.app-body .nf-modal-form{
  display:block!important;min-width:0!important;max-height:none!important;
  overflow:visible!important;
  margin:0 0 18px!important;padding:0!important;background:#fff!important;
  scrollbar-width:thin;scrollbar-color:#d7dee5 transparent;
}
body.app-body .nf-modal-form::-webkit-scrollbar{width:7px;height:7px}
body.app-body .nf-modal-form::-webkit-scrollbar-thumb{background:#d7dee5;border-radius:999px}

/* 单列老表单：用标签/控件间距恢复真正的字段层级 */
body.app-body .nf-modal-form>label{
  display:block!important;margin:16px 0 7px!important;color:#405263!important;font-size:12px!important;line-height:1.45!important;font-weight:800!important;
}
body.app-body .nf-modal-form>label:first-of-type{margin-top:0!important}
body.app-body .nf-modal-form>input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=file]),
body.app-body .nf-modal-form>select,
body.app-body .nf-modal-form>textarea{
  display:block!important;width:100%!important;margin:0!important;box-sizing:border-box!important;
}

/* 网格表单：每个字段块统一节奏 */
body.app-body .nf-modal-form .grid{gap:16px 18px!important;align-items:start!important}
body.app-body .nf-modal-form .grid>div{min-width:0!important}
body.app-body .nf-modal-form .grid>div>label,
body.app-body .nf-modal-form .grid>label{
  display:block!important;margin:0 0 7px!important;color:#405263!important;font-size:12px!important;line-height:1.45!important;font-weight:800!important;
}
body.app-body .nf-modal-form .grid-full{grid-column:1/-1!important}

body.app-body .nf-modal-form input:not([type=checkbox]):not([type=radio]):not([type=file]),
body.app-body .nf-modal-form select,
body.app-body .nf-modal-form textarea{
  min-height:44px!important;padding:10px 12px!important;border:1px solid #dce3e9!important;border-radius:10px!important;
  background:#fff!important;color:var(--nf-modal-text)!important;font-size:13px!important;line-height:1.45!important;
  box-shadow:none!important;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease!important;
}
body.app-body .nf-modal-form textarea{min-height:96px!important;resize:vertical!important;line-height:1.65!important}
body.app-body .nf-modal-form input::placeholder,
body.app-body .nf-modal-form textarea::placeholder{color:#a2adba!important}
body.app-body .nf-modal-form input:focus,
body.app-body .nf-modal-form select:focus,
body.app-body .nf-modal-form textarea:focus{
  outline:none!important;border-color:#d99a83!important;background:#fff!important;box-shadow:0 0 0 3px rgba(217,101,66,.10)!important;
}
body.app-body .nf-modal-form input[disabled],
body.app-body .nf-modal-form select[disabled],
body.app-body .nf-modal-form textarea[disabled],
body.app-body .nf-modal-form input[readonly]{background:#f5f7f8!important;color:#7a8794!important;cursor:not-allowed!important}

body.app-body .nf-modal-form small,
body.app-body .nf-modal-form .muted,
body.app-body .nf-modal-form .help{
  color:#8793a0!important;font-size:11px!important;line-height:1.6!important;
}
body.app-body .nf-modal-form .nf-field-help{margin-top:5px!important}

/* 复选/单选、业务能力、芯片选择 */
body.app-body .nf-modal-form label:has(input[type=checkbox]),
body.app-body .nf-modal-form label:has(input[type=radio]),
body.app-body .nf-modal-form .check-label{
  display:flex!important;align-items:flex-start!important;gap:8px!important;min-height:38px!important;
  padding:8px 10px!important;margin:0!important;border:1px solid #e2e7eb!important;border-radius:9px!important;background:#fafbfc!important;
  color:#455568!important;font-size:12px!important;font-weight:700!important;
}
body.app-body .nf-modal-form input[type=checkbox],body.app-body .nf-modal-form input[type=radio]{accent-color:var(--nf-modal-orange)!important;margin-top:2px!important}
body.app-body .nf-modal-form .chip-checks{gap:8px!important}

/* 文件上传 */
body.app-body .nf-modal-form .nf-upload-field,
body.app-body .nf-modal-form .upload-field{
  padding:13px!important;border:1px dashed #cbd5df!important;border-radius:11px!important;background:#fafcfd!important;
}
body.app-body .nf-modal-form input[type=file]{width:100%!important;min-height:42px!important;color:#657486!important;font-size:12px!important}
body.app-body .nf-modal-form input[type=file]::file-selector-button{
  min-height:34px!important;margin-right:10px!important;padding:0 12px!important;border:1px solid #e1b7a8!important;border-radius:8px!important;
  background:#fff5f1!important;color:var(--nf-modal-orange-deep)!important;font-weight:800!important;cursor:pointer!important;
}

/* 表格、分隔线、提示块也按母版处理 */
body.app-body .nf-modal-form .table-wrap{margin:12px 0!important;border:1px solid #e7ebef!important;border-radius:12px!important;overflow:auto!important}
body.app-body .nf-modal-form table{margin:0!important;background:#fff!important}
body.app-body .nf-modal-form th{background:#f5f7f8!important;color:#536272!important;font-size:11px!important}
body.app-body .nf-modal-form td{font-size:12px!important;color:#405263!important}
body.app-body .nf-modal-form hr{border:0!important;border-top:1px solid #edf0f2!important;margin:18px 0!important}
body.app-body .nf-modal-form .alert,
body.app-body .nf-modal-form .review-warning,
body.app-body .nf-modal-form .review-success{
  margin:12px 0!important;padding:11px 13px!important;border-radius:10px!important;line-height:1.6!important;font-size:12px!important;
}

/* 操作区：所有深层弹窗统一底部动作栏 */
body.app-body .nf-modal-actions{
  position:sticky!important;bottom:0!important;z-index:6!important;
  display:flex!important;justify-content:flex-end!important;align-items:center!important;gap:9px!important;flex-wrap:wrap!important;
  grid-column:1/-1!important;
  margin:22px -2px 0!important;padding:14px 2px 4px!important;
  border-top:1px solid #e9edf0!important;background:rgba(255,255,255,.98)!important;backdrop-filter:blur(6px)!important;
}
body.app-body .nf-modal-actions:empty{display:none!important}
body.app-body .nf-modal-actions .btn,
body.app-body .nf-modal-submit-alone{
  min-width:92px!important;min-height:40px!important;padding:0 16px!important;border-radius:9px!important;font-size:13px!important;font-weight:850!important;
}
body.app-body .nf-modal-form>.nf-modal-submit-alone{
  display:block!important;margin:22px 0 0 auto!important;
}
body.app-body .nf-modal-form .btn-primary{background:var(--nf-modal-orange)!important;border-color:var(--nf-modal-orange)!important;color:#fff!important;box-shadow:0 6px 14px rgba(217,101,66,.13)!important}
body.app-body .nf-modal-form .btn-primary:hover{background:var(--nf-modal-orange-deep)!important;border-color:var(--nf-modal-orange-deep)!important}
body.app-body .nf-modal-form .btn-light{background:#fff!important;border-color:#dbe2e8!important;color:#405263!important}
body.app-body .nf-modal-form .btn-danger{background:#fff4f1!important;border-color:#f0c3b8!important;color:#c84b36!important}

/* 页面内仍存在的老 inline form：只统一视觉，不强制弹窗 */
body.app-body form.inline-form input:not([type=hidden]):not([type=checkbox]):not([type=radio]),
body.app-body form.inline-form select,
body.app-body form.inline-form textarea{
  min-height:38px;border-radius:9px;border-color:#dfe5ea;
}

/* 原生确认框母版 */
body.app-body .nf-confirm-backdrop{background:rgba(18,31,43,.46)!important;backdrop-filter:blur(4px)!important}
body.app-body .nf-confirm-dialog{
  width:min(480px,calc(100vw - 40px))!important;padding:20px!important;border:1px solid #e2e7eb!important;border-radius:18px!important;
  background:#fff!important;box-shadow:0 28px 80px rgba(20,34,45,.26)!important;
}
body.app-body .nf-confirm-copy h3{color:var(--nf-modal-navy)!important}

/* 避免旧 details 定位样式与 JS 浮动弹窗冲突 */
body.app-body details[open]>.nf-modal-floating{position:fixed!important;right:auto!important;margin:0!important}
body.app-body details>summary.btn{user-select:none}

@media(max-width:900px){
  body.app-body .nf-modal-floating,
  body.app-body .nf-modal-floating.compact,
  body.app-body .nf-modal-floating.wide,
  body.app-body .nf-modal-floating.nf-modal-xwide{
    width:calc(100vw - 24px)!important;max-width:calc(100vw - 24px)!important;max-height:90vh!important;border-radius:16px!important;
  }
  body.app-body .nf-modal-head{min-height:74px!important;padding:16px 16px 13px!important}
  body.app-body .nf-modal-title{font-size:18px!important}
  body.app-body .nf-modal-form{max-height:calc(90vh - 74px)!important;padding:17px!important}
  body.app-body .nf-modal-form .grid{grid-template-columns:1fr!important}
  body.app-body .nf-modal-actions{bottom:-17px!important;margin:20px -17px -17px!important;padding:12px 17px!important}
}

/* 2026-09-22 累计收口：多表单/表格型深层弹窗也使用同一母版，避免内容区和底部按钮互相遮挡。 */
body.app-body .nf-modal-body .table-wrap{margin:12px 0!important;border:1px solid #e7ebef!important;border-radius:12px!important;overflow:auto!important;background:#fff!important}
body.app-body .nf-modal-body table{width:100%!important;margin:0!important;border-collapse:separate!important;border-spacing:0!important;background:#fff!important}
body.app-body .nf-modal-body th{background:#f5f7f8!important;color:#536272!important;font-size:11px!important;font-weight:850!important;white-space:nowrap!important}
body.app-body .nf-modal-body td{font-size:12px!important;color:#405263!important;vertical-align:top!important}
body.app-body .nf-modal-body th,body.app-body .nf-modal-body td{padding:11px 12px!important;border-bottom:1px solid #edf0f2!important}
body.app-body .nf-modal-body .panel,body.app-body .nf-modal-body .form-card{margin:0 0 16px!important;border:1px solid #e7ebef!important;border-radius:12px!important;box-shadow:none!important;background:#fff!important}
body.app-body .nf-modal-body .row-actions{display:flex!important;justify-content:flex-end!important;gap:9px!important;flex-wrap:wrap!important}
body.app-body .nf-modal-body .nf-modal-actions{box-shadow:0 -8px 18px rgba(33,52,67,.045)!important}
@media(max-width:760px){
  body.app-body .nf-modal-floating,body.app-body .nf-modal-floating.wide,body.app-body .nf-modal-floating.nf-modal-xwide{width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important;max-height:92vh!important;border-radius:16px!important}
  body.app-body .nf-modal-head{min-height:70px!important;padding:16px!important}
  body.app-body .nf-modal-body{padding:16px 14px 22px!important}
  body.app-body .nf-modal-form .grid{grid-template-columns:1fr!important}
  body.app-body .nf-modal-actions{position:static!important;margin:18px 0 0!important;padding:12px 0 0!important}
}

/* 多类业务弹窗共用的最终层级修正：旧页面把 summary 伪装成悬空关闭键，
   JS 已将表单移入统一弹窗后必须隐藏原 summary，避免弹窗外出现第二个“×”。 */
body.app-body details.nf-modal-trigger-hidden>summary{display:none!important}
body.app-body .nf-modal-backdrop{z-index:200000!important}
body.app-body .nf-modal-floating{position:fixed!important;left:50%!important;right:auto!important;top:50%!important;bottom:auto!important;z-index:200010!important;transform:translate(-50%,-50%)!important;box-sizing:border-box!important;min-width:0!important}
body.app-body .nf-modal-floating>.nf-modal-head,
body.app-body .nf-modal-floating>.nf-modal-body{box-sizing:border-box!important;min-width:0!important;max-width:100%!important}
body.app-body .nf-modal-floating>.nf-modal-body{overflow-x:hidden!important;overflow-y:auto!important}
body.app-body .nf-modal-body>*{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
body.app-body .nf-modal-body .grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;min-width:0!important;max-width:100%!important}
body.app-body .nf-modal-body .grid>div,
body.app-body .nf-modal-body form,
body.app-body .nf-modal-body input,
body.app-body .nf-modal-body select,
body.app-body .nf-modal-body textarea{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
body.app-body .nf-modal-body .table-wrap{max-width:100%!important;overflow:auto!important}
body.app-body .nf-modal-body .nf-role-permission-list{min-width:0!important;max-height:min(62vh,680px)!important;overflow:auto!important;padding:2px!important}
body.app-body .nf-modal-body .nf-role-permission-items{grid-template-columns:repeat(2,minmax(0,1fr))!important;min-width:0!important}
body.app-body .nf-modal-body .engineer-doc form[data-engineer-doc-ajax="review"]{display:grid!important;grid-template-columns:minmax(120px,.8fr) minmax(170px,1.4fr) auto minmax(90px,.5fr)!important;gap:8px!important;align-items:center!important;min-width:0!important;max-width:100%!important}
body.app-body .nf-modal-body .engineer-doc form[data-engineer-doc-ajax="review"]>*{min-width:0!important;width:100%!important;max-width:100%!important;margin:0!important}
body.app-body .nf-modal-body .engineer-doc form[data-engineer-doc-ajax="review"] button{white-space:normal!important}
@media(max-width:760px){
  body.app-body .nf-modal-floating{left:10px!important;right:10px!important;top:10px!important;bottom:calc(10px + env(safe-area-inset-bottom))!important;transform:none!important;width:auto!important;max-width:none!important;max-height:none!important}
  body.app-body .nf-modal-body .grid,
  body.app-body .nf-modal-body .nf-role-permission-items,
  body.app-body .nf-modal-body .engineer-doc form[data-engineer-doc-ajax="review"]{grid-template-columns:minmax(0,1fr)!important}
}

/* 弹窗内的历史资料与二级表单留在当前操作区，避免关闭父弹窗。 */
body.app-body .nf-modal-body details.nf-nested-details > .popover-panel{position:static!important;inset:auto!important;transform:none!important;width:100%!important;max-width:100%!important;min-width:0!important;max-height:none!important;margin:12px 0!important;box-shadow:none!important;box-sizing:border-box!important}
body.app-body .nf-modal-body details.nf-nested-details:not([open]) > .popover-panel{display:none!important}
body.app-body .nf-modal-body details.nf-nested-details[open] > .popover-panel{display:block!important}
