/*=============================================
    NeuroSkill brand layer
    Loaded after style.css — brand lockup, logo mark
    and a small number of content-specific helpers.
    All template animations and behaviour are untouched.
==============================================*/

/*----------------------------------------
    Brand lockup (replaces the raster logo)
------------------------------------------*/
.ns-logo {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 12px;
  line-height: 1;
  white-space: nowrap;
}

.ns-logo-mark {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  width: 42px;
  height: 42px;
  display: block;
}

.ns-logo-text {
  font: 700 27px/1 var(--heading-font);
  letter-spacing: -0.02em;
  color: var(--heading-color);
  -webkit-transition: color 0.3s ease;
  transition: color 0.3s ease;
}

.ns-logo-text span {
  color: var(--secondary-color);
}

/* White variant — dark headers, dark footers */
.ns-logo--white .ns-logo-text {
  color: #fff;
}

.ns-logo--white .ns-logo-text span {
  color: #a17bff;
}

@media (max-width: 767.98px) {
  .ns-logo {
    gap: 9px;
  }
  .ns-logo-mark {
    width: 34px;
    height: 34px;
  }
  .ns-logo-text {
    font-size: 21px;
  }
}

@media (max-width: 359.98px) {
  .ns-logo {
    gap: 7px;
  }
  .ns-logo-mark {
    width: 29px;
    height: 29px;
  }
  .ns-logo-text {
    font-size: 18px;
  }
}

/* The branding column no longer needs the raster width cap */
.header-navigation .site-branding {
  max-width: none;
}

/*----------------------------------------
    Content helpers
------------------------------------------*/
/* Keeps the feature-tab imagery from jumping in height
   as visitors switch between tabs. */
.orbia-features_one .tab-content .orbia-image img {
  width: 100%;
  height: 401px;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 10px;
}

@media (max-width: 1199.98px) {
  .orbia-features_one .tab-content .orbia-image img {
    height: 320px;
  }
}

/* Team portraits come from a shared set, so each card crops its
   source to the template's original proportion instead of stretching. */
.orbia-team-item .member-image img {
  width: 100%;
  aspect-ratio: 280 / 242;
  -o-object-fit: cover;
     object-fit: cover;
  -o-object-position: center 22%;
     object-position: center 22%;
}

/* The support avatar is a fixed 80px circle in the theme. */
.orbia-features_one .orbia-support-box .thumb img {
  -o-object-fit: cover;
     object-fit: cover;
  -o-object-position: center 20%;
     object-position: center 20%;
}

/* Consistent framing for the case-study and blog cards
   now that they carry real photography. */
.orbia-blog-post-item.style-one .post-thumbnail img,
.orbia-blog-post-item.style-two .post-thumbnail img {
  width: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

/* Contact page — the office cards sit on a light panel */
.ns-office-note {
  font-size: 15px;
  opacity: 0.75;
  margin-top: 6px;
}

/*----------------------------------------
    Self-hosted video lightbox
    The theme opens .video-popup as an iframe (YouTube/Vimeo). Our own film is
    served from this server, so it opens as an inline HTML5 player instead.
------------------------------------------*/
/* Sized against BOTH axes so the player always fits the viewport:
   - 92vw keeps a margin on narrow screens
   - 148vh caps the derived 16:9 height at roughly 83vh, leaving room for
     the close button, which matters most in landscape on a phone */
.ns-video-modal {
  position: relative;
  width: 1100px;
  width: min(1100px, 92vw, 148vh);
  max-width: 92vw;
  margin: 0 auto;
}

.ns-video-modal video {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border-radius: 12px;
  background: #000;
  outline: none;
}

@media (max-width: 575.98px) {
  .ns-video-modal {
    border-radius: 8px;
  }
  .ns-video-modal video {
    border-radius: 8px;
  }
}

/*----------------------------------------
    Clients page
    A grid of equal cards. Client logos arrive in different shapes — a
    round seal, a square mark, a wide wordmark — so each sits in a fixed
    "logo well" and is fitted with object-fit rather than sized directly.
    That keeps every card optically level whatever the source file is.
------------------------------------------*/
.ns-client-card {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  height: calc(100% - 30px);
  margin-bottom: 30px;
  padding: 34px 34px 30px;
  border: 1px solid var(--border-color);
  border-radius: 26px;
  background-color: var(--white-color);
  -webkit-transition: all 0.35s;
  transition: all 0.35s;
}

.ns-client-card:hover {
  border-color: transparent;
  -webkit-transform: translateY(-6px);
          transform: translateY(-6px);
  -webkit-box-shadow: 0 24px 50px rgba(21, 21, 21, 0.09);
          box-shadow: 0 24px 50px rgba(21, 21, 21, 0.09);
}

/* The logo well: one fixed height for every client, whatever the artwork. */
.ns-client-card-logo {
  height: 108px;
  margin-bottom: 26px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--border-color);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}

