/* C4.10_TARGETED_UI_PARITY_20261005
   Targeted, selector-explicit UI parity layer.
   No MutationObserver. No DOM guessing. No business logic changes.
*/

:root{
  --c410-primary:#2563eb;
  --c410-primary-soft:rgba(37,99,235,.06);
  --c410-border:#e4e7ec;
  --c410-border-soft:#eef0f3;
  --c410-text:#101828;
  --c410-muted:#667085;
  --c410-canvas:#f4f7fb;
  --c410-danger:#dc2626;
  --c410-radius:14px;
  --c410-modal-shadow:0 24px 72px rgba(16,24,40,.22);
}

/* =========================================================
   1. Explicit tab parity
   Canonical reference: FB Account Management C4.8 tabs.
   ========================================================= */
.dashboard-home-tabs-v93,
.v118k3-analytics-tabs,
.history-tabs,
#v117-operation-details-panel .v117-tabs{
  display:flex!important;
  align-items:center!important;
  flex-wrap:wrap!important;
  gap:24px!important;
  min-height:46px!important;
  margin:0 0 18px!important;
  padding:0 2px!important;
  border:0!important;
  border-bottom:1px solid var(--c410-border)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.dashboard-home-tabs-v93 > button,
.v118k3-analytics-tabs > button,
.history-tabs > button,
#v117-operation-details-panel .v117-tabs > button{
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:0!important;
  min-width:0!important;
  width:auto!important;
  height:44px!important;
  min-height:44px!important;
  margin:0!important;
  padding:0 3px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--c410-muted)!important;
  font:inherit!important;
  font-size:13px!important;
  line-height:44px!important;
  font-weight:600!important;
  white-space:nowrap!important;
}

.dashboard-home-tabs-v93 > button:hover,
.v118k3-analytics-tabs > button:hover,
.history-tabs > button:hover,
#v117-operation-details-panel .v117-tabs > button:hover{
  color:var(--c410-text)!important;
  background:transparent!important;
}

.dashboard-home-tabs-v93 > button.active,
.v118k3-analytics-tabs > button.active,
.history-tabs > button.active,
.history-tabs > button.active.danger,
#v117-operation-details-panel .v117-tabs > button.active{
  color:var(--c410-primary)!important;
  background:transparent!important;
  border:0!important;
}

.dashboard-home-tabs-v93 > button::after,
.v118k3-analytics-tabs > button::after,
.history-tabs > button::after,
#v117-operation-details-panel .v117-tabs > button::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:-1px!important;
  height:2px!important;
  border-radius:999px!important;
  background:transparent!important;
}

.dashboard-home-tabs-v93 > button.active::after,
.v118k3-analytics-tabs > button.active::after,
.history-tabs > button.active::after,
#v117-operation-details-panel .v117-tabs > button.active::after{
  background:var(--c410-primary)!important;
}

/* One clear gap between a tab rail and its filters. */
.history-tabs + .history-filter-bar-v66{
  margin-top:0!important;
}
#v117-operation-details-panel .v117-tabs + #v117-content,
#v117-operation-details-panel .v117-tabs + div{
  margin-top:0!important;
}

/* =========================================================
   2. Dedup statistics / Operation Details page shell parity
   ========================================================= */

/* User previously requested no redundant top page-title bar on Dedup Statistics. */
.main:has(.content .history-tabs) > .topbar{
  display:none!important;
}

/* Operation Details is a real injected module, not the React content page.
   Remove its own duplicate title/header and white outer card. */
#v117-operation-details-panel{
  background:var(--c410-canvas)!important;
}
#v117-operation-details-panel .v117-page-title-row,
#v117-operation-details-panel .v117-card-head{
  display:none!important;
}
#v117-operation-details-panel .v117-card{
  margin:24px 28px 28px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
#v117-operation-details-panel .v118i-filter-bar{
  margin:0 0 14px!important;
  padding:10px!important;
  border:1px solid var(--c410-border)!important;
  border-radius:10px!important;
  background:#fff!important;
}
#v117-operation-details-panel .v117-table-shell{
  border:1px solid var(--c410-border)!important;
  border-radius:10px!important;
  background:#fff!important;
}

/* Dedup statistics card keeps the data container, but loses the "different module"
   visual treatment around the tab/filter area. */
