.elementor-7872 .elementor-element.elementor-element-2dc15c0f{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:space-between;--align-items:center;--gap:24px 24px;--row-gap:24px;--column-gap:24px;--padding-top:0px;--padding-bottom:0px;--padding-left:48px;--padding-right:48px;}.elementor-7872 .elementor-element.elementor-element-440d183c{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--gap:16px 16px;--row-gap:16px;--column-gap:16px;}.elementor-7872 .elementor-element.elementor-element-24094239{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--gap:4px 4px;--row-gap:4px;--column-gap:4px;}.elementor-7872 .elementor-element.elementor-element-2598d3e .elementor-menu-toggle{margin:0 auto;}.elementor-7872 .elementor-element.elementor-element-2367d25e{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--gap:8px 8px;--row-gap:8px;--column-gap:8px;}.elementor-theme-builder-content-area{height:400px;}.elementor-location-header:before, .elementor-location-footer:before{content:"";display:table;clear:both;}@media(max-width:1024px){.elementor-7872 .elementor-element.elementor-element-2dc15c0f{--padding-top:0px;--padding-bottom:0px;--padding-left:32px;--padding-right:32px;}.elementor-7872 .elementor-element.elementor-element-440d183c{--gap:12px 12px;--row-gap:12px;--column-gap:12px;}}@media(max-width:767px){.elementor-7872 .elementor-element.elementor-element-2dc15c0f{--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:20px;}.elementor-7872 .elementor-element.elementor-element-440d183c{--gap:12px 12px;--row-gap:12px;--column-gap:12px;--flex-wrap:nowrap;}}/* Start custom CSS for container, class: .elementor-element-440d183c */@media(max-width:1200px){.elementor-7872 .elementor-element.elementor-element-440d183c{margin-inline-end:auto}}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-2dc15c0f */.np-js{display:none!important}

/* Bar layout: three items, each sized to content. Elementor containers
   default to width:100%, which stacks/overlaps them. Structural .elementor-7872 .elementor-element.elementor-element-2dc15c0fs
   only — container classes are stripped on import. */
.elementor-location-header > .e-con > .e-con-inner{
  display:flex;align-items:center;justify-content:space-between;
  gap:24px;flex-wrap:nowrap;
  /* Navbar.tsx puts h-[4.5rem] lg:h-24 on the Container INSIDE the bordered
     wrapper, so the 1px border adds to the bar rather than eating into it. */
  min-height:72px}
@media(min-width:1024px){
  .elementor-location-header > .e-con > .e-con-inner{min-height:96px}}

/* Elementor's default 20px widget bottom margin is still live in the header:
   it was making the CTA column 60px and the logo row 96.8px tall. */
.elementor-location-header .elementor-widget{margin-block-end:0!important}
/* .elementor-heading-title is an inline <span>: its own line-height does not
   size its line box, the parent block's strut does, which was adding leading
   above AND below each wordmark line. Same failure as the inline logo img. */
.np-logo-1 .elementor-widget-container,
.np-logo-2 .elementor-widget-container{line-height:1!important;margin:0!important;
  padding:0!important}
.np-logo-1 .elementor-heading-title,
.np-logo-2 .elementor-heading-title{display:block;margin:0!important;
  padding:0!important}
/* an inline <img> adds the line-box descender under the logo */
.np-logo-mark img,.np-logo-mark a{display:block}
.elementor-location-header > .e-con > .e-con-inner > .e-con,
.elementor-location-header > .e-con > .e-con-inner > .elementor-widget{
  width:auto!important;flex:0 0 auto;max-width:none}
.np-nav-w .elementor-nav-menu--main .elementor-nav-menu{flex-wrap:nowrap}
/* Wherever the Nav Menu widget renders only the hamburger, it belongs beside
   the CTA on the right (Navbar.tsx groups them), not stranded in the middle
   by space-between.

   1200, not 1023: this has to agree with the widget's own dropdown
   breakpoint, which is tablet_extra. It used to say 1023 while the burger
   appeared at 1024, so at exactly 1024px the burger showed and this did not
   -- one pixel wide, and the burger sat in the middle of the bar. */
@media(max-width:1200px){
  .elementor-location-header > .e-con > .e-con-inner{
    justify-content:flex-start;gap:8px}
  .np-nav-w{order:3}}
.np-logo-1 .elementor-heading-title,
.np-logo-2 .elementor-heading-title{white-space:nowrap}

/* container-site padding-inline: 20 / 32 at >=640 / 48 at >=1024.
   Elementor's mobile breakpoint is 767, so the 640-767 band needs a rule. */
@media(min-width:640px) and (max-width:767px){
  .elementor-location-header > .e-con{padding-left:32px;padding-right:32px}}

