/* Nexus child overlay for Elementor pages (handle `nexus-child`).
   MemberPress ReadyLaunch screens use assets/css/mp-nexus-*.css instead.
   Do not put secrets, API keys, or plugin logic in this file. */

/* Directory / profile portraits: snippet 10 prints .nexus-card-avatar;
   generated and uploaded photos must clip to a 100 disc. */
.nexus-card-avatar {
  flex: 0 0 100px;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  overflow: hidden;
  background: #f7f8fb;
}
.nexus-card-avatar img,
img.nx-avatar {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center 20%;
  border-radius: 50%;
}
img.nx-avatar--initials {
  object-position: center;
}

/* Feature cards on the public profile (Member Template 1091): the library
   icons are stroke-based Lucide glyphs; snippet 13's inline CSS fills every
   <path> inside .nexus-feature-icon-circle, so neutralise that for ours. */
.nexus-feature-icon-circle svg.nx-fc-icon,
.nexus-feature-icon-circle svg.nx-fc-icon * {
  fill: none !important;
  stroke: #0c1232;
}
.nexus-feature-icon-circle svg.nx-fc-icon [fill="currentColor"] {
  fill: #0c1232 !important;
  stroke: none;
}

/* Member (1675) / partner (3485) public profile: Elementor prints the body
   in one full-width container (32b5066). Keep its background full-bleed but
   centre the content in the 1216 working area with page gutters. */
body.page-id-1675 .elementor > .e-con-full.e-parent,
body.page-id-3485 .elementor > .e-con-full.e-parent,
.elementor .elementor-element-32b5066.e-con-full.e-parent {
  --nx-profile-content: 1216px;
  --nx-profile-gutter: 40px;
  align-items: center;
}
body.page-id-1675 .elementor > .e-con-full.e-parent > .elementor-element,
body.page-id-3485 .elementor > .e-con-full.e-parent > .elementor-element,
.elementor .elementor-element-32b5066.e-con-full.e-parent > .elementor-element {
  width: min(100%, calc(var(--nx-profile-content) + 2 * var(--nx-profile-gutter)));
  max-width: none;
  margin-left: auto;
  margin-right: auto;
  padding-left: max(var(--padding-left, 0px), var(--nx-profile-gutter));
  padding-right: max(var(--padding-right, 0px), var(--nx-profile-gutter));
  box-sizing: border-box;
}
@media (max-width: 1279px) {
  .elementor .elementor-element-32b5066.e-con-full.e-parent {
    --nx-profile-gutter: 24px;
  }
}
@media (max-width: 839px) {
  .elementor .elementor-element-32b5066.e-con-full.e-parent {
    --nx-profile-gutter: 15px;
  }
}

/* Profile chips / badges: icon and text share one baseline */
body.page-id-1675 .elementor-icon-list-item,
body.page-id-3485 .elementor-icon-list-item {
  align-items: center;
}
body.page-id-1675 .elementor-icon-list-icon,
body.page-id-3485 .elementor-icon-list-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Member/guest header chrome. Critical copy also lives in wp_head
   (nx-chrome-critical) so Login/Apply never flash before this file loads. */
body.nx-chrome-member .elementor-location-header a.simple-button,
body.nx-chrome-member [data-elementor-type="header"] a.simple-button,
body.nx-chrome-member .e-n-header a.simple-button,
body.nx-chrome-member .header-section a.simple-button,
body.nx-chrome-member .elementor-location-header button.gradient-button,
body.nx-chrome-member [data-elementor-type="header"] button.gradient-button,
body.nx-chrome-member .e-n-header button.gradient-button,
body.nx-chrome-member .header-section button.gradient-button {
  display: none !important;
}
body.nx-chrome-member .elementor-location-header .elementor-element:has(> a.simple-button):not(:has([data-nx-dashboard])),
body.nx-chrome-member [data-elementor-type="header"] .elementor-element:has(> a.simple-button):not(:has([data-nx-dashboard])),
body.nx-chrome-member .elementor-location-header .elementor-element:has(> button.gradient-button):not(:has([data-nx-dashboard])),
body.nx-chrome-member [data-elementor-type="header"] .elementor-element:has(> button.gradient-button):not(:has([data-nx-dashboard])) {
  display: none !important;
}
body.nx-chrome-guest [data-nx-dashboard] {
  display: none !important;
}
/* Off cards: hide the shortcode host only. A broad :has() on
   .elementor-element matches page-body ancestors and wipes the profile.
   Benefits is a two-column .community-cart-content (copy + orbital art) —
   hide that whole card, not just the text column. */
body.nx-card-marketing-off .elementor-widget:has(> .nx-card-slot--marketing),
body.nx-card-benefits-off .elementor-widget:has(> .nx-card-slot--benefits),
body.nx-card-benefits-off .community-cart-content:has(.nx-card-slot--benefits),
body.nx-card-benefits-off .e-con:has(> .community-cart-content:has(.nx-card-slot--benefits)),
.elementor-element:has(> .nx-card-slot),
[data-nx-card-hidden="1"] {
  display: none !important;
}
/* The old one-line summary (member_support_description) is gone, so the text
   widget above the intro list is empty. Hide that empty widget only. */
.community-cart-content .elementor-widget-text-editor:not(:has(.elementor-widget-container :not(:empty))) {
  display: none;
}
body.nx-card-offer-off .e-715f85f-1a5821a,
body.nx-card-offer-off .e-65f8600,
body.nx-card-offer-off .e-65f8600-eb31ed8,
body.nx-card-offer-off [data-nexus-intro-action="interest"] {
  display: none !important;
}
[data-nx-offer-ph="1"] .nx-offer-ph.elementor-widget-heading,
[data-nx-offer-ph="1"] .nx-offer-ph.elementor-widget-text-editor {
  width: 100%;
}
[data-nx-offer-ph="1"] .nx-offer-ph .elementor-heading-title {
  margin: 0;
  color: #fff;
}
[data-nx-offer-ph="1"] .nx-offer-ph.elementor-widget-text-editor {
  color: rgba(255, 255, 255, 0.88);
}

a[data-nx-dashboard] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  padding: 10px 24px;
  border: 0;
  border-radius: 999px;
  box-sizing: border-box;
  font-size: 16px;
  line-height: 24px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  color: #fff;
  -webkit-text-fill-color: #fff;
  white-space: nowrap;
}