.content:has(.history-tabs) > .page-panel,
.content:has(.history-tabs) .page-panel{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0!important;
}
.content:has(.history-tabs) .history-filter-bar-v66{
  margin-top:0!important;
  margin-bottom:14px!important;
  padding:10px!important;
  border:1px solid var(--c410-border)!important;
  border-radius:10px!important;
  background:#fff!important;
}
.content:has(.history-tabs) .table-wrap{
  border:1px solid var(--c410-border)!important;
  border-radius:10px!important;
  background:#fff!important;
  overflow:auto!important;
}

/* =========================================================
   3. Explicit modal family parity
   No runtime scanning; every selector below exists in C4.8.
   ========================================================= */

/* Backdrops */
.modal-backdrop,
.crm-v78c-dialog-backdrop,
.crm-v5-backdrop,
.v118e-modal-backdrop,
.fbav-ui-dialog-overlay,
.fbav-guide-overlay,
.fbav-source-preview-overlay,
.strong-alert-backdrop,
body [data-ui-modal-overlay="1"],
body .aui-modal-overlay{
  background:rgba(15,23,42,.46)!important;
  -webkit-backdrop-filter:blur(5px)!important;
  backdrop-filter:blur(5px)!important;
}

/* Modal cards: keep each component's functional width/layout; unify only chrome. */
.modal,
.crm-v78c-dialog,
.crm-v5-modal,
.v118e-modal-card,
.v118b-modal-card,
.fbav-ui-dialog-card,
.fbav-guide-dialog,
.fbav-source-preview-dialog,
.strong-alert-card,
body [data-ui-modal-card="1"],
body .aui-modal-card{
  border:1px solid var(--c410-border)!important;
  border-radius:var(--c410-radius)!important;
  background:#fff!important;
  box-shadow:var(--c410-modal-shadow)!important;
}

/* Do not let a danger modal turn its whole card/header pink/red.
   Danger is expressed by the action button and inline warning content only. */
.strong-alert-card{
  border-color:var(--c410-border)!important;
}

/* Headers */
.modal-head,
.crm-v78c-dialog-head,
.v118b-modal-head,
.fbav-ui-dialog-head,
.fbav-guide-head,
.fbav-source-preview-head,
body [data-ui-modal-card="1"] :is(.modal-header,[class*="modal-header"],[class*="dialog-header"]),
body .aui-modal-head{
  min-height:0!important;
  height:auto!important;
  margin:0!important;
  padding:18px 20px 12px!important;
  border:0!important;
  border-bottom:0!important;
  background:#fff!important;
  box-shadow:none!important;
}

/* Titles */
.modal-head strong,
.crm-v78c-dialog-head h3,
.v118b-modal-head h3,
.fbav-ui-dialog-head h3,
.fbav-guide-head h2,
.fbav-source-preview-head h3,
body .aui-modal-title{
  margin:0!important;
  color:var(--c410-text)!important;
  font-size:16px!important;
  line-height:1.35!important;
  font-weight:700!important;
}

/* Close buttons */
.modal-head > button,
.crm-v78c-dialog-head > button,
.v118b-modal-head > button,
.v118e-modal-close,
.fbav-ui-dialog-close,
.fbav-guide-head > button,
.fbav-source-preview-head > button,
body .aui-modal-close{
  width:32px!important;
  min-width:32px!important;
  height:32px!important;
  min-height:32px!important;
  padding:0!important;
  display:grid!important;
  place-items:center!important;
  border:1px solid var(--c410-border)!important;
  border-radius:8px!important;
  background:#fff!important;
  color:var(--c410-muted)!important;
  box-shadow:none!important;
}

/* Bodies */
.modal-body,
.crm-v78c-dialog form,
.fbav-ui-dialog-body,
body [data-ui-modal-card="1"] :is(.modal-body,[class*="modal-body"],[class*="dialog-body"]),
body .aui-modal-body{
  border:0!important;
  background:#fff!important;
}

/* Footer/action rows: remove the ugly horizontal separator line. */
.fbav-ui-dialog-foot,
.fbav-guide-footer,
.fbav-source-preview-actions,
body [data-ui-modal-card="1"] :is(.modal-footer,[class*="modal-footer"],[class*="dialog-footer"]),
body .aui-modal-foot{
  border:0!important;
  border-top:0!important;
  background:#fff!important;
}