.ns-client-card-logo img {
  display: block;
  max-height: 100%;
  max-width: 210px;
  width: auto;
  height: auto;
  -o-object-fit: contain;
     object-fit: contain;
  -o-object-position: left center;
     object-position: left center;
}

/* A round seal reads larger than a wordmark at the same pixel height, so
   each logo shape gets its own cap. Adjust these when real artwork lands. */
.ns-logo-seal img {
  max-height: 80px;
}

.ns-logo-mark img {
  max-height: 64px;
}

.ns-logo-wordmark img {
  max-height: 62px;
  max-width: 250px;
}

.ns-client-card-body {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
}

.ns-client-card-sector {
  display: inline-block;
  margin-bottom: 12px;
  padding: 6px 14px;
  border-radius: 100px;
  background-color: var(--gray-color);
  font: 500 12px var(--heading-font);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--secondary-color);
}

.ns-client-card-name {
  font-size: 22px;
  line-height: 1.3;
  margin-bottom: 12px;
  color: var(--heading-color);
}

.ns-client-card-body p {
  font-size: 15px;
  line-height: 26px;
  margin: 0;
}

.ns-client-card-link {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 9px;
  margin-top: 24px;
  font: 500 15px var(--heading-font);
  color: var(--heading-color);
}

.ns-client-card-link i {
  -webkit-transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
  transition: transform 0.3s, -webkit-transform 0.3s;
}

.ns-client-card:hover .ns-client-card-name,
.ns-client-card:hover .ns-client-card-link {
  color: var(--secondary-color);
}

.ns-client-card:hover .ns-client-card-link i {
  -webkit-transform: translateX(5px);
          transform: translateX(5px);
}

@media (max-width: 575.98px) {
  .ns-client-card {
    padding: 26px 22px 24px;
  }
  .ns-client-card-logo {
    height: 92px;
  }
}

/*--- Client detail page ---------------------------------------------*/
.ns-client-detail {
  border: 1px solid var(--border-color);
  border-radius: 30px;
  overflow: hidden;
  background-color: var(--white-color);
}

.ns-client-feature-banner {
  line-height: 0;
  background-color: var(--gray-color);
}

.ns-client-feature-banner img {
  width: 100%;
  height: auto;
  display: block;
}

.ns-client-feature-body {
  padding: 45px 50px 50px;
}

@media (max-width: 767.98px) {
  .ns-client-feature-body {
    padding: 30px 22px 34px;
  }
}

.ns-client-feature-body p {
  margin-bottom: 18px;
}

.ns-client-feature-head {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}

.ns-client-feature-tag {
  font: 500 13px var(--heading-font);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--secondary-color);
  background-color: var(--gray-color);
  border-radius: 100px;
  padding: 8px 16px;
}

.ns-client-feature-status {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--text-color);
}

.ns-client-feature-status i {
  font-size: 8px;
  color: #16a34a;
}

.ns-client-feature-title {
  font-size: 32px;
  line-height: 1.28;
  margin-bottom: 20px;
}

