/* NOVAQ theme styles. Markup keeps the design's inline styles; this file holds shared rules, hover states
   and responsive switches. Everything is scoped to .nvq-site (body class) or nvq- classes so plugins are untouched. */
.nvq-site{margin:0;background:#0E0D0D;color:#fff;-webkit-font-smoothing:antialiased;font-family:'Inter Tight','Helvetica Neue',Helvetica,'IBM Plex Sans Arabic',Arial,sans-serif;overflow-x:clip}
.nvq-site.nvq-en{font-family:'Inter Tight','Helvetica Neue',Helvetica,Arial,sans-serif}
html:has(.nvq-site){background:#0E0D0D;scroll-padding-top:6rem}
@media (prefers-reduced-motion:no-preference){html:has(.nvq-site){scroll-behavior:smooth}}
:where(.nvq-site) :where(*,*::before,*::after){box-sizing:border-box}
:where(.nvq-site) a{color:#5DB667;text-decoration:none}
@media (hover:hover){:where(.nvq-site) a:hover{color:#3EBD83}}
:where(.nvq-site) :is(input,textarea)::placeholder{color:currentColor;opacity:.5}
:where(.nvq-site) :focus-visible{outline:2px solid #5DB667;outline-offset:3px}
:where(.nvq-site) img{max-width:100%}
.nvq-ar .nvq-flip{transform:scaleX(-1)}
.nvq-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.nvq-skip{position:fixed;top:.75rem;inset-inline-start:.75rem;z-index:100;padding:.75rem 1.25rem;border-radius:999px;background:#5DB667;color:#0E0D0D!important;font-weight:700;transform:translateY(-200%)}
.nvq-skip:focus{transform:none}
[hidden]{display:none!important}

/* hover states (the design's style-hover), touch screens excluded */
@media (hover:hover){
  .nvq-h-signal:hover{color:#5DB667!important}
  .nvq-h-outline:hover{border-color:#5DB667!important;color:#5DB667!important}
  .nvq-h-outline-white:hover{border-color:#fff!important;color:#fff!important}
  .nvq-h-white:hover{color:#fff!important}
  .nvq-h-green:hover{color:#3EBD83!important}
  .nvq-h-cta:hover{background:#3EBD83!important;color:#0E0D0D!important;box-shadow:0 0 40px rgba(93,182,103,.45),0 0 120px rgba(141,199,63,.18)!important}
  .nvq-h-cta-sm:hover{background:#3EBD83!important;color:#0E0D0D!important;box-shadow:0 0 40px rgba(93,182,103,.45)!important}
  .nvq-h-glow:hover{background:#3EBD83!important;box-shadow:0 0 40px rgba(93,182,103,.45)!important}
  .nvq-h-fill:hover{background:#5DB667!important;color:#0E0D0D!important;border-color:#5DB667!important}
  .nvq-h-forest:hover{background:#2F5433!important;color:#fff!important}
  .nvq-h-forest-bg:hover{background:#2F5433!important}
  .nvq-h-ink:hover{background:#0E0D0D!important;color:#fff!important}
  .nvq-h-mist:hover{background:#E7E9EA!important;color:#0E0D0D!important}
  .nvq-h-tint:hover{background:rgba(255,255,255,.08)!important;color:#fff!important}
  .nvq-h-tint-soft:hover{background:rgba(255,255,255,.04)!important}
  .nvq-h-tint-line:hover{background:rgba(255,255,255,.06)!important;border-color:#5DB667!important;color:#fff!important}
  .nvq-h-lift:hover{transform:translateY(-4px)!important;box-shadow:inset 0 0 0 1px rgba(93,182,103,.55),0 24px 60px -24px rgba(93,182,103,.6)!important}
  .nvq-h-lift-forest:hover{transform:translateY(-4px)!important;box-shadow:0 30px 60px -30px rgba(47,84,51,.8)!important;color:#fff!important}
}

/* header: solid once scrolled or while a menu is open; desktop and phone layouts switch at 56.25em */
.nvq-hdr{background:transparent;box-shadow:none}
.nvq-hdr.is-solid{background:rgba(14,13,13,.84);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 12px 32px -16px rgba(0,0,0,.7)}
.nvq-hdr-bar{height:5.5rem}
.nvq-hdr-logo{height:28px}
.nvq-hdr-mob{display:none!important}
.nvq-hdr-svc[aria-expanded=true],.nvq-hdr-svc[aria-current=page],.nvq-hdr-nav a[aria-current=page]{background:rgba(255,255,255,.1)!important}
.nvq-hdr-svc[aria-expanded=true] .nvq-chev{transform:rotate(180deg)}
.nvq-mobile-nav a[aria-current=page]{color:#5DB667!important}
@media (max-width:56.1875em){
  .nvq-hdr-bar{height:4.5rem}
  .nvq-hdr-logo{height:22px}
  .nvq-hdr-desk,.nvq-mega{display:none!important}
  .nvq-hdr-mob{display:flex!important}
}

/* press feedback on pointer-down for every pill control */
.nvq-site a[style*="999px"]:active,.nvq-site button:active{transform:scale(.97)!important;transition:transform .1s ease-out!important}

/* overlays */
@keyframes nvqPop{from{opacity:0;transform:translateY(-8px) scale(.98)}}
@keyframes nvqFade{from{opacity:0}}
.nvq-pop{animation:nvqPop .26s cubic-bezier(.22,1,.36,1);transform-origin:top center}
.nvq-fade{animation:nvqFade .2s ease-out}
@media (prefers-reduced-motion:reduce){.nvq-pop{animation:nvqFade .15s ease-out}}
@media (prefers-reduced-transparency:reduce){.nvq-glass{background:#0E0D0D!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}

/* hero on phones */
@media (max-width:56.1875em){
  .nvq-hero-n{max-width:16.25rem!important;margin-top:-0.75rem}
  .nvq-scroll-cue{display:none!important}
  .nvq-en .nvq-hero-eyebrow{letter-spacing:.1em!important}
  .nvq-en .nvq-hero-eyebrow>span{display:none}
  .nvq-hero-ctas>a,.nvq-hero-ctas>button{flex:1 1 100%;justify-content:center}
}

/* services overview: pillar heading follows the list on wide screens only */
@media (min-width:56.25em){.nvq-pillar-head{position:sticky;top:7.5rem}}

/* FAQ accordion (native <details>) */
.nvq-faq summary{list-style:none;cursor:pointer}
.nvq-faq summary::-webkit-details-marker{display:none}
.nvq-faq .nvq-faq-icon{transition:transform .3s cubic-bezier(.22,1,.36,1)}
.nvq-faq[open] .nvq-faq-icon{transform:rotate(45deg)}
.nvq-faq[open] .nvq-faq-body{animation:nvqFade .25s ease-out}
@media (hover:hover){.nvq-faq summary:hover{color:#576D54}}

/* service rows: the whole row is the target, the arrow shows it */
@media (hover:hover){.nvq-svc-row:hover .nvq-svc-arrow{background:#5DB667;border-color:#5DB667!important;color:#0E0D0D}}
.nvq-svc-row:active .nvq-svc-arrow{transform:scale(.94);transition:transform .1s ease-out}

/* case cards: media lifts, arrow grows */
.nvq-case-card>div:first-child{transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s cubic-bezier(.22,1,.36,1)}
.nvq-case-arrow{transition:transform .3s cubic-bezier(.22,1,.36,1)}
@media (hover:hover){
  .nvq-case-card:hover>div:first-child{transform:translateY(-4px);box-shadow:0 30px 60px -30px rgba(93,182,103,.45)}
  .nvq-case-card:hover .nvq-case-arrow{transform:scale(1.08)}
}
.nvq-case-card:active>div:first-child{transform:scale(.99);transition-duration:.1s}

/* case study execution gallery: wide / square square / wide */
.nvq-gallery{grid-template-columns:1fr}
@media (min-width:45em){.nvq-gallery{grid-template-columns:1fr 1fr}}

/* phones: filter chips scroll sideways instead of filling the screen; case meta pairs up */
@media (max-width:56.1875em){
  .nvq-chip-row{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;margin-inline:calc(-1 * clamp(1.25rem,4vw,3.5rem));padding-inline:clamp(1.25rem,4vw,3.5rem);scroll-padding-inline:clamp(1.25rem,4vw,3.5rem)}
  .nvq-chip-row::-webkit-scrollbar{display:none}
  .nvq-chip-row>button{flex-shrink:0}
  .nvq-meta-wide{grid-column:1 / -1}
}

/* ---------- forms (design system, form inputs): visible labels, 56px inputs, radius 16, signal focus ring ---------- */
.nvq-field{display:flex;flex-direction:column;gap:0.5rem;font-size:0.875rem;font-weight:500}
.nvq-input{width:100%;height:3.5rem;padding:0 1.25rem;border-radius:1rem;font:inherit;font-size:1rem;outline:none;transition:border-color .2s,background-color .2s}
textarea.nvq-input{height:auto;min-height:8.75rem;padding:1rem 1.25rem;resize:vertical;line-height:1.6}
select.nvq-input{appearance:none;-webkit-appearance:none;padding-inline-end:3rem;cursor:pointer}
.nvq-select{position:relative}
.nvq-select::after{content:'';position:absolute;top:1.375rem;inset-inline-end:1.375rem;width:0.5rem;height:0.5rem;border:solid #5DB667;border-width:0 1.75px 1.75px 0;transform:rotate(45deg);pointer-events:none}
.nvq-input:focus-visible,.nvq-phone:focus-within{outline:2px solid #5DB667;outline-offset:2px}
.nvq-phone{display:flex;height:3.5rem;border-radius:1rem;overflow:hidden;transition:border-color .2s,background-color .2s}
.nvq-phone>span{display:flex;align-items:center;padding:0 1rem;font-size:0.9375rem}
.nvq-phone>input{flex:1;min-width:0;height:100%;padding:0 1rem;background:transparent;border:0;color:inherit;font:inherit;font-size:1rem;outline:none}
.nvq-on-dark .nvq-input,.nvq-on-dark .nvq-phone{background:#161616;border:1px solid rgba(255,255,255,.14);color:#fff}
.nvq-on-dark .nvq-phone>span{border-right:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.85)}
.nvq-on-dark .nvq-field{color:rgba(255,255,255,.85)}
.nvq-on-light .nvq-input,.nvq-on-light .nvq-phone{background:#E7E9EA;border:1px solid transparent;color:#0E0D0D}
.nvq-on-light .nvq-input:focus,.nvq-on-light .nvq-phone:focus-within{background:#fff;border-color:#0E0D0D}
.nvq-on-light .nvq-phone>span{border-right:1px solid rgba(14,13,13,.14)}
.nvq-on-dark [aria-invalid=true],.nvq-on-dark .nvq-phone:has([aria-invalid=true]){border:1.5px solid #FF6B6B}
.nvq-on-light [aria-invalid=true],.nvq-on-light .nvq-phone:has([aria-invalid=true]){border:1.5px solid #C62828}
.nvq-err{display:flex;align-items:center;gap:0.375rem;font-size:0.8125rem;font-weight:500}
.nvq-on-dark .nvq-err{color:#FF8A8A}
.nvq-on-light .nvq-err{color:#C62828}
.nvq-err:empty{display:none}

/* choice chips / cards (radio + checkbox styled, real inputs underneath for a11y) */
.nvq-choice{position:relative;display:inline-flex}
.nvq-choice>input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.nvq-choice>span{display:inline-flex;align-items:center;gap:0.625rem;min-height:3rem;padding:0.625rem 1.125rem;border-radius:999px;font-size:0.9375rem;font-weight:600;transition:background-color .2s,border-color .2s,color .2s}
.nvq-on-dark .nvq-choice>span{border:1px solid rgba(255,255,255,.18);color:#fff}
.nvq-on-light .nvq-choice>span{border:1px solid rgba(14,13,13,.18);color:#0E0D0D}
.nvq-choice>input:checked+span{background:#5DB667;border-color:#5DB667;color:#0E0D0D}
.nvq-choice>input:focus-visible+span{outline:2px solid #5DB667;outline-offset:3px}
@media (hover:hover){.nvq-on-dark .nvq-choice:hover>input:not(:checked)+span{border-color:#5DB667}.nvq-on-light .nvq-choice:hover>input:not(:checked)+span{border-color:#0E0D0D}}
.nvq-choice:active>span{transform:scale(.97);transition:transform .1s ease-out}

/* success tile: the glowing N */
.nvq-glow-tile{display:grid;place-items:center;width:clamp(7.5rem,14vw,10.5rem);aspect-ratio:1/1;border-radius:2.5rem;background:#5DB667;box-shadow:0 0 60px rgba(93,182,103,.55),0 0 160px rgba(141,199,63,.25);animation:nvqPop .5s cubic-bezier(.22,1,.36,1)}

/* multi-step form: steps enter from the direction of travel */
@keyframes nvqStepIn{from{opacity:0;transform:translateX(var(--from,24px))}}
.nvq-step-in{animation:nvqStepIn .38s cubic-bezier(.22,1,.36,1)}
@media (prefers-reduced-motion:reduce){.nvq-step-in{animation:nvqFade .2s ease-out}.nvq-glow-tile{animation:nvqFade .2s ease-out}}


/* overlays leave the way they came in */
@keyframes nvqPopOut{to{opacity:0;transform:translateY(-8px) scale(.98)}}
@keyframes nvqFadeOut{to{opacity:0}}
.nvq-pop-out{animation:nvqPopOut .18s cubic-bezier(.4,0,1,1) forwards;transform-origin:top center;pointer-events:none}
.nvq-fade-out{animation:nvqFadeOut .18s ease-in forwards;pointer-events:none}
@media (prefers-reduced-motion:reduce){.nvq-pop-out{animation:nvqFadeOut .15s ease-in forwards}}

/* touch screens: every small link gets a 44px hit area (desktop keeps its compact rhythm) */
@media (pointer:coarse){
  .nvq-tap{display:inline-flex;align-items:center;min-height:2.75rem;min-width:2.75rem}
  .nvq-ft-col{gap:0!important}
}

/* materials honour accessibility settings everywhere, not just the header */
@media (prefers-reduced-transparency:reduce){
  .nvq-site [style*="backdrop-filter"]{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  .nvq-site [style*="rgba(14,13,13,.6)"]{background:#0E0D0D!important}
}
@media (prefers-contrast:more){
  .nvq-glass{background:#0E0D0D!important;backdrop-filter:none!important;box-shadow:0 1px 0 #fff!important}
  .nvq-input,.nvq-phone,.nvq-choice>span{border-width:2px!important}
  .nvq-svc-arrow,.nvq-case-card>div:first-child{outline:1px solid rgba(255,255,255,.6)}
}

/* own the press state (we draw :active ourselves) instead of the grey tap flash on iOS/Android */
.nvq-site :is(a,button,label,summary){-webkit-tap-highlight-color:transparent}

/* very large text on a narrow phone (~175%+): the language switch moves into the menu only */
@media (max-width:14em){.nvq-hdr-lang{display:none!important}}

/* Service scenes (service-art.nvq-js): one full-size SVG layer per shape, animated with CSS */
.nvq-sa svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.nvq-sa path{stroke-linecap:round;stroke-linejoin:round}
.nvq-sa-ln{fill:none;stroke:rgba(255,255,255,.55);stroke-width:2.5px}
.nvq-sa-gd{fill:none;stroke:rgba(255,255,255,.18);stroke-width:1.5px}
.nvq-sa-ac{fill:none;stroke:#8DC73F;stroke-width:3.5px}
.nvq-sa-dash{fill:none;stroke:rgba(255,255,255,.22);stroke-width:2px;stroke-dasharray:2 10}
.nvq-sa-sf{fill:rgba(255,255,255,.06);stroke:rgba(255,255,255,.16);stroke-width:1.5px}
.nvq-sa-hl{fill:rgba(93,182,103,.16);stroke:#5DB667;stroke-width:2px}
.nvq-sa-f1{fill:#5DB667}.nvq-sa-f2{fill:#8DC73F}.nvq-sa-f3{fill:#576D54;stroke:rgba(255,255,255,.3);stroke-width:1.5px}.nvq-sa-f4{fill:#8DC73F}
.nvq-sa-wh{fill:#fff;stroke:#fff;stroke-width:3px}
.nvq-sa-dk{fill:none;stroke:#0E0D0D;stroke-width:3.5px}
.nvq-sa-rec{fill:#FF6B6B}
.nvq-sa-dots{fill:none;stroke:#8DC73F;stroke-width:9px}
.nvq-sa-a-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:nvqSaDraw 1.4s cubic-bezier(.65,0,.35,1) forwards}
.nvq-sa-a-drawloop{stroke-dasharray:1;stroke-dashoffset:1;animation:nvqSaDrawLoop 4.8s cubic-bezier(.65,0,.35,1) infinite}
.nvq-sa-a-grow,.nvq-sa-a-pulse,.nvq-sa-a-pop,.nvq-sa-a-spin,.nvq-sa-a-tap{transform-box:fill-box;transform-origin:center}
.nvq-sa-a-grow{transform-origin:50% 100%;animation:nvqSaGrow 4.8s cubic-bezier(.22,1,.36,1) infinite both}
.nvq-sa-a-pulse{animation:nvqSaPulse 2.8s ease-in-out infinite}
.nvq-sa-a-float{animation:nvqSaFloat 5s ease-in-out infinite}
.nvq-sa-a-feed{animation:nvqSaFeed 4.4s ease-in-out infinite}
.nvq-sa-a-blink{animation:nvqSaBlink 1.4s steps(2,jump-none) infinite}
.nvq-sa-a-spin{animation:nvqSaSpin 28s linear infinite}
.nvq-sa-a-pop{animation:nvqSaPop .7s cubic-bezier(.34,1.56,.64,1) both}
.nvq-sa-a-fillin{animation:nvqSaFade .9s ease-out both}
.nvq-sa-a-scrub{animation:nvqSaScrub 4.8s cubic-bezier(.65,0,.35,1) infinite}
.nvq-sa-a-climb{animation:nvqSaClimb 5.2s cubic-bezier(.65,0,.35,1) infinite}
.nvq-sa-a-drop{animation:nvqSaDrop 3.6s cubic-bezier(.55,0,.45,1) infinite both}
.nvq-sa-a-tap{transform-origin:0 0;animation:nvqSaTap 2.6s ease-in-out infinite}
@keyframes nvqSaDraw{to{stroke-dashoffset:0}}
@keyframes nvqSaDrawLoop{0%{stroke-dashoffset:1}45%,80%{stroke-dashoffset:0}100%{stroke-dashoffset:-1}}
@keyframes nvqSaGrow{0%{transform:scaleY(0)}30%,85%{transform:scaleY(1)}100%{transform:scaleY(0)}}
@keyframes nvqSaPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
@keyframes nvqSaFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes nvqSaFeed{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes nvqSaBlink{50%{opacity:0}}
@keyframes nvqSaSpin{to{transform:rotate(360deg)}}
@keyframes nvqSaPop{from{transform:scale(0);opacity:0}}
@keyframes nvqSaFade{from{opacity:0}}
@keyframes nvqSaScrub{0%{transform:translateX(0)}45%,80%{transform:translateX(300px)}100%{transform:translateX(300px);opacity:0}}
@keyframes nvqSaClimb{0%,15%{transform:translateY(0)}45%,85%{transform:translateY(-110px)}100%{transform:translateY(0)}}
@keyframes nvqSaDrop{0%{transform:translateY(-40px);opacity:0}20%{opacity:1}55%{transform:translateY(120px);opacity:1}70%,100%{transform:translateY(140px);opacity:0}}
@keyframes nvqSaTap{0%,55%,100%{transform:scale(1)}65%{transform:scale(.8)}}
.nvq-sa-t{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;animation:nvqSaFade .8s ease-out 1.2s both}
.nvq-sa-t-chip{padding:0.375rem 0.75rem;border-radius:999px;background:rgba(14,13,13,.62);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:0.8125rem;font-weight:600;color:#fff}
.nvq-sa-t-plain{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:0.75rem;color:rgba(255,255,255,.6)}
.nvq-sa-t-cta{font-size:0.8125rem;font-weight:700;color:#0E0D0D}

/* Every page (novaq.js): content below the fold rises in once; the page title block rises in on load */
@keyframes nvqUp{from{opacity:0;translate:0 2rem}}
.nvq-up:not(.in){opacity:0!important}
.nvq-up.in{animation:nvqUp .9s cubic-bezier(.22,1,.36,1) var(--d,0s) backwards}
@media (prefers-reduced-motion:no-preference){
  .nvq-site #main>section:first-of-type :where(div:has(>h1))>*{animation:nvqUp .9s cubic-bezier(.22,1,.36,1) backwards}
  .nvq-site #main>section:first-of-type :where(div:has(>h1))>:nth-child(2){animation-delay:.08s}
  .nvq-site #main>section:first-of-type :where(div:has(>h1))>:nth-child(3){animation-delay:.16s}
  .nvq-site #main>section:first-of-type :where(div:has(>h1))>:nth-child(n+4){animation-delay:.24s}
}
@media print{.nvq-up:not(.in){opacity:1!important}}

/* Scroll reveal on service pages: [data-rv] gets .in once visible; items stagger with --d */
.nvq-rv .nvq-rv-i{opacity:0;transform:translateY(1.5rem);transition:opacity .7s cubic-bezier(.22,1,.36,1) var(--d,0s),transform .7s cubic-bezier(.22,1,.36,1) var(--d,0s)}
.nvq-rv.in .nvq-rv-i{opacity:1;transform:none}
.nvq-rv .nvq-rv-bar{transform:scaleX(0);transform-origin:var(--o,left);transition:transform 1.1s cubic-bezier(.65,0,.35,1) var(--d,0s)}
.nvq-rv.in .nvq-rv-bar{transform:scaleX(1)}
.nvq-rv .nvq-ic-draw{stroke-dasharray:1;stroke-dashoffset:1}
.nvq-rv.in .nvq-ic-draw{animation:nvqSaDraw 1.3s cubic-bezier(.65,0,.35,1) calc(var(--d,0s) + .25s) forwards}
.nvq-inc-card{transition:border-color .3s,box-shadow .3s,transform .4s cubic-bezier(.22,1,.36,1)}
@media (hover:hover){.nvq-inc-card:hover{border-color:rgba(93,182,103,.45)!important;box-shadow:0 0 48px -12px rgba(93,182,103,.35);transform:translateY(-4px)}}
@media (prefers-reduced-motion:reduce){
  .nvq-sa *,.nvq-sa-t{animation:none!important;stroke-dashoffset:0!important;opacity:1!important}
  .nvq-rv .nvq-rv-i{opacity:1;transform:none;transition:none}.nvq-rv .nvq-rv-bar{transform:none;transition:none}.nvq-rv .nvq-ic-draw{stroke-dashoffset:0;animation:none!important}
}
@media print{.nvq-rv .nvq-rv-i{opacity:1;transform:none}.nvq-rv .nvq-rv-bar{transform:none}.nvq-rv .nvq-ic-draw{stroke-dashoffset:0}}
/* "What's included": 1 column → 2 (first card wide) → 3 + 2 */
.nvq-inc-grid{grid-template-columns:minmax(0,1fr)}
@media (min-width:40em){.nvq-inc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.nvq-inc-grid>li:first-child{grid-column:1 / -1}}
@media (min-width:64em){.nvq-inc-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.nvq-inc-grid>li{grid-column:span 2}.nvq-inc-grid>li:first-child{grid-column:span 2}.nvq-inc-grid>li:nth-child(n+4){grid-column:span 3}}
/* Service icons: overview rows and header services menu light up with the row */
.nvq-svc-ic,.nvq-mega-ic{transition:background-color .3s,color .3s,transform .4s cubic-bezier(.22,1,.36,1)}
@media (hover:hover){.nvq-svc-row:hover .nvq-svc-ic{background:#5DB667!important;color:#0E0D0D!important;transform:rotate(-6deg) scale(1.04)}.nvq-mega-item:hover .nvq-mega-ic{background:#5DB667!important;color:#0E0D0D!important}}
.nvq-svc-row:active .nvq-svc-ic{transform:scale(.94)}
@media (prefers-reduced-motion:reduce){.nvq-svc-row:hover .nvq-svc-ic{transform:none}}

/* Legal pages: contents column beside the text on wide screens */
.nvq-legal-grid{grid-template-columns:minmax(0,1fr)}
@media (min-width:64em){.nvq-legal-grid{grid-template-columns:16rem minmax(0,1fr)}.nvq-legal-toc{position:sticky;top:6.5rem;align-self:start}}
.nvq-legal-list{margin:0;padding-inline-start:1.25rem;display:grid;gap:0.5rem;font-size:1.0625rem;line-height:1.7;color:rgba(14,13,13,.8)}
.nvq-legal-list li::marker{color:#5DB667}
@media (hover:hover){.nvq-legal-toc-link:hover{color:#0E0D0D!important;border-inline-start-color:#5DB667!important}}
/* Floating WhatsApp button (Site Footer): bottom corner on the reading-end side, below the header and menus (z 50/80) */
.nvq-wa-fab{position:fixed;z-index:45;inset-inline-end:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));height:3.5rem;min-width:3.5rem;padding-inline:0.875rem;border-radius:999px;background:#25D366;color:#0E0D0D;display:flex;align-items:center;justify-content:center;gap:0;box-shadow:0 10px 28px -10px rgba(37,211,102,.7),0 4px 14px rgba(0,0,0,.35);transition:gap .4s cubic-bezier(.22,1,.36,1),padding .4s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s;animation:nvqWaIn .5s .8s cubic-bezier(.22,1,.36,1) both}
.nvq-wa-fab svg{position:relative;flex-shrink:0}
.nvq-wa-fab:focus-visible{outline:3px solid #fff;outline-offset:3px}
.nvq-wa-fab:active{transform:scale(.94)}
/* a soft ring every few seconds, so the button is noticed without nagging */
.nvq-wa-ring{position:absolute;inset:0;border-radius:inherit;border:2px solid #25D366;pointer-events:none;animation:nvqWaRing 4s cubic-bezier(.22,1,.36,1) 2.5s infinite}
@keyframes nvqWaRing{0%{transform:scale(1);opacity:.75}35%,100%{transform:scale(1.5);opacity:0}}
/* desktop: the label slides out on hover / keyboard focus */
.nvq-wa-label{position:relative;max-width:0;overflow:hidden;white-space:nowrap;font-size:0.9375rem;font-weight:700;opacity:0;transition:max-width .45s cubic-bezier(.22,1,.36,1),opacity .3s}
@media (hover:hover){.nvq-wa-fab:hover,.nvq-wa-fab:focus-visible{gap:0.5rem;padding-inline:1rem 1.25rem;transform:translateY(-2px);box-shadow:0 14px 36px -10px rgba(37,211,102,.8),0 6px 18px rgba(0,0,0,.35)}.nvq-wa-fab:hover .nvq-wa-label,.nvq-wa-fab:focus-visible .nvq-wa-label{max-width:14rem;opacity:1}}
@media (min-width:56.25em){.nvq-wa-fab{inset-inline-end:1.75rem;bottom:1.75rem;height:3.75rem;min-width:3.75rem}}
@keyframes nvqWaIn{from{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.nvq-wa-fab{animation:none;transition:none}.nvq-wa-ring{display:none}.nvq-wa-fab:hover{transform:none}}
@media print{.nvq-wa-fab{display:none}}

/* form honeypot: hidden from people (clipped, not moved off-screen: that would scroll RTL pages), visible to bots */
.nvq-hp{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap}

/* layouts that differ on phones (the design swapped them in script; here CSS does it) */
.nvq-mob-only{display:none!important}
@media (max-width:56.1875em){.nvq-desk-only{display:none!important}.nvq-mob-only{display:flex!important}}

/* home "How we work": the line draws and the nodes light up once on screen */
.nvq-draw-path{stroke-dashoffset:1;transition:stroke-dashoffset 2.2s cubic-bezier(.22,1,.36,1)}
.nvq-draw-node{opacity:.25;transition:opacity .5s}
.nvq-draw-line{height:0;transition:height 2.2s cubic-bezier(.22,1,.36,1)}
.is-drawn .nvq-draw-path{stroke-dashoffset:0}
.is-drawn .nvq-draw-node{opacity:1}
.is-drawn .nvq-draw-line{height:calc(100% - 1rem)}

/* logged-in admin bar: keep the fixed header below it */
.admin-bar .nvq-hdr{top:32px!important}
@media (max-width:782px){.admin-bar .nvq-hdr{top:46px!important}}
@media (max-width:600px){.nvq-site #wpadminbar{position:fixed}}

/* About: meaning of the N (tabs light up one part of the symbol) */
.nvq-sym-tab{background:transparent;color:rgba(255,255,255,.8)}
.nvq-sym-tab[aria-selected=true]{background:#5DB667;color:#0E0D0D}
.nvq-sym-0,.nvq-sym-1,.nvq-sym-2{opacity:0;transition:opacity .6s cubic-bezier(.22,1,.36,1)}
[data-part="0"] .nvq-sym-0,[data-part="1"] .nvq-sym-1,[data-part="2"] .nvq-sym-2{opacity:1}

/* Start a project: progress along the N path */
.nvq-step-node{background:#0E0D0D;border:2px solid rgba(255,255,255,.25)}
.nvq-step-node.is-past{background:#5DB667;border-color:#5DB667}
.nvq-step-node.is-cur{border-color:#5DB667;box-shadow:0 0 20px rgba(93,182,103,.7)}
.nvq-step-label{color:rgba(255,255,255,.45);font-weight:500}
.nvq-step-label.is-on{color:#fff}
.nvq-step-label[aria-current=step]{font-weight:700}
.nvq-en .nvq-back-arrow{transform:scaleX(-1)}

/* Legal pages: text from the editor */
.nvq-legal-body p{margin:0;font-size:1.0625rem;line-height:var(--lead,1.8);color:rgba(14,13,13,.8);text-wrap:pretty}
.nvq-legal-body ul,.nvq-legal-body ol:not([class]){margin:0;padding-inline-start:1.25rem;display:grid;gap:0.5rem;font-size:1.0625rem;line-height:1.7;color:rgba(14,13,13,.8)}
.nvq-legal-body li::marker{color:#5DB667}
.nvq-legal-body a{color:#2F5433;text-decoration:underline;text-underline-offset:3px}

/* Home: the moving strip, a card with a fixed label and phrases scrolling behind faded edges */
.nvq-ticker{background:#0E0D0D;padding:1.375rem clamp(1.25rem,4vw,3.5rem) 2.75rem}
.nvq-ticker-shell{position:relative;display:flex;align-items:stretch;max-width:78rem;margin:0 auto;overflow:hidden;border-radius:1.375rem;border:1px solid rgba(93,182,103,.25);background:linear-gradient(115deg,#192218,#10140F 60%,#1A2A17);box-shadow:inset 0 1px rgba(176,214,154,.05),0 1rem 2.5rem rgba(0,0,0,.13)}
.nvq-ticker-sig{flex-shrink:0;display:flex;align-items:center;gap:1.0625rem;padding:1.5625rem 1.875rem;background:rgba(93,182,103,.05);border-inline-end:1px solid rgba(141,199,63,.17);color:#5DB667}
.nvq-ticker-sig span{font-size:0.75rem;line-height:1.8;color:#A6B49E;white-space:nowrap}
.nvq-ticker-sig b{display:block;font-size:1.1875rem;font-weight:500;color:#E5EFDF}
.nvq-ticker-window{flex:1;min-width:0;direction:ltr;overflow:hidden;padding:1.5rem 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.nvq-ticker-track{display:flex;width:max-content;animation:nvqTicker 52s linear infinite}
.nvq-ticker:hover .nvq-ticker-track{animation-play-state:paused}
@keyframes nvqTicker{to{transform:translateX(-25%)}}
.nvq-ticker-set{flex-shrink:0;display:flex;gap:2.25rem;padding-right:2.25rem}
.nvq-ticker-item{display:flex;align-items:center;gap:1.125rem;white-space:nowrap}
.nvq-ticker-item>div{display:flex;flex-direction:column;gap:0.375rem}
.nvq-ticker-item strong{font-size:1.625rem;font-weight:500;line-height:1.35;color:#DBE9D1}
.nvq-ticker-i{display:grid;place-items:center;width:1.75rem;height:1.75rem;border-radius:50%;border:1px solid rgba(141,199,63,.23);font-size:0.625rem;color:#84BA63;font-variant-numeric:tabular-nums}
.nvq-ticker-sub{font-size:0.5625rem;line-height:1.4;letter-spacing:.2em;text-transform:uppercase;color:#79A966}
.nvq-ticker-item>svg{flex-shrink:0;margin-left:1.125rem;color:rgba(93,182,103,.4)}
/* Arabic: 01 → 03 read right to left, the number on the right of its phrase, and the strip moves the reading way */
[dir="rtl"] .nvq-ticker-set,[dir="rtl"] .nvq-ticker-item{flex-direction:row-reverse}
[dir="rtl"] .nvq-ticker-item>div{align-items:flex-end}
[dir="rtl"] .nvq-ticker-item>svg{margin:0 1.125rem 0 0}
[dir="rtl"] .nvq-ticker-track{animation-direction:reverse}
@media (max-width:42.5em){
  .nvq-ticker{padding:1.125rem 1.375rem 1.875rem}
  .nvq-ticker-shell{flex-direction:column;border-radius:1.125rem}
  .nvq-ticker-sig{gap:0.75rem;padding:0.8125rem 1.125rem;border-inline-end:0;border-bottom:1px solid rgba(141,199,63,.13)}
  .nvq-ticker-sig svg{width:27px;height:16px}
  .nvq-ticker-sig span{display:flex;align-items:baseline;gap:0.4375rem}
  .nvq-ticker-sig b{font-size:0.875rem}
  .nvq-ticker-window{padding:1.25rem 0}
  .nvq-ticker-set{gap:1.5rem;padding-right:1.5rem}
  .nvq-ticker-item{gap:0.75rem}
  .nvq-ticker-item strong{font-size:1.4375rem}
  .nvq-ticker-i{width:1.5rem;height:1.5rem;font-size:0.5625rem}
  .nvq-ticker-sub{font-size:0.5rem}
  .nvq-ticker-item>svg{width:20px;margin-left:0.5rem}
  [dir="rtl"] .nvq-ticker-item>svg{margin:0 0.5rem 0 0}
}
@media (prefers-reduced-motion:reduce){.nvq-ticker-track{animation:none}}

/* Carousels. .nvq-rail: card grids become a swipeable row on phones; .nvq-rail-all: a carousel at every size.
   The row bleeds to the screen edge so the next card peeks in. Dots and buttons come from novaq.js. */
.nvq-rail-all,.nvq-rail{--nvq-pad:clamp(1.25rem,4vw,3.5rem)}
.nvq-rail-all{display:flex;gap:1.5rem;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;margin-inline:calc(-1 * var(--nvq-pad));padding-inline:var(--nvq-pad);scroll-padding-inline:var(--nvq-pad);padding-bottom:0.25rem}
.nvq-rail-all::-webkit-scrollbar{display:none}
.nvq-rail-all>*{flex:0 0 calc((100% - 3rem) / 3);scroll-snap-align:start;min-width:0}
@media (max-width:64em){.nvq-rail-all>*{flex-basis:calc((100% - 1.5rem) / 2)}}
@media (max-width:47.9375em){
  .nvq-rail{display:flex!important;flex-wrap:nowrap!important;gap:0.875rem!important;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;margin-inline:calc(-1 * var(--nvq-pad));padding-inline:var(--nvq-pad)!important;scroll-padding-inline:var(--nvq-pad);padding-bottom:0.25rem!important}
  .nvq-rail::-webkit-scrollbar{display:none}
  .nvq-rail>*{flex:0 0 min(84%,22rem)!important;scroll-snap-align:start;min-width:0}
}
.nvq-rail-dots:not([hidden]){display:flex;justify-content:center;gap:0.375rem;margin-top:1rem}
.nvq-rail-dots span{width:0.375rem;height:0.375rem;border-radius:999px;background:currentColor;opacity:.22;transition:width .35s cubic-bezier(.22,1,.36,1),opacity .35s,background-color .35s}
.nvq-rail-dots span.on{width:1.375rem;opacity:1;background:#5DB667}
.nvq-rail-btn{flex-shrink:0;width:3.25rem;height:3.25rem;border-radius:999px;border:1.5px solid rgba(255,255,255,.35);background:transparent;color:#fff;display:grid;place-items:center;cursor:pointer;transition:background-color .3s,border-color .3s,color .3s,opacity .3s,transform .15s}
.nvq-rail-btn:active{transform:scale(.94)}
.nvq-rail-btn:disabled{opacity:.3;cursor:default}
.nvq-rail-btn:focus-visible{outline:2px solid #5DB667;outline-offset:3px}
@media (hover:hover){.nvq-rail-btn:not(:disabled):hover{background:#5DB667;border-color:#5DB667;color:#0E0D0D}}
@media (prefers-reduced-motion:reduce){.nvq-rail-dots span{transition:none}}

/* Home numbers: cards that count up as they come into view; the bar fills with the count */
.nvq-stat{position:relative;overflow:hidden;background:#F1F3F1;border-radius:2rem;padding:2rem 1.75rem 2.25rem;display:flex;flex-direction:column;justify-content:space-between;gap:1.25rem;min-height:12.5rem}
.nvq-stat-num{display:flex;align-items:baseline;gap:2px;font-family:'Inter Tight','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:clamp(3.25rem,5.2vw,5rem);font-weight:700;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:#0E0D0D}
.nvq-stat-suffix{color:#4F9A57}
.nvq-stat-label{font-size:1.0625rem;line-height:1.5;font-weight:500;color:#576D54}
.nvq-stat-bar{position:absolute;left:0;right:0;bottom:0;height:0.3125rem;background:rgba(14,13,13,.06)}
.nvq-stat-bar i{display:block;height:100%;background:linear-gradient(90deg,#5DB667,#8DC73F);transform:scaleX(var(--p,1));transform-origin:left}
.nvq-site[dir="rtl"] .nvq-stat-bar i,html[dir="rtl"] .nvq-stat-bar i{transform-origin:right}
@media print{.nvq-rail-dots,.nvq-rail-btn{display:none}}

