
/* =========================================================
   SMJ RESPONSIVE GUARD v0.2.0
   XSTORE + ELEMENTOR HARD MOBILE RESET
========================================================= */

/* Avoid page-wide overflow clipping: fix the actual section instead. */
@media (max-width: 767px) {
  body.smj-rg-xstore .smj-rg-section-contact,
  body.smj-rg-xstore .smj-rg-section-experience,
  body.smj-rg-xstore .smj-rg-section-timeline,
  body.smj-rg-xstore .smj-rg-section-blog,
  body.smj-rg-xstore .smj-rg-section-newsletter,
  body.smj-rg-xstore .smj-rg-section-footer {
    box-sizing: border-box !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
}

.smj-mobile-header,
.smj-mobile-drawer {
  display: none;
}

/* =========================================================
   MOBILE HEADER
========================================================= */

@media (max-width: 767px) {

  body {
    padding-top: 0 !important;
  }

  .elementor-location-header,
  header.site-header,
  .header-wrapper,
  .et_b_header,
  .et_b_header-wrapper,
  .et_b_header-main,
  .mobile-header-wrapper,
  .mobile-header,
  .et-mobile-menu,
  .et_b_header-mobile,
  .etheme-header,
  .etheme-elementor-header {
    display: none !important;
  }

  .smj-mobile-header {
    display: flex !important;
    position: fixed !important;
    inset: 0 0 auto 0 !important;
    z-index: 2147483000 !important;

    width: 100% !important;
    height: 76px !important;
    min-height: 76px !important;

    align-items: center !important;
    justify-content: space-between !important;

    padding: 14px 20px !important;
    margin: 0 !important;

    background: transparent !important;
    border-bottom: 1px solid transparent !important;
    transform: none !important;
    transition: background-color .26s ease, border-color .26s ease, box-shadow .26s ease !important;
  }

  /* Transparent over the first screen. Pink after the first scroll pixel,
     or whenever the mobile drawer is open. */
  body.smj-mobile-scrolled .smj-mobile-header,
  body.smj-mobile-menu-open .smj-mobile-header {
    background: #CD739B !important;
    border-bottom-color: rgba(255,255,255,.14) !important;
    box-shadow: 0 5px 18px rgba(0,0,0,.08) !important;
  }

  .smj-mobile-logo {
    font-family: 'Baskerville','Libre Baskerville',serif !important;
    font-size: 48px !important;
    line-height: .8 !important;
    font-weight: 400 !important;
    letter-spacing: -2px !important;
    color: #fff !important;
    text-decoration: none !important;
  }

  .smj-mobile-menu-action {
    position: relative !important;
    width: 54px !important;
    height: 54px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  .smj-mobile-toggle {
    width: 48px !important;
    height: 48px !important;
    padding: 11px !important;

    border: 1px solid rgba(255,255,255,.45) !important;
    border-radius: 50% !important;
    background: transparent !important;

    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    gap: 5px !important;

    position: relative !important;
    z-index: 8 !important;
  }

  .smj-mobile-toggle > span:not(.screen-reader-text) {
    display: block !important;
    width: 100% !important;
    height: 2px !important;
    background: #fff !important;
    transition: transform .25s ease, opacity .25s ease !important;
  }

  body.smj-mobile-menu-open .smj-mobile-toggle > span:nth-child(1) {
    transform: translateY(7px) rotate(45deg) !important;
  }

  body.smj-mobile-menu-open .smj-mobile-toggle > span:nth-child(2) {
    opacity: 0 !important;
  }

  body.smj-mobile-menu-open .smj-mobile-toggle > span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg) !important;
  }

  /* Smaller mirrored monkey */
  .smj-mobile-monkey {
    position: absolute !important;
    top: 40px !important;
    left: 50% !important;
    width: 42px !important;

    transform: translateX(-50%) translateY(-100px) !important;
    transform-origin: 50% 0% !important;

    opacity: 0 !important;
    pointer-events: none !important;
    z-index: 7 !important;

    transition:
      transform .5s cubic-bezier(.2,.8,.2,1),
      opacity .25s ease !important;
  }

  .smj-mobile-monkey-rope {
    position: absolute !important;
    top: -30px !important;
    left: 50% !important;
    width: 1px !important;
    height: 38px !important;
    transform: translateX(-50%) !important;
    background: rgba(255,255,255,.75) !important;
    opacity: 0 !important;
  }

  .smj-mobile-monkey img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    transform: scaleX(-1) !important;
    transform-origin: 50% 0% !important;
    filter: drop-shadow(0 5px 10px rgba(0,0,0,.12));
  }

  body.smj-mobile-menu-open .smj-mobile-monkey {
    opacity: 1 !important;
    transform: translateX(-50%) translateY(0) !important;
  }

  body.smj-mobile-menu-open .smj-mobile-monkey-rope {
    opacity: 1 !important;
  }

  body.smj-mobile-menu-open .smj-mobile-monkey img {
    animation: smj-monkey-swing 2.4s ease-in-out .35s infinite !important;
  }

  @keyframes smj-monkey-swing {
    0%, 100% { transform: scaleX(-1) rotate(-5deg); }
    50%      { transform: scaleX(-1) rotate(5deg); }
  }

  .smj-mobile-drawer {
    position: fixed !important;
    top: 76px !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;

    z-index: 2147482999 !important;

    width: 100% !important;
    max-width: 100% !important;

    background: #CD739B !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;

    padding: 30px 24px 44px !important;
    margin: 0 !important;
  }

  .smj-mobile-drawer[hidden] {
    display: none !important;
  }

  body.smj-mobile-menu-open .smj-mobile-drawer {
    display: block !important;
  }

  .smj-mobile-nav {
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
  }

  .smj-mobile-nav > a {
    display: block !important;
    padding: 14px 2px !important;

    font-family: 'Aparrat',sans-serif !important;
    font-size: 24px !important;
    font-weight: 700 !important;
    line-height: 1.15 !important;

    color: #fff !important;
    text-decoration: none !important;

    border-bottom: 1px solid rgba(255,255,255,.18) !important;
  }

  .smj-mobile-nav .smj-mobile-connect {
    margin-top: 26px !important;
    padding: 18px 24px !important;
    border: 1px solid rgba(255,255,255,.5) !important;
    border-radius: 999px !important;
    text-align: center !important;
  }

  body.smj-mobile-menu-open {
    overflow: hidden !important;

  }
}

