/* BAF Member Forum v16.0 complete-build safety layer.
   Loaded after the feature styles so a missing browser default cannot collapse layout. */
html{font-family:"Segoe UI",Roboto,Arial,"Noto Sans Bengali",sans-serif;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body,button,input,select,textarea{font-family:inherit}
*,*::before,*::after{box-sizing:border-box}
html,body{min-width:0;max-width:100%}
body{margin:0}
img,svg,video,canvas{max-width:100%}
button,input,select,textarea{font-size:inherit}
a{overflow-wrap:anywhere}
[hidden]{display:none!important}
/* Prevent unstyled SVG/icon explosions if a feature stylesheet is delayed. */
img.appIcon,.navIcon img,.adminSubIcon img,.workspaceModeIcon img,.adminHeroIcon img,.opsBtn img,.loginFormHead img,.loginTemp img{width:22px;height:22px;object-fit:contain;flex:0 0 auto}
/* Horizontal data views scroll rather than forcing the entire page wider. */
.tableWrap,.opsTableWrap,.adminTableWrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
/* Safe form controls on narrow phones. */
input,select,textarea{max-width:100%}
@media(max-width:760px){
  body{overflow-x:hidden}
  .loginCard,.adminCanvas,.memberMain,.mainContent{max-width:100%}
}

/* ========================================================================
   BAF Member Forum v16.2 — professional UI safety layer
   STYLE ONLY: horizontal buttons, readable light surfaces, consistent forms,
   action wrapping, responsive tables, and polished login/admin/member UI.
   ======================================================================== */

/* Never allow a text action to collapse into a vertical stack of letters. */
:is(
  .btn,.primaryBtn,.secondaryBtn,.dangerBtn,.saveBtn,.actionBtn,.filterBtn,
  .opsBtn,.accBtn,.loginSubmit,.loginDirectory,.logoutBtn,
  .workspaceModeSwitch button,.docActions button,.modalActions button,
  .pinRow button,.mediaMoveBtn,.mediaSaveBtn,.legacyPrivateActions button,
  .birthdayActions a,.bizDownloadActions a,.contactInline a
){
  writing-mode:horizontal-tb!important;
  text-orientation:mixed!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  white-space:nowrap!important;
  line-height:1.2!important;
  flex-shrink:0;
}

/* Action rows wrap as rows; they do not squeeze their buttons. */
:is(
  .toolbar,.actions,.cardActions,.formActions,.modalActions,.docActions,
  .networkCardActions,.personalHeroActions,.opsBulk,.opsActions,.opsHeroActions,
  .opsModalFoot,.accHeroActions,.accWorkActions,.projectMediaActions,
  .businessQrCard>div:last-child,.birthdayActions,.bizDownloadActions
){
  flex-wrap:wrap!important;
  align-items:center!important;
  column-gap:8px!important;
  row-gap:8px!important;
}

/* Professional text-button dimensions. Icon-only controls keep their own size. */
:is(
  .btn,.primaryBtn,.secondaryBtn,.dangerBtn,.saveBtn,.actionBtn,.filterBtn,
  .opsBtn,.accBtn,.loginSubmit,.loginDirectory,.logoutBtn,
  .docActions button,.modalActions button,.pinRow button,
  .mediaMoveBtn,.mediaSaveBtn,.legacyPrivateActions button
){
  min-height:38px;
  padding-block:8px;
  padding-inline:13px;
  border-radius:10px;
  font-weight:750;
  letter-spacing:0;
}

/* Inputs stay legible and never inherit white/light text on a white control. */
body.memberApp :is(input,select,textarea),
body.adminV14 :is(input,select,textarea),
body:has(.adminProBar) :is(input,select,textarea){
  background-color:var(--baf-input,var(--baf-card,#fff))!important;
  color:var(--baf-text,#18304b)!important;
  border-color:var(--baf-border,#d7e1ec)!important;
  caret-color:var(--baf-text,#18304b)!important;
}
body.memberApp :is(input,select,textarea)::placeholder,
body.adminV14 :is(input,select,textarea)::placeholder,
body:has(.adminProBar) :is(input,select,textarea)::placeholder{
  color:var(--baf-muted,#6b7d90)!important;
  opacity:1!important;
}

/* Light surfaces must always carry dark readable content. */
html[data-baf-theme="light"] body.memberApp :is(
  .card,.panel,.notificationRow,.listItem,.detailBox,.docCard,.modal,
  .memberNetworkCard,.metricCard,.quickActionCard,.builderMediaCard,
  .builderFileCard,.aiResultPanel,.yellowMapBox,.linkCard,.qrCard,
  .bizPageSection,.bizProjectCard,.bizContactGrid>div
),
html[data-baf-theme="medium"] body.memberApp :is(
  .card,.panel,.notificationRow,.listItem,.detailBox,.docCard,.modal,
  .memberNetworkCard,.metricCard,.quickActionCard,.builderMediaCard,
  .builderFileCard,.aiResultPanel,.yellowMapBox,.linkCard,.qrCard,
  .bizPageSection,.bizProjectCard,.bizContactGrid>div
){
  background-color:var(--baf-card,#fff)!important;
  border-color:var(--baf-border,#d9e3ed)!important;
  color:var(--baf-text,#18304b)!important;
}
html[data-baf-theme="light"] body.memberApp :is(
  .card,.panel,.notificationRow,.listItem,.detailBox,.docCard,.modal,
  .memberNetworkCard,.metricCard,.quickActionCard,.builderMediaCard,
  .builderFileCard,.aiResultPanel,.yellowMapBox,.linkCard,.qrCard,
  .bizPageSection,.bizProjectCard,.bizContactGrid>div
) :is(h1,h2,h3,h4,h5,h6,b,strong,label,legend,p,small,dt,dd),
html[data-baf-theme="medium"] body.memberApp :is(
  .card,.panel,.notificationRow,.listItem,.detailBox,.docCard,.modal,
  .memberNetworkCard,.metricCard,.quickActionCard,.builderMediaCard,
  .builderFileCard,.aiResultPanel,.yellowMapBox,.linkCard,.qrCard,
  .bizPageSection,.bizProjectCard,.bizContactGrid>div
) :is(h1,h2,h3,h4,h5,h6,b,strong,label,legend,p,small,dt,dd){
  color:var(--baf-text,#18304b)!important;
  text-shadow:none!important;
}
html[data-baf-theme="light"] body.memberApp :is(.muted,.subtle,.fieldHelp),
html[data-baf-theme="medium"] body.memberApp :is(.muted,.subtle,.fieldHelp){
  color:var(--baf-muted,#66788b)!important;
}

/* Legacy admin pages: pair white cards with dark text and clean table contrast. */
body.adminV14 :is(.card,.panel,.metric,.row,.list,.portal,.partner,.doctorRow,.feedCode,.modal,.tableCard),
body:has(.adminProBar) :is(.card,.panel,.metric,.row,.list,.portal,.partner,.doctorRow,.feedCode,.modal,.tableCard){
  background:var(--baf-card,#fff)!important;
  color:var(--baf-text,#18304b)!important;
  border-color:var(--baf-border,#d9e3ed)!important;
}
body.adminV14 :is(.card,.panel,.metric,.row,.list,.portal,.partner,.doctorRow,.feedCode,.modal,.tableCard) :is(h1,h2,h3,h4,h5,h6,b,strong,label,legend),
body:has(.adminProBar) :is(.card,.panel,.metric,.row,.list,.portal,.partner,.doctorRow,.feedCode,.modal,.tableCard) :is(h1,h2,h3,h4,h5,h6,b,strong,label,legend){
  color:var(--baf-text,#18304b)!important;
}
body.adminV14 :is(table,.ptable),body:has(.adminProBar) :is(table,.ptable){
  color:var(--baf-text,#18304b)!important;
}
body.adminV14 :is(th,.ptable th),body:has(.adminProBar) :is(th,.ptable th){
  background:var(--baf-surface2,#edf3f8)!important;
  color:var(--baf-text2,#29445f)!important;
}

/* Login: polished, readable card; intentional dark welcome panel remains untouched. */
body.loginV15 .loginFormPane,
body.loginV15 .loginRecoveryMini,
body.loginV15 .loginTemp{
  color:#17314b;
}
body.loginV15 .loginFormPane :is(label,b,strong,h1,h2,h3),
body.loginV15 .loginRecoveryMini>b,
body.loginV15 .loginTemp b{color:#17314b}
body.loginV15 .loginFormPane :is(input,select,textarea){
  background:#fff!important;
  color:#17314b!important;
  border-color:#ccd9e6!important;
}
body.loginV15 .loginFormPane :is(input,select,textarea)::placeholder{color:#76889a!important;opacity:1}
body.loginV15 .loginPassword button{
  writing-mode:horizontal-tb!important;
  word-break:normal!important;
  white-space:nowrap!important;
}

/* Subtle professional interaction and focus treatment. */
:is(button,a,input,select,textarea):focus-visible{
  outline:3px solid rgba(38,120,190,.22);
  outline-offset:2px;
}
:is(.card,.panel,.metricCard,.quickActionCard,.memberNetworkCard,.opsPanel,.accWork){
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}

/* Do not let long labels break layouts; data itself may still wrap. */
:is(.pageTitle,.adminFeature,.quickActionCard,.memberPriorityCard,.opsMember,.accTool) b{
  overflow-wrap:break-word;
  word-break:normal;
}

@media(max-width:760px){
  :is(.toolbar,.actions,.cardActions,.formActions,.modalActions,.docActions,.networkCardActions,.personalHeroActions,.opsHeroActions,.opsModalFoot){
    width:100%;
  }
  :is(.btn,.primaryBtn,.secondaryBtn,.dangerBtn,.saveBtn,.actionBtn,.opsBtn,.accBtn){
    max-width:100%;
  }
  /* Long mobile actions remain horizontal; their containing row wraps instead. */
  :is(.opsBulk,.opsActions,.docActions,.modalActions){overflow-x:auto;-webkit-overflow-scrolling:touch}
}

/* ========================================================================
   BAF Member Forum v16.3 — readability final pass.
   Gray/light secondary text on LIGHT surfaces becomes dark near-black.
   Intentional light text on dark/navy surfaces is not changed.
   ======================================================================== */
html[data-baf-theme="light"] body.memberApp,
html[data-baf-theme="medium"] body.memberApp{
  --baf-muted:#1e2935!important;
  --baf-text2:#17212c!important;
}
html[data-baf-theme="light"] body.memberApp :is(.muted,.subtle,.fieldHelp,.helpText,.hint,.meta,.description,.cardSub,.panelSub,small,p),
html[data-baf-theme="medium"] body.memberApp :is(.muted,.subtle,.fieldHelp,.helpText,.hint,.meta,.description,.cardSub,.panelSub,small,p){
  color:#18222d!important;
  opacity:1!important;
  text-shadow:none!important;
}
/* A few page-specific components stay white even when the surrounding member
   theme is dark. Their secondary copy must therefore also remain dark. */
body.memberApp :is(.aiWizardSteps,.aiQuickCardUpload,.aiIdentityCheck>div,.aiProjectStep,.arabicSyncSummary,.bizProofGrid article,.bizClassificationRow span,.yellowMapBox,.builderMediaCard,.builderFileCard,.aiResultPanel)[style*="background:#fff"] :is(p,small,.muted,.subtle),
body.memberApp :is(.aiWizardSteps span,.aiQuickCardUpload,.aiIdentityCheck>div,.arabicSyncSummary,.bizProofGrid article,.bizClassificationRow span) :is(p,small,.muted,.subtle){
  color:#18222d!important;
  opacity:1!important;
}
/* Legacy/light Super Admin pages. */
body.adminV14 :is(.muted,.subtle,.help,.hint,small,p,.adminHint,.adminSub,.adminFeature p,.adminPanelHead p),
body:has(.adminProBar) :is(.muted,.subtle,.help,.hint,small,p,.adminHint,.adminSub,.adminFeature p,.adminPanelHead p){
  color:#18222d!important;
  opacity:1!important;
  text-shadow:none!important;
}
/* Do not recolor known dark Admin hero/nav copy. */
body.adminV14 :is(.adminHero,.adminTop,.workspaceModeBar,.adminSidebar,.adminNav),
body:has(.adminProBar) :is(.adminHero,.adminTop,.workspaceModeBar,.adminSidebar,.adminNav){color:inherit}
body.adminV14 :is(.adminHero,.adminTop,.workspaceModeBar,.adminSidebar,.adminNav) :is(p,small,.muted,.subtle),
body:has(.adminProBar) :is(.adminHero,.adminTop,.workspaceModeBar,.adminSidebar,.adminNav) :is(p,small,.muted,.subtle){color:inherit!important}
/* Login light pane. */
body.loginV15 :is(.loginFormPane,.loginRecoveryMini,.loginTemp) :is(p,small,.muted,.subtle,.loginRecoveryStatus){
  color:#18222d!important;
  opacity:1!important;
}
body.loginV15 .loginRecoveryStatus.ok{color:#115f37!important}
body.loginV15 .loginRecoveryStatus.err{color:#8f1726!important}
