/*
 * BB Perfect Proposal Manager v4.0.5
 * Shared Responsive / Contrast Foundation
 *
 * Final shared presentation contract for BB Perfect application screens.
 * It intentionally fixes root shell/header/native-WP conflicts instead of
 * introducing page-specific layout hacks.
 */

/* --------------------------------------------------------------------------
   1. Semantic application tokens: one readable palette for every component.
   -------------------------------------------------------------------------- */
body.bbppm-app-v31,
.bbppm-cleaner-app-page,
.bbppm-customer-app{
  /* Dark theme now derives from the active organization/interface tokens rather
     than the retired green v3 palette. This keeps white-label branding coherent. */
  --bg-primary:color-mix(in srgb,var(--bb-sidebar,#111A33) 92%,#000 8%);
  --bg-secondary:color-mix(in srgb,var(--bb-sidebar,#111A33) 84%,#fff 6%);
  --surface:color-mix(in srgb,var(--bb-sidebar,#111A33) 76%,#fff 10%);
  --surface-hover:color-mix(in srgb,var(--bb-sidebar,#111A33) 68%,#fff 14%);
  --text-primary:#f8fafc;
  --text-secondary:#d7dee8;
  --text-muted:#aab6c8;
  --border:rgba(255,255,255,.17);
  --link:color-mix(in srgb,var(--bb-primary,#5B5BD6) 64%,#fff 36%);
  --link-hover:color-mix(in srgb,var(--bb-primary,#5B5BD6) 40%,#fff 60%);
  --input-bg:color-mix(in srgb,var(--bb-sidebar,#111A33) 72%,#000 8%);
  --table-bg:var(--surface);
  --table-row-bg:var(--surface);
  --table-row-hover:var(--surface-hover);
  --danger:#ff8a7d;
  --warning:#ffd166;
  --success:#63d6ad;
  --info:#8ab4ff;
}
body.bbppm-app-v31[data-bbppm-theme="light"],
body[data-bbppm-theme="light"] .bbppm-customer-app{
  --bg-primary:#f5f7fb;
  --bg-secondary:#f0f4f7;
  --surface:#ffffff;
  --surface-hover:#f5f8fa;
  --text-primary:#17211d;
  --text-secondary:#40534c;
  --text-muted:#667a73;
  --border:#d6e0dc;
  --link:#4d58cc;
  --link-hover:#3843b7;
  --input-bg:#ffffff;
  --table-bg:#ffffff;
  --table-row-bg:#ffffff;
  --table-row-hover:#f6f8fa;
  --danger:#b42318;
  --warning:#9a6700;
  --success:#067647;
  --info:#175cd3;
}

/* Keep legacy token families aligned with the semantic contract. */
body.bbppm-app-v31{
  --bb-app-bg:var(--bg-primary);
  --bb-app-surface:var(--surface);
  --bb-app-surface-2:var(--bg-secondary);
  --bb-app-surface-3:var(--surface-hover);
  --bb-app-line:var(--border);
  --bb-app-line-soft:color-mix(in srgb,var(--border) 72%,transparent);
  --bb-app-text:var(--text-primary);
  --bb-app-muted:var(--text-muted);
  --bb-heading:var(--text-primary);
  --bb-body:var(--text-secondary);
  --bb-muted:var(--text-muted);
  --bb-border:var(--border);
}

/* --------------------------------------------------------------------------
   2. Global containment contract: the page itself must never be the scroller.
   -------------------------------------------------------------------------- */
body.bbppm-app-v31,
body.bbppm-app-v31 #wpwrap,
body.bbppm-app-v31 #wpcontent,
body.bbppm-app-v31 #wpbody,
body.bbppm-app-v31 #wpbody-content,
body.bbppm-app-v31 .bbppm-app-v31-shell,
body.bbppm-app-v31 .bbppm-app-main,
body.bbppm-app-v31 .wrap,
body.bbppm-app-v31 #poststuff,
body.bbppm-app-v31 #post-body,
body.bbppm-app-v31 #post-body-content,
body.bbppm-app-v31 #postbox-container-1,
body.bbppm-app-v31 #postbox-container-2{
  min-width:0!important;
  max-width:100%;
  box-sizing:border-box!important;
}
body.bbppm-app-v31{overflow-x:hidden!important}
body.bbppm-app-v31 .bbppm-app-main{overflow-x:clip!important}
body.bbppm-app-v31 :where(.bbppm-page-header,.bbppm-panel,.bbppm-layout-card,.postbox,.card,.bbppm-native-workspace,.bbppm-v370-list-workspace,.bbppm-v370-record-workspace,.bbppm-global-search,.bbppm-filterbar,.bbppm-manager-filterbar){
  min-width:0!important;
  max-width:100%!important;
}
body.bbppm-app-v31 :where(.bbppm-app-main,.bbppm-page-header,.bbppm-panel,.bbppm-layout-card,.postbox,.card,.bbppm-native-workspace,.bbppm-v370-record-workspace) > *{
  min-width:0;
}
body.bbppm-app-v31 :where(input,select,textarea,button){max-width:100%}
body.bbppm-app-v31 :where(img,video,canvas){max-width:100%;height:auto}
body.bbppm-app-v31 :where(td,th,p,small,label,a,strong,span,.description,.row-title,.row-actions){overflow-wrap:anywhere}

/* Wide data belongs to a local data scroller, not the page viewport. */
body.bbppm-app-v31 :is(.bbppm-native-table-scroll,.bbppm-table-scroll,.bbppm-table-wrap){
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
}
body.bbppm-app-v31 :is(.bbppm-native-table-scroll,.bbppm-table-scroll,.bbppm-table-wrap) > table{
  margin:0!important;
}

/* --------------------------------------------------------------------------
   3. Header: predictable left search + right actions, no overlap.
   -------------------------------------------------------------------------- */
body.bbppm-app-v31 .bbppm-global-topbar{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  min-width:0!important;
  overflow:visible!important;
}
body.bbppm-app-v31 .bbppm-topbar-left{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  flex:1 1 auto!important;
  min-width:0!important;
  max-width:min(520px,45vw)!important;
}
body.bbppm-app-v31 .bbppm-topbar-actions{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
  flex:0 0 auto!important;
  min-width:0!important;
  margin-left:auto!important;
}
body.bbppm-app-v31 .bbppm-top-search-desktop{
  flex:1 1 360px!important;
  width:clamp(220px,32vw,420px)!important;
  min-width:180px!important;
  max-width:420px!important;
  margin:0!important;
}
body.bbppm-app-v31 .bbppm-mobile-search-trigger{display:none!important}

/* Shared header controls use one geometry. */
body.bbppm-app-v31 :is(.bbppm-app-icon-button,.bbppm-topbar-menu>summary){
  min-width:40px!important;
  height:40px!important;
  min-height:40px!important;
  border:1px solid var(--border)!important;
  border-radius:11px!important;
  background:transparent!important;
  color:var(--text-primary)!important;
  box-shadow:none!important;
}
body.bbppm-app-v31 .bbppm-topbar-menu>summary{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  padding:0 12px!important;
  cursor:pointer;
}
body.bbppm-app-v31 :is(.bbppm-app-icon-button,.bbppm-topbar-menu>summary):hover{
  background:var(--surface-hover)!important;
  border-color:color-mix(in srgb,var(--border) 65%,var(--text-muted))!important;
}
body.bbppm-app-v31 .bbppm-quick-menu{display:block!important;flex:0 0 auto!important}
body.bbppm-app-v31 .bbppm-quick-add{white-space:nowrap!important}
body.bbppm-app-v31 .bbppm-topbar-user-copy{min-width:0!important}

/* --------------------------------------------------------------------------
   4. Search page: one in-page search form, no duplicate page action.
   -------------------------------------------------------------------------- */
body.bbppm-screen-search .bbppm-page-search,
body.bbppm-v370-screen-search .bbppm-page-search{display:none!important}
body.bbppm-screen-search .bbppm-head-actions:empty,
body.bbppm-v370-screen-search .bbppm-head-actions:empty{display:none!important}
body.bbppm-screen-search .bbppm-page-header,
body.bbppm-v370-screen-search .bbppm-page-header{align-items:flex-end!important}
body.bbppm-screen-search .bbppm-global-search,
body.bbppm-v370-screen-search .bbppm-global-search{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  gap:10px!important;
  align-items:center!important;
  width:100%!important;
  max-width:none!important;
  padding:10px!important;
}
body.bbppm-screen-search .bbppm-global-search input[type="search"],
body.bbppm-v370-screen-search .bbppm-global-search input[type="search"]{
  width:100%!important;
  min-width:0!important;
  min-height:46px!important;
  margin:0!important;
}
body.bbppm-screen-search .bbppm-global-search .button,
body.bbppm-v370-screen-search .bbppm-global-search .button{
  min-width:96px!important;
  min-height:46px!important;
  margin:0!important;
}

/* --------------------------------------------------------------------------
   5. Native WordPress record screens: modern grid without escaped metaboxes.
   -------------------------------------------------------------------------- */
body.bbppm-native-shell #poststuff,
body.bbppm-native-shell #post-body,
body.bbppm-native-shell #post-body-content,
body.bbppm-native-shell .metabox-holder{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin-left:0!important;
  margin-right:0!important;
}
body.bbppm-native-shell #post-body.columns-2{
  width:100%!important;
  max-width:100%!important;
  margin-right:0!important;
}
body.bbppm-native-shell #postbox-container-1,
body.bbppm-native-shell #postbox-container-2{
  box-sizing:border-box!important;
  min-width:0!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
}
body.bbppm-native-shell #postbox-container-1 .postbox,
body.bbppm-native-shell #postbox-container-2 .postbox{width:100%!important;max-width:100%!important}

@media(min-width:1441px){
  body.bbppm-native-shell #post-body.columns-2{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(290px,320px)!important;
    grid-template-rows:auto auto!important;
    gap:16px 20px!important;
    align-items:start!important;
  }
  body.bbppm-native-shell #post-body.columns-2 > #post-body-content{
    grid-column:1!important;
    grid-row:1!important;
    width:auto!important;
    min-width:0!important;
  }
  body.bbppm-native-shell #post-body.columns-2 > #postbox-container-2{
    grid-column:1!important;
    grid-row:2!important;
    width:auto!important;
    min-width:0!important;
    float:none!important;
  }
  body.bbppm-native-shell #post-body.columns-2 > #postbox-container-1{
    grid-column:2!important;
    grid-row:1 / span 2!important;
    width:auto!important;
    min-width:0!important;
    float:none!important;
    position:sticky!important;
    top:84px!important;
  }
}
@media(max-width:1440px){
  body.bbppm-native-shell #post-body.columns-2{
    display:flex!important;
    flex-direction:column!important;
    gap:14px!important;
  }
  body.bbppm-native-shell #post-body.columns-2 > #post-body-content{order:0!important}
  body.bbppm-native-shell #post-body.columns-2 > #postbox-container-2{order:1!important}
  body.bbppm-native-shell #post-body.columns-2 > #postbox-container-1{order:2!important}
  body.bbppm-native-shell #postbox-container-1,
  body.bbppm-native-shell #postbox-container-2{
    display:block!important;
    float:none!important;
    width:100%!important;
    position:static!important;
  }
}

/* --------------------------------------------------------------------------
   6. Contrast/readability: shared components inherit semantic tokens.
   -------------------------------------------------------------------------- */
body.bbppm-app-v31 :is(.bbppm-panel,.bbppm-priority-card,.bbppm-attention-card,.bbppm-v2-attention-card,.bbppm-layout-card,.postbox,.card,.bbppm-global-search,.bbppm-native-table-scroll){
  background:var(--surface)!important;
  border-color:var(--border)!important;
  color:var(--text-secondary)!important;
}
body.bbppm-app-v31 :is(.bbppm-panel-head,.postbox .postbox-header,.bbppm-v370-filterbar,.bbppm-native-table-scroll thead th){
  background:var(--bg-secondary)!important;
  border-color:var(--border)!important;
}
body.bbppm-app-v31 :is(h1,h2,h3,h4,h5,.wp-heading-inline,.bbppm-panel-head h2,.bbppm-priority-title h2,.row-title,.column-title strong a){
  color:var(--text-primary)!important;
}
body.bbppm-app-v31 :is(p,label,td,.bbppm-team-today-grid strong){color:var(--text-secondary)!important}
body.bbppm-app-v31 :is(small,.description,.howto,.bbppm-team-today-grid span,.bbppm-panel-head small,.bbppm-native-context){
  color:var(--text-muted)!important;
  opacity:1!important;
}
body.bbppm-app-v31 :is(a,.row-actions a,.bbppm-panel-head>a){color:var(--link)!important}
body.bbppm-app-v31 :is(a,.row-actions a,.bbppm-panel-head>a):hover{color:var(--link-hover)!important}
body.bbppm-app-v31 .row-actions{opacity:1!important;color:var(--text-muted)!important}
body.bbppm-app-v31 .row-actions .trash a,
body.bbppm-app-v31 :is(.submitdelete,.button-link-delete,.bbppm-v370-danger-action){color:var(--danger)!important}
body.bbppm-app-v31 .bbppm-team-today-grid>div{border-color:var(--border)!important}
body.bbppm-app-v31 :is(.bbppm-activity-feed>a,.bbppm-coming-list>a,.bbppm-timeline-row,.bbppm-alert-item){
  background:var(--table-row-bg)!important;
  border-color:var(--border)!important;
  color:var(--text-secondary)!important;
}
body.bbppm-app-v31 :is(.bbppm-activity-feed>a,.bbppm-coming-list>a,.bbppm-timeline-row,.bbppm-alert-item):hover{
  background:var(--table-row-hover)!important;
}
body.bbppm-app-v31 table.widefat,
body.bbppm-app-v31 table.wp-list-table{background:var(--table-bg)!important;color:var(--text-secondary)!important}
body.bbppm-app-v31 table.widefat tbody tr,
body.bbppm-app-v31 table.wp-list-table tbody tr{background:var(--table-row-bg)!important}
body.bbppm-app-v31 table.widefat tbody tr:hover,
body.bbppm-app-v31 table.wp-list-table tbody tr:hover{background:var(--table-row-hover)!important}
body.bbppm-app-v31 table.widefat td,
body.bbppm-app-v31 table.wp-list-table td{
  background:transparent!important;
  border-color:var(--border)!important;
  color:var(--text-secondary)!important;
}
body.bbppm-app-v31 table.widefat thead th,
body.bbppm-app-v31 table.wp-list-table thead th{
  background:var(--bg-secondary)!important;
  border-color:var(--border)!important;
  color:var(--text-muted)!important;
}
body.bbppm-app-v31 :is(input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="number"],input[type="date"],input[type="time"],input[type="search"],select,textarea){
  background:var(--input-bg)!important;
  border-color:var(--border)!important;
  color:var(--text-primary)!important;
}
body.bbppm-app-v31 :is(input,textarea)::placeholder{color:var(--text-muted)!important;opacity:1!important}

/* --------------------------------------------------------------------------
   7. Responsive header contract.
   -------------------------------------------------------------------------- */
@media(max-width:1180px){
  body.bbppm-app-v31 .bbppm-sidebar-toggle{display:grid!important}
  body.bbppm-app-v31 .bbppm-topbar-left{max-width:none!important}
  body.bbppm-app-v31 .bbppm-top-search-desktop{
    width:clamp(190px,31vw,340px)!important;
    max-width:340px!important;
    min-width:170px!important;
  }
  body.bbppm-app-v31 .bbppm-topbar-user-copy{display:none!important}
}

@media(max-width:1024px) and (min-width:783px){
  body.bbppm-app-v31 .bbppm-language-menu{display:none!important}
  body.bbppm-app-v31 .bbppm-top-search-desktop{width:clamp(180px,30vw,300px)!important;max-width:300px!important}
}

@media(max-width:900px) and (min-width:783px){
  body.bbppm-app-v31 .bbppm-quick-add{width:40px!important;padding:0!important}
  body.bbppm-app-v31 .bbppm-quick-add>span:not(.dashicons){display:none!important}
  body.bbppm-app-v31 [data-bbppm-theme-toggle]{display:none!important}
}

@media(max-width:782px){
  body.bbppm-app-v31 .bbppm-global-topbar{
    display:flex!important;
    flex-wrap:nowrap!important;
    justify-content:space-between!important;
    gap:6px!important;
    padding-left:max(8px,env(safe-area-inset-left,0px))!important;
    padding-right:max(8px,env(safe-area-inset-right,0px))!important;
    overflow:visible!important;
  }
  body.bbppm-app-v31 .bbppm-topbar-left{
    flex:0 0 auto!important;
    width:auto!important;
    max-width:none!important;
    gap:6px!important;
  }
  body.bbppm-app-v31 .bbppm-topbar-actions{
    flex:0 0 auto!important;
    width:auto!important;
    gap:6px!important;
    margin-left:auto!important;
  }
  body.bbppm-app-v31 .bbppm-top-search-desktop{display:none!important}
  body.bbppm-app-v31 .bbppm-mobile-search-trigger{display:grid!important}
  body.bbppm-app-v31 .bbppm-language-menu,
  body.bbppm-app-v31 [data-bbppm-theme-toggle]{display:none!important}
  body.bbppm-app-v31 .bbppm-quick-menu{display:block!important}
  body.bbppm-app-v31 .bbppm-quick-add{
    display:flex!important;
    width:44px!important;
    min-width:44px!important;
    height:44px!important;
    padding:0!important;
  }
  body.bbppm-app-v31 .bbppm-quick-add>span:not(.dashicons){display:none!important}
  body.bbppm-app-v31 :is(.bbppm-app-icon-button,.bbppm-topbar-menu>summary){
    width:44px!important;
    min-width:44px!important;
    height:44px!important;
    min-height:44px!important;
    padding:0!important;
  }
  body.bbppm-app-v31 .bbppm-user-menu>summary{width:42px!important}
  body.bbppm-app-v31 .bbppm-topbar-user-copy{display:none!important}

  /* Search page keeps exactly one primary form under the page context. */
  body.bbppm-screen-search .bbppm-global-search,
  body.bbppm-v370-screen-search .bbppm-global-search{
    grid-template-columns:1fr!important;
    gap:9px!important;
    padding:10px!important;
  }
  body.bbppm-screen-search .bbppm-global-search .button,
  body.bbppm-v370-screen-search .bbppm-global-search .button{width:100%!important}

  /* Application/native geometry. */
  body.bbppm-app-v31 .bbppm-page-header{min-width:0!important;max-width:100%!important}
  body.bbppm-native-shell #post-body.columns-2,
  body.bbppm-native-shell #postbox-container-1,
  body.bbppm-native-shell #postbox-container-2{width:100%!important;max-width:100%!important}
  body.bbppm-app-v31 .bbppm-native-table-scroll{border-radius:10px!important}
}

@media(max-width:600px){
  body.bbppm-app-v31 .bbppm-global-topbar{gap:4px!important}
  body.bbppm-app-v31 .bbppm-topbar-left,
  body.bbppm-app-v31 .bbppm-topbar-actions{gap:4px!important}
  body.bbppm-app-v31 :is(.bbppm-app-icon-button,.bbppm-topbar-menu>summary),
  body.bbppm-app-v31 .bbppm-quick-add,
  body.bbppm-app-v31 .bbppm-user-menu>summary{
    width:44px!important;
    min-width:44px!important;
    height:44px!important;
    min-height:44px!important;
    border-radius:11px!important;
  }
}

@media(max-width:340px){
  body.bbppm-app-v31 .bbppm-global-topbar{padding-left:5px!important;padding-right:5px!important}
}

/* Tablet/mobile native content cannot retain desktop negative/fixed offsets. */
@media(max-width:1180px){
  body.bbppm-native-shell #wpcontent{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
  }
}

/* Reduced motion and high contrast remain first-class. */
@media(prefers-reduced-motion:reduce){
  body.bbppm-app-v31 *, .bbppm-cleaner-app-page *, .bbppm-customer-app *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}
@media(prefers-contrast:more){
  body.bbppm-app-v31{--border:color-mix(in srgb,var(--text-primary) 60%,transparent)}
}

/* Tablet portrait keeps a real search field; phone widths use the compact icon. */
@media(min-width:601px) and (max-width:782px){
  body.bbppm-app-v31 .bbppm-topbar-left{
    flex:1 1 auto!important;
    width:auto!important;
    min-width:0!important;
  }
  body.bbppm-app-v31 .bbppm-top-search-desktop{
    display:flex!important;
    flex:1 1 220px!important;
    width:clamp(200px,38vw,280px)!important;
    min-width:180px!important;
    max-width:280px!important;
  }
  body.bbppm-app-v31 .bbppm-mobile-search-trigger{display:none!important}
  body.bbppm-app-v31 .bbppm-quick-add{
    width:auto!important;
    min-width:44px!important;
    padding:0 11px!important;
  }
  body.bbppm-app-v31 .bbppm-quick-add>span:not(.dashicons){display:inline!important}
}


/* ========================================================================== 
   v4.1 Stage 05 — Enterprise UX & Accessibility consolidation
   This extends the v4.0.5 foundation in-place; it is not a parallel patch layer.
   ========================================================================== */
body.bbppm-app-v31,
.bbppm-cleaner-app-page,
.bbppm-customer-app{
  --bb-background:var(--bg-primary);
  --bb-surface:var(--surface);
  --bb-text:var(--text-primary);
  --bb-muted-text:var(--text-muted);
  --bb-border:var(--border);
  --bb-input:var(--input-bg);
  --bb-link:var(--link);
  --bb-success:var(--success);
  --bb-warning:var(--warning);
  --bb-danger:var(--danger);
  --bb-info:var(--info);
  --bb-focus:#b7c0ff;
  --bb-space-1:4px;
  --bb-space-2:8px;
  --bb-space-3:12px;
  --bb-space-4:16px;
  --bb-space-5:24px;
  --bb-radius-control:11px;
  --bb-radius-card:14px;
  --bb-control-height:44px;
}
body.bbppm-app-v31[data-bbppm-theme="light"]{--bb-focus:#4653d8}

body.bbppm-app-v31 *,body.bbppm-app-v31 *::before,body.bbppm-app-v31 *::after{box-sizing:border-box}
body.bbppm-app-v31 :where(.wrap,form,fieldset,.form-table,.bbppm-grid,.bbppm-v4-form-grid,.bbppm-filterbar,.bbppm-manager-filterbar,.bbppm-page-header,.bbppm-page-heading,.bbppm-page-actions,.bbppm-topbar-left,.bbppm-topbar-actions){min-width:0!important;max-width:100%}
body.bbppm-app-v31 :where(input,select,textarea,.regular-text,.large-text,.widefat,.wp-list-table){max-width:100%!important}
body.bbppm-app-v31 :where(td,th,p,li,label,a,strong,small,span,.description,.notice,.postbox){overflow-wrap:anywhere;word-break:normal}
body.bbppm-app-v31 :where(button,a[href],input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--bb-focus)!important;
  outline-offset:2px!important;
  box-shadow:none!important;
}
body.bbppm-app-v31 :where(button,.button,.page-title-action,input,select,textarea,summary){border-radius:var(--bb-radius-control)}
body.bbppm-app-v31 :where(input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="number"],input[type="date"],input[type="time"],input[type="search"],select){min-height:40px}
body.bbppm-app-v31 :where(.button,.page-title-action,.bbppm-app-icon-button,.bbppm-topbar-menu>summary){min-height:40px}
@media(pointer:coarse){body.bbppm-app-v31 :where(button,.button,.page-title-action,a.bbppm-app-icon-button,.bbppm-topbar-menu>summary,input,select){min-height:44px!important}}

/* Stable application-toolbar contract. Desktop keeps Search + utilities; tablet
   removes optional utilities; phones show Menu/Search/+ /Notifications/Profile. */
body.bbppm-app-v31 .bbppm-global-topbar{min-height:64px!important;height:auto!important;max-width:100vw!important}
body.bbppm-app-v31 .bbppm-topbar-left{flex:1 1 520px!important;max-width:min(620px,48vw)!important}
body.bbppm-app-v31 .bbppm-topbar-actions{flex:0 1 auto!important;max-width:calc(100% - 180px)!important}
body.bbppm-app-v31 .bbppm-top-search-desktop{position:relative!important;overflow:visible!important;isolation:isolate}
body.bbppm-app-v31 .bbppm-search-suggestions{
  position:absolute!important;z-index:900!important;left:0!important;right:0!important;top:calc(100% + 8px)!important;
  max-height:min(420px,60vh)!important;overflow:auto!important;padding:6px!important;border:1px solid var(--border)!important;
  border-radius:12px!important;background:var(--surface)!important;box-shadow:0 20px 60px rgba(0,0,0,.28)!important;
}
body.bbppm-app-v31 .bbppm-search-suggestions[hidden]{display:none!important}
body.bbppm-app-v31 .bbppm-search-result-link{display:grid!important;grid-template-columns:22px minmax(0,1fr) auto!important;gap:10px!important;align-items:center!important;padding:10px!important;border-radius:9px!important;text-decoration:none!important;color:var(--text-primary)!important}
body.bbppm-app-v31 .bbppm-search-result-link:hover,body.bbppm-app-v31 .bbppm-search-result-link:focus-visible{background:var(--surface-hover)!important}
body.bbppm-app-v31 .bbppm-search-result-link strong,body.bbppm-app-v31 .bbppm-search-result-link small{display:block!important;color:inherit!important}
body.bbppm-app-v31 .bbppm-search-result-link small{color:var(--text-muted)!important;margin-top:2px!important}
body.bbppm-app-v31 .bbppm-search-no-results,body.bbppm-app-v31 .bbppm-menu-empty{padding:10px!important;margin:0!important;color:var(--text-muted)!important;font-size:12px!important}

/* Accessible favorites are standalone buttons, never clickable spans nested in links. */
body.bbppm-app-v31 .bbppm-nav-item{min-width:0!important}
body.bbppm-app-v31 .bbppm-nav-star:focus-visible{opacity:1!important;pointer-events:auto!important}
@media(pointer:coarse){body.bbppm-app-v31 .bbppm-nav-star{opacity:1!important;pointer-events:auto!important;width:44px!important;height:44px!important}}

/* Command bar uses the same global-search backend as header and Search page. */
body.bbppm-app-v31 .bbppm-command-overlay[hidden]{display:none!important}
body.bbppm-app-v31 .bbppm-command-head{display:flex!important;gap:10px!important;align-items:flex-start!important}
body.bbppm-app-v31 .bbppm-command-head>div{flex:1 1 auto!important;min-width:0!important}
body.bbppm-app-v31 .bbppm-command-head strong{display:block!important;margin-bottom:7px!important;color:var(--text-primary)!important}
body.bbppm-app-v31 .bbppm-command-close{width:44px!important;height:44px!important;min-width:44px!important;border:1px solid var(--border)!important;border-radius:10px!important;background:transparent!important;color:var(--text-primary)!important;font-size:22px!important;cursor:pointer!important}
body.bbppm-app-v31 .bbppm-command-results .bbppm-search-result-link{margin:2px 0!important}

/* One table may scroll internally; it may never widen the document viewport. */
body.bbppm-app-v31 :where(.bbppm-native-table-scroll,.bbppm-table-scroll,.bbppm-table-wrap,.bbppm-v4-table-wrap){max-width:100%!important;min-width:0!important;overflow-x:auto!important;overscroll-behavior-inline:contain!important;-webkit-overflow-scrolling:touch!important}
body.bbppm-app-v31 :where(.bbppm-native-table-scroll,.bbppm-table-scroll,.bbppm-table-wrap,.bbppm-v4-table-wrap)>table{width:max-content!important;min-width:100%!important;max-width:none!important}

/* Native WP edit screens stay inside the BB shell and stack the right rail when
   there is no safe two-column width. */
@media(max-width:1180px){
  body.bbppm-native-shell #poststuff #post-body.columns-2{margin-right:0!important;display:flex!important;flex-direction:column!important;gap:16px!important}
  body.bbppm-native-shell #post-body-content,body.bbppm-native-shell #postbox-container-1,body.bbppm-native-shell #postbox-container-2{float:none!important;clear:both!important;width:100%!important;max-width:100%!important;margin:0!important}
  body.bbppm-native-shell #postbox-container-1{order:2!important}
  body.bbppm-native-shell #post-body-content,body.bbppm-native-shell #postbox-container-2{order:1!important}
}

/* Tablet: retain Search + Quick Add + notifications + profile; optional controls
   are hidden so actions never collide. */
@media(max-width:1024px) and (min-width:783px){
  body.bbppm-app-v31 .bbppm-utility-control,body.bbppm-app-v31 .bbppm-language-menu{display:none!important}
  body.bbppm-app-v31 .bbppm-global-topbar{gap:8px!important}
  body.bbppm-app-v31 .bbppm-topbar-left{flex:1 1 auto!important;max-width:none!important}
  body.bbppm-app-v31 .bbppm-top-search-desktop{flex:1 1 auto!important;width:auto!important;min-width:180px!important;max-width:420px!important}
  body.bbppm-app-v31 .bbppm-quick-add{min-width:44px!important}
}
@media(max-width:900px) and (min-width:783px){
  body.bbppm-app-v31 .bbppm-quick-add{width:44px!important;padding:0!important}
  body.bbppm-app-v31 .bbppm-quick-add>span:not(.dashicons){display:none!important}
}

/* Phone: Menu / Search / + / Notifications / Profile. */
@media(max-width:782px){
  body.bbppm-app-v31 .bbppm-global-topbar{min-height:60px!important;padding-top:8px!important;padding-bottom:8px!important}
  body.bbppm-app-v31 .bbppm-topbar-left{flex:0 0 auto!important}
  body.bbppm-app-v31 .bbppm-topbar-actions{max-width:none!important}
  body.bbppm-app-v31 .bbppm-utility-control,body.bbppm-app-v31 .bbppm-language-menu{display:none!important}
  body.bbppm-app-v31 .bbppm-top-search-desktop{display:none!important}
  body.bbppm-app-v31 .bbppm-mobile-search-trigger{display:grid!important}
  body.bbppm-app-v31 .bbppm-quick-menu,body.bbppm-app-v31 .bbppm-user-menu{display:block!important}
  body.bbppm-app-v31 .bbppm-quick-add>span:not(.dashicons){display:none!important}
  body.bbppm-app-v31 :is(.bbppm-sidebar-toggle,.bbppm-mobile-search-trigger,.bbppm-quick-add,.bbppm-topbar-actions>a.bbppm-app-icon-button,.bbppm-user-menu>summary){width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;padding:0!important}
}
/* Tablet portrait is still tablet: keep a real search field when 601–782px. */
@media(min-width:601px) and (max-width:782px){
  body.bbppm-app-v31 .bbppm-topbar-left{flex:1 1 auto!important;min-width:0!important}
  body.bbppm-app-v31 .bbppm-top-search-desktop{display:flex!important;flex:1 1 220px!important;width:auto!important;min-width:160px!important;max-width:320px!important}
  body.bbppm-app-v31 .bbppm-mobile-search-trigger{display:none!important}
}
@media(max-width:600px){body.bbppm-app-v31 .bbppm-global-topbar{justify-content:space-between!important;gap:4px!important}.bbppm-topbar-user-copy{display:none!important}}
@media(max-width:340px){body.bbppm-app-v31 .bbppm-global-topbar{padding-left:4px!important;padding-right:4px!important}}

/* Search workspace has one primary form; results remain readable in both themes. */
body.bbppm-screen-search .bbppm-global-search{border:1px solid var(--border)!important;background:var(--surface)!important;border-radius:var(--bb-radius-card)!important}
body.bbppm-screen-search .bbppm-search-results>a{min-width:0!important;max-width:100%!important;background:var(--surface)!important;border-color:var(--border)!important;color:var(--text-primary)!important}
body.bbppm-screen-search .bbppm-search-results>a small{color:var(--text-muted)!important}

/* Status/validation accessibility. */
body.bbppm-app-v31 :where(.notice,.bbppm-alert,.bbppm-status,.bbppm-validation-error){max-width:100%!important}
body.bbppm-app-v31 :where(.notice-error,.bbppm-validation-error){border-color:var(--danger)!important}


/* Search workspace must expose exactly one visible search control. */
body.bbppm-screen-search .bbppm-global-topbar .bbppm-top-search-desktop,
body.bbppm-screen-search .bbppm-global-topbar .bbppm-mobile-search-trigger,
body.bbppm-v370-screen-search .bbppm-global-topbar .bbppm-top-search-desktop,
body.bbppm-v370-screen-search .bbppm-global-topbar .bbppm-mobile-search-trigger{display:none!important}
body.bbppm-screen-search .bbppm-topbar-left,
body.bbppm-v370-screen-search .bbppm-topbar-left{flex:0 0 auto!important}

/* Keep visible validation and status messaging legible across palettes. */
body.bbppm-app-v31 :where(.notice-success,.updated){border-left-color:var(--success)!important}
body.bbppm-app-v31 :where(.notice-warning){border-left-color:var(--warning)!important}
body.bbppm-app-v31 :where(.notice-error,.error){border-left-color:var(--danger)!important}
body.bbppm-app-v31 :where(.notice-info){border-left-color:var(--info)!important}

/* Stage 05 cascade correction: v4.0.5 compact-mobile rules hide the search
   input at <=782px. Tablet portrait (601–782px) intentionally restores the
   real search field while leaving the shortcut hint hidden to save space. */
@media(min-width:601px) and (max-width:782px){
  body.bbppm-app-v31 .bbppm-top-search-desktop>input[type="search"]{display:block!important;width:100%!important}
  body.bbppm-app-v31 .bbppm-top-search-desktop>kbd{display:none!important}
  body.bbppm-app-v31 .bbppm-top-search-desktop>.dashicons{position:absolute!important;left:12px!important;margin:0!important}
}

/* Stage 05 viewport containment: phone/tablet-portrait toolbar stays entirely
   inside the content viewport instead of using the legacy full-bleed negative
   margin. This prevents even decorative header geometry from extending offscreen. */
@media(max-width:782px){
  body.bbppm-app-v31 .bbppm-global-topbar{margin-left:0!important;margin-right:0!important;width:100%!important;max-width:100%!important}
}


/* ========================================================================== 
   v4.1.1 — UI Consolidation & Configuration Repair
   Existing v4.0.5 responsive foundation remains authoritative. This section
   replaces the removed universal desktop-stability/v341 layers for shared
   settings/shell behavior without adding another global stylesheet.
   ========================================================================== */

/* Organization settings use the same card/form language as the application. */
body.bbppm-screen-enterprise .bbppm-enterprise-settings,
body.bbppm-screen-system_health .bbppm-v4-workspace{
  width:min(100%,var(--bb-content-max,1540px));
  margin:0 auto;
}
.bbppm-enterprise-hero{
  display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  margin:0 0 20px;padding:20px 22px;border:1px solid var(--border);
  border-radius:var(--bb-radius-card,14px);background:var(--surface);
}
.bbppm-enterprise-hero h1{margin:4px 0 7px}
.bbppm-enterprise-hero p{max-width:820px;margin:0;color:var(--text-muted)}
.bbppm-enterprise-hero-actions{display:flex;flex-wrap:wrap;gap:8px;flex:0 0 auto}
.bbppm-enterprise-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.bbppm-enterprise-card{
  min-width:0;padding:18px;border:1px solid var(--border);border-radius:var(--bb-radius-card,14px);
  background:var(--surface);box-shadow:0 1px 2px rgba(16,24,40,.04);
}
.bbppm-enterprise-card-wide{grid-column:1/-1}
.bbppm-enterprise-card .bbppm-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin:0 0 16px}
.bbppm-enterprise-card .bbppm-card-head span,.bbppm-enterprise-card .bbppm-card-head small{color:var(--text-muted);font-size:12px}
.bbppm-enterprise-card h2{margin:3px 0 0}
.bbppm-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.bbppm-setting-field{display:grid;gap:6px;align-content:start}
.bbppm-setting-field>span,.bbppm-media-field>label,.bbppm-brand-color-grid>label>span{font-weight:650;color:var(--text-primary)}
.bbppm-setting-field input,.bbppm-setting-field select,.bbppm-setting-field textarea,.bbppm-media-controls input{
  width:100%;margin:0;background:var(--input-bg);color:var(--text-primary);border-color:var(--border)
}
.bbppm-setting-field small{color:var(--text-muted);font-weight:400;line-height:1.45}
.bbppm-setting-wide{grid-column:1/-1}
.bbppm-email-footer{margin-top:16px}
.bbppm-media-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.bbppm-media-field{min-width:0}
.bbppm-media-preview{
  display:grid;place-items:center;height:112px;margin:8px 0;padding:10px;border:1px dashed var(--border);
  border-radius:12px;background:var(--bg-secondary);overflow:hidden;color:var(--text-muted);font-size:12px;text-align:center
}
.bbppm-media-preview img{display:block;max-width:100%;max-height:88px;width:auto;height:auto;object-fit:contain}
.bbppm-media-preview img[hidden],.bbppm-media-preview-empty[hidden]{display:none}
.bbppm-media-controls{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center}
.bbppm-media-controls .button-link-delete{white-space:nowrap}
.bbppm-brand-color-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.bbppm-brand-color-grid label{display:grid;gap:8px}
.bbppm-brand-color-grid label>div{display:flex;align-items:center;gap:10px}
.bbppm-brand-color-grid input[type="color"]{width:52px;height:42px;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--input-bg)}
.bbppm-brand-color-grid code{font-size:12px;color:var(--text-muted);background:var(--bg-secondary);padding:5px 7px;border-radius:6px}
.bbppm-toggle-list{display:grid;gap:8px}
.bbppm-toggle-list>label,.bbppm-feature-grid>label{
  display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 12px;
  border:1px solid var(--border);border-radius:11px;background:var(--bg-secondary)
}
.bbppm-toggle-list>label>span,.bbppm-feature-grid>label>span{display:grid;gap:2px;min-width:0}
.bbppm-toggle-list small,.bbppm-feature-grid small{font-weight:400;color:var(--text-muted)}
.bbppm-toggle-list input[type="checkbox"],.bbppm-feature-grid input[type="checkbox"]{flex:0 0 auto}
.bbppm-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.bbppm-feature-grid>label{justify-content:flex-start}
.bbppm-enterprise-save{
  position:sticky;z-index:50;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin:18px 0 0;padding:14px 16px;border:1px solid var(--border);border-radius:13px;
  background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(12px);box-shadow:0 -8px 24px rgba(16,24,40,.08)
}
.bbppm-enterprise-save>div{display:grid;gap:2px}.bbppm-enterprise-save span{color:var(--text-muted);font-size:12px}