/* Mobile layouts below are scoped to specific SMJ components.
   No generic DOM scanning, forced stacking, or universal margin resets. */

/* =========================================================
   FOOTER — XSTORE + ELEMENTOR
========================================================= */

.elementor-location-footer,
.et-footer,
.footer {
  width: 100% !important;
  max-width: 100% !important;
}

@media (max-width: 767px) {
  .elementor-location-footer .e-con,
  .elementor-location-footer .e-con-inner,
  .elementor-location-footer .elementor-container,
  .elementor-location-footer .elementor-row,
  .elementor-location-footer .elementor-column {
    min-width: 0 !important;
    max-width: 100% !important;
  }

  .elementor-location-footer .elementor-column {
    width: 100% !important;
    flex: 0 0 100% !important;
  }

  .smj-rg-social-grid {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0,1fr)) !important;
    gap: 12px !important;
  }
}


/* =========================================================
   ABOUT — scoped mobile layouts, based on the existing About HTML
========================================================= */
@media (max-width: 991px) {
  body.smj-rp-about .smj-s1-inner,
  body.smj-rp-about .smj-s2-inner { grid-template-columns: minmax(0,1fr) !important; }
  body.smj-rp-about .smj-s3-grid { grid-template-columns: repeat(2,minmax(0,1fr)) !important; }
  body.smj-rp-about .smj-s4-grid { grid-template-columns: repeat(3,minmax(0,1fr)) !important; }
  body.smj-rp-about .smj-xb1 { grid-template-columns: minmax(0,1fr) !important; }
}
@media (max-width: 767px) {
  body.smj-rp-about .smj-about-hero,
  body.smj-rp-about .smj-s1,
  body.smj-rp-about .smj-s2,
  body.smj-rp-about .smj-s3,
  body.smj-rp-about .smj-s4,
  body.smj-rp-about .smj-s5,
  body.smj-rp-about .smj-s6,
  body.smj-rp-about .smj-xb1 {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 64px 20px !important;
  }
  body.smj-rp-about .smj-about-hero { padding-top: 48px !important; padding-bottom: 0 !important; }
  body.smj-rp-about .smj-ah-title {
    font-size: clamp(43px, 12vw, 64px) !important;
    letter-spacing: -2px !important;
    line-height: 1.02 !important;
    margin: 0 0 26px !important;
    max-width: 100% !important;
    overflow-wrap: anywhere;
  }
  body.smj-rp-about .smj-ah-content {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 18px !important;
    width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rp-about .smj-ah-photo-sm { display: none !important; }
  body.smj-rp-about .smj-ah-photo-lg {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4 / 5;
    margin: 0 !important;
    flex-shrink: 1 !important;
  }
  body.smj-rp-about .smj-ah-photo-lg img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
  body.smj-rp-about .smj-ah-card {
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    flex-shrink: 1 !important;
    margin: 0 0 28px !important;
    padding: 32px 24px !important;
  }
  body.smj-rp-about .smj-s1-inner,
  body.smj-rp-about .smj-s2-inner,
  body.smj-rp-about .smj-s3-inner,
  body.smj-rp-about .smj-s4-inner,
  body.smj-rp-about .smj-s5-inner,
  body.smj-rp-about .smj-s6-inner {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) !important;
    width: 100% !important;
    min-width: 0 !important;
    gap: 28px !important;
  }
  body.smj-rp-about .smj-s1-photo { width: 100% !important; height: auto !important; aspect-ratio: 4 / 5; }
  body.smj-rp-about .smj-s1-photo img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
  body.smj-rp-about .smj-xb1 { display: flex !important; flex-direction: column !important; gap: 20px !important; }
  body.smj-rp-about .smj-xb1-photo.left,
  body.smj-rp-about .smj-xb1-photo.right {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4 / 5;
    margin: 0 !important;
    align-self: stretch !important;
  }
  body.smj-rp-about .smj-xb1-photo .ph { width: 100% !important; height: 100% !important; }
  body.smj-rp-about .smj-xb1-photo img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
  body.smj-rp-about .smj-xb1-card {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 32px 24px !important;
  }
  body.smj-rp-about .smj-s2-photo { width: 100% !important; height: auto !important; aspect-ratio: 4 / 5; }
  body.smj-rp-about .smj-s2-photo img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
  body.smj-rp-about .smj-s3-header { margin-bottom: 30px !important; }
  body.smj-rp-about .smj-s3-grid {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) !important;
    gap: 16px !important;
  }
  body.smj-rp-about .smj-s3-card { min-width: 0 !important; width: 100% !important; padding: 30px 26px !important; }
  body.smj-rp-about .smj-s4-grid {
    display: grid !important;
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
    gap: 28px 16px !important;
  }
  body.smj-rp-about .smj-s4-member { min-width: 0 !important; }
  body.smj-rp-about .smj-s4-member-photo { margin-bottom: 12px !important; }
  body.smj-rp-about .smj-s4-member-name { font-size: clamp(18px,4.8vw,22px) !important; overflow-wrap: anywhere; }
  body.smj-rp-about .smj-s4-member-role { font-size: 10px !important; letter-spacing: .7px !important; overflow-wrap: anywhere; }
  body.smj-rp-about .smj-s1-title,
  body.smj-rp-about .smj-s2-title,
  body.smj-rp-about .smj-s3-title,
  body.smj-rp-about .smj-s4-title,
  body.smj-rp-about .smj-s5-title,
  body.smj-rp-about .smj-s6-title { font-size: clamp(34px,9vw,48px) !important; line-height: 1.12 !important; overflow-wrap: break-word; }
  body.smj-rp-about .smj-s1-text p,
  body.smj-rp-about .smj-s2-text p,
  body.smj-rp-about .smj-s5-text p { font-size: 16px !important; line-height: 1.7 !important; }
}
@media (max-width: 360px) {
  body.smj-rp-about .smj-s4-grid { grid-template-columns: minmax(0,1fr) !important; }
}