@media (max-width: 767.98px) {
  .ns-client-feature-title {
    font-size: 25px;
  }
}

.ns-client-feature-lede {
  font-size: 18px;
  line-height: 30px;
  color: var(--heading-color);
}

.ns-client-feature-sub {
  margin-top: 36px;
  margin-bottom: 14px;
}

.ns-scope-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 26px;
  margin-bottom: 32px;
}

@media (max-width: 575.98px) {
  .ns-scope-list {
    grid-template-columns: 1fr;
  }
}

.ns-scope-list li {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start;
  gap: 10px;
  font-size: 15px;
  line-height: 24px;
}

.ns-scope-list li i {
  color: var(--secondary-color);
  font-size: 14px;
  margin-top: 5px;
}

.ns-client-aim {
  margin: 0 0 36px;
  padding: 26px 30px;
  border-left: 3px solid var(--secondary-color);
  border-radius: 18px;
  background-color: var(--gray-color);
}

.ns-client-aim p {
  margin: 0;
  font: 400 18px/30px var(--heading-font);
  color: var(--heading-color);
}

.ns-pillar {
  height: 100%;
  padding: 26px 24px;
  border: 1px solid var(--border-color);
  border-radius: 20px;
  margin-bottom: 24px;
}

.ns-pillar-icon {
  width: 46px;
  height: 46px;
  border-radius: 14px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  margin-bottom: 16px;
  color: var(--white-color);
  background-image: -webkit-gradient(linear, left top, right bottom, from(var(--primary-color)), to(var(--secondary-color)));
  background-image: linear-gradient(to bottom right, var(--primary-color), var(--secondary-color));
}

.ns-pillar h5 {
  margin-bottom: 8px;
}

.ns-pillar p {
  font-size: 14px;
  line-height: 23px;
  margin: 0;
}

.ns-client-feature-close {
  margin-top: 14px;
  margin-bottom: 0;
}

/* Sidebar logo well, same normalising trick as the grid. */
.ns-client-detail-logo {
  height: 72px;
  margin-bottom: 22px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}

.ns-client-detail-logo img {
  max-height: 100%;
  max-width: 180px;
  width: auto;
  -o-object-fit: contain;
     object-fit: contain;
  -o-object-position: left center;
     object-position: left center;
}

.ns-client-detail-logo.ns-logo-seal img {
  max-height: 72px;
}

.ns-client-detail-site {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 8px;
  margin-top: 22px;
  font: 500 15px var(--heading-font);
  color: var(--secondary-color);
}

.ns-client-detail-site i {
  font-size: 12px;
}

.ns-client-other li:not(:last-child) {
  margin-bottom: 6px;
}

.ns-client-other a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 12px;
  padding: 8px 0;
  font: 500 15px var(--heading-font);
  color: var(--heading-color);
}

.ns-client-other a:hover {
  color: var(--secondary-color);
}