/* Fixed, transparent over the hero */
.elementor-location-header{position:fixed;inset-inline:0;top:0;z-index:50}
.elementor-location-header > .e-con{
  border-bottom:1px solid transparent;background:transparent;
  transition:background-color .5s var(--ease),border-color .5s var(--ease),
             backdrop-filter .5s var(--ease)}
/* past 12px of scroll (Navbar.tsx: scrollY > 12) */
.elementor-location-header.np-scrolled > .e-con{
  background:rgba(251,251,252,.85);
  backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);
  border-bottom-color:rgba(11,23,40,.1)}

/* Logo */
.np-logo-mark img{height:48px;width:auto;object-fit:contain}
@media(min-width:1024px){.np-logo-mark img{height:68px}}
.np-logo-1 .elementor-heading-title{font-family:"Manrope",sans-serif!important;
  font-size:16.8px!important;font-weight:800!important;letter-spacing:-.02em!important;
  line-height:1!important;color:var(--ink-900)}
@media(min-width:1024px){
  .np-logo-1 .elementor-heading-title{font-size:18px!important}}
.np-logo-2 .elementor-heading-title{font-family:var(--mono)!important;
  font-size:9.28px!important;font-weight:400!important;line-height:1!important;
  text-transform:uppercase;letter-spacing:.18em!important;color:var(--ink-400)}
@media(min-width:1024px){
  .np-logo-2 .elementor-heading-title{font-size:9.6px!important}}
@media(max-width:639px){.np-logo-1,.np-logo-2{display:none}}

/* ---- Desktop nav (Elementor Nav Menu widget) ---- */
.np-nav-w .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item{
  position:relative;display:inline-flex;align-items:center;height:40px;
  padding:0 14px;border-radius:10px;font-family:"Manrope",sans-serif;
  font-size:15px;font-weight:500;letter-spacing:-.005em;
  color:var(--ink-600);fill:var(--ink-600);transition:color .3s;background:none}
.np-nav-w .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item:hover,
.np-nav-w .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item-active{
  color:var(--ink-900);background:none}
.np-nav-w .elementor-nav-menu--main .elementor-nav-menu > li{margin:0 2px}
/* underline grows from the left, 500ms (Navbar.tsx origin-left scale-x) */
.np-nav-w .elementor-nav-menu--main a.elementor-item::after{
  content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:1px;
  background:var(--blue-600);transform:scaleX(0);transform-origin:left;
  transition:transform .5s var(--ease);border:0}
.np-nav-w .elementor-nav-menu--main a.elementor-item-active::after{transform:scaleX(1)}
.np-nav-w .elementor-nav-menu--main a.elementor-item:focus,
.np-nav-w .elementor-nav-menu--main a.elementor-item:hover{background:none}

/* ---- Hamburger ---- */
.np-nav-w .elementor-menu-toggle{width:44px;height:44px;border-radius:10px;
  border:1px solid rgba(11,23,40,.1);color:var(--ink-900);background:transparent;
  transition:background-color .3s,border-color .3s,color .3s}
.np-nav-w .elementor-menu-toggle:hover{background:rgba(11,23,40,.04)}
.np-nav-w .elementor-menu-toggle i,.np-nav-w .elementor-menu-toggle svg{
  font-size:20px;width:20px;height:20px;color:inherit;fill:currentColor}