/* Consistent action-button geometry without changing danger/primary semantics. */
.modal .form-actions button,
.crm-v78c-dialog-actions button,
.v118e-modal-actions button,
.v118b-modal-actions button,
.fbav-ui-dialog-foot button,
.fbav-guide-footer button,
.fbav-source-preview-actions button,
.strong-alert-actions button,
body .aui-modal-foot button{
  min-width:76px!important;
  height:36px!important;
  min-height:36px!important;
  padding:0 14px!important;
  border-radius:8px!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:650!important;
  box-shadow:none!important;
}

/* Specific app risk/pause dialogs still keep their red confirm button,
   but internal controls use the same field geometry. */
.v118k5-pause-modal select,
.v118k5-pause-modal input,
.v118k6-pause-modal select,
.v118k6-pause-modal input,
.crm-v78c-dialog select,
.crm-v78c-dialog textarea,
.modal select,
.modal input,
.modal textarea{
  border-radius:8px!important;
}

/* =========================================================
   4. FB Account Management keeps its already accepted layout,
      only remove modal separator lines for whole-site parity.
   ========================================================= */
.fbav-ui-dialog-head,
.fbav-ui-dialog-foot{
  border:0!important;
}
.fbav-guide-head,
.fbav-guide-footer{
  border-top:0!important;
  border-bottom:0!important;
}

/* Source preview is a document viewer; preserve table borders,
   only normalize outer chrome. */
.fbav-source-preview-head,
.fbav-source-preview-actions{
  border-top:0!important;
  border-bottom:0!important;
}

/* =========================================================
   5. Responsive safeguards
   ========================================================= */
@media(max-width:900px){
  #v117-operation-details-panel .v117-card{
    margin:14px!important;
  }
  .dashboard-home-tabs-v93,
  .v118k3-analytics-tabs,
  .history-tabs,
  #v117-operation-details-panel .v117-tabs{
    gap:16px!important;
    overflow-x:auto!important;
    flex-wrap:nowrap!important;
  }
}

/* C4.11_TITLEBAR_AND_RISK_PARITY_20261005
   Corrects C4.10 based on inspected live selectors.
*/

/* 1) Restore/standardize page title bars */
body .topbar{
  height:60px!important;
  min-height:60px!important;
  padding:0 28px!important;
}

/* C4.10 intentionally hid this; restore it now. */
.main:has(.content .history-tabs) > .topbar{
  display:flex!important;
}

/* Operation Details has its own real page-title row. Restore it, keep only the duplicate inner card heading hidden. */
#v117-operation-details-panel .v117-page-title-row{
  display:flex!important;
  height:60px!important;
  min-height:60px!important;
  padding:0 28px!important;
  align-items:center!important;
  background:#fff!important;
  border-bottom:1px solid var(--c410-border)!important;
  box-sizing:border-box!important;
}
#v117-operation-details-panel .v117-page-title-row h1{
  margin:0!important;
  color:var(--c410-text)!important;
  font-size:18px!important;
  line-height:1.25!important;
  font-weight:700!important;
}
#v117-operation-details-panel .v117-page-subtitle{
  margin:3px 0 0!important;
  color:var(--c410-muted)!important;
  font-size:12px!important;
}
#v117-operation-details-panel .v117-card-head{
  display:none!important;
}
#v117-operation-details-panel .v117-card{
  margin:18px 28px 28px!important;
}

/* Keep ordinary content spacing compact and consistent after the shorter title bar. */
body .content{
  padding-top:18px!important;
}

/* 2) Risk/destructive buttons: one red visual language everywhere */
body .danger-btn,
body .danger-outline,
body [data-ui-danger="1"],
body .crm-v78c-danger,
body .aui-modal-danger,
body [class*="btn-danger"],
body [class*="button-danger"]{
  background:#dc2626!important;
  border-color:#dc2626!important;
  color:#fff!important;
  box-shadow:none!important;
}
body .danger-btn:hover,
body .danger-outline:hover,
body [data-ui-danger="1"]:hover,
body .crm-v78c-danger:hover,
body .aui-modal-danger:hover,
body [class*="btn-danger"]:hover,
body [class*="button-danger"]:hover{
  background:#b91c1c!important;
  border-color:#b91c1c!important;
  color:#fff!important;
}