.ns-client-other a > span {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 40px;
          flex: 0 0 40px;
  height: 34px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.ns-client-other a img {
  max-width: 100%;
  max-height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

/*----------------------------------------
    Case study detail additions
------------------------------------------*/
.ns-project-eyebrow {
  display: inline-block;
  margin-bottom: 14px;
  font: 500 14px var(--heading-font);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--secondary-color);
}

.ns-result-stats {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  gap: 20px;
  margin: 10px 0 40px;
}

.ns-result-stat {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 150px;
          flex: 1 1 150px;
  padding: 24px 22px;
  border-radius: 20px;
  background-color: var(--gray-color);
}

.ns-result-stat strong {
  display: block;
  font: 700 32px/1.1 var(--heading-font);
  color: var(--heading-color);
  letter-spacing: -0.02em;
}

.ns-result-stat span {
  display: block;
  margin-top: 8px;
  font-size: 14px;
  line-height: 21px;
}

.ns-project-quote {
  margin: 0 0 40px;
  padding: 34px 34px 30px;
  border-radius: 24px;
  border-left: 3px solid var(--secondary-color);
  background-color: var(--gray-color);
}

.ns-project-quote p {
  font: 400 19px/32px var(--heading-font);
  color: var(--heading-color);
  margin-bottom: 22px;
}

.ns-project-quote p::before {
  content: "\201C";
}

.ns-project-quote p::after {
  content: "\201D";
}

.ns-project-quote footer {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 15px;
}

.ns-project-quote footer img {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  -o-object-fit: cover;
     object-fit: cover;
}

.ns-project-quote footer span {
  font-size: 14px;
  line-height: 22px;
}

.ns-project-quote footer strong {
  display: block;
  font: 500 17px var(--heading-font);
  color: var(--heading-color);
}

.project-navigation-icon a {
  color: inherit;
}

/*----------------------------------------
    Leadership cards on team.html
------------------------------------------*/
.ns-leadership-sec .row > [class*="col-"] {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

.ns-lead-item {
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
}

.orbia-team-item.ns-lead-item .member-image img {
  aspect-ratio: 4 / 5;
  border-radius: 16px;
}

.orbia-team-item.ns-lead-item .member-info .position {
  margin-bottom: 14px;
}

.ns-lead-bio {
  font-size: 14px;
  line-height: 24px;
  text-align: left;
}

.ns-lead-tabs-more {
  margin: 10px 0 40px;
}

@media (max-width: 1199.98px) {
  .ns-lead-tabs-more {
    margin-bottom: 30px;
  }
}

.ns-team-more {
  margin-bottom: 20px;
}

/* All team photography now comes from one 3:4 portrait set, so the
   cards crop to that proportion rather than the template's mixed one. */
.orbia-team-item .member-image img {
  aspect-ratio: 4 / 5;
  -o-object-position: center 28%;
     object-position: center 28%;
}

.team-thumb-item .thumb img {
  -o-object-fit: cover;
     object-fit: cover;
  -o-object-position: center 20%;
     object-position: center 20%;
}


/* Leadership portraits fill the width of their card. The stored crop and the
   displayed box are both 4:5, so the browser never crops a second time.
   The template pads .member-image inwards; drop it so the photograph reaches
   the card edge instead of floating in a margin. */
.orbia-team-item.ns-lead-item .member-image {
  padding: 0;
  background-color: transparent;
}

.orbia-team-item.ns-lead-item .member-image img {
  width: 100%;
  max-width: none;
  max-height: none;
  aspect-ratio: 4 / 5;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 14px;
}

/* Engagement team cards read sideways: photograph on the left, name and role
   beside it. A portrait centred in a wide card leaves dead space either side;
   this uses the full card width instead. */
.ns-person {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 20px;
  padding: 16px;
}

.orbia-team-item.ns-person .member-image {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 148px;
          flex: 0 0 148px;
  text-align: left;
}

.orbia-team-item.ns-person .member-image img {
  width: 148px;
  max-width: none;
  max-height: none;
  aspect-ratio: 4 / 5;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 14px;
}

.orbia-team-item.ns-person .member-info {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
  min-width: 0;
  padding: 0;
  text-align: left;
}

.orbia-team-item.ns-person .member-info .title {
  font-size: 20px;
  margin-bottom: 4px;
}

.orbia-team-item.ns-person .member-info .position {
  display: block;
  font-size: 14px;
  line-height: 21px;
  margin-bottom: 14px;
}

.orbia-team-item.ns-person .member-info .social-box {
  margin-top: 0;
}

/* Tablet: the card narrows before the grid drops to one column. */
@media (min-width: 768px) and (max-width: 1199.98px) {
  .ns-person {
    gap: 16px;
  }
  .orbia-team-item.ns-person .member-image,
  .orbia-team-item.ns-person .member-image img {
    -ms-flex-preferred-size: 124px;
        flex-basis: 124px;
    width: 124px;
  }
}

/* Phone: stack and centre, the way the rest of the template does. */
@media (max-width: 575.98px) {
  .ns-person {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    text-align: center;
    padding: 16px 16px 24px;
  }
  .orbia-team-item.ns-person .member-image,
  .orbia-team-item.ns-person .member-image img {
    -ms-flex-preferred-size: auto;
        flex-basis: auto;
    width: 200px;
    max-width: 100%;
  }
  .orbia-team-item.ns-person .member-info {
    text-align: center;
  }
}

/* Footer contact: the email sits under the phone number in the same block. */
.footer-contact-info-widget .ns-footer-email {
  margin-top: 6px;
  font-size: 17px;
  word-break: break-word;
}

/*----------------------------------------
    Process page
    Each phase is a numbered rail beside the detail, so the three
    steps read in order rather than as three equal cards.
------------------------------------------*/
.ns-phase {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 40px;
  padding: 40px 0;
  border-top: 1px solid var(--border-color);
}

.ns-phase:first-child {
  border-top: 0;
  padding-top: 10px;
}

.ns-phase-mark {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 130px;
          flex: 0 0 130px;
}

.ns-phase-number {
  display: block;
  font: 700 46px/1 var(--heading-font);
  letter-spacing: -0.03em;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  background-image: -webkit-gradient(linear, left top, right top, from(var(--primary-color)), to(var(--secondary-color)));
  background-image: linear-gradient(to right, var(--primary-color), var(--secondary-color));
}

.ns-phase-length {
  display: block;
  margin-top: 10px;
  font-size: 14px;
  line-height: 20px;
  color: var(--text-color);
}

.ns-phase-body {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
  min-width: 0;
}

.ns-phase-body h3 {
  margin-bottom: 12px;
}

.ns-phase-lede {
  font-size: 17px;
  line-height: 29px;
  color: var(--heading-color);
  margin-bottom: 26px;
}

.ns-phase-sub {
  margin-bottom: 14px;
}

@media (max-width: 767.98px) {
  .ns-phase {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    gap: 18px;
    padding: 30px 0;
  }
  .ns-phase-mark {
    -ms-flex-preferred-size: auto;
        flex-basis: auto;
  }
  .ns-phase-number {
    font-size: 36px;
  }
}

.ns-principle {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 18px;
  height: calc(100% - 30px);
  margin-bottom: 30px;
  padding: 28px 30px;
  border: 1px solid var(--border-color);
  border-radius: 24px;
}

.ns-principle-icon {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 48px;
          flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  color: var(--white-color);
  background-image: -webkit-gradient(linear, left top, right bottom, from(var(--primary-color)), to(var(--secondary-color)));
  background-image: linear-gradient(to bottom right, var(--primary-color), var(--secondary-color));
}

.ns-principle h4 {
  font-size: 20px;
  margin-bottom: 8px;
}

.ns-principle p {
  font-size: 15px;
  line-height: 25px;
  margin: 0;
}

.ns-process-cta {
  margin-top: 30px;
  padding: 44px 40px;
  border-radius: 30px;
  background-color: var(--gray-color);
}

.ns-process-cta h3 {
  margin-bottom: 12px;
}

.ns-process-cta p {
  margin-bottom: 26px;
}

/*----------------------------------------
    Careers page
------------------------------------------*/
.ns-why {
  height: calc(100% - 30px);
  margin-bottom: 30px;
  margin-top: 45px;
  padding: 30px;
  border: 1px solid var(--border-color);
  border-radius: 24px;
  text-align: center;
}

.ns-why-icon {
  width: 52px;
  height: 52px;
  margin: 0 auto 18px;
  border-radius: 16px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  font-size: 20px;
  color: var(--white-color);
  background-image: -webkit-gradient(linear, left top, right bottom, from(var(--primary-color)), to(var(--secondary-color)));
  background-image: linear-gradient(to bottom right, var(--primary-color), var(--secondary-color));
}

.ns-why h5 {
  margin-bottom: 10px;
}

.ns-why p {
  font-size: 15px;
  line-height: 25px;
  margin: 0;
}

.ns-role {
  padding: 34px 36px;
  margin-bottom: 24px;
  border: 1px solid var(--border-color);
  border-radius: 26px;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}

.ns-role:hover {
  border-color: transparent;
  -webkit-box-shadow: 0 20px 46px rgba(21, 21, 21, 0.08);
          box-shadow: 0 20px 46px rgba(21, 21, 21, 0.08);
}

.ns-role-head {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}

.ns-role-title {
  font-size: 24px;
  margin-bottom: 12px;
}

.ns-role-meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  gap: 8px 20px;
}

.ns-role-meta li {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--text-color);
}

