/* NovaSync 3.3 — admin-driven content, fluid business motion and responsive refinements. */

.ns-home-sections { display: flex; min-width: 0; flex-direction: column; }
.ns-home-sections > section { order: var(--ns-home-order, 0); }

/* Page signal: motion only — no label, icon or decorative badge. */
.ns-page-hero__signal {
  position: relative;
  display: grid !important;
  width: clamp(150px, 18vw, 250px);
  aspect-ratio: 1;
  margin: 0;
  place-items: center;
  justify-self: end;
  isolation: isolate;
  filter: drop-shadow(0 24px 45px rgba(67, 116, 229, .15));
}
.ns-page-hero__signal::after,
.ns-page-hero__signal > span { display: none !important; content: none !important; }
.ns-page-hero__signal::before {
  z-index: 2;
  position: absolute;
  width: 17%;
  aspect-ratio: 1;
  border: 1px solid rgba(255,255,255,.58);
  border-radius: 50%;
  content: "";
  background: radial-gradient(circle at 35% 30%, #fff 0 7%, #7fa7ff 9% 20%, rgba(52,101,210,.65) 21% 54%, rgba(30,61,128,.3) 55% 100%);
  box-shadow: 0 0 0 12px rgba(113,154,246,.07), 0 0 38px rgba(114,160,255,.38);
  animation: ns-signal-core calc(var(--ns-signal-duration) * .32) ease-in-out infinite;
}
.ns-page-hero__signal i {
  position: absolute;
  inset: 9%;
  border: 1px solid rgba(145,179,255,.27);
  border-radius: 48% 52% 49% 51%;
  opacity: 1;
  transform: none;
  animation: ns-signal-orbit var(--ns-signal-duration) linear infinite !important;
}
.ns-page-hero__signal i:nth-child(2) {
  inset: 24%;
  border-style: dashed;
  border-color: rgba(142,178,255,.23);
  animation-duration: calc(var(--ns-signal-duration) * .72) !important;
  animation-direction: reverse !important;
}
.ns-page-hero__signal i:nth-child(3) {
  inset: 35%;
  border-color: rgba(184,205,255,.34);
  animation-duration: calc(var(--ns-signal-duration) * .5) !important;
}
.ns-page-hero__signal i::after {
  position: absolute;
  top: 7%;
  right: 14%;
  width: 6px;
  height: 6px;
  border: 2px solid #fff;
  border-radius: 50%;
  content: "";
  background: #6ee7c5;
  box-shadow: 0 0 14px rgba(110,231,197,.9);
}
.ns-page-hero__signal i:nth-child(2)::after { top: auto; right: 7%; bottom: 12%; width: 5px; height: 5px; }
.ns-page-hero__signal i:nth-child(3)::after { top: 46%; right: auto; left: -3px; width: 4px; height: 4px; }
@keyframes ns-signal-orbit { to { transform: rotate(360deg); } }
@keyframes ns-signal-core { 50% { transform: scale(1.08); box-shadow: 0 0 0 19px rgba(113,154,246,.035), 0 0 52px rgba(114,160,255,.5); } }
.ns-signal-static .ns-page-hero__signal::before,
.ns-signal-static .ns-page-hero__signal i { animation: none !important; }

/* Companies: uploaded logos stay crisp and consistent, text remains a graceful fallback. */
.ns-company-logo {
  display: grid;
  min-width: 210px;
  min-height: 94px;
  padding: 14px 22px;
  place-items: center;
  gap: 6px;
  border: 1px solid rgba(31,48,78,.08);
  text-decoration: none;
}
.ns-company-logo img { width: 150px; height: 52px; object-fit: contain; filter: grayscale(1); opacity: .72; transition: filter .2s ease, opacity .2s ease, transform .2s ease; }
.ns-company-logo span { color: #40506b; font-size: .74rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.ns-company-logo img + span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
.ns-company-logo:hover img { filter: grayscale(0); opacity: 1; transform: scale(1.035); }

/* Seven or any number of process steps, precisely aligned on one animated route. */
.ns-workflow-shell { grid-template-columns: 1fr !important; gap: clamp(38px, 5vw, 66px) !important; }
.ns-workflow-intro { display: grid !important; grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr); column-gap: clamp(35px, 7vw, 100px); align-items: end; }
.ns-workflow-intro .ns-kicker,
.ns-workflow-intro h2 { grid-column: 1; }
.ns-workflow-intro > p { grid-column: 2; grid-row: 2; align-self: end; margin: 0 0 10px; }
.ns-workflow-intro .ns-button { grid-column: 2; grid-row: 3; justify-self: start; margin-top: 20px; }
.ns-process-journey { position: relative; min-width: 0; overflow: hidden; }
.ns-process-journey__steps { display: grid; min-width: 960px; height: 400px; grid-template-columns: repeat(var(--ns-step-count), minmax(0, 1fr)); }
.ns-process-journey__track { position: absolute; z-index: 1; top: calc(50% - 1px); right: 5%; left: 5%; height: 2px; overflow: hidden; background: repeating-linear-gradient(90deg, rgba(126,160,243,.34) 0 7px, transparent 7px 14px); }
.ns-process-journey__track i { display: block; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, #7da6ff 15%, #7ee1c3 50%, #7da6ff 85%, transparent); transform-origin: left; animation: ns-process-flow var(--ns-process-duration) cubic-bezier(.45,0,.2,1) infinite; }
.ns-process-stage { z-index: 2; position: relative; min-width: 0; }
.ns-process-stage__number { position: absolute; z-index: 3; top: calc(50% - 16px); left: calc(50% - 16px); display: grid; width: 32px; height: 32px; place-items: center; border: 5px solid #0e1727; border-radius: 50%; color: #fff; background: #2e6aff; box-shadow: 0 0 0 1px rgba(139,174,255,.6), 0 0 24px rgba(67,113,230,.42); font-size: .55rem; font-weight: 900; letter-spacing: .05em; animation: ns-process-node calc(var(--ns-process-duration) / 3) ease-in-out infinite; animation-delay: calc(var(--ns-stage-index) * .18s); }
.ns-process-stage__card { position: absolute; top: 12px; right: 6px; left: 6px; display: grid; min-height: 145px; padding: 19px 16px; grid-template-columns: 42px minmax(0,1fr); gap: 12px; align-items: start; border: 1px solid rgba(156,180,231,.18); border-radius: 17px; background: linear-gradient(145deg, rgba(255,255,255,.98), rgba(241,246,255,.96)); box-shadow: 0 18px 34px rgba(2,9,22,.2); }
.ns-process-stage:nth-child(even) .ns-process-stage__card { top: auto; bottom: 12px; }
.ns-process-stage__card::after { position: absolute; top: 100%; left: 50%; width: 1px; height: 44px; content: ""; background: linear-gradient(rgba(126,160,243,.55), transparent); }
.ns-process-stage:nth-child(even) .ns-process-stage__card::after { top: auto; bottom: 100%; background: linear-gradient(transparent, rgba(126,160,243,.55)); }
.ns-process-stage .ns-workflow-node__icon { width: 42px; height: 42px; }
.ns-process-stage__label { display: block; margin: 1px 0 6px; color: #2b63e4; font-size: .55rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.ns-process-stage h3 { margin: 0; color: #101828; font-size: clamp(.78rem, 1.08vw, .98rem); line-height: 1.16; letter-spacing: -.025em; }
.ns-process-stage p { margin: 8px 0 0; color: #69768e; font-size: .66rem; line-height: 1.42; }
.js .ns-workflow-shell:not(.is-visible) .ns-process-stage__card { opacity: 0; transform: translateY(13px); }
.js .ns-workflow-shell.is-visible .ns-process-stage__card { animation: ns-process-card .55s both; animation-delay: calc(var(--ns-stage-index) * .08s); }
.ns-process-static .ns-process-journey__track i,
.ns-process-static .ns-process-stage__number,
.ns-process-static .ns-workflow-shell.is-visible .ns-process-stage__card { animation: none !important; }
@keyframes ns-process-flow { 0% { transform: scaleX(0); opacity: .35; } 72%,100% { transform: scaleX(1); opacity: 1; } }
@keyframes ns-process-node { 50% { box-shadow: 0 0 0 6px rgba(80,126,235,.12), 0 0 28px rgba(67,113,230,.5); } }
@keyframes ns-process-card { from { opacity: 0; transform: translateY(13px); } to { opacity: 1; transform: none; } }

/* Testimonials: minimal, calm, readable. */
.ns-testimonial-minimal { background: #fff; }
.ns-testimonial-minimal__header { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(280px,.8fr); gap: clamp(30px,7vw,100px); align-items: end; margin-bottom: clamp(38px,5vw,64px); }
.ns-testimonial-minimal__header h2 { max-width: 780px; margin: 0; font-size: clamp(2.3rem,5vw,4.4rem); }
.ns-testimonial-minimal__header p { margin: 0 0 8px; color: var(--ns-muted); }
.ns-testimonial-minimal__carousel { position: relative; padding: clamp(30px,5vw,70px); border: 1px solid #e5eaf3; border-radius: clamp(24px,3vw,38px); background: linear-gradient(145deg,#f8faff,#fff); box-shadow: 0 25px 70px rgba(24,40,76,.08); }
.ns-testimonial-minimal__controls { display: flex; justify-content: flex-end; margin-bottom: 12px; }
.ns-testimonial-minimal .ns-testimonial-slides { min-height: 350px; }
.ns-testimonial-minimal .ns-testimonial-slide { inset: 0; min-height: 330px; padding: 0 clamp(4px,3vw,40px); }
.ns-testimonial-minimal .ns-testimonial-slide.is-active { display: flex; flex-direction: column; justify-content: center; }
.ns-testimonial-minimal__mark { display: block; height: 64px; color: var(--ns-accent); font-family: Georgia,serif; font-size: 6.5rem; line-height: .82; }
.ns-testimonial-minimal .ns-testimonial__quote { max-width: 1000px; margin: 17px 0 34px; color: #152039; font-size: clamp(1.8rem,3.7vw,3.45rem); font-weight: 680; line-height: 1.12; letter-spacing: -.043em; }
.ns-testimonial-minimal .ns-testimonial__author { display: flex; gap: 14px; align-items: center; }
.ns-testimonial-minimal .ns-testimonial__avatar { width: 52px; height: 52px; flex: 0 0 52px; color: #fff; background: #17233c; }
.ns-testimonial-minimal .ns-testimonial__author strong { display: block; color: #101828; }
.ns-testimonial-minimal .ns-testimonial__author span { display: block; color: #718096; font-size: .82rem; }
.ns-testimonial-minimal .ns-carousel-dots { margin-top: 22px; }

/* Blog filters generated from WordPress dates, categories and tags. */
.ns-blog-filters { position: relative; z-index: 8; display: flex; margin-bottom: 48px; flex-wrap: wrap; gap: 9px; align-items: flex-start; }
.ns-blog-filters__all,
.ns-blog-filters summary { display: flex; min-height: 44px; padding: 10px 17px; align-items: center; gap: 20px; border: 1px solid #dfe5ef; border-radius: 999px; color: #29364f; background: #fff; font-size: .78rem; font-weight: 750; text-decoration: none; cursor: pointer; list-style: none; }
.ns-blog-filters__all:hover,.ns-blog-filters__all.is-active,.ns-blog-filters details[open] summary { color: #fff; border-color: var(--ns-accent); background: var(--ns-accent); }
.ns-blog-filters summary::-webkit-details-marker { display: none; }
.ns-blog-filters summary span { font-size: 1rem; transition: transform .18s ease; }
.ns-blog-filters details[open] summary span { transform: rotate(45deg); }
.ns-blog-filters details { position: relative; }
.ns-blog-filters details > div { position: absolute; z-index: 12; top: calc(100% + 9px); left: 0; display: grid; width: min(310px,calc(100vw - 40px)); max-height: 330px; padding: 13px; overflow: auto; border: 1px solid #e1e6ef; border-radius: 16px; background: #fff; box-shadow: 0 20px 48px rgba(22,35,63,.15); }
.ns-blog-filters details > div span { display: block; }
.ns-blog-filters details > div a { display: flex; padding: 8px 10px; justify-content: space-between; border-radius: 8px; color: #35435b; font-size: .78rem; text-decoration: none; }
.ns-blog-filters details > div a:hover { color: var(--ns-accent); background: #f1f5ff; }

/* Contact and map alignment. */
.ns-contact-list li { display: grid; grid-template-columns: 52px minmax(0,1fr); gap: 16px; align-items: center; }
.ns-contact-list__icon { display: grid; width: 52px; height: 52px; margin: 0; place-items: center; text-align: center; line-height: 1; }
.ns-contact-map { margin-top: clamp(38px,6vw,72px); overflow: hidden; border: 1px solid #dfe5ef; border-radius: clamp(22px,3vw,34px); background: #fff; box-shadow: var(--ns-shadow-sm); }
.ns-contact-map__header { display: flex; padding: clamp(22px,4vw,38px); align-items: end; justify-content: space-between; gap: 25px; }
.ns-contact-map__header h2 { margin: 0; font-size: clamp(1.7rem,3vw,2.5rem); }
.ns-contact-map iframe { display: block; width: 100%; height: clamp(330px,44vw,520px); border: 0; filter: saturate(.8) contrast(1.03); }

/* Footer compliance and legal content. */
.ns-footer-compliance { display: grid; padding: 28px 0; grid-template-columns: minmax(0,1fr) auto; gap: 30px; align-items: center; border-top: 1px solid rgba(255,255,255,.09); }
.ns-footer-legal { display: flex; flex-wrap: wrap; gap: 10px 22px; }
.ns-footer-legal a,.ns-footer-bottom a { color: rgba(255,255,255,.67); font-size: .75rem; text-decoration: none; }
.ns-footer-legal a:hover,.ns-footer-bottom a:hover { color: #fff; }
.ns-consumer-links { display: flex; gap: 10px; }
.ns-consumer-links a { display: grid; width: 170px; min-height: 58px; padding: 8px 12px; grid-template-columns: auto 1fr; gap: 9px; align-items: center; border: 1px solid rgba(255,255,255,.13); border-radius: 11px; color: #fff; background: rgba(255,255,255,.035); text-decoration: none; }
.ns-consumer-links img { width: 100%; max-height: 40px; grid-column: 1/-1; object-fit: contain; }
.ns-consumer-links span { font-size: .78rem; font-weight: 900; }
.ns-consumer-links small { color: rgba(255,255,255,.58); font-size: .56rem; line-height: 1.25; }

.ns-project-blocks > h2 { margin-top: clamp(48px,7vw,82px); }
.ns-project-blocks > h2:first-of-type { margin-top: 0; }
.ns-project-blocks .wp-block-details { padding: 19px 22px; border: 1px solid #e1e6ef; border-radius: 14px; background: #fff; }
.ns-project-blocks .wp-block-details summary { font-weight: 800; cursor: pointer; }
.ns-project-aside { position: sticky; top: 130px; align-self: start; }

@media (max-width: 1050px) {
  .ns-process-journey { margin-inline: -8px; overflow-x: auto; scrollbar-width: thin; scrollbar-color: rgba(126,160,243,.5) transparent; }
  .ns-process-journey__steps { width: 1040px; }
  .ns-process-journey__track { width: 940px; right: auto; left: 50px; }
}

@media (max-width: 760px) {
  .ns-page-hero__signal { width: 138px; margin: 4px auto 6px; justify-self: center; }
  .ns-workflow-intro { display: flex !important; }
  .ns-process-journey { margin: 0; overflow: visible; }
  .ns-process-journey__steps { display: grid; width: auto; min-width: 0; height: auto; grid-template-columns: 1fr; gap: 16px; }
  .ns-process-journey__track { top: 16px; right: auto; bottom: 16px; left: 24px; width: 2px; height: auto; background: repeating-linear-gradient(180deg,rgba(126,160,243,.36) 0 7px,transparent 7px 14px); }
  .ns-process-journey__track i { width: 100%; height: 100%; transform-origin: top; animation-name: ns-process-flow-mobile; }
  .ns-process-stage { min-height: 0; padding-left: 63px; }
  .ns-process-stage__number { top: 30px; left: 8px; }
  .ns-process-stage__card,.ns-process-stage:nth-child(even) .ns-process-stage__card { position: relative; top: auto; right: auto; bottom: auto; left: auto; min-height: 122px; padding: 17px; }
  .ns-process-stage__card::after,.ns-process-stage:nth-child(even) .ns-process-stage__card::after { display: none; }
  .ns-process-stage h3 { font-size: .98rem; }
  .ns-process-stage p { font-size: .72rem; }
  .ns-testimonial-minimal__header { grid-template-columns: 1fr; }
  .ns-testimonial-minimal__carousel { padding: 26px 20px; }
  .ns-testimonial-minimal .ns-testimonial-slides { min-height: 430px; }
  .ns-testimonial-minimal .ns-testimonial-slide { min-height: 410px; padding: 0; }
  .ns-testimonial-minimal__mark { height: 48px; font-size: 5.2rem; }
  .ns-testimonial-minimal .ns-testimonial__quote { font-size: clamp(1.48rem,7.2vw,2rem); }
  .ns-blog-filters { display: grid; grid-template-columns: 1fr 1fr; }
  .ns-blog-filters__all { grid-column: 1/-1; justify-content: center; }
  .ns-blog-filters details summary { justify-content: space-between; }
  .ns-contact-map__header { align-items: flex-start; flex-direction: column; }
  .ns-contact-map iframe { height: 350px; }
  .ns-footer-compliance { grid-template-columns: 1fr; }
  .ns-consumer-links { flex-wrap: wrap; }
  .ns-consumer-links a { width: min(100%,190px); }
  .ns-project-aside { position: static; }
}

@keyframes ns-process-flow-mobile { 0% { transform: scaleY(0); opacity: .35; } 72%,100% { transform: scaleY(1); opacity: 1; } }

@media (max-width: 430px) {
  .ns-blog-filters { grid-template-columns: 1fr; }
  .ns-blog-filters__all { grid-column: auto; }
  .ns-contact-list li { grid-template-columns: 46px minmax(0,1fr); }
  .ns-contact-list__icon { width: 46px; height: 46px; }
  .ns-consumer-links { display: grid; grid-template-columns: 1fr; }
  .ns-consumer-links a { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .ns-page-hero__signal::before,.ns-page-hero__signal i,.ns-process-journey__track i,.ns-process-stage__number,.ns-process-stage__card { animation: none !important; }
}