/* Risk modal confirm button must also be red; non-risk confirms remain blue. */
body .aui-modal-danger{
  min-width:76px!important;
  height:36px!important;
  padding:0 14px!important;
  border-radius:8px!important;
  font-size:13px!important;
  font-weight:650!important;
}

/* CRM "开发失败" is a risk action and should not use pale red. */
body .crm-v78c-danger{
  min-height:31px!important;
  padding:6px 9px!important;
  border-radius:8px!important;
  font-weight:700!important;
}

@media(max-width:900px){
  body .topbar{
    height:58px!important;
    min-height:58px!important;
    padding:0 18px!important;
  }
  #v117-operation-details-panel .v117-page-title-row{
    height:58px!important;
    min-height:58px!important;
    padding:0 18px!important;
  }
  #v117-operation-details-panel .v117-card{
    margin:14px!important;
  }
}

/* C4.12_FB_TABS_SEARCH_SPACING_FIX_20261005
   Root-cause fixes after inspecting live C4.11 selectors.
*/

/* =========================================================
   1) FB Account Management owns its own tab behavior.
      Neutralize any stale global tab-normalizer attributes.
   ========================================================= */
body .fb-account-management-host .fbav-tabs,
body .fb-account-management-host .fbav-tabs[data-ui-tabbar="1"]{
  display:flex!important;
  align-items:center!important;
  gap:2px!important;
  min-height:46px!important;
  margin:-4px 0 4px!important;
  padding:0 2px!important;
  border:0!important;
  border-bottom:1px solid var(--fb-border,#e4e7ec)!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
body .fb-account-management-host .fbav-tabs > button,
body .fb-account-management-host .fbav-tabs[data-ui-tabbar="1"] > button{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:0!important;
  flex:0 0 auto!important;
  width:auto!important;
  min-width:0!important;
  height:44px!important;
  min-height:44px!important;
  margin:0!important;
  padding:0 14px!important;
  border:0!important;
  border-bottom:0!important;
  border-radius:8px 8px 0 0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--fb-muted,#667085)!important;
  font-size:13px!important;
  line-height:44px!important;
  font-weight:600!important;
}
body .fb-account-management-host .fbav-tabs > button:hover{
  color:var(--fb-text,#101828)!important;
  background:rgba(16,24,40,.035)!important;
}
body .fb-account-management-host .fbav-tabs > button.active,
body .fb-account-management-host .fbav-tabs > button[data-ui-active="1"]{
  color:var(--fb-primary,#2563eb)!important;
  border-bottom:0!important;
  background:transparent!important;
}
body .fb-account-management-host .fbav-tabs > button::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:-1px!important;
  height:2px!important;
  border-radius:999px!important;
  background:transparent!important;
  pointer-events:none!important;
}
body .fb-account-management-host .fbav-tabs > button.active::after{
  background:var(--fb-primary,#2563eb)!important;
}
body .fb-account-management-host .fbav-tabs > button:not(.active)::after{
  background:transparent!important;
}

/* =========================================================
   2) Composite search controls must have ONE frame only.
      Global input !important rules were repainting inner inputs.
   ========================================================= */
body .search-box > input,
body .quick-input > input,
body .fbav-big-search > input,
body .fbav-maint-search > input,
body #v117-operation-details-panel .v118i-search-box > input,
body .history-filter-bar-v66 > div:first-child > input,
body .ws-native-toolbar-v52 .v118j-direct-search > input{
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}
body .search-box > input:focus,
body .quick-input > input:focus,
body .fbav-big-search > input:focus,
body .fbav-maint-search > input:focus,
body #v117-operation-details-panel .v118i-search-box > input:focus,
body .history-filter-bar-v66 > div:first-child > input:focus,
body .ws-native-toolbar-v52 .v118j-direct-search > input:focus{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}

/* Parent owns the focus ring. */
body .search-box:focus-within,
body .fbav-big-search:focus-within,
body .fbav-maint-search:focus-within,
body #v117-operation-details-panel .v118i-search-box:focus-within,
body .history-filter-bar-v66 > div:first-child:focus-within,
body .ws-native-toolbar-v52 .v118j-direct-search:focus-within{
  border-color:#78a9ea!important;
  box-shadow:0 0 0 2px rgba(37,119,220,.08)!important;
}

/* =========================================================
   3) Real spacing between tab rails and filters.
      Global [data-ui-tabbar] margin:0!important was winning.
   ========================================================= */
body .v118k3-analytics-tabs,
body .v118k3-analytics-tabs[data-ui-tabbar="1"]{
  margin-bottom:18px!important;
}
body .history-tabs,
body .history-tabs[data-ui-tabbar="1"]{
  margin-bottom:18px!important;
}
body #v117-operation-details-panel .v117-tabs,
body #v117-operation-details-panel .v117-tabs[data-ui-tabbar="1"]{
  margin-bottom:18px!important;
}
body .history-tabs + .history-filter-bar-v66{
  margin-top:0!important;
}

/* Keep analytics filters from visually touching the tab rule. */
body .v118k3-analytics-tabs + .analytics-filters{
  margin-top:0!important;
}

/* C4.13_SEARCH_SPECIFICITY_OPERATION_ALIGNMENT_STAGING_BADGE_20261005
   Based on live C4.12 cascade inspection.
*/

/* 1) Composite search controls: beat global body input:not(...):not(...) specificity.
      The wrapper owns the only visible border/background/focus ring. */
html body .search-box > input:not([type="checkbox"]):not([type="radio"]),
html body .quick-input > input:not([type="checkbox"]):not([type="radio"]),
html body .fb-account-management-host .fbav-big-search > input:not([type="checkbox"]):not([type="radio"]),
html body .fb-account-management-host .fbav-maint-search > input:not([type="checkbox"]):not([type="radio"]),
html body #v117-operation-details-panel .v118i-search-box > input:not([type="checkbox"]):not([type="radio"]),
html body .history-filter-bar-v66 > div:first-child > input:not([type="checkbox"]):not([type="radio"]),
html body .ws-native-toolbar-v52 .v118j-direct-search > input:not([type="checkbox"]):not([type="radio"]){
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}

html body .search-box > input:not([type="checkbox"]):not([type="radio"]):focus,
html body .quick-input > input:not([type="checkbox"]):not([type="radio"]):focus,
html body .fb-account-management-host .fbav-big-search > input:not([type="checkbox"]):not([type="radio"]):focus,
html body .fb-account-management-host .fbav-maint-search > input:not([type="checkbox"]):not([type="radio"]):focus,
html body #v117-operation-details-panel .v118i-search-box > input:not([type="checkbox"]):not([type="radio"]):focus,
html body .history-filter-bar-v66 > div:first-child > input:not([type="checkbox"]):not([type="radio"]):focus,
html body .ws-native-toolbar-v52 .v118j-direct-search > input:not([type="checkbox"]):not([type="radio"]):focus{
  border:0!important;
  border-radius:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
}

/* Keep exactly one focus frame: the outer composite control. */
html body .search-box:focus-within,
html body .fb-account-management-host .fbav-big-search:focus-within,
html body .fb-account-management-host .fbav-maint-search:focus-within,
html body #v117-operation-details-panel .v118i-search-box:focus-within,
html body .history-filter-bar-v66 > div:first-child:focus-within,
html body .ws-native-toolbar-v52 .v118j-direct-search:focus-within{
  border-color:#78a9ea!important;
  box-shadow:0 0 0 2px rgba(37,119,220,.08)!important;
}

/* 2) Operation Details is a fixed overlay appended to body.
      Keep its title row aligned to the app's ordinary 60px topbar once
      the old full-width TEST strip no longer consumes layout height. */
html body #v117-operation-details-panel{
  top:0!important;
}
html body #v117-operation-details-panel .v117-page-title-row{
  height:60px!important;
  min-height:60px!important;
  padding-top:0!important;
  padding-bottom:0!important;
  margin:0!important;
}

/* 3) Replace the obstructive full-width TEST strip with a persistent,
      compact floating staging badge that does not affect page layout. */
html body [data-ui-test-banner-original="1"]{
  display:none!important;
  height:0!important;
  min-height:0!important;
  max-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  overflow:hidden!important;
}

html body #aui-staging-floating-badge{
  position:fixed!important;
  right:14px!important;
  bottom:14px!important;
  z-index:2147482500!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  width:auto!important;
  max-width:min(330px,calc(100vw - 28px))!important;
  min-height:34px!important;
  padding:7px 11px!important;
  border:1px solid #e8b923!important;
  border-radius:10px!important;
  background:#fff7d6!important;
  color:#7a4b00!important;
  box-shadow:0 8px 24px rgba(16,24,40,.14)!important;
  font-size:11px!important;
  font-weight:650!important;
  line-height:1.35!important;
  pointer-events:none!important;
}
html body #aui-staging-floating-badge .aui-test-pill{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 auto!important;
  min-width:38px!important;
  height:20px!important;
  padding:0 6px!important;
  border-radius:999px!important;
  background:#7a4b00!important;
  color:#fff!important;
  font-size:10px!important;
  font-weight:800!important;
  letter-spacing:.2px!important;
}
html body #aui-staging-floating-badge .aui-test-copy{
  min-width:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