.ns-role-meta li i {
  font-size: 12px;
  color: var(--secondary-color);
}

.ns-role-apply {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
}

.ns-role-lede {
  font-size: 16px;
  line-height: 27px;
  margin-bottom: 20px;
}

.ns-role-sub {
  margin-bottom: 12px;
}

.ns-role-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 26px;
}

@media (max-width: 767.98px) {
  .ns-role {
    padding: 26px 22px;
  }
  .ns-role-list {
    grid-template-columns: 1fr;
  }
}

.ns-apply {
  padding: 46px 50px;
  border-radius: 30px;
  background-color: var(--gray-color);
}

.ns-apply h3 {
  margin-bottom: 14px;
}

.ns-apply > .row > div > p {
  margin-bottom: 22px;
}

.ns-apply-card {
  padding: 34px 30px;
  border-radius: 24px;
  background-color: var(--white-color);
  text-align: center;
}

.ns-apply-card span {
  display: block;
  font-size: 14px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-color);
  margin-bottom: 10px;
}

.ns-apply-card h4 {
  font-size: 21px;
  margin-bottom: 22px;
  word-break: break-word;
}

@media (max-width: 991.98px) {
  .ns-apply {
    padding: 32px 24px;
  }
  .ns-apply-card {
    margin-top: 26px;
  }
}