.np-nav-w .elementor-menu-toggle.elementor-active{border-color:rgba(255,255,255,.15);
  color:#fff}

/* ---- Full-screen mobile panel ---- */
/* 1200 for the same reason as the bar layout above: this is the panel the
   burger opens, so it has to exist wherever the burger does. */
@media(max-width:1200px){
  .np-nav-w .elementor-nav-menu--dropdown{position:fixed!important;
    inset:72px 0 0!important;width:100%!important;max-height:none!important;
    background:var(--ink-950);overflow-y:auto;padding:24px 20px 148px;
    /* the widget's own 10px top margin survives fixed positioning and was
       leaving a light strip between the bar and the panel hanging off it */
    margin:0!important;
    border:0!important;box-shadow:none!important}
  .np-nav-w .elementor-nav-menu--dropdown::before{content:"";position:absolute;
    inset:0;pointer-events:none;opacity:.6;background-image:
      linear-gradient(to right,rgba(255,255,255,.045) 1px,transparent 1px),
      linear-gradient(to bottom,rgba(255,255,255,.045) 1px,transparent 1px);
    background-size:48px 48px;
    -webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);
    mask-image:linear-gradient(to bottom,#000 55%,transparent 100%)}
  @media(min-width:640px){
    .np-nav-w .elementor-nav-menu--dropdown{padding-inline:32px}}
  /* The bar is 72px tall below 1024 and 96px above it (Navbar.tsx h-[4.5rem]
     lg:h-24), and the panel hangs off the bottom of the bar. Now that the
     burger reaches up to 1200, the band above 1024 needs the taller offset
     or the panel covers the last 24px of the bar it came from -- and the
     page gutter is 48px there, not 32. */
  @media(min-width:1024px){
    .np-nav-w .elementor-nav-menu--dropdown{inset:96px 0 0!important;
      padding-inline:48px}}
  .np-nav-w .elementor-nav-menu--dropdown .elementor-nav-menu{
    position:relative;counter-reset:npmi -1;max-width:1216px;margin-inline:auto}
  .np-nav-w .elementor-nav-menu--dropdown .elementor-nav-menu li{
    border-bottom:1px solid rgba(255,255,255,.1)}
  /* py-5 text-[1.75rem] font-semibold tracking-[-0.03em]. Elementor's own
     nav rules are more specific than a bare class chain, so these are
     forced -- the items were rendering at the widget default size. */
  .np-nav-w .elementor-nav-menu--dropdown a.elementor-item{
    counter-increment:npmi;display:flex!important;align-items:center;
    justify-content:space-between;padding:20px 0!important;
    background:none!important;font-family:"Manrope",sans-serif!important;
    font-size:28px!important;font-weight:600!important;line-height:1.2!important;
    letter-spacing:-.03em!important;color:var(--ink-200)!important;
    border:0!important;transition:color .3s}
  .np-nav-w .elementor-nav-menu--dropdown a.elementor-item:hover,
  .np-nav-w .elementor-nav-menu--dropdown a.elementor-item.elementor-item-active{
    color:#fff!important}
  /* mono index 00-05 (Navbar.tsx renders 0{i}); the counter has to be reset
     on the list and incremented per link, and the content forced or the
     desktop underline rule wins on the rows after the first. */
  .np-nav-w .elementor-nav-menu--dropdown a.elementor-item::after{
    content:"0" counter(npmi)!important;position:static!important;
    transform:none!important;width:auto!important;height:auto!important;
    inset:auto!important;background:none!important;
    font-family:var(--mono)!important;font-size:12px!important;
    font-weight:400!important;letter-spacing:0!important;
    color:var(--ink-300)!important;opacity:1!important}
  /* The reference keeps the bar light with the CTA visible while the menu is
     open, and the close control is a bare X with no box. */
  .np-nav-w .elementor-menu-toggle.elementor-active{
    border-color:transparent!important;background:transparent!important;
    color:var(--ink-900)!important}
}
/* ---- bottom block of the open mobile panel ---- */
/* Driven by .np-menu-open, which the header script mirrors from the toggle,
   rather than :has() -- and z-index above Elementor's dropdown, which sets
   its own and was covering this block. */
.np-mob-foot-host,.np-mob-foot{display:none}
/* the host carries the fixed positioning so it never takes a slot in the
   bar's flex row (which would open an 8px gap beside the hamburger) */
.np-menu-open .np-mob-foot-host{display:block;position:fixed;inset-inline:0;
  bottom:0;z-index:100000;width:auto!important}
.np-menu-open .np-mob-foot{display:flex;flex-direction:column;gap:16px;
  background:var(--ink-950);border-top:1px solid rgba(255,255,255,.1);
  padding:24px 20px}
@media(min-width:640px){.np-menu-open .np-mob-foot{padding-inline:32px}}
/* 1201, not 1024: this block is the bottom of the panel the burger opens,
   so it has to survive as long as the burger does. At 1024 it vanished while
   the panel it belongs to was still opening. */
@media(min-width:1201px){
  .np-mob-foot-host,.np-mob-foot{display:none!important}}
/* Button.tsx variant="inverted" size="lg" className="w-full" */
.np-mob-cta{display:inline-flex;align-items:center;justify-content:center;
  gap:10px;width:100%;height:52px;padding:0 24px;border-radius:10px;
  background:#fff;color:var(--ink-900);font-family:"Manrope",sans-serif;
  font-size:16px;font-weight:600;letter-spacing:-.01em;line-height:1;
  text-decoration:none;transition:background-color .3s var(--ease)}
.np-mob-cta:hover{background:var(--blue-100)}
/* flex flex-wrap items-center justify-between gap-3 text-small text-ink-300 */
.np-mob-contact{display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:12px;font-size:14px;line-height:1.5;
  color:var(--ink-300)}
.np-mob-contact a{color:inherit;text-decoration:none;transition:color .3s}
.np-mob-contact a:hover{color:#fff}

@media(prefers-reduced-motion:reduce){
  .elementor-location-header > .e-con,
  .np-nav-w .elementor-nav-menu--main a.elementor-item::after{transition:none!important}}/* End custom CSS */