@media(max-width:760px){
  html body #aui-staging-floating-badge{
    right:8px!important;
    bottom:8px!important;
    max-width:calc(100vw - 16px)!important;
  }
  html body #aui-staging-floating-badge .aui-test-copy{
    max-width:230px!important;
  }
}

/* C4.14_EXACT_STAGE_BANNER_OPERATION_FB_EMPLOYEE_VISIBILITY_20261005 */

/* The live staging DOM exposes the old full-width warning as #pk-staging-banner.
   Remove it from layout completely; the compact floating warning below is the
   only staging indicator. */
html body #pk-staging-banner{
  display:none!important;
  position:absolute!important;
  width:0!important;
  height:0!important;
  min-width:0!important;
  min-height:0!important;
  max-width:0!important;
  max-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  overflow:hidden!important;
  visibility:hidden!important;
  pointer-events:none!important;
}

/* More visible but much less obstructive staging indicator. */
html body #aui-staging-floating-badge{
  position:fixed!important;
  right:14px!important;
  bottom:14px!important;
  z-index:2147482500!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:auto!important;
  min-width:92px!important;
  max-width:none!important;
  min-height:36px!important;
  height:36px!important;
  padding:0 14px!important;
  border:2px solid rgba(255,255,255,.95)!important;
  border-radius:10px!important;
  background:#d92d20!important;
  color:#fff!important;
  box-shadow:0 0 0 3px rgba(217,45,32,.14),0 8px 24px rgba(16,24,40,.20)!important;
  font-size:13px!important;
  font-weight:850!important;
  line-height:1!important;
  letter-spacing:.04em!important;
  white-space:nowrap!important;
  pointer-events:none!important;
  opacity:1!important;
}
html body #aui-staging-floating-badge > *{
  display:none!important;
}
html body #aui-staging-floating-badge::before{
  content:"测试环境"!important;
  display:block!important;
  color:#fff!important;
  font:inherit!important;
}