/*----------------------------------------
    Service detail pages
------------------------------------------*/
.ns-service-detail {
  border: 1px solid var(--border-color);
  border-radius: 30px;
  padding: 45px 50px 50px;
  background-color: var(--white-color);
}

@media (max-width: 767.98px) {
  .ns-service-detail {
    padding: 30px 22px 34px;
  }
}

.ns-service-detail-head {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 16px;
  margin-bottom: 22px;
}

.ns-service-detail-icon {
  width: 62px;
  height: 62px;
  border-radius: 18px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  background-color: var(--gray-color);
}

.ns-service-detail-icon img {
  width: 32px;
  height: auto;
}

.ns-service-detail-index {
  font: 500 13px var(--heading-font);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--secondary-color);
}

.ns-service-detail-title {
  font-size: 34px;
  line-height: 1.25;
  margin-bottom: 18px;
}

@media (max-width: 767.98px) {
  .ns-service-detail-title {
    font-size: 26px;
  }
}

.ns-service-detail-lede {
  font-size: 18px;
  line-height: 30px;
  color: var(--heading-color);
  margin-bottom: 18px;
}

.ns-service-detail p {
  margin-bottom: 18px;
}

.ns-service-sub {
  margin-top: 34px;
  margin-bottom: 14px;
}

.ns-service-nav li:not(:last-child) {
  border-bottom: 1px solid var(--border-color);
}

.ns-service-nav a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  gap: 12px;
  padding: 13px 0;
  font: 500 15px/1.4 var(--heading-font);
  color: var(--heading-color);
}

.ns-service-nav a i {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  font-size: 12px;
  opacity: 0.5;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}

.ns-service-nav a:hover,
.ns-service-nav li.active > a {
  color: var(--secondary-color);
}

.ns-service-nav a:hover i {
  opacity: 1;
  -webkit-transform: translateX(4px);
          transform: translateX(4px);
}

.ns-service-side-note {
  font-size: 15px;
  line-height: 25px;
  margin-bottom: 0;
}

/*----------------------------------------
    Job description pages
------------------------------------------*/
.ns-job,
.ns-job-form {
  border: 1px solid var(--border-color);
  border-radius: 30px;
  padding: 45px 50px 50px;
  background-color: var(--white-color);
}

