/* Local migration corrections only. No desktop redesign, motion reset,
   transform override, or replacement of the original GSAP/Lenis effects. */
@media (max-width: 1199px) {
  /* Bootstrap hides this navigation at lg, while Nimo hides desktop until xl.
     Bridge the 992–1199px gap so the existing menu works on tablets. */
  .wa-offcanvas-area .mobile-main-navigation {
    display: block !important;
  }
  .wa-offcanvas-area {
    box-sizing: border-box;
    max-width: min(450px, 100vw);
    height: 100vh;
    height: 100dvh;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    padding: max(24px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));
  }
  .wa-offcanvas-area .wa-offcanvas-close,
  .nm-header-1-action-link .offcanvas_toggle {
    min-width: 44px;
    min-height: 44px;
    flex-shrink: 0;
  }
  .wa-offcanvas-area .mobile-main-navigation a {
    white-space: normal;
    overflow-wrap: anywhere;
    padding-right: 44px;
  }
  .nm-header-1-wrap { gap: 16px; }
  .nm-header-1-logo { min-width: 0; }
  .nm-header-1-action-link { gap: 16px; flex-shrink: 0; }
  .e-con, .elementor-widget, .elementor-widget-container,
  .nm-contact-1-wrap > *, .nm-contact-1-info > * { min-width: 0; }
  .nm-contact-1-info-single .disc,
  .nm-contact-1-info-single .disc a { overflow-wrap: anywhere; }
  .wpcf7-form input:not([type="checkbox"]):not([type="radio"]),
  .wpcf7-form select, .wpcf7-form textarea { max-width: 100%; min-width: 0; }
  .elementor-widget-video video,
  .elementor-widget-google_maps iframe,
  .wp-block-embed iframe { max-width: 100%; }
  /* The tablet's three equal tracks otherwise use email min-content widths. */
  .nm-contact-1-info { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
  .nm-header-1-wrap { padding-inline: 16px; }
  .nm-header-1-logo { max-width: min(175px, 48vw); }
  .nm-hero-1-title.has-title-1 {
    margin-left: 0;
    font-size: clamp(40px, 10.5vw, 70px);
  }
  .nm-hero-1-subtitle { margin-left: 0; }
  .nm-hero-1-title.has-title-2 {
    font-size: clamp(38px, 9.5vw, 70px);
    overflow-wrap: normal;
  }
  /* Reserve a separate vertical band for the original illustration. Keep
     its original transforms, colour overlay and entrance animation intact. */
  .nm-hero-1-content { padding-bottom: clamp(260px, 80vw, 510px); }
  .nm-hero-1-content-2 {
    position: relative;
    bottom: auto;
    padding-bottom: 48px;
  }
  .nm-hero-1-content-2-wrap { gap: 24px; }
  /* Mascot: the tablet's presence. Height follows the viewport width
     (band + 117vw, about 2x the width on phones, capped): the U head starts
     12px under the title (the figure's top is 9.9% down the artwork, hence
     .901), the torso continues behind the details (text stays above it), the
     figure sits right of the video button and a little past the right edge
     (the hero clips it: wa-fix), and fades out at the bottom so the
     illustration's cropped legs never end on a hard edge. */
  .nm-hero-1-main-img {
    --lm-mascot-h: min(calc(clamp(260px, 80vw, 510px) + 117vw), 1080px);
    height: var(--lm-mascot-h);
    bottom: calc(var(--lm-hero-details-height, 370px) + clamp(260px, 80vw, 510px) - 12px - .901 * var(--lm-mascot-h));
    right: -26vw;
  }
  .nm-hero-1-main-img img {
    height: 100%; max-height: 100%; width: auto; max-width: none; object-fit: contain;
    -webkit-mask-image: linear-gradient(to bottom, #000 62%, transparent 96%);
    mask-image: linear-gradient(to bottom, #000 62%, transparent 96%);
  }
  .nm-hero-1-disc { max-width: 100%; }
  .nm-contact-1-info { grid-template-columns: minmax(0, 1fr); }
  .nm-contact-1-social .link-elm { max-width: 100%; gap: 24px; }
  .nm-steps-1-card .content { min-width: 0; }
  .nm-steps-1-card .content .title { gap: 16px; }
  .wpcf7-form input, .wpcf7-form textarea, .wpcf7-form select {
    /* Avoid iOS automatic focus zoom without disabling user pinch-to-zoom. */
    font-size: max(16px, 1em);
  }
  .wp-block-image img { max-width: 100%; height: auto; }
  .wp-block-table { max-width: 100%; overflow-x: auto; }
}

@media (min-width: 768px) and (max-width: 1199px) {
  .nm-hero-1-disc { max-width: min(520px, 68vw); }
}

@media (max-width: 1024px) {
  /* Oppworx's captured settings reduce the intro margin to 30/80px but the
     original floating header starts at 55px. Reserve room below that header. */
  .elementor-3027 .elementor-element.elementor-element-59426da2 {
    --margin-top: 180px;
  }
}

/* September polish: shared roles follow the opening homepage about/services
   sections: Inter; 55px/700 section titles; 18px/500 labels; 18px body;
   30px/600 feature-card titles; 17px card descriptions. No hero, footer,
   form, navigation structure, image source, or motion changes. */
.page-wrapper, .lm-page-root {
  --lm-section-size: 55px;
  --lm-label-size: 18px;
  --lm-body-size: 18px;
  --lm-card-size: 30px;
  --lm-card-body-size: 17px;
}
.page-wrapper :is(.nm-sec-title-1, .nm-sec-title-2):not(:where(footer *, [data-elementor-type="footer"] *, [class*="nm-footer"] *, form *, .nm-faqs-1-contact *, header *, .wa-offcanvas-area *)) {
  font-family: var(--nm-font-2) !important;
  font-size: var(--lm-section-size) !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  margin-top: 0;
  margin-bottom: 0 !important;
  color: #FFFFFF;
  /* Nimo extra.css applies break-all to title-2. SplitText then captures
     those broken words as separate lines; correct wrapping before it runs. */
  word-break: normal !important;
  overflow-wrap: normal !important;
  hyphens: none;
}
:is(.page-wrapper, .lm-page-root) :is(.nm-subtitle-1, .nm-subtitle-2):not(:where(footer *, [data-elementor-type="footer"] *, [class*="nm-footer"] *, form *, .nm-faqs-1-contact *, header *, .wa-offcanvas-area *)) {
  font-family: var(--nm-font-2) !important;
  font-size: var(--lm-label-size) !important;
  font-weight: 500 !important;
  line-height: 1.5 !important;
  letter-spacing: 0 !important;
  margin: 0 0 20px !important;
  padding: 0 !important;
  gap: 13px;
  max-width: 100%;
  color: #66FF63 !important;
  word-break: normal;
  overflow-wrap: normal;
}
/* Match the supplied About label without changing its text or HTML.
   The old 175px rule squeezed long labels into a narrow text column. */
:is(.page-wrapper, .lm-page-root) .nm-subtitle-2 { width: auto; }
:is(.page-wrapper, .lm-page-root) :is(.nm-subtitle-1, .nm-subtitle-2) .text {
  flex: 0 1 auto;
  min-width: 0;
  color: #66FF63 !important;
  word-break: normal;
  overflow-wrap: normal;
}
:is(.page-wrapper, .lm-page-root) .nm-subtitle-2 .line { display: none; }
:is(.page-wrapper, .lm-page-root) .nm-subtitle-2 .icon {
  display: inline-block;
  flex: 0 0 11px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #66FF63 !important;
  background-clip: border-box;
  font-size: 0;
  -webkit-text-fill-color: transparent;
}
:is(.page-wrapper, .lm-page-root) .nm-subtitle-2 .icon i { font-size: 0; }
.page-wrapper :is(p.nm-p-1, li.nm-p-1):not(:where(footer *, [data-elementor-type="footer"] *, [class*="nm-footer"] *, form *, .nm-faqs-1-contact *, header *, .wa-offcanvas-area *, .nm-hero-1-area *, .author-dg, .date, .comment, .nm-testimonial-2-content-slider-single)) {
  font-family: var(--nm-font-2) !important;
  font-size: var(--lm-body-size) !important;
  font-weight: 400;
  line-height: 1.666 !important;
  letter-spacing: 0;
  overflow-wrap: break-word;
}
.page-wrapper :is(.sec-disc, .sce-disc).nm-p-1:not(:where(footer *, [data-elementor-type="footer"] *, form *, .nm-faqs-1-contact *, .nm-services-1-sec-title *, .nm-portfolio-1-sec-title-2 *)) {
  margin-top: 30px !important;
  margin-bottom: 0;
}
.page-wrapper :is(.nm-about-1-card .title, .nm-services-2-card .card-title, .nm-steps-1-card .content .title) {
  font-family: var(--nm-font-2) !important;
  font-size: var(--lm-card-size) !important;
  font-weight: 600 !important;
  line-height: 1.5 !important;
  letter-spacing: 0 !important;
  margin-bottom: 0;
  overflow-wrap: break-word;
}
/* Compact icon cards are a different role: retain their smaller 22px title. */
.page-wrapper .nm-choose-2-card .title {
  font-family: var(--nm-font-2) !important;
  font-size: 22px !important;
  font-weight: 600 !important;
  line-height: 1.35 !important;
  letter-spacing: 0 !important;
  min-width: 0;
  overflow-wrap: break-word;
}
.page-wrapper :is(.nm-about-1-card .disc, .nm-services-2-card .card-disc, .nm-choose-2-card .disc, .nm-steps-1-card .content .disc) {
  font-size: var(--lm-card-body-size) !important;
  margin-top: 10px;
}
.page-wrapper :is(.nm-about-1-card, .nm-services-2-card, .nm-choose-2-card, .nm-steps-1-card .content) { min-width: 0; }
.page-wrapper :is(.nm-services-2-card .card-content, .nm-choose-2-card .icon-x-title, .nm-steps-1-card .content .title) { min-width: 0; }
.page-wrapper .nm-choose-2-card .icon { flex-shrink: 0; }
.page-wrapper .nm-services-2-card .card-title i { vertical-align: middle; font-size: .55em; }

@media (max-width: 1199px) {
  .page-wrapper { --lm-section-size: 50px; --lm-card-size: 24px; }
  /* Color-only menu correction, including the original active/sticky states. */
  .wa-offcanvas-area,
  .wa-offcanvas-area.active {
    background: #050505 !important;
    color: #FFFFFF !important;
  }
  .wa-offcanvas-area :is(.wa-offcanvas-social-title, .wa-offcanvas-gallery-title) { color: rgba(255,255,255,0.70) !important; }
  .wa-offcanvas-area .mobile-main-navigation a { color: #FFFFFF !important; }
  .wa-offcanvas-area .mobile-main-navigation .dropdown-menu,
  .wa-offcanvas-area .mobile-main-navigation .dropdown-menu.active {
    background: #0B0B0B !important;
    border-color: rgba(255,255,255,0.10) !important;
  }
  .wa-offcanvas-area .mobile-main-navigation .dropdown-menu a { color: rgba(255,255,255,0.70) !important; }
  .wa-offcanvas-area .mobile-main-navigation li,
  .wa-offcanvas-area .wa-offcanvas-social-link { border-color: rgba(255,255,255,0.10) !important; }
  .wa-offcanvas-area .dropdown-btn,
  .wa-offcanvas-area .dropdown-btn i,
  .wa-offcanvas-area .wa-offcanvas-social-link { color: #FFFFFF !important; }
  .wa-offcanvas-area .wa-offcanvas-social-link { background: #0B0B0B !important; }
  .wa-offcanvas-area .mobile-main-navigation :is(a:hover, a:focus-visible, a[aria-current="page"]),
  .wa-offcanvas-area .mobile-main-navigation :is(.current-menu-item, .current-menu-ancestor) > a,
  .wa-offcanvas-area .mobile-main-navigation .dropdown-btn.active,
  .wa-offcanvas-area .mobile-main-navigation .dropdown-btn.active i,
  .wa-offcanvas-area .wa-offcanvas-social-link:is(:hover, :focus-visible) { color: #66FF63 !important; }
  .wa-offcanvas-area .wa-offcanvas-close { background: #0B0B0B !important; }
  .wa-offcanvas-area .wa-offcanvas-close span { background: #FFFFFF !important; }
  .wa-offcanvas-area .wa-offcanvas-close:is(:hover, :focus-visible) span { background: #66FF63 !important; }
  .nm-header-1-area .nm-header-1-wrap,
  .nm-header-1-area.wa_sticky .nm-header-1-wrap,
  .nm-header-1-area.wa_sticky_show .nm-header-1-wrap {
    background: #050505 !important;
    border-color: rgba(255,255,255,0.10) !important;
    box-shadow: 0 6px 24px rgba(0,0,0,0.25) !important;
  }
  .nm-header-1-area .nm-offcanvas-btn-1 {
    background: #0B0B0B !important;
    color: #FFFFFF !important;
  }
  .nm-header-1-area .nm-offcanvas-btn-1:is(:hover, :focus-visible, [aria-expanded="true"]),
  .nm-header-1-area .nm-offcanvas-btn-1[aria-expanded="true"] i { color: #66FF63 !important; }
  .nm-header-1-area .nm-offcanvas-btn-1 svg { fill: currentColor; }
  .wa-offcanvas-area :is(a, button, .dropdown-btn):focus-visible { outline-color: #66FF63; }
}
@media (max-width: 1024px) {
  /* Keep grids and their order; allow their existing tracks to shrink. */
  .nm-about-1-wrap { grid-template-columns: minmax(0,1.32fr) minmax(0,1fr); gap: 32px; }
  .nm-services-2-card { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 24px; }
  .nm-services-2-card .card-content { padding-inline: 12px; }
  .nm-services-2-card .btn-wrap { max-width: 100%; margin-top: 30px; }
  :is(.nm-services-2-card, .nm-about-1-card) .nm-pr-btn-1 { max-width: 100%; min-width: 0; gap: 10px; padding-right: 18px; }
  :is(.nm-services-2-card, .nm-about-1-card) .nm-pr-btn-1 .text { min-width: 0; white-space: normal; overflow-wrap: break-word; }
}
@media (max-width: 991px) {
  .page-wrapper { --lm-section-size: 45px; }
}
@media (max-width: 767px) {
  .page-wrapper, .lm-page-root { --lm-section-size: 35px; --lm-label-size: 16px; --lm-body-size: 17px; --lm-card-body-size: 17px; }
  :is(.nm-about-1-area, .nm-services-2-area, .nm-choose-2-area) > .container,
  .nm-services-1-container { padding-inline: 20px; }
  .nm-about-1-wrap, .nm-services-2-card { grid-template-columns: minmax(0,1fr); }
  .nm-services-2-card { gap: 20px; }
  .nm-services-2-card .card-content { padding: 20px 12px; }
  .nm-services-2-card .card-img { height: clamp(220px, 65vw, 300px); border-radius: 15px; }
  .nm-services-2-card .card-img img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
  .nm-choose-2-card { max-width: 100%; }
  .nm-choose-2-card .icon-x-title { gap: 14px; }
  .nm-steps-1-card .content .title { gap: 12px; }
}
/* Phones and tablets: the step numbers of the right column ("04"-"06", theme
   left: -25px) were cut by the screen edge; kept just inside it. */
@media (max-width: 1199px) {
  .nm-choose-2-right .nm-choose-2-card .number { left: -10px; }
}