/* Control Center no longer owns organization branding. Make the handoff clear. */
.bbppm-control-authority{border-style:dashed}
.bbppm-control-authority p{max-width:760px;color:var(--text-muted)}

/* Shared settings/health table readability. */
body.bbppm-screen-system_health .widefat{border-color:var(--border);background:var(--surface);color:var(--text-primary)}
body.bbppm-screen-system_health .widefat :is(th,td){padding:11px 12px;border-color:var(--border);vertical-align:top}
body.bbppm-screen-system_health .widefat th{color:var(--text-primary)}

/* Retired CSS layers used to own desktop shell geometry. Keep the essential
   contract here so removing them does not re-introduce WordPress chrome/offsets. */
body.bbppm-app-v31{margin:0;min-width:280px;overflow-x:hidden}
body.bbppm-app-v31 #wpadminbar,
body.bbppm-app-v31 #adminmenumain,
body.bbppm-app-v31 #wpfooter,
body.bbppm-app-v31 #screen-meta,
body.bbppm-app-v31 #screen-meta-links{display:none!important}
body.bbppm-app-v31 #wpcontent,body.bbppm-app-v31 #wpbody{margin-left:0;padding-left:0}
body.bbppm-app-v31 .bbppm-workspace-nav{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
body.bbppm-app-v31 .bbppm-sidebar-footer{position:relative;bottom:auto;margin-top:auto;flex:0 0 auto}

@media(max-width:1024px){
  .bbppm-enterprise-grid{grid-template-columns:1fr}
  .bbppm-enterprise-card-wide{grid-column:auto}
  .bbppm-media-grid,.bbppm-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:782px){
  .bbppm-enterprise-hero{flex-direction:column;padding:16px}
  .bbppm-enterprise-hero-actions{width:100%}.bbppm-enterprise-hero-actions .button{flex:1 1 auto;text-align:center}
  .bbppm-enterprise-card{padding:14px}
  .bbppm-settings-grid,.bbppm-media-grid,.bbppm-brand-color-grid,.bbppm-feature-grid{grid-template-columns:1fr}
  .bbppm-setting-wide{grid-column:auto}
  .bbppm-media-controls{grid-template-columns:1fr auto}.bbppm-media-controls .button-link-delete{grid-column:1/-1;justify-self:start}
  .bbppm-enterprise-save{position:static;flex-direction:column;align-items:stretch}.bbppm-enterprise-save .button{width:100%;text-align:center}
}