.ns-job-form {
  margin-top: 30px;
}

@media (max-width: 767.98px) {
  .ns-job,
  .ns-job-form {
    padding: 30px 22px 34px;
  }
}

.ns-job-meta {
  margin-bottom: 20px;
}

.ns-job-title {
  font-size: 34px;
  line-height: 1.25;
  margin-bottom: 18px;
}

@media (max-width: 767.98px) {
  .ns-job-title {
    font-size: 26px;
  }
}

.ns-job-lede {
  font-size: 18px;
  line-height: 30px;
  color: var(--heading-color);
  margin-bottom: 8px;
}

.ns-job p {
  margin-bottom: 18px;
}

.ns-job-sub {
  margin-top: 34px;
  margin-bottom: 14px;
}

.ns-job-side-apply {
  width: 100%;
  margin-top: 28px;
  text-align: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}

/*--- The application form -------------------------------------------*/
.ns-job-form h3 {
  margin-bottom: 10px;
}

.ns-job-form-note {
  font-size: 15px;
  margin-bottom: 30px;
}

.ns-job-form .form-group {
  margin-bottom: 22px;
}

.ns-job-form label {
  display: block;
  margin-bottom: 8px;
  font: 500 14px var(--heading-font);
  color: var(--heading-color);
}

.ns-job-form .form_control {
  width: 100%;
  height: 54px;
  padding: 0 18px;
  border: 1px solid var(--border-color);
  border-radius: 12px;
  background-color: var(--white-color);
  font-size: 15px;
  color: var(--heading-color);
  -webkit-transition: border-color 0.25s;
  transition: border-color 0.25s;
}

.ns-job-form textarea.form_control {
  height: auto;
  padding: 16px 18px;
  line-height: 26px;
  resize: vertical;
}

.ns-job-form .form_control:focus {
  outline: none;
  border-color: var(--secondary-color);
}