/* Once #pk-staging-banner is removed from flow, the ordinary React .topbar and
   the fixed Operation Details titlebar share the same zero origin and 60px height. */
html body .main > .topbar{
  top:0!important;
  height:60px!important;
  min-height:60px!important;
}
html body #v117-operation-details-panel{
  top:0!important;
}
html body #v117-operation-details-panel .v117-page-title-row{
  display:flex!important;
  height:60px!important;
  min-height:60px!important;
  margin:0!important;
  padding:0 28px!important;
  align-items:center!important;
  box-sizing:border-box!important;
}

@media(max-width:760px){
  html body #aui-staging-floating-badge{
    right:8px!important;
    bottom:8px!important;
    min-width:86px!important;
    height:34px!important;
    min-height:34px!important;
    padding:0 12px!important;
    font-size:12px!important;
  }
}

/* C4.15_ORDINARY_TITLEBAR_RESIDUAL_OFFSET_FIX_20261005
   C4.14 removed the staging banner itself, but ordinary React pages still sit
   in normal document flow while Operation Details is position:fixed.
   Reset only the staging app-flow offsets; leave the fixed Operation Details
   panel untouched.
*/
html body,
html body #root,
html body #root > .workspace,
html body #root > .workspace > .main{
  margin-top:0!important;
  padding-top:0!important;
}

html body #root > .workspace > .main > .topbar{
  margin-top:0!important;
  top:0!important;
  height:60px!important;
  min-height:60px!important;
}

/* Never re-introduce space for the retired full-width staging banner. */
html body #pk-staging-banner{
  display:none!important;
  height:0!important;
  min-height:0!important;
  max-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
}