/* Targeted Home and Services adjustments retained from v0.1.6 */
@media (max-width: 767px) {
  body.smj-rp-home .smj-s3-grid { display: flex !important; flex-direction: column !important; gap: 0 !important; }
  body.smj-rp-home .smj-s3-grid > :nth-child(1) { order: 1; }
  body.smj-rp-home .smj-s3-grid > :nth-child(2) { order: 2; }
  body.smj-rp-home .smj-s3-grid > :nth-child(4) { order: 3; }
  body.smj-rp-home .smj-s3-grid > :nth-child(3) { order: 4; }
  body.smj-rp-home .smj-s3-grid > :nth-child(5) { order: 5; }
  body.smj-rp-home .smj-s3-grid > :nth-child(6) { order: 6; }
  body.smj-rp-home .smj-s3-cell { width: 100% !important; min-width: 0 !important; }
  body.smj-rp-home .smj-s3-cell.photo { height: 300px !important; }
  body.smj-rp-home .smj-s3-responsive-img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
  body.smj-rp-home .sc-card,
  body.smj-rp-services .sc-card { position: relative !important; inset: auto !important; transform: none !important; width: 100% !important; min-width: 0 !important; max-width: 100% !important; margin: 0 0 18px !important; }
  .smj-method-steps { display: grid !important; grid-template-columns: minmax(0,1fr) !important; gap: 36px !important; }
  .smj-method-steps::before { display: none !important; }
  .smj-method-step { width: 100% !important; min-width: 0 !important; }
}
@media (prefers-reduced-motion: reduce) {
  .smj-mobile-monkey, .smj-mobile-monkey img, .smj-mobile-toggle > span { animation: none !important; transition: none !important; }
}