.ns-job-form .form_control::-webkit-input-placeholder { color: #9a9a9a; }
.ns-job-form .form_control::-moz-placeholder { color: #9a9a9a; }
.ns-job-form .form_control:-ms-input-placeholder { color: #9a9a9a; }
.ns-job-form .form_control::placeholder { color: #9a9a9a; }

/* File input: the native control is styled as far as it usefully can be. */
.ns-file-input {
  height: auto;
  padding: 13px 18px;
  line-height: 1.4;
  cursor: pointer;
}

.ns-file-input::-webkit-file-upload-button {
  margin-right: 16px;
  padding: 8px 16px;
  border: 0;
  border-radius: 8px;
  font: 500 14px var(--heading-font);
  color: var(--white-color);
  cursor: pointer;
  background-image: linear-gradient(to right, var(--primary-color), var(--secondary-color));
}

.ns-file-input::file-selector-button {
  margin-right: 16px;
  padding: 8px 16px;
  border: 0;
  border-radius: 8px;
  font: 500 14px var(--heading-font);
  color: var(--white-color);
  cursor: pointer;
  background-image: linear-gradient(to right, var(--primary-color), var(--secondary-color));
}

.ns-file-hint {
  display: block;
  margin-top: 8px;
  font-size: 13px;
  color: var(--text-color);
}

.ns-consent {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start;
  gap: 12px;
}

.ns-consent input {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin-top: 3px;
  accent-color: var(--secondary-color);
}

.ns-consent label {
  margin-bottom: 0;
  font-weight: 400;
  font-size: 14px;
  line-height: 22px;
  color: var(--text-color);
}

.ns-job-form-alt {
  margin: 18px 0 0;
  font-size: 14px;
  color: var(--text-color);
}

.ns-job-form-alt a {
  color: var(--secondary-color);
  text-decoration: underline;
}

/*----------------------------------------
    Client ticker
    A seamless marquee: the track is rendered twice and translated by
    exactly half its width, so the loop has no visible seam.
------------------------------------------*/
.ns-ticker {
  position: relative;
  overflow: hidden;
  padding: 26px 0;
  border-top: 1px solid var(--border-color);
  border-bottom: 1px solid var(--border-color);
  -webkit-mask-image: linear-gradient(to right, transparent, #000 90px, #000 calc(100% - 90px), transparent);
          mask-image: linear-gradient(to right, transparent, #000 90px, #000 calc(100% - 90px), transparent);
}

.ns-ticker-track {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  width: -webkit-max-content;
  width: -moz-max-content;
  width: max-content;
  -webkit-animation: ns-ticker-scroll 46s linear infinite;
          animation: ns-ticker-scroll 38s linear infinite;
}

.ns-ticker:hover .ns-ticker-track,
.ns-ticker:focus-within .ns-ticker-track {
  -webkit-animation-play-state: paused;
          animation-play-state: paused;
}

.ns-ticker-track > li {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  padding-right: 64px;
}

/* Same normalising trick as the grid: one fixed height for every mark. */
.ns-ticker-logo {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  height: 52px;
}

.ns-ticker-logo img {
  max-height: 52px;
  max-width: 170px;
  width: auto;
  -o-object-fit: contain;
     object-fit: contain;
  opacity: 0.8;
  -webkit-transition: opacity 0.3s;
  transition: opacity 0.3s;
}

.ns-ticker-track > li:hover .ns-ticker-logo img {
  opacity: 1;
}

/* A company with no artwork yet still has a place in the strip. */
.ns-ticker-name {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  height: 52px;
  font: 500 19px var(--heading-font);
  letter-spacing: -0.01em;
  color: var(--text-color);
  white-space: nowrap;
  -webkit-transition: color 0.3s;
  transition: color 0.3s;
}

.ns-ticker-track > li:hover .ns-ticker-name {
  color: var(--heading-color);
}

@-webkit-keyframes ns-ticker-scroll {
  from { -webkit-transform: translateX(0); transform: translateX(0); }
  to   { -webkit-transform: translateX(-25%); transform: translateX(-25%); }
}

@keyframes ns-ticker-scroll {
  from { -webkit-transform: translateX(0); transform: translateX(0); }
  to   { -webkit-transform: translateX(-25%); transform: translateX(-25%); }
}

/* Motion is decorative here, so it stops entirely when that is the preference. */
@media (prefers-reduced-motion: reduce) {
  .ns-ticker-track {
    -webkit-animation: none;
            animation: none;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    width: 100%;
  }
  .ns-ticker-track > li[aria-hidden="true"] {
    display: none;
  }
}

@media (max-width: 767.98px) {
  .ns-ticker-track > li {
    padding-right: 44px;
  }
  .ns-ticker-logo,
  .ns-ticker-name {
    height: 42px;
  }
  .ns-ticker-logo img {
    max-height: 42px;
    max-width: 140px;
  }
  .ns-ticker-name {
    font-size: 17px;
  }
}

/*----------------------------------------
    Application form: honeypot and status
------------------------------------------*/
/* Positioned off-screen rather than display:none — some bots skip hidden
   fields, and this stays reachable to them while being invisible and
   unreachable to a person. */
.ns-hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.ns-form-status {
  margin: 18px 0 0;
  padding: 14px 18px;
  border-radius: 12px;
  font-size: 15px;
  line-height: 24px;
  border: 1px solid var(--border-color);
  background-color: var(--gray-color);
  color: var(--heading-color);
}

.ns-form-status.is-pending {
  border-color: var(--border-color);
}

.ns-form-status.is-success {
  border-color: rgba(22, 163, 74, 0.35);
  background-color: rgba(22, 163, 74, 0.08);
}

.ns-form-status.is-error {
  border-color: rgba(213, 49, 61, 0.35);
  background-color: rgba(213, 49, 61, 0.07);
}

.ns-job-form button[type="submit"][disabled] {
  opacity: 0.65;
  cursor: not-allowed;
}