/* =========================================================
   SMJ RESPONSIVE GUARD v0.2.1 — SECTION-LEVEL MOBILE FIXES
   Section markers are applied only inside matching SMJ blocks.
   No global forced grid, no body overflow masking.
========================================================= */
@media (max-width: 767px) {
  body.smj-rg-xstore :is(.smj-rg-section-contact,.smj-rg-section-experience,.smj-rg-section-timeline,.smj-rg-section-blog,.smj-rg-section-newsletter,.smj-rg-section-footer) {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
  body.smj-rg-xstore :is(.smj-rg-section-contact,.smj-rg-section-experience,.smj-rg-section-timeline,.smj-rg-section-blog,.smj-rg-section-newsletter,.smj-rg-section-footer) :is(img,video,iframe,svg) {
    max-width: 100% !important;
  }
  body.smj-rg-xstore :is(.smj-rg-section-contact,.smj-rg-section-experience,.smj-rg-section-timeline,.smj-rg-section-blog,.smj-rg-section-newsletter,.smj-rg-section-footer) :is(h1,h2,h3,h4,p,li) {
    max-width: 100% !important;
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
  }
  body.smj-rg-xstore .smj-rg-mobile-stack {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) !important;
    grid-auto-flow: row !important;
    grid-auto-columns: minmax(0,1fr) !important;
    align-items: stretch !important;
    justify-items: stretch !important;
    gap: clamp(16px,5vw,30px) !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    height: auto !important;
  }
  body.smj-rg-xstore .smj-rg-mobile-stack > * {
    box-sizing: border-box !important;
    grid-column: auto !important;
    grid-row: auto !important;
    min-width: 0 !important;
    max-width: 100% !important;
    width: 100% !important;
    height: auto;
    margin-left: 0 !important;
    margin-right: 0 !important;
    flex: 0 1 auto !important;
  }

  /* Contact: hero columns, copy and form fields. */
  body.smj-rp-contact .smj-rg-section-contact {
    padding: clamp(30px,7vw,52px) 20px !important;
    min-height: 0 !important;
  }
  body.smj-rp-contact .smj-rg-section-contact :is(h1,h2) {
    font-size: clamp(36px,10vw,52px) !important;
    line-height: 1.06 !important;
    letter-spacing: -.035em !important;
    word-break: normal !important;
  }
  body.smj-rp-contact .smj-rg-section-contact :is([class*="-grid"],[class*="-split"],[class*="-columns"],[class*="-layout"]):not([class*="form"]):not([class*="social"]) {
    grid-template-columns: minmax(0,1fr) !important;
  }
  body.smj-rp-contact :is(.wpcf7-form,.mc4wp-form,.elementor-form) :is(input,textarea,select,button) {
    max-width: 100% !important;
  }
  body.smj-rp-contact .smj-rg-section-contact :is([class*="photo"],[class*="image"],[class*="visual"]) {
    min-width: 0 !important;
    max-width: 100% !important;
  }

  /* Home: strategic process, collaboration experience and numbered steps. */
  body.smj-rp-home :is(.smj-rg-section-experience,.smj-rg-section-timeline) :is([class*="-grid"],[class*="-steps"],[class*="-columns"],[class*="-split"]):not([class*="social"]):not([class*="form"]) {
    grid-template-columns: minmax(0,1fr) !important;
  }
  body.smj-rp-home .smj-rg-section-experience :is(h1,h2) {
    font-size: clamp(34px,9vw,48px) !important;
    line-height: 1.12 !important;
  }
  body.smj-rp-home .smj-rg-section-timeline :is(h3,h4) {
    font-size: clamp(23px,6.3vw,32px) !important;
    line-height: 1.2 !important;
  }
  body.smj-rp-home .smj-rg-section-timeline :is(p,li) {
    font-size: 16px !important;
    line-height: 1.65 !important;
  }

  /* Journal: featured post and article list become full-width rows. */
  body.smj-rp-home .smj-rg-section-blog :is([class*="-grid"],[class*="-split"],[class*="-columns"],[class*="-layout"]):not([class*="social"]) {
    grid-template-columns: minmax(0,1fr) !important;
  }
  body.smj-rp-home .smj-rg-section-blog :is(h2,h3,h4) {
    font-size: clamp(27px,7.5vw,43px) !important;
    line-height: 1.13 !important;
  }

  /* Newsletter: avoid huge whitespace; form remains usable. */
  body.smj-rp-home .smj-rg-section-newsletter {
    padding: clamp(42px,9vw,72px) 20px !important;
    min-height: 0 !important;
  }
  body.smj-rp-home .smj-rg-section-newsletter :is(h2,h3) {
    font-size: clamp(30px,8.2vw,43px) !important;
    line-height: 1.15 !important;
  }
  body.smj-rp-home .smj-rg-section-newsletter :is(input,button,textarea,select) {
    max-width: 100% !important;
  }

  /* Custom footer: columns stack; actual social links stay two-up. */
  body.smj-rg-xstore .smj-rg-section-footer {
    padding-left: max(20px,env(safe-area-inset-left)) !important;
    padding-right: max(20px,env(safe-area-inset-right)) !important;
    min-height: 0 !important;
  }
  body.smj-rg-xstore .smj-rg-section-footer :is([class*="-grid"],[class*="-split"],[class*="-columns"]):not([class*="social"]):not([class*="links"]):not([class*="nav"]) {
    grid-template-columns: minmax(0,1fr) !important;
  }
  body.smj-rg-xstore .smj-rg-section-footer :is(h2,h3,h4) {
    font-size: clamp(30px,8.5vw,46px) !important;
    line-height: 1.1 !important;
  }
  body.smj-rg-xstore .smj-rg-section-footer :is([class*="social-grid"],[class*="social-links"]) {
    display: grid !important;
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
    gap: 10px !important;
  }
  body.smj-rg-xstore .smj-rg-section-footer :is([class*="social-grid"],[class*="social-links"]) a {
    min-width: 0 !important;
    font-size: clamp(10px,3vw,13px) !important;
  }
}
/* Native XStore copyright only when verified by its exact text. */
body.smj-rg-xstore .smj-rg-duplicate-copyright { display: none !important; }

/* =========================================================
   v0.2.2 — Screenshot-driven mobile repairs (Contact, Services, About)
   No page-wide overflow clipping or desktop overrides.
========================================================= */
@media (max-width: 767px) {
  /* Visually dark before scroll even when the underlying hero is pink;
     transparent over a pink hero appeared pink and did not meet the brief. */
  body:not(.smj-mobile-scrolled):not(.smj-mobile-menu-open) .smj-mobile-header {
    background-color: #1E1E1E !important;
    border-bottom-color: transparent !important;
  }
  body.smj-mobile-scrolled .smj-mobile-header,
  body.smj-mobile-menu-open .smj-mobile-header { background-color: #CD739B !important; }

  /* Contact: repair each independently rendered Elementor HTML section,
     including form rows and the black contact-details panel. */
  body.smj-rp-contact .smj-rg-contact-stack {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) !important;
    grid-auto-flow: row !important;
    grid-auto-columns: minmax(0,1fr) !important;
    align-items: stretch !important;
    justify-items: stretch !important;
    gap: clamp(16px,5vw,28px) !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
  }
  body.smj-rp-contact .smj-rg-contact-stack > * {
    box-sizing: border-box !important;
    grid-column: auto !important;
    grid-row: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    flex-basis: auto !important;
  }
  body.smj-rp-contact .smj-rg-contact-wide {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rp-contact .elementor-widget-html :is([class*="form-grid"],[class*="form-row"],[class*="fields-grid"],[class*="fields-row"],[class*="contact-grid"],[class*="contact-split"],[class*="contact-layout"],[class*="contact-columns"],[class*="hero-grid"],[class*="hero-split"],[class*="info-grid"],[class*="details-grid"]) {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) !important;
    grid-auto-flow: row !important;
    gap: 18px !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rp-contact .elementor-widget-html :is([class*="form-grid"],[class*="form-row"],[class*="fields-grid"],[class*="fields-row"],[class*="contact-grid"],[class*="contact-split"],[class*="hero-grid"],[class*="info-grid"]) > * {
    grid-column: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rp-contact .elementor-widget-html :is(input:not([type="checkbox"]):not([type="radio"]),textarea,select) {
    box-sizing: border-box !important;
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    font-size: 16px !important;
  }
  body.smj-rp-contact .elementor-widget-html :is(label,[class*="field-label"]) {
    max-width: 100% !important;
    overflow-wrap: normal !important;
    font-size: clamp(13px,3.6vw,16px) !important;
    line-height: 1.4 !important;
  }
  body.smj-rp-contact .elementor-widget-html :is(h1,h2,h3) {
    max-width: 100% !important;
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    font-size: clamp(32px,9vw,46px) !important;
    line-height: 1.1 !important;
  }
  body.smj-rp-contact .elementor-widget-html :is(h1,h2,h3) :is(span,em,i,strong) {
    white-space: normal !important;
    overflow-wrap: break-word !important;
  }
  body.smj-rp-contact .elementor-widget-html :is([class*="contact-info"],[class*="contact-details"],[class*="info-card"],[class*="details-card"]) {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    box-sizing: border-box !important;
  }

  /* Services screenshot: italic headline must wrap rather than run offscreen. */
  body.smj-rp-services .elementor-widget-html :is(h1,h2,h3) {
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    font-size: clamp(31px,8.2vw,47px) !important;
    line-height: 1.12 !important;
  }
  body.smj-rp-services .elementor-widget-html :is(h1,h2,h3) :is(span,em,i,strong) {
    white-space: normal !important;
    overflow-wrap: break-word !important;
    max-width: 100% !important;
  }

  /* About: ensure text/card are not narrower or wider than the mobile viewport. */
  body.smj-rp-about .smj-ah-content > *,
  body.smj-rp-about .smj-ah-card,
  body.smj-rp-about .smj-ah-photo-lg {
    box-sizing: border-box !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rp-about .smj-ah-card {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* ============================================================
   v0.2.3 — Contact first: real mobile columns, form and info card.
   Restricted to contact page and <767px. No body overflow masking.
   ============================================================ */
@media (max-width: 767px) {
  body.smj-rg-023-contact :is(.elementor-widget-html,.elementor-widget-shortcode,.elementor-widget-form,.elementor-widget-text-editor) {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rg-023-contact :is(.elementor-widget-html,.elementor-widget-shortcode,.elementor-widget-form,.elementor-widget-text-editor) > .elementor-widget-container {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(section,article,div,form,fieldset) {
    box-sizing: border-box;
    min-width: 0;
  }
  body.smj-rg-023-contact .smj-rg-023-stack {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-rows: auto !important;
    grid-auto-flow: row !important;
    grid-auto-columns: minmax(0,1fr) !important;
    gap: clamp(16px, 5vw, 28px) !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    justify-items: stretch !important;
    align-items: start !important;
  }
  body.smj-rg-023-contact .smj-rg-023-stack > * {
    box-sizing: border-box !important;
    grid-area: auto !important;
    grid-column: auto !important;
    grid-row: auto !important;
    order: initial !important;
    flex: 0 1 auto !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    transform: none !important;
  }
  /* Also catches custom grids whose class names differ from common conventions. */
  body.smj-rg-023-contact .smj-rg-023-widget :is([class*="form-grid"],[class*="field-grid"],[class*="fields-grid"],[class*="form-row"],[class*="fields-row"],[class*="contact-grid"],[class*="contact-split"],[class*="hero-grid"],[class*="hero-split"],[class*="info-grid"],[class*="contact-columns"]) {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) !important;
    grid-auto-flow: row !important;
    gap: 18px !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is([class*="form-grid"],[class*="field-grid"],[class*="fields-grid"],[class*="form-row"],[class*="fields-row"],[class*="contact-grid"],[class*="contact-split"],[class*="hero-grid"],[class*="info-grid"]) > * {
    grid-column: auto !important;
    grid-row: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(form,.wpcf7-form,.elementor-form) {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(input:not([type="checkbox"]):not([type="radio"]),textarea,select) {
    display: block;
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    font-size: 16px !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(label,[class*="field-label"],[class*="form-label"]) {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    font-size: clamp(14px,3.8vw,17px) !important;
    line-height: 1.45 !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(h1,h2,h3) {
    box-sizing: border-box !important;
    max-width: 100% !important;
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    font-size: clamp(32px,9vw,48px) !important;
    line-height: 1.12 !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(h1,h2,h3) :is(span,em,i,strong) {
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(p,li) {
    max-width: 100% !important;
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
  }
  body.smj-rg-023-contact .smj-rg-023-details {
    position: relative !important;
    inset: auto !important;
    left: auto !important;
    right: auto !important;
    top: auto !important;
    bottom: auto !important;
    float: none !important;
    transform: none !important;
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: clamp(24px,7vw,36px) !important;
  }
  body.smj-rg-023-contact .smj-rg-023-details :is(p,a,span,li) {
    overflow-wrap: anywhere !important;
    max-width: 100% !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is(img,picture,video,iframe) {
    max-width: 100% !important;
  }
  body.smj-rg-023-contact .smj-rg-023-widget :is([class*="photo"],[class*="image"],[class*="visual"]) {
    max-width: 100% !important;
    min-width: 0 !important;
  }
  /* Prevent XStore/Elementor columns from keeping their desktop basis. */
  body.smj-rg-023-contact .elementor-widget-html :is(.elementor-container,.elementor-row,.e-con-inner) {
    max-width: 100% !important;
    min-width: 0 !important;
  }
}


/* ============================================================
   v0.2.4 — HOMEPAGE JOURNAL / BLOG ONLY
   The featured article and recent-article list must stack on mobile.
   Only marked SMJ blog blocks are affected; desktop is unchanged.
   ============================================================ */
@media (max-width: 767px) {
  body.smj-rp-home .smj-rg-home-blog {
    box-sizing: border-box !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
  }

  body.smj-rp-home .smj-rg-home-blog .smj-rg-home-blog-stack {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    grid-auto-columns: minmax(0, 1fr) !important;
    grid-auto-flow: row !important;
    gap: clamp(22px, 6vw, 36px) !important;
    align-items: start !important;
    justify-items: stretch !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
  }

  body.smj-rp-home .smj-rg-home-blog .smj-rg-home-blog-stack > * {
    box-sizing: border-box !important;
    grid-column: auto !important;
    grid-row: auto !important;
    flex: 0 1 auto !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    transform: none !important;
  }

  body.smj-rp-home .smj-rg-home-blog :is(article,figure,picture,img) {
    box-sizing: border-box !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }

  body.smj-rp-home .smj-rg-home-blog :is(img,picture img) {
    height: auto;
  }

  body.smj-rp-home .smj-rg-home-blog :is(h2,h3,h4) {
    max-width: 100% !important;
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    line-height: 1.16 !important;
  }

  body.smj-rp-home .smj-rg-home-blog :is(a,p,span) {
    max-width: 100%;
    overflow-wrap: break-word;
  }
}
