*,*::before,*::after { box-sizing:border-box; }
  :root {
    --ink:#001840; --ink-2:#3c4f6e; --ink-3:#3c4f6e;
    --paper:#ffffff; --paper-2:#ebf0f5; --blush:#d7e9f8;
    --red:#0870b8; --red-dark:#001840;
    --line:#ebf0f5; --line-2:#c9d5e3;
    --r-sm:8px; --r-md:14px; --r-lg:22px;
    --sh-1:0 1px 2px rgba(0,24,64,0.08);
    --sh-h:0 3px 9px rgba(0,24,64,0.16);
    --sh-2:0 10px 30px rgba(0,24,64,0.16);
  }
  html { scroll-behavior:smooth; }
  body { max-width:100%; margin:0; background:var(--paper); color:var(--ink); font-family:"Instrument Sans",system-ui,sans-serif; font-size:17px; -webkit-font-smoothing:antialiased; }
  h1,h2,h3,h4 { margin:0; font-weight:500; color:var(--ink); }
  h1 { letter-spacing:-0.042em; line-height:1.02; }
  h2 { letter-spacing:-0.034em; line-height:1.06; }
  h3,h4 { letter-spacing:-0.024em; line-height:1.18; }
  p { margin:0; }
  a { color:var(--red); text-decoration:none; transition:color 160ms ease; }
  a:hover { color:var(--red-dark); }
  button { font-family:inherit; font-size:inherit; transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease,box-shadow 160ms ease; }
  image-slot { display:block; }
  ::selection { background:#d7e9f8; }
  :focus-visible { outline:2px solid var(--red); outline-offset:3px; border-radius:4px; }
  /* keyboard users get a first stop that jumps past the header */
  .np-skip { position:absolute; left:16px; top:-100px; z-index:200; padding:10px 16px; background:var(--ink); color:#fff; font-weight:600; border-radius:999px; text-decoration:none; }
  .np-skip:focus { top:12px; outline:2px solid #fff; outline-offset:3px; }
  @media (max-width: 1180px) {
    .np-logo { height:49px !important; }
    .np-headcta { padding:10px 16px !important; font-size:14.5px !important; }
  }
  @media (max-width: 820px) {
    .np-logo { height:40px !important; }
    .np-nav-group > a { font-size:14.5px; }
  }
  .np-h1 { white-space:nowrap; }
  @media (max-width: 700px) { .np-h1 { white-space:normal; } }
  .np-chip { position:relative; cursor:default; }
  .np-ichip { cursor:pointer; }
  .np-tchip:hover, .np-tchip:focus { color:var(--red-dark); }
  .np-tchip:focus-visible { outline:2px solid var(--red); outline-offset:3px; }
  .np-ichip .np-bub { width:min(320px,74vw); font-weight:400; letter-spacing:0; text-transform:none; }
  .np-chip:hover, .np-chip:focus-visible { z-index:20; }
  .np-bub {
    position:absolute; left:0; bottom:calc(100% + 13px); width:min(282px,72vw);
    background:var(--ink); color:#fff; font-size:15.5px; line-height:1.5; font-weight:400;
    padding:12px 15px; border-radius:14px; border-bottom-left-radius:4px;
    box-shadow:var(--sh-2); text-align:left; pointer-events:none;
    opacity:0; transform:scale(0.62); transform-origin:0 100%;
    transition:opacity 130ms ease, transform 190ms cubic-bezier(0.2,0.9,0.28,1.25);
  }
  .np-bub::after {
    content:""; position:absolute; left:var(--np-arrow,15px); top:100%; width:11px; height:11px;
    background:var(--ink); border-radius:2px; transform:translateY(-6px) rotate(45deg);
  }
  /* a mouse click leaves focus behind, so only keyboard focus holds the bubble open */
  .np-chip:hover .np-bub, .np-chip:focus-visible .np-bub { opacity:1; transform:scale(1); }
  .np-ichip:hover { background:var(--blush) !important; color:var(--red-dark) !important; box-shadow:var(--sh-h) !important; }
  .np-slider { -webkit-appearance:none; appearance:none; position:absolute; left:calc(12.5% - 10px); top:0; width:calc(75% + 20px); height:26px; margin:0; background:transparent; cursor:pointer; }
  .np-slider::-webkit-slider-runnable-track { height:26px; background:transparent; }
  .np-slider::-moz-range-track { height:26px; background:transparent; }
  .np-slider::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:20px; height:20px; margin-top:3px; border-radius:999px; background:var(--red); border:2px solid var(--paper); box-shadow:0 1px 6px rgba(0,24,64,0.28); cursor:grab; }
  .np-slider::-moz-range-thumb { width:20px; height:20px; border-radius:999px; background:var(--red); border:2px solid var(--paper); box-shadow:0 1px 6px rgba(0,24,64,0.28); cursor:grab; }
  .np-slider:active::-webkit-slider-thumb { cursor:grabbing; }
  .np-slider-unset::-webkit-slider-thumb { background:var(--paper); border:2px solid var(--line-2); box-shadow:none; }
  .np-slider-unset::-moz-range-thumb { background:var(--paper); border:2px solid var(--line-2); box-shadow:none; }
  .np-slider:focus-visible { outline:none; }
  .np-slider:focus-visible::-webkit-slider-thumb { outline:2px solid var(--red); outline-offset:2px; }
  .np-lvl:hover { color:var(--red) !important; }
  .np-reveal { opacity:0; transform:translateY(32px); }
  [id] { scroll-margin-top:124px; }
  .np-nav-group { position:relative; display:inline-block; padding:24px 0; margin:-24px 0; }
  .np-nav-group > a { display:inline-block; font-size:15.5px; font-weight:600; color:var(--ink); white-space:nowrap; }
  .np-nav-group > a { border-bottom:2px solid transparent; padding-bottom:3px; }
  .np-nav-group > a > span { border-bottom:0; }
  .np-nav-group > a:hover { color:var(--red); }
  .np-nav-sub { position:absolute; left:0; top:calc(100% - 15px); font-size:12.5px; line-height:1.1; color:var(--ink-3); white-space:nowrap; pointer-events:none; transition:opacity 120ms ease; }
  .np-nav-group:hover .np-nav-sub, .np-nav-group:focus-within .np-nav-sub { opacity:0; }
  .np-nav-menu { display:none; position:absolute; left:-16px; top:calc(100% - 16px); min-width:196px; background:var(--paper); border:1px solid var(--line); border-radius:var(--r-sm); box-shadow:var(--sh-2); padding:8px 0; z-index:70; }
  .np-nav-group:hover .np-nav-menu, .np-nav-group:focus-within .np-nav-menu { display:block; }
  .np-nav-group.np-nav-shut .np-nav-menu { display:none; }
  .np-nav-menu a { display:block; padding:7px 16px; font-size:15.5px; color:var(--ink); white-space:nowrap; }
  .np-nav-menu a:hover { background:var(--paper-2); color:var(--red); }
  .np-nav-menu a > span { border-bottom:2px solid transparent; padding-bottom:2px; }
  .np-reveal-on { transition:opacity 460ms ease-out, transform 460ms ease-out; }
  .np-reveal-in { opacity:1; transform:none; }
  @media (prefers-reduced-motion: reduce) {
    .np-reveal, .np-reveal-in { opacity:1; transform:none; }
    .np-reveal-on { transition:none; }
  }
  .np-lede-align { margin-top:46px; }
  @media (max-width: 760px) { .np-lede-align { margin-top:0; } }
  @keyframes np-imgin {
    from { opacity:0; transform:translate(15%,15%) scale(1.3); }
    60%  { opacity:1; }
    to   { opacity:1; transform:translate(0,0) scale(1); }
  }
  @keyframes np-imgzoom {
    from { transform:translate(15%,15%) scale(1.3); }
    to   { transform:translate(0,0) scale(1); }
  }
  .np-pill { max-width:100%; }
  a, button, label, summary, [role="button"], input[type="checkbox"], input[type="radio"] { cursor:pointer; }
  a[target="_blank"] { cursor:alias; }
  button:disabled { cursor:default; }
  input::placeholder, textarea::placeholder { color:var(--ink-3); opacity:1; }
  .np-chip, .np-ichip { align-self:flex-start; }
  .np-burger { display:none; background:transparent; border:1px solid var(--line-2); border-radius:var(--r-sm); width:46px; height:46px; align-items:center; justify-content:center; cursor:pointer; flex:0 0 auto; }
  .np-burger:hover { background:var(--blush); border-color:var(--red); }
  .np-burger-bars { display:block; width:20px; height:14px; position:relative; }
  .np-burger-bars span { position:absolute; left:0; width:100%; height:2px; background:var(--ink); border-radius:2px; transition:transform 200ms ease, opacity 160ms ease; }
  .np-burger-bars span:nth-child(1) { top:0; }
  .np-burger-bars span:nth-child(2) { top:6px; }
  .np-burger-bars span:nth-child(3) { top:12px; }
  .np-burger[aria-expanded="true"] .np-burger-bars span:nth-child(1) { transform:translateY(6px) rotate(45deg); }
  .np-burger[aria-expanded="true"] .np-burger-bars span:nth-child(2) { opacity:0; }
  .np-burger[aria-expanded="true"] .np-burger-bars span:nth-child(3) { transform:translateY(-6px) rotate(-45deg); }
  .np-navwrap { display:flex; flex-wrap:wrap; align-items:center; gap:12px clamp(10px,1.6vw,28px); }
  .np-hero-inner { min-height:clamp(460px,64vh,720px); }

  /* the bar sheds a part at a time; the hamburger is the last step, set by the script */
  #np-header .np-head-hide { display:none !important; }
  #np-header[data-min="1"] .np-burger { display:inline-flex; margin-left:auto; }
  #np-header[data-min="1"] .np-navwrap { display:none; width:100%; flex-direction:column; flex-wrap:nowrap; align-items:stretch; gap:0; margin-top:10px; padding-top:8px; border-top:1px solid var(--line-2); max-height:min(72vh,560px); overflow-y:auto; }
  #np-header[data-min="1"] .np-navwrap[data-open="true"] { display:flex; flex-wrap:nowrap; }
  #np-header[data-min="1"] .np-nav-group { display:block; padding:0 !important; margin:0 !important; }
  #np-header[data-min="1"] .np-nav-group > a { display:block; padding:13px 2px; font-size:17px; }
  #np-header[data-min="1"] .np-nav-sub { display:none; }
  #np-header[data-min="1"] .np-nav-menu,
  #np-header[data-min="1"] .np-nav-group:hover .np-nav-menu,
  #np-header[data-min="1"] .np-nav-group.np-nav-shut .np-nav-menu { display:block; position:static; left:auto; top:auto; min-width:0; background:transparent; border:0; box-shadow:none; padding:0 0 8px 14px; }
  #np-header[data-min="1"] .np-nav-menu a { padding:11px 0; font-size:15.5px; }
  #np-header[data-min="1"] .np-headcta { margin-left:0 !important; margin-top:10px; margin-bottom:4px; text-align:center; }
  @media (max-width: 1023px), (hover: none), (pointer: coarse) {
    [id] { scroll-margin-top:96px; }
    .np-hero-inner { min-height:clamp(400px,58dvh,640px); }
  }
  @media (max-width: 640px) {
    [id] { scroll-margin-top:88px; }
    .np-hero-veil { background:rgba(255,255,255,0.72) !important; }
    .np-hero-inner { min-height:clamp(360px,54dvh,560px); }
    .np-bub { width:min(300px,86vw); }
  }
  @media (max-width: 460px) {
    .np-cta-row { flex-direction:column; align-items:stretch; }
    .np-cta-row > a { text-align:center; }
    .np-headcta { display:block; }
  }
  @media (max-width: 1023px) and (orientation: landscape) {
    .np-hero-inner { min-height:clamp(320px,88dvh,560px); }
  }
  @media (hover: none) {
    .np-ichip, .np-nav-menu a, .np-nav-group > a { min-height:44px; }
    .np-ichip { display:inline-flex; align-items:center; }
    /* no hover to rely on: the bubble opens on tap and closes on the next one */
    .np-chip:hover .np-bub, .np-chip:focus-visible .np-bub { opacity:0; transform:scale(0.62); }
    .np-chip.np-open .np-bub { opacity:1; transform:scale(1); pointer-events:auto; padding-right:34px; }
    .np-chip.np-open .np-bub::before {
      content:"\00D7"; position:absolute; top:4px; right:9px; font-size:19px; line-height:1.2;
      color:#ffffff; opacity:0.75;
    }
    .np-chip:has(.np-bub)::after {
      content:"\24D8"; margin-left:5px; font-size:1.02em; line-height:1; opacity:0.6; vertical-align:baseline;
    }
    .np-chip.np-open::after { opacity:1; }
  }

  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior:auto; }
    *,*::before,*::after { transition:none !important; animation:none !important; }
  }

  /* The circles in the lower corner (Under the Hood, Talk to Us With AI, Content Path). They share one
     base line; stackFabs() in index.html sets --np-fab-offset on each from the heights of those below. */
  .np-fab {
    --np-fab-base:clamp(16px,3vw,32px);
    position:fixed; left:clamp(16px,3vw,32px); bottom:calc(var(--np-fab-base) + var(--np-fab-offset, 0px)); z-index:150;
    border:0; background:transparent; padding:0; cursor:pointer; color:#fff; text-decoration:none;
    display:flex; flex-direction:column; align-items:center; gap:7px;
    animation:np-fab-in 320ms ease-out both;
  }
  .np-fab-circle {
    position:relative; z-index:1; width:39px; height:39px; border-radius:999px;
    background:#5c1824; color:#fff;
    box-shadow:0 7px 16px rgba(0,24,64,0.16), 0 2px 6px rgba(0,24,64,0.11);
    display:inline-flex; align-items:center; justify-content:center;
    transition:background-color 160ms ease, transform 200ms ease, box-shadow 200ms ease;
  }
  .np-fab-circle svg, .np-fab-circle img { width:18px; height:18px; display:block; }
  a.np-fab:hover, a.np-fab:focus { text-decoration:none; }
  .np-fab-cap {
    position:relative; z-index:2;
    font-size:12.5px; font-weight:500; line-height:1.25; letter-spacing:0.01em; color:var(--ink);
    text-align:center; width:104px;
    white-space:normal;
  }
  .np-fab:hover .np-fab-circle {
    background:#9e1b16;
    box-shadow:0 10px 22px rgba(0,24,64,0.20), 0 3px 8px rgba(0,24,64,0.13);
  }
  .np-fab-tip {
    position:absolute; left:calc(100% + 14px); top:50%; transform:translateY(-50%) scale(0.9);
    transform-origin:0 50%; width:max-content; max-width:min(260px,60vw);
    background:var(--ink); color:#fff; font-size:15px; line-height:1.45; font-weight:400;
    text-align:left; padding:11px 14px; border-radius:14px; border-bottom-right-radius:4px;
    border-bottom-right-radius:14px; border-bottom-left-radius:4px;
    box-shadow:var(--sh-2); pointer-events:none; opacity:0;
    transition:opacity 160ms ease, transform 200ms cubic-bezier(0.2,0.9,0.28,1.25);
  }
  .np-fab-tip::after {
    content:""; position:absolute; right:100%; top:50%; width:11px; height:11px;
    background:var(--ink); border-radius:2px; transform:translate(6px,-50%) rotate(45deg);
  }
  .np-fab:hover .np-fab-tip, .np-fab:focus-visible .np-fab-tip, .np-fab.np-fab-hint .np-fab-tip {
    opacity:1; transform:translateY(-50%) scale(1);
  }
  .np-fab:hover .np-fab-tip.np-fitted, .np-fab:focus-visible .np-fab-tip.np-fitted,
  .np-fab.np-fab-hint .np-fab-tip.np-fitted {
    transform:translate(var(--np-fit-x, 0px), calc(-50% + var(--np-fit-y, 0px))) scale(1);
  }
  .np-bub.np-fitted { translate:var(--np-fit-x, 0px) var(--np-fit-y, 0px); }
  @keyframes np-fab-in {
    from { opacity:0; transform:translateY(10px) scale(0.86); }
    to   { opacity:1; transform:none; }
  }
  @media (max-width: 640px) {
    .np-fab { left:auto; right:clamp(12px,4vw,20px); }
    .np-fab-cap { width:min(112px,34vw); }
    .np-fab-tip { max-width:min(220px,62vw); left:auto; right:calc(100% + 12px);
      transform-origin:100% 50%; }
    .np-fab-tip::after { right:auto; left:100%; transform:translate(-6px,-50%) rotate(45deg); }
  }
  @media (prefers-reduced-motion: reduce) {
    .np-fab { animation:none; }
  }

  /* service group chips: hover cannot live in a dynamic style-hover attribute */
  .np-svc-chip:hover, .np-svc-chip:focus-visible {
    background:var(--blush) !important; color:var(--red-dark) !important; box-shadow:var(--sh-h) !important;
  }
  .np-svc-chip[aria-pressed="true"]:hover, .np-svc-chip[aria-pressed="true"]:focus-visible {
    background:var(--red-dark) !important; color:#ffffff !important; box-shadow:var(--sh-h) !important;
  }

  /* partner cards and technology plates lift like the other hoverable elements */
  .np-hoverbox { transition:box-shadow 160ms ease, border-color 160ms ease; }
  .np-hoverbox:hover { box-shadow:var(--sh-h); border-color:var(--line-2); }
  a:hover > .np-hoverbox, a:focus-visible > .np-hoverbox { box-shadow:var(--sh-h); }

  /* the v3 badge would sit under the Under the Hood button, so it is hidden and the
     required notice appears next to the form instead */
  .grecaptcha-badge { visibility:hidden; }

  /* One line of room under every field, always present, so a validation message appears without
     pushing the rest of the form down. The line is as wide as the field above it and no wider:
     the field block is a column, so 100% is the field's own width at any viewport, and a message
     too long for the width is clipped rather than wrapped — the list on the submit button
     carries the full wording. */
  .np-fieldmsg {
    min-height:20px; width:100%; max-width:100%;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }

  /* the dial code and the number read as one field, so the field shows the focus ring */
  .np-phone-wrap:focus-within { outline:2px solid var(--red); outline-offset:2px; }

  /* The contact submit is inert while a message is in flight, and until the required fields are
     filled in. Grey rather than dimmed red: a faded primary reads as a rendering fault, a grey
     one reads as "not yet". */
  /* The submit is grey while a message is in flight (disabled) and while the form is not ready
     to send (aria-disabled). aria-disabled rather than disabled in the second case, so the button
     still takes hover and keyboard focus and can say what is missing.
     background-color, not the shorthand: the button's own inline style sets background:var(--red),
     and a var() shorthand there is not overridden by a shorthand here. */
  .np-submit:disabled,
  .np-submit[aria-disabled="true"],
  .np-wa[aria-disabled="true"] {
    cursor:not-allowed !important;
    background-color:#7f8fa6 !important; background-image:none !important;
    color:#ffffff !important; opacity:1 !important;
  }
  .np-submit:disabled:hover,
  .np-submit[aria-disabled="true"]:hover,
  .np-wa[aria-disabled="true"]:hover {
    background-color:#7f8fa6 !important; background-image:none !important; color:#ffffff !important;
  }

  /* the hero still opens at 140% and settles to its natural frame */
  #np-hero-zoom {
    transform-origin:50% 50%;
    will-change:transform;
    animation:np-hero-in 5000ms cubic-bezier(0.3,0.5,0.2,1) both;
  }
  @keyframes np-hero-in {
    from { transform:scale(1.3); }
    to   { transform:scale(1); }
  }
  @media (prefers-reduced-motion: reduce) {
    #np-hero-zoom { animation:none; }
  }

  /* discovery answers: hover cannot live in a dynamic style-hover attribute */
  .np-opt { transition:background-color 160ms ease, border-color 160ms ease, box-shadow 160ms ease; }
  .np-opt:hover, .np-opt:focus-visible {
    background:var(--blush) !important; border-color:var(--red) !important; box-shadow:var(--sh-h) !important;
  }

  /* Google injects its own "could not connect" notice into the badge; failures surface in the form error line instead */
  .grecaptcha-badge { visibility:hidden !important; }

  /* collapsible sections: the section's own title is the bar, the caret circle is the control */
  .np-coll-head { display:flex; align-items:center; }
  .np-coll-chev svg { display:block; }
  .np-coll-chev { position:relative; top:0; box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; gap:0; height:26px; min-height:26px; flex:0 0 auto; margin:0 0 0 2px; padding:0 10px 0 6px; border:0; -webkit-appearance:none; appearance:none; border-radius:999px; background:transparent; color:inherit; cursor:pointer; transition:transform 420ms cubic-bezier(.22,.61,.36,1), background-color 180ms ease, color 180ms ease; }
  .np-coll-chev:hover { background:#c2d2dd; color:var(--ink); padding:0 10px 0 6px; }
  .np-chev-cap { max-width:0; overflow:hidden; white-space:nowrap; font-size:12.5px; font-weight:500;
    letter-spacing:0.01em; text-transform:none; transition:max-width 200ms ease, margin-left 200ms ease; margin-left:0; }
  .np-coll-chev:hover .np-chev-cap, .np-coll-chev:focus-visible .np-chev-cap { max-width:80px; margin-left:6px; }
  .np-coll-chev:active { background:#9fb8cc; }
  .np-coll-chev:focus-visible { outline:2px solid var(--red); outline-offset:3px; }
  /* a closed section is ruled off across the full viewport, top and bottom */
  [data-coll][data-collapsed="1"] { position:relative; }
  [data-coll][data-collapsed="1"]::before, [data-coll][data-collapsed="1"]::after {
    content:""; position:absolute; left:50%; transform:translateX(-50%);
    width:100vw; height:1px; background:#9fb8cc; pointer-events:none; z-index:3;
  }
  [data-coll][data-collapsed="1"]::before { top:0; }
  [data-coll][data-collapsed="1"] + [data-coll][data-collapsed="1"]::before { display:none; }
  /* a closed section that holds others rules off under its own label, not under the whole block */
  [data-coll][data-collapsed="1"]:has([data-coll]) .np-coll-head::after {
    content:""; position:absolute; left:50%; transform:translateX(-50%); bottom:0;
    width:100vw; height:1px; background:#9fb8cc; pointer-events:none; z-index:3; }
  [data-coll][data-collapsed="1"]:has([data-coll])::after { display:none !important; }
  .np-coll-head { position:relative; }
  [data-coll][data-collapsed="1"]::after { bottom:0; }
  @media (prefers-reduced-motion: reduce) { .np-coll-head, .np-coll-chev { transition:none !important; } }
  /* plain and tinted sections share one content width */
  section[data-reveal]:not([data-band]) { max-width:1336px !important; margin-left:auto !important; margin-right:auto !important; }
  @media (max-width: 1024px) {
    .np-coll-chev { height:26px; min-height:26px; margin:0 0 0 2px !important; }
  }

  /* big rounded cards run out to the section's own padding so their content lines up with everything else */
  .np-wide { padding-left:calc(clamp(20px,4vw,48px) + 14px) !important; padding-right:calc(clamp(20px,4vw,48px) + 14px) !important;
    margin-left:calc(-1 * (clamp(20px,4vw,48px) + 14px)); margin-right:calc(-1 * (clamp(20px,4vw,48px) + 14px)); }
  .np-wide-grid { padding-left:0 !important; padding-right:0 !important; }
  .np-wide-grid > div:first-child { padding-left:clamp(20px,4vw,48px) !important; padding-right:clamp(20px,4vw,48px) !important; }
  .np-ichip { align-items:flex-start !important; }
  /* a card that folds reads as one solid band, edge to edge */
  .np-wide[data-collapsed="1"] { border-radius:0 !important;
    margin-left:calc(50% - 50vw) !important; margin-right:calc(50% - 50vw) !important;
    padding-left:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important;
    padding-right:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important; }
  /* full-bleed blocks: background to the viewport edge, content on the section's column */
  .np-bleed { margin-left:calc(50% - 50vw) !important; margin-right:calc(50% - 50vw) !important;
    padding-left:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important;
    padding-right:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important; border-radius:0 !important; }
  .np-bleed-grid { padding-left:0 !important; padding-right:0 !important; }
  .np-bleed-grid > div:first-child { padding-left:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important; }
  .np-wide-row { margin-left:calc(-1 * clamp(20px,4vw,48px)); margin-right:calc(-1 * clamp(20px,4vw,48px)); }
  .np-chip, .np-ichip { align-self:stretch; }
  .np-indbox:hover { background:var(--blush); color:var(--red-dark) !important; }
  .np-indbox:hover .np-mark { border-color:var(--red) !important; color:var(--red) !important; }
  .np-indbox:focus-visible { outline:2px solid var(--red); outline-offset:3px; }
  .np-band { max-width:none !important; margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
    padding-left:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important;
    padding-right:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important; }
  .np-coll-icon { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; margin-right:11px; color:var(--ink); }
  .np-coll-icon svg > *:first-child { stroke:var(--red); }
  .np-coll-icon svg { display:block; }
  [data-coll][data-collapsed="0"] > .np-coll-head, [data-coll][data-collapsed="0"] .np-coll-head { font-weight:700; }
  [data-coll][data-collapsed="1"] .np-coll-head { font-weight:400; }
  .np-nav-icon { display:inline-flex; align-items:center; justify-content:center; margin-right:5px; color:var(--ink); vertical-align:middle; }
  .np-nav-icon svg > *:first-child { stroke:var(--red); }
  .np-nav-icon svg { display:block; }
  .np-nav-group > a { display:inline-flex; align-items:center; }
  /* chips that are not boxes get a quiet outline on hover instead of a colour change */
  .np-artchip { border:0; transition:background-color 160ms ease, color 160ms ease, box-shadow 160ms ease; }
  .np-artchip:hover, .np-artchip:focus { background:var(--blush) !important; color:var(--red-dark) !important;
    box-shadow:var(--sh-h) !important; }


  #np-header > div > * { align-self:center; }
  #np-header .np-cities span { line-height:1; }
  .np-rate { width:min(100%, 330px); min-width:0; }
  .np-rate-note { width:min(100%, 330px); }
  .np-stop { position:absolute; top:3px; width:20px; height:20px; margin-left:-10px; border-radius:999px;
    background:var(--paper); border:2px solid var(--line-2); box-sizing:border-box; pointer-events:none; }
  /* an untouched slider shows a solid grey circle */
  .np-slider-unset::-webkit-slider-thumb { background:#9fb8cc !important; border:2px solid var(--paper) !important;
    box-shadow:0 1px 4px rgba(0,24,64,0.28) !important; }
  .np-slider-unset::-moz-range-thumb { background:#9fb8cc !important; border:2px solid var(--paper) !important;
    box-shadow:0 1px 4px rgba(0,24,64,0.28) !important; }

  .np-rank { cursor:default; }
  .np-rank-btn:hover { border-color:var(--red) !important; color:var(--red) !important; background:var(--paper-2) !important; }
  .np-grip:active { cursor:grabbing; }
  /* the logo and the cities stay locked together; the free space sits after them.
     The margin belongs to the menu, not the cities: the bar sheds the cities, and the space
     it hands back must still push the menu to the right. */
  #np-header:not([data-min="1"]) .np-navwrap { margin-left:auto; }
  #np-header[data-min="1"] .np-navwrap { margin-left:0; }
  #np-header > div { max-width:none !important; }
  .np-rank { cursor:default; border-top:0 !important; }
  .np-band-shut[data-collapsed="1"] { border-radius:0 !important; box-shadow:none !important;
    margin-left:calc(50% - 50vw) !important; margin-right:calc(50% - 50vw) !important;
    padding-left:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important;
    padding-right:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important; }
  .np-band-shut[data-collapsed="1"] > div:first-child { padding-left:0 !important; padding-right:0 !important; }
  [data-coll][data-collapsed="0"] > .np-coll-head, [data-coll][data-collapsed="0"] .np-coll-head { margin-top:-16px; }
  .np-coll-icon-path, .np-coll-icon-path svg > *:first-child { color:#9e1b16; stroke:#9e1b16; }
  .np-nav-icon-path, .np-nav-icon-path svg > *:first-child { color:#9e1b16; stroke:#9e1b16; }
  /* source links read as part of the Source line, and take the card's tone on hover */
  .np-src a, .np-src a:visited { color:var(--ink-3); }
  .np-src a:hover, .np-src a:focus-visible { color:var(--stat, var(--red)); }
  /* one shadow for every card on the page */
  #porto[data-collapsed="0"], .np-rank, .np-opt, .np-hoverbox { box-shadow:var(--sh-h) !important; }
  .np-band-shut[data-collapsed="1"] { box-shadow:none !important; }
  [data-coll] > .np-coll-head, [data-coll] .np-coll-head { margin-bottom:32px !important; }
  section[data-coll][data-collapsed="0"] { padding-top:clamp(34px,4.9vw,78px) !important;
    padding-bottom:clamp(41px,6vw,95px) !important; }
  .np-lede-align { margin-top:62px; }
  @media (max-width: 760px) { .np-lede-align { margin-top:0; } }
  /* the menu caption starts where the wording does, past the icon */
  .np-nav-sub { left:26px !important; }
  .np-nav-group > a > span:not(.np-nav-icon) { border-bottom:2px solid transparent; padding-bottom:3px; }

  .np-coll-chev svg { transition:transform 420ms cubic-bezier(.22,.61,.36,1); }
  .np-rank { cursor:grab; }
  .np-rank:active, .np-grip:active { cursor:grabbing; }
  .np-opt { box-shadow:var(--sh-h) !important; }
  [data-coll][data-collapsed="1"] > .np-coll-head, [data-coll][data-collapsed="1"] .np-coll-head {
    margin-top:0 !important; margin-bottom:0 !important; }
  /* an open section keeps its own label gap even when a collapsed parent wraps it */
  [data-coll][data-collapsed="0"] .np-coll-head { margin-bottom:max(32px, 2em) !important; }
  #technologies[data-collapsed="0"] .np-coll-head,
  #partners[data-collapsed="0"] .np-coll-head { margin-bottom:24px !important; }
  #porto[data-collapsed="0"] .np-coll-head { margin-bottom:44px !important; }
  /* only the closed section's own label is ruled off, never a nested one */
  [data-coll] [data-coll] .np-coll-head::after { display:none !important; }
  /* every menu item sits on one centre line */
  .np-navwrap { align-items:center; }
  .np-nav-group { display:inline-flex; align-items:center; }
  .np-nav-group > a { align-items:center; line-height:1.1; }
  .np-nav-icon { align-self:center; margin-bottom:3px; }
  @media (max-width: 700px) { .np-summary-pair { grid-template-columns:1fr !important; } }
  .np-cities-2 { flex-wrap:wrap; max-width:280px; row-gap:2px; align-content:center; margin-top:-4px; }
  /* a sub-section that needs its own ground runs edge to edge */
  .np-band-ground { border-radius:0 !important;
    margin-left:calc(50% - 50vw) !important; margin-right:calc(50% - 50vw) !important;
    padding-left:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important;
    padding-right:max(clamp(20px,4vw,48px), calc(50vw - 620px)) !important; }
  .np-band-ground[data-collapsed="1"] > div:first-child { background:transparent !important; box-shadow:none !important; padding:0 !important; }
  /* the service detail lines mark themselves on hover without becoming chips */
  .np-svc-item { display:inline-block; width:max-content; max-width:100%; text-decoration:underline;
    text-decoration-color:transparent; text-underline-offset:4px; text-decoration-thickness:1.5px;
    transition:color 160ms ease, text-decoration-color 160ms ease; cursor:default; }
  .np-svc-item:hover, .np-svc-item:focus-visible { color:var(--ink) !important; text-decoration-color:var(--red); }
  /* a section label always clears its own height before the content starts */
  [data-coll] .np-coll-head { margin-bottom:max(32px, 2em) !important; }
  .np-navwrap { align-items:center; }
  .np-opt { box-shadow:var(--sh-h) !important; }
  @media (max-width: 1180px) { .np-fam-row { grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr)) !important; } }
  #np-header > div { align-items:center !important; }
  #np-header > div > *, #np-header .np-cities > * { align-self:center; }
  #technologies[data-collapsed="0"] .np-coll-head,
  #partners[data-collapsed="0"] .np-coll-head { margin-bottom:24px !important; }
  #porto[data-collapsed="0"] .np-coll-head { margin-bottom:44px !important; }
  /* the tinted band closes the methodology, so the section adds no gap beneath it */
  section#method[data-collapsed="0"] { padding-bottom:0 !important; }
  /* a sub-section carries its ground in both states, so no white slivers appear at the rules */
  [data-coll][data-ground] { background-clip:border-box; }
  [data-coll][data-ground="paper"] .np-artchip:not(:hover):not(:focus-visible):not(.np-hover-probe),
  [data-coll][data-ground="paper"] .np-chip:not(:hover):not(:focus-visible):not(.np-hover-probe) { background:var(--paper-2); }
  [data-coll][data-collapsed="1"] { box-shadow:none !important; }
  /* the menu wording sits on the CTA's centre line */
  .np-nav-group > a { transform:translateY(5px); }
  /* an open section shows no rule against its neighbours */
  [data-coll][data-collapsed="0"] { border-top-width:0 !important; border-bottom-width:0 !important; }
  .np-coll-icon { position:relative; top:-2px; }
  /* the Delivery Hub is a card on the content column, its photograph flush to the edges */
  #porto[data-collapsed="1"] > div:first-child { background:transparent !important; box-shadow:none !important; }
  #porto img { height:100%; width:100%; object-fit:cover; display:block; }
  /* the rule that closes the About section, at the foot of Delivery Partners in either state */
  #partners { position:relative; }
  #partners[data-collapsed="0"]::after { content:""; position:absolute; left:50%; transform:translateX(-50%);
    bottom:0; width:100vw; height:1px; background:#9fb8cc; pointer-events:none; z-index:3; }
  /* the hub's label sits on the content column when the card flattens */
  #porto[data-collapsed="1"] > div:first-child > div:first-child { padding-left:0 !important; padding-right:0 !important; }
  #partners[data-collapsed="1"] > div:first-child { background:transparent !important; box-shadow:none !important; padding:0 !important; }
  /* partner and technology cards deepen their shadow on hover, the vendor name underlines */
  a:hover > .np-hoverbox, a:focus-visible > .np-hoverbox, .np-hoverbox:hover { box-shadow:var(--sh-2) !important; }
  .np-tech-link .np-tech-name { text-decoration:underline; text-decoration-color:transparent;
    text-underline-offset:3px; text-decoration-thickness:1.5px; transition:text-decoration-color 160ms ease, color 160ms ease; }
  .np-tech-link:hover, .np-tech-link:focus-visible { color:var(--red) !important; }
  .np-tech-link:hover .np-tech-name, .np-tech-link:focus-visible .np-tech-name { text-decoration-color:var(--red); }
  .np-tech-link:hover .np-hoverbox { box-shadow:var(--sh-2) !important; }
  /* the Tell Us band carries the gap as its own tinted padding, not as white space above it */
  #maturity { margin-top:0 !important; padding-top:clamp(34px,4.4vw,64px) !important; }
  #maturity[data-collapsed="1"] { padding-top:0 !important; padding-bottom:0 !important; }
  /* a tinted sub-section starts at the rule above it, with no white sliver */
  [data-coll][data-ground="tint"] { margin-top:0 !important; }
  [data-coll][data-ground="tint"][data-collapsed="0"] { padding-top:clamp(30px,4vw,56px) !important; }
  /* sub-sections meet edge to edge; their own padding carries the rhythm */
  [data-coll] { margin-top:0 !important; margin-bottom:0 !important; }
  #partners[data-collapsed="0"], #porto[data-collapsed="0"] { padding-top:clamp(30px,4vw,56px) !important;
    padding-bottom:clamp(30px,4vw,56px) !important; }
  #partners[data-collapsed="1"], #porto[data-collapsed="1"] { padding-top:0 !important; padding-bottom:0 !important; }
  .np-coll-head { transition:padding 420ms cubic-bezier(.22,.61,.36,1), margin 420ms cubic-bezier(.22,.61,.36,1); }
  @media (prefers-reduced-motion: reduce) { .np-coll-head { transition:none !important; } }
  [data-coll] { transition:padding 420ms cubic-bezier(.22,.61,.36,1), margin 420ms cubic-bezier(.22,.61,.36,1); }
  .np-coll-head { transition:padding 420ms cubic-bezier(.22,.61,.36,1), margin 420ms cubic-bezier(.22,.61,.36,1), font-size 380ms cubic-bezier(.22,.61,.36,1); }
  @media (prefers-reduced-motion: reduce) { [data-coll], .np-coll-head { transition:none !important; } }
  /* the parent's label rule already closes that edge: nested rows inside it draw no top rule */
  [data-coll][data-collapsed="1"] [data-coll][data-collapsed="1"]::before { display:none !important; }
  /* the content walk floats beside the page */
  .np-cguide { position:fixed; left:clamp(12px,2vw,26px); top:max(calc(50% - 210px), 106px); transform:none; z-index:165;
    width:min(262px,calc(100vw - 24px)); max-height:calc(100vh - 130px); overflow:auto;
    background:var(--paper); border-radius:var(--r-md);
    box-shadow:var(--sh-2); padding:15px 16px; }
  @media (max-width: 860px) {
    .np-cguide { top:auto; bottom:clamp(12px,3vw,24px); left:12px; right:12px; width:auto; transform:none;
      max-height:calc(100vh - 150px); }
    /* the docked box owns the bottom of a small screen; the circles step aside */
    body:has(.np-cguide) .np-fab { display:none !important; }
    html[data-consent-bar="1"] .np-cguide { bottom:calc(var(--np-consent-h, 0px) + 12px); }
  }
  .np-cguide { animation:np-cguide-open 300ms cubic-bezier(.22,.61,.36,1) both; transform-origin:0 100%; }
  @keyframes np-cguide-open {
    from { opacity:0; transform:translate(-10px, 64px) scale(0.42); }
    to   { opacity:1; transform:none; }
  }
  .np-cguide-closing { animation:np-cguide-shut 260ms cubic-bezier(.4,0,.7,.3) both; pointer-events:none; }
  @keyframes np-cguide-shut {
    from { opacity:1; transform:none; }
    to   { opacity:0; transform:translate(-10px, 64px) scale(0.42); }
  }
  .np-fab-walk { animation:np-fab-fold 280ms cubic-bezier(.22,.61,.36,1) both; }
  .np-fab-walk-closing { animation:np-fab-unfold 220ms cubic-bezier(.4,0,.7,.3) both; pointer-events:none; }
  @keyframes np-fab-unfold {
    from { opacity:1; transform:none; }
    to   { opacity:0; transform:scale(0.5); }
  }
  @keyframes np-fab-fold {
    from { opacity:0; transform:scale(0.5); }
    to   { opacity:1; transform:none; }
  }
  @media (prefers-reduced-motion: reduce) {
    .np-cguide, .np-fab-walk, .np-cguide-closing, .np-fab-walk-closing { animation:none !important; }
  }
  .np-cguide-row { display:flex; align-items:flex-start; gap:10px; padding:5px 6px; border-radius:var(--r-sm); }
  .np-cguide-row[data-here="1"] { background:var(--paper-2); }
  .np-cguide-label { flex:1 1 auto; background:transparent; border:0; box-shadow:none; padding:0;
    font-family:inherit; font-size:15.5px; line-height:1.35; color:var(--ink); text-align:left; cursor:pointer; }
  .np-cguide-row[data-here="1"] .np-cguide-label { font-weight:600; }
  .np-cguide-label:hover { color:var(--red); text-decoration:underline; text-underline-offset:3px; }
  .np-cguide-nav { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .np-cguide-nav .np-guide-btn:nth-child(2) { margin-left:auto; }
  .np-cguide-head { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:12px;
    border-bottom:1px solid var(--line-2); padding-bottom:10px; margin:0 0 16px; }
  .np-cguide-body { display:flex; align-items:flex-start; gap:clamp(12px,1.6vw,20px); }
  .np-cguide-body .np-flipside { flex:1 1 auto; min-width:0; }
  @media (max-width: 1099px) { .np-cguide-body { flex-wrap:wrap; } }
  .np-cguide-start { margin:0 !important; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto;
    border:0; color:#fff; font-family:inherit; white-space:nowrap;
    font-size:15.5px; font-weight:500; line-height:1.2; min-height:48px; padding:14px 22px; border-radius:var(--r-sm);
    cursor:pointer; margin:0; }
  .np-cguide-start:hover { background:var(--red-dark) !important; }
  /* guided input walk */
  .np-guide-card { position:fixed; left:50%; transform:translateX(-50%); bottom:clamp(16px,3vw,30px); z-index:160;
    background:#f6eaec; color:#5c1824; border-radius:var(--r-md); box-shadow:var(--sh-2); padding:14px 18px;
    width:min(560px,calc(100vw - 32px)); animation:np-guide-in 300ms cubic-bezier(.22,.61,.36,1) both; }
  @keyframes np-guide-in { from { opacity:0; transform:translate(-50%,18px) scale(0.96); }
    to { opacity:1; transform:translate(-50%,0) scale(1); } }
  .np-guide-fill { height:100%; border-radius:999px; background:#5c1824;
    transition:width 420ms cubic-bezier(.22,.61,.36,1); }
  .np-guide-bar { animation:np-guide-settle 320ms ease both; }
  @keyframes np-guide-settle { from { opacity:0; transform:translateY(-10px); } to { opacity:1; transform:none; } }
  .np-guide-btn { display:inline-flex; align-items:center; gap:8px; background:#ffffff; border:0;
    border-radius:var(--r-sm); padding:11px 16px; font-family:inherit; font-size:15px; font-weight:500;
    color:#5c1824; cursor:pointer; transition:background-color 160ms ease, color 160ms ease; }
  .np-guide-btn:hover { background:#e7d3d7; }
  .np-guide-home { margin-left:auto; background:#5c1824; color:#ffffff; }
  .np-guide-home:hover { background:#9e1b16; color:#fff; }
  .np-guide-x { margin-left:auto; width:30px; height:30px; border:0; border-radius:999px; background:transparent;
    color:#5c1824; font-size:15px; cursor:pointer; transition:background-color 160ms ease, color 160ms ease; }
  .np-guide-x:hover { background:#9e1b16; color:#fff; }
  @media (prefers-reduced-motion: reduce) { .np-guide-card, .np-guide-bar { animation:none; } }
  /* summary card titles link back to the section they came from */
  .np-cardlink { cursor:pointer; transition:opacity 160ms ease; }
  .np-cardlink:hover { opacity:0.72; }
  .np-cardlink:focus-visible { outline:2px solid var(--red); outline-offset:3px; }
  .np-guide-card .np-guide-fill { background:#5c1824; }
  .np-guide-card > div:first-child span { color:#5c1824 !important; }
  .np-guide-card div[style*="background:var(--paper-2)"] { background:#e7d3d7 !important; }
  #maturity .np-guide-bar .np-guide-fill { background:#5c1824; }
  #maturity .np-guide-bar div[style*="background:var(--paper-2)"] { background:#f6eaec !important; }
  #mypath [style*="border-radius"] { background-color:#ffffff !important; }
  /* London and Porto lead, Washington DC sits beneath them, the block centred on the bar */
  .np-cities { flex-wrap:wrap !important; max-width:270px; row-gap:2px; align-content:center; align-items:center; }

  /* the menu keeps its width so that gap is real, not absorbed by shrinking */
  #np-header:not([data-min="1"]) .np-navwrap { flex:0 0 auto; }
  .np-nav-icon-path { margin-right:2px; }
  .np-navwrap { gap:12px clamp(8px,1.2vw,20px) !important; }
  .np-hintlink { display:block; max-width:52ch; margin:0; padding:0; border:0; background:transparent;
    font-family:inherit; font-size:16px; line-height:1.5; font-weight:600; color:#9e1b16; text-align:left;
    cursor:pointer; text-decoration:underline; text-decoration-color:transparent; text-underline-offset:4px;
    text-decoration-thickness:1.5px; transition:text-decoration-color 160ms ease, color 160ms ease; }
  .np-hintlink:hover, .np-hintlink:focus-visible { color:#5c1824; text-decoration-color:#5c1824; }
  .np-headcta { align-self:center !important; margin-left:64px !important; }
  /* the hero's actions stack at the right of the column */
  .np-cta-row { flex-direction:column; align-items:stretch; width:min(320px,100%); margin-left:auto; }
  .np-cta-row a { text-align:center; }
  /* the doors turn over to show a reading order */
  .np-flip { display:inline-flex; align-items:center; justify-content:flex-end; gap:8px;
    margin:12px 12px -18px auto; padding:0; border:0; font-style:italic; color:var(--ink-3) !important;
    border-radius:var(--r-sm); background:rgba(255,255,255,0.66); font-family:inherit; font-size:15.5px;
    font-weight:500; color:var(--ink); cursor:pointer; transition:background-color 160ms ease; }
  .np-flip { background:transparent; }
  .np-flip:hover { background:transparent; }
  .np-flip:hover .np-flip-text, .np-flip:focus-visible .np-flip-text { text-decoration:underline; text-underline-offset:4px; }
  .np-flip-arrow { text-decoration:none !important; display:inline-block; }
  .np-flip, .np-flip:hover, .np-flip:focus-visible { text-decoration:none !important; }
  .np-flipside a { color:var(--ink); text-decoration:underline; text-decoration-color:transparent;
    text-underline-offset:3px; transition:text-decoration-color 160ms ease; }
  .np-flipside a:hover { text-decoration-color:currentColor; }
  .np-flipside { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:18px; }
  .np-flipside li { display:flex; align-items:flex-start; gap:11px; font-size:15.5px; line-height:1.4;
    font-weight:400; color:var(--ink-2); }
  .np-flipside li svg { color:var(--ink); }
  .np-flipside a { font-weight:400; }
  @keyframes np-flipin { from { opacity:0; transform:rotateX(-12deg) translateY(-6px); } to { opacity:1; transform:none; } }
  @media (prefers-reduced-motion: reduce) { .np-flipside { animation:none; } }
  /* the hero actions sit on the midpoint of the headline-to-subhead block */
  @media (min-width: 861px) {
    .np-hero-copy { display:grid; grid-template-columns:minmax(0,1fr) auto; column-gap:clamp(24px,3vw,48px);
      align-items:center; }
    .np-hero-copy > h1 { grid-column:1; grid-row:1; }
    .np-hero-copy > p { grid-column:1; grid-row:2; }
    .np-hero-copy > .np-cta-row { grid-column:2; grid-row:1 / span 2; align-self:start;
      margin:clamp(8px,1.2vw,20px) clamp(10px,1.6vw,26px) 0 0; }
  }

  .np-headcta { transition:opacity 220ms ease, transform 220ms ease; }
  @media (prefers-reduced-motion: reduce) { .np-headcta { transition:none; } }
  /* one treatment for a recommended accelerator, wherever it appears */
  /* an accelerator always reads as the same chip, wherever it is named */
  .np-accel-line { display:flex; flex-wrap:wrap; align-items:center; gap:9px; line-height:1.2;
    font-size:15.5px; line-height:1.45; color:var(--ink-2); }
  .np-accel-chip { display:inline-flex; align-items:center; gap:8px; background:var(--ink); color:#ffffff !important;
    border-radius:6px; padding:8px 12px; font-size:15.5px; font-weight:500; line-height:1.2;
    transition:background-color 160ms ease, color 160ms ease, box-shadow 160ms ease; }
  .np-accel-chip svg { display:block; color:#ffffff; }
  .np-accel-chip:hover, .np-accel-chip:focus-visible { background:var(--blush); color:var(--ink) !important;
    box-shadow:var(--sh-h); }
  .np-accel-chip:hover svg, .np-accel-chip:focus-visible svg { color:var(--ink); }
  .np-accel-card { padding:16px 18px 28px; background:#f6eaec; border-left:3px solid #5c1824;
    border-radius:0 var(--r-sm) var(--r-sm) 0; }
  .np-accel-card > div { gap:24px !important; }
  .np-accel-card > p:first-child { margin-bottom:20px !important; }
  /* the doors turn over on a centre vertical axis */
  .np-doors { perspective:1600px; }
  .np-flipcard { position:relative; display:grid; transform-style:preserve-3d;
    transition:transform 560ms cubic-bezier(.22,.61,.36,1); transform:rotateY(0deg); }
  .np-flipcard.is-flipped { transform:rotateY(180deg) !important; }
  .np-face { grid-area:1 / 1; display:flex; flex-direction:column; position:relative;
    backface-visibility:hidden; -webkit-backface-visibility:hidden; overflow:hidden; }
  .np-face-back { transform:rotateY(180deg); }
  /* the corner lifts to say there is another side */
  .np-peel { position:absolute; right:0; bottom:0; width:62px; height:62px; border:0; padding:0;
    background:transparent; cursor:pointer; }
  .np-peel::after { content:""; position:absolute; right:-1px; bottom:-1px; width:44px; height:44px;
    background:rgba(0,0,0,0.5);
    border-bottom-right-radius:var(--r-md); border-top-left-radius:16px;
    clip-path:polygon(100% 0, 100% 100%, 0 100%);
    box-shadow:inset 10px 10px 16px rgba(0,0,0,0.55), -3px -3px 10px rgba(0,24,64,0.24);
    transition:width 220ms cubic-bezier(.22,.61,.36,1), height 220ms cubic-bezier(.22,.61,.36,1); }
  .np-peel:hover::after, .np-peel:focus-visible::after { width:58px; height:58px; }
  .np-peel:focus-visible { outline:2px solid var(--red); outline-offset:-4px; }
  @media (prefers-reduced-motion: reduce) {
    .np-flipcard { transition:none; }
    .np-peel::after { transition:none; }
  }
  .np-nav-menu { left:-16px; }
  .np-nav-menu a { padding-left:16px; }
  /* a banded section always spans the viewport, whatever the column cap says */
  section[data-reveal].np-band, section.np-band { max-width:none !important; }
  /* both doors carry their Consider line on the same baseline */
  .np-doors .np-accel-line { min-height:calc(2 * 1.45em); align-items:center; }
  /* the header keeps its rhythm as the call to action comes and goes */

  .np-doors .np-accel-line { min-height:0 !important; }
  #np-header { position:sticky !important; top:0 !important; z-index:60 !important; }
  /* service detail lines carry no fill of their own */
  .np-svc-item:not(:hover):not(:focus-visible) { background:transparent !important; }
  /* the group's accelerator line runs across both columns without wrapping */
  .np-accel-wide { flex-wrap:nowrap; width:auto; }
  .np-accel-wide .np-accel-chip { white-space:nowrap; }
  @media (max-width: 700px) { .np-accel-wide { flex-wrap:wrap; } .np-accel-wide .np-accel-chip { white-space:normal; } }
  #np-header { position:sticky !important; top:0 !important; z-index:60 !important; transform:none !important; }
  #np-header .np-headcta { opacity:1 !important; transform:none !important; }
  /* every industry title occupies two lines so the cards read evenly */
  .np-ichip-title { font-weight:600; }
  .np-ichip-title > span { display:block; line-height:1.35; }
  /* the back of a door reads a size up */
  .np-back-title { font-size:19px !important; }
  .np-flipside li, .np-flipside a { font-size:16.5px; }
  /* the corner and its label share one hover, and nothing else on the card does */
  .np-face:has(.np-peel:hover) .np-flip-text, .np-face:has(.np-flip:hover) .np-flip-text {
    text-decoration:underline; text-underline-offset:4px; }
  .np-face:has(.np-flip:hover) .np-peel::after, .np-face:has(.np-peel:hover) .np-peel::after {
    width:58px; height:58px; }
  /* the header is never allowed to disappear, whatever a section does around it */
  /* fixed, not sticky: no ancestor can scroll it away or clip it */
  #np-header { position:fixed !important; top:0 !important; left:0 !important; right:0 !important;
    z-index:999 !important; transform:none !important;
    visibility:visible !important; opacity:1 !important; display:block !important; }
  #np-header > div { visibility:visible !important; opacity:1 !important; }
  #np-header .np-headcta, #np-header .np-logo, #np-header .np-cities, #np-header .np-burger {
    visibility:visible !important; opacity:1 !important; }
  [data-coll]::before, [data-coll]::after { z-index:3; }
  [data-coll][data-collapsed="1"] + [data-coll][data-collapsed="1"]::before { display:none !important; }
  #np-header { background:#d7e9f8 !important; }
  /* the ranking rows sit left, their instruction to the right of them */
  .np-rank-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:clamp(18px,2.4vw,34px); align-items:start; }
  @media (min-width: 1100px) { .np-rank-layout { grid-template-columns:minmax(0,0.9fr) minmax(300px,0.42fr); } }
  .np-rank-list { width:100%; grid-template-columns:1fr !important; }
  .np-rank-layout .np-rank-list { order:1; }
  .np-rank-layout .np-rank-note { order:2; max-width:44ch; }
  .np-rank { max-width:none; }
  .np-rank-list li > div.np-rank { width:100%; }
  @media (max-width: 1099px) { .np-rank-layout .np-rank-note { order:0; max-width:none; } }
  /* the corner is a plain caret: the card's bottom right angle, drawn in ink */
  .np-peel[data-arrow="1"] { background-image:none; }
  .np-peel[data-arrow="1"]::before { content:""; position:absolute; right:9px; bottom:9px; width:10px; height:10px;
    background:none; border:2px solid #ffffff; border-top:0; border-left:0; border-radius:0;
    transition:width 220ms cubic-bezier(.22,.61,.36,1), height 220ms cubic-bezier(.22,.61,.36,1);
    opacity:0.9; z-index:2; pointer-events:none; }
  .np-peel[data-arrow="1"]:hover::before, .np-peel[data-arrow="1"]:focus-visible::before,
  .np-face:has(.np-flip:hover) .np-peel[data-arrow="1"]::before { width:13px; height:13px; opacity:1; }
  /* every button carries the same soft lift */
  button:not(.np-coll-chev):not(.np-peel):not(.np-flip):not(.np-guide-x):not(.np-lvl):not(.np-svc-chip):not(.np-fab),
  .np-headcta, .np-cta-row > a { box-shadow:var(--sh-1); }
  /* one size for the site's primary actions */
  .np-headcta, .np-cta-row > a, #talk a[href="#talk"], a[href="#talk"].np-headcta {
    min-height:48px; display:inline-flex; align-items:center; justify-content:center;
    padding:14px 25px !important; }
  /* the My Path dropdown starts where its wording does */
  .np-flip, .np-flip-text { font-weight:400 !important; }
  .np-face .np-flip { margin-right:16px !important; }
  /* every dropdown item's wording starts where its menu item's wording does */
  .np-nav-menu { left:10px !important; }
  .np-nav-menu a { padding-left:16px !important; }
  .np-nav-sub { left:26px !important; }
  @media (max-width: 1023px), (hover: none), (pointer: coarse) {
    .np-nav-menu { left:auto !important; }
    .np-nav-menu a { padding-left:0 !important; }
  }
  .np-accel-mark { background:transparent !important; }
  .np-accel-mark[aria-pressed="true"] { background:var(--red) !important; }
  .np-indbox { box-shadow:none !important; background:transparent !important; }
  .np-indbox:hover { background:transparent !important; }
  .np-cta-row { gap:14px !important; }
  /* the hero's three actions share one footprint */
  .np-cta-row > a { padding:14px 14px !important; width:224px !important; height:48px; white-space:nowrap;
    display:inline-flex; align-items:center; justify-content:center; text-align:center;
    box-shadow:0 14px 30px rgba(0,24,64,0.34), 0 4px 10px rgba(0,24,64,0.24) !important; }
  .np-cta-row > a:hover { box-shadow:0 20px 44px rgba(0,24,64,0.42), 0 6px 14px rgba(0,24,64,0.28) !important; }
  .np-cta-row { align-items:flex-start !important; }
  @media (max-width: 460px) { .np-cta-row > a { width:100% !important; } }
  .np-accel-mark:hover, .np-accel-mark:focus-visible { background:var(--blush) !important;
    border-color:var(--red) !important; color:var(--red) !important; }
  .np-accel-note:hover .np-accel-note-text { text-decoration:underline; text-underline-offset:4px; }
  .np-accel-note:hover .np-accel-mark { background:var(--blush) !important; border-color:var(--red) !important;
    color:var(--red) !important; }
  .np-accel-note .np-accel-mark[aria-pressed="true"] { background:var(--red) !important; color:#fff !important; }
  /* both labels stay readable at every width; they wrap rather than disappear */
  .np-accel-note-text, .np-accel-open-text { white-space:normal; }
  .np-accel-openmark { background:transparent !important; }
  /* an open card breathes between the duration and the detail */
  #starters [data-accel-open="1"] .np-accel-dur { margin-bottom:clamp(26px,3vw,36px) !important; }
  /* a closed card keeps no spare room under the duration */
  #starters [data-accel-open="0"] { padding-bottom:clamp(12px,1.4vw,16px) !important; }
  .np-accel-openmark svg { transition:transform 320ms cubic-bezier(.22,.61,.36,1); }
  [data-accel-open="1"] .np-accel-openmark svg { transform:rotate(180deg); }
  .np-accel-open:hover .np-accel-open-text { text-decoration:underline; text-underline-offset:4px; }
  .np-accel-open:hover .np-accel-openmark { background:var(--blush) !important; border-color:var(--red) !important;
    color:var(--red) !important; }
  /* the folded detail keeps its own animation; the page's collapsible sections are untouched */
  .np-accel-body { will-change:max-height; }
  /* a closed card shows four lines of its blurb, so every closed card is exactly as tall as the next */
  [data-accel-open="0"] .np-accel-blurb { display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical;
    overflow:hidden; }
  [data-accel-open="0"] .np-accel-name { max-height:calc(2 * 1.2em); overflow:hidden; }
  [data-accel-open="0"] .np-accel-stage { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  @media (prefers-reduced-motion: reduce) { .np-accel-body { transition:none !important; } }
  @media (max-width: 1180px) { #np-header:not([data-min="1"]) .np-headcta { width:224px; padding:14px 14px !important; } }
  #np-header[data-min="1"] .np-headcta { width:100% !important; height:48px; padding:14px 14px !important; }
  /* the industry panel keeps its height as the choice changes */
  .np-ind-detail { min-height:clamp(360px,42vw,520px); }
  /* one definition for the site's primary action button */
  .np-btn[data-btn="primary"] {
    box-shadow:var(--sh-h);
    display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
    width:224px; height:48px; padding:14px; border:0; border-radius:var(--r-sm);
    background:var(--red); color:#ffffff; font-family:inherit; font-size:15.5px; font-weight:500;
    line-height:1; white-space:nowrap; text-align:center; cursor:pointer;
    transition:background-color 160ms ease, box-shadow 200ms ease; }
  .np-btn[data-btn="primary"]:hover { background:var(--red-dark); color:#ffffff; box-shadow:var(--sh-2); }
  /* the hero's actions keep the deeper shadow */
  .np-cta-row .np-btn[data-btn="primary"] {
    box-shadow:0 14px 30px rgba(0,24,64,0.34), 0 4px 10px rgba(0,24,64,0.24) !important; }
  /* the hero actions all hover to the header button's blue */
  .np-cta-row .np-btn[data-btn="primary"]:hover { background:var(--red) !important; color:#ffffff; }
  .np-cta-row .np-btn[data-btn="primary"]:hover {
    box-shadow:0 20px 44px rgba(0,24,64,0.42), 0 6px 14px rgba(0,24,64,0.28) !important; }
  /* the three hero actions read as one set: identical height whatever their label */
  .np-cta-row .np-btn[data-btn="primary"] { height:52px; padding-top:0 !important; padding-bottom:0 !important; }
  /* the header bar keeps every item on one line */

  .np-navwrap { flex-wrap:wrap; }
  #np-header[data-min="1"] .np-btn[data-btn="primary"].np-headcta { width:100%; }
  #np-header[data-min="1"] > div { flex-wrap:wrap !important; }
  /* the header row wraps only when the script says the gap has closed */
  #np-header > div { flex-wrap:nowrap; }
  /* the sub-caption and the dropdown both start where the menu wording starts */
  .np-nav-sub { left:24px !important; }
  .np-nav-menu { left:8px !important; }
  .np-nav-menu a { padding-left:16px !important; }
  .np-nav-group:has(.np-nav-icon-path) .np-nav-sub { left:21px !important; }
  .np-nav-group:has(.np-nav-icon-path) .np-nav-menu { left:5px !important; }
  @media (max-width: 1023px), (hover: none), (pointer: coarse) {
    .np-nav-menu { left:auto !important; }
    .np-nav-menu a { padding-left:0 !important; }
  }
  /* an industry card keeps readable ink on its hover tint */
  .np-ichip:hover, .np-ichip:focus-visible { color:var(--ink) !important; }
  .np-ichip:hover *, .np-ichip:focus-visible * { color:var(--ink) !important; }
  .np-ichip:hover .np-bub, .np-ichip:focus-visible .np-bub { color:#ffffff !important; }
  .np-ichip:hover .np-bub *, .np-ichip:focus-visible .np-bub * { color:#ffffff !important; }
  /* the panel and its photograph hold their place as the choice changes */
  .np-ind-panel { min-height:var(--np-ind-h, auto); }
  /* the industry title's own two-line box no longer pads the card */

  /* a label's rule belongs to a closed row only */
  [data-coll][data-collapsed="0"] > .np-coll-head::after,
  [data-coll][data-collapsed="0"] .np-coll-head::after { display:none !important; content:none !important; }
  /* a chip always contrasts with the ground it sits on */
  #porto .np-chip:not(:hover):not(:focus-visible), #porto .np-artchip:not(:hover):not(:focus-visible) { background:var(--paper-2) !important; }
  #porto .np-chip:hover, #porto .np-artchip:hover, #porto .np-chip:focus-visible { background:var(--blush) !important; }
  [data-ground="tint"] > div[style*="background:var(--paper)"] .np-chip:not(.np-ichip):not(.np-svc-chip):not(.np-svc-item):not(:hover):not(:focus-visible),
  [data-ground="tint"] > div[style*="background:var(--paper)"] .np-artchip:not(:hover):not(:focus-visible) { background:var(--paper-2) !important; }
  [data-ground="paper"] .np-chip:not(.np-ichip):not(.np-svc-chip):not(.np-svc-item):not(:hover):not(:focus-visible),
  [data-ground="paper"] .np-artchip:not(:hover):not(:focus-visible) { background:var(--paper-2) !important; }
  /* the About section ends on Delivery Partners' own rule, with no tinted tail */
  section#about[data-collapsed="0"] { padding-bottom:0 !important; }
  /* the chosen industry card keeps its inline accent fill */
  .np-ichip[data-on="1"]:not(:hover) { background:var(--red) !important; color:#ffffff !important; }
  .np-ichip[data-on="1"] span { color:inherit !important; }
  /* service detail lines are text, never chips */
  .np-svc-item:not(:hover):not(:focus-visible),
  [data-ground] .np-svc-item:not(:hover):not(:focus-visible),
  [data-ground="paper"] .np-chip.np-svc-item:not(:hover):not(:focus-visible),
  [data-ground="tint"] > div[style*="background:var(--paper)"] .np-chip.np-svc-item:not(:hover):not(:focus-visible) {
    background:transparent !important; box-shadow:none !important; }
  /* the consent bar: docked, never an overlay, never blocking */
  .np-consent { position:fixed; left:0; right:0; bottom:0; z-index:170;
    display:flex; flex-wrap:wrap; align-items:center; gap:14px clamp(18px,2.4vw,34px);
    background:var(--paper-2); border-top:1px solid var(--line-2);
    box-shadow:0 -6px 20px rgba(0,24,64,0.12);
    padding:16px clamp(20px,4vw,48px) 16px; padding-right:clamp(96px,12vw,160px);
    animation:np-consent-in 240ms cubic-bezier(.22,.61,.36,1) both; }
  .np-consent-yes, .np-consent-no, .np-consent-link { font-family:inherit; font-size:15.5px; cursor:pointer;
    border-radius:var(--r-sm); min-height:44px; padding:11px 18px; transition:background-color 160ms ease, color 160ms ease; }
  .np-consent-yes { background:var(--red); color:#ffffff; border:0; box-shadow:var(--sh-h); }
  .np-consent-yes:hover { background:var(--red-dark); }
  .np-consent-no { background:var(--paper); color:var(--ink); border:1px solid var(--line-2); }
  .np-consent-no:hover { background:var(--blush); }
  .np-consent-link { background:transparent; border:0; color:var(--red); padding:11px 4px; font-style:italic; }
  .np-consent-link:hover { color:var(--red-dark); }
  @keyframes np-consent-in { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }
  @media (prefers-reduced-motion: reduce) { .np-consent { animation:none; } }
  @media (max-width: 700px) { .np-consent { padding-right:clamp(20px,4vw,48px); padding-bottom:84px; } }
  /* 1 · both doors' Consider blocks start on the same line */
  .np-doors .np-door-accel { min-height:calc(3 * 38px + 2 * 10px); justify-content:flex-start; }
  /* 2 · the chosen industry card does not react to hover, even under the pointer */
  .np-ichip[data-on="1"], .np-ichip[data-on="1"]:hover, .np-ichip[data-on="1"]:focus-visible {
    background:var(--red) !important; color:#ffffff !important; box-shadow:var(--sh-h) !important; }
  .np-ichip[data-on="1"] *, .np-ichip[data-on="1"]:hover * { color:#ffffff !important; }
  .np-ichip[data-on="1"] svg [stroke] { stroke:#ffffff !important; }
  /* 3 · the industry name reads a size up */
  .np-ichip-title { font-size:17px; }

  /* 5 · the hero actions sit further left */
  @media (min-width: 861px) {
    .np-hero-copy > .np-cta-row { margin-right:0 !important; transform:translateX(26px); }
  }
  /* 8 · the accelerator you were sent to is marked while it is on screen */
  .np-guide-start { display:inline-flex; align-items:center; justify-content:center; min-height:48px;
    margin:0; padding:14px 22px; border:0; border-radius:var(--r-sm);
    background:#8a2a39; color:#ffffff; font-family:inherit; font-size:15.5px; font-weight:500;
    cursor:pointer; box-shadow:var(--sh-h); transition:background-color 160ms ease; }
  .np-guide-start:hover { background:#5c1824; }
  /* a service detail line takes the pale blue on hover, nothing at rest */
  .np-svc-item { border-radius:6px; padding:2px 8px; margin:-2px -8px; text-decoration:none !important; }
  .np-svc-item:hover, .np-svc-item:focus-visible { background:var(--blush) !important; }
  /* used only by npChipAudit to prove a hover colour still wins: an id keeps it above
     the ground-contrast rules, exactly as the real :hover rules are */
  #dc-root .np-hover-probe { background:var(--blush) !important; }
  /* the accelerator card a navigation landed on */
  .np-acc-target {
    background: #C7DFF2;
    border-radius: var(--r-sm);
  }
  .np-acc-blink {
    animation: np-acc-blink 1050ms cubic-bezier(.37,0,.63,1) 1 both;
  }
  @keyframes np-acc-blink {
     0%  { background: #ffffff; }
    15%  { background: #C7DFF2; }
    32%  { background: #ffffff; }
    49%  { background: #C7DFF2; }
    66%  { background: #ffffff; }
    83%  { background: #C7DFF2; }
   100%  { background: #C7DFF2; }
  }
  @media (prefers-reduced-motion: reduce) {
    .np-acc-blink { animation: none; }
  }
  /* the card keeps its own radius and the chips inside keep their own ground */
  #starters .np-acc-target, #starters [data-acc="target"] { border-radius:var(--r-md); background:#C7DFF2; }
  /* while the consent bar is up, everything else docked to the bottom sits above it */
  html[data-consent-bar="1"] .np-guide-card { bottom:calc(var(--np-consent-h, 0px) + clamp(16px,3vw,30px)); }
  html[data-consent-bar="1"] .np-fab { --np-fab-base:calc(var(--np-consent-h, 0px) + clamp(16px,3vw,32px)); }
  /* an industry card's name carries full ink */
  .np-ichip-title > span { color:var(--ink); }
  .np-ichip[data-on="1"] .np-ichip-title > span { color:#ffffff; }
  /* the hero's two actions sit low and right, on one staggered line */
  @media (min-width: 861px) {
    .np-hero-copy > .np-cta-row { flex-direction:row !important; align-items:flex-end !important;
      width:auto !important; margin:0 0 0 auto !important; transform:none;
      justify-content:flex-end; gap:18px !important; align-self:end !important; }
    .np-hero-copy > .np-cta-row { margin-bottom:-18px !important; }
  }
  /* the tagline sets its verbs against a marker, each on its own row */
  .np-h1 { white-space:normal !important; }
  @media (max-width: 700px) {
    .np-h1 { display:block !important; }
    .np-h1 > span { display:inline; text-align:left !important; }
  }
  /* the hero copy rides a little higher; the actions keep their place */
  @media (min-width: 861px) {
    .np-hero-copy > h1, .np-hero-copy > p { transform:translateY(-52px); }
  }
  /* the tagline rows hold one line each until the viewport forces a wrap */
  @media (min-width: 861px) {
    .np-h1 { width:max-content; max-width:100%; }
    .np-h1 > span { white-space:nowrap; }
    .np-hero-copy > .np-cta-row { transform:translateX(96px); }
  }
  .np-city-label { font-size:16px !important; }
  /* the tagline and subhead may run past their grid track, as the tagline already does */
  @media (min-width: 861px) {
    .np-hero-copy > h1, .np-hero-copy > p { grid-column:1 / -1; }
    .np-hero-copy > .np-cta-row { position:relative; z-index:1; }
  }
  /* the tagline's gutter carries a rule instead of a marker */
  @media (min-width: 861px) {
    .np-h1 .np-tag-verb { text-align:right; white-space:nowrap; }
    .np-h1 .np-tag-rest { text-align:left; white-space:nowrap; }
    .np-h1 .np-tag-mark { font-weight:400; }
  }
  @media (max-width: 860px) {
    .np-h1 { display:block !important; }
    .np-h1 .np-tag-verb::after { content:" "; }
    .np-h1 .np-tag-rest::after { content:""; display:block; }
  }
  /* the copy block centres in the hero; the actions stack at its right edge */
  @media (min-width: 861px) {
    .np-hero-copy { align-items:center; }
    .np-hero-copy > h1, .np-hero-copy > p { margin-left:34px; transform:none !important; }
    .np-hero-copy > .np-cta-row { flex-direction:column !important; align-items:stretch !important;
      width:224px !important; margin:0 0 0 auto !important; transform:translateX(64px) !important;
      align-self:center !important; justify-self:end; gap:33.4px !important; }
    .np-hero-copy > .np-cta-row { align-self:start !important; margin-top:14.6px !important; }
    .np-hero-copy > .np-cta-row > a { width:235px !important; }
    /* the three actions step up the stack: each one sits a little higher than the last */
    .np-hero-copy > .np-cta-row > a:nth-child(1) { transform:translateY(-10px) !important; }
    .np-hero-copy > .np-cta-row > a:nth-child(2) { transform:translateY(-20px) !important; }
    .np-hero-copy > .np-cta-row > a:nth-child(3) { transform:translateY(-30px) !important; }
  }
  /* a second-level service sits on a tint, never on the section's own white */
  .np-svc-item { background:var(--paper-2) !important; border-radius:var(--r-sm);
    padding:7px 11px; align-self:flex-start; }
  .np-svc-item:hover, .np-svc-item:focus-visible { background:var(--blush) !important; }
  /* the second of two touching closed rows drops its own top rule */
  [data-coll].np-no-toprule::before { display:none !important; }
  /* the hero actions are held back from the first paint until the tagline has typed */
  .np-hero-copy > .np-cta-row > a { opacity:0; }
  /* the header action is a touch narrower; its right edge stays put */
  .np-btn[data-btn="primary"].np-headcta { width:202px; }
  /* the hero actions sit right without ever running past the viewport */
  @media (min-width: 861px) {
    .np-hero-copy > .np-cta-row { transform:translateX(min(96px, 3vw)) !important; }
  }
  /* the menu block sits further from the header action */
  #np-header:not([data-min="1"]) .np-navwrap { transform:translateX(-46px); }
  /* the panel menu is a stacked list: every item flush left, its section above its pages */
  #np-header[data-min="1"] {
    .np-navwrap { align-items:stretch !important; text-align:left; }
    .np-nav-group { display:block !important; width:100%; }
    .np-nav-group > a { display:flex !important; align-items:center; gap:9px; width:100%;
      transform:none !important; padding:14px 2px !important; white-space:normal; }
    .np-nav-menu { display:block !important; padding:0 0 12px 30px !important; }
    .np-nav-menu a { display:block; text-align:left; white-space:normal !important; padding:11px 0 !important; }
    .np-navwrap > .np-nav-group + .np-nav-group { border-top:1px solid var(--line-2); }
    .np-navwrap .np-headcta { align-self:stretch !important; width:100% !important;
      margin:14px 0 4px !important; }
  }
  /* nothing on the page may open a sideways scroll */
  html, body { max-width:100%; overflow-x:clip; }
  /* on the narrow layout the tagline lays itself out: no pinned boxes survive */
  @media (max-width: 860px) {
    .np-h1 { height:auto !important; grid-template-columns:none !important;
      grid-template-rows:none !important; max-width:100%; }
    .np-h1 > span { display:inline !important; width:auto !important; height:auto !important;
      padding-left:0 !important; text-align:left !important; white-space:normal !important; }
    .np-hero-copy > p { margin-left:0 !important; width:auto !important; max-width:100% !important; }
    .np-cta-row { width:100% !important; margin-left:0 !important; }
    .np-cta-row > a { width:100% !important; }
  }
  /* the cities leave the bar once it is too tight for them and sit under the About Us heading */
  /* the cities always sit under the About Us copy, at the foot of the column */
  .np-cities-about { display:flex !important; margin-top:auto; }

  /* the narrow tagline breathes between its three rows */
  @media (max-width: 860px) {
    .np-h1 .np-tag-rest::after { height:0.34em; }
    .np-cta-row { margin-top:clamp(20px,3.4vw,30px) !important; }
  }
  /* the panel can never be wider than the screen it opens on */
  #np-header[data-min="1"], #np-header[data-min="1"] > div { max-width:100vw !important; overflow-x:clip; }
  #np-header[data-min="1"] .np-navwrap { width:100% !important; max-width:100% !important; box-sizing:border-box;
    transform:none !important; margin-left:0 !important; margin-right:0 !important; }
  #np-header[data-min="1"] .np-navwrap > * { max-width:100%; box-sizing:border-box; }
  /* a bubble with no room above it opens downwards instead */
  .np-bub-below { bottom:auto !important; top:calc(100% + 13px);
    border-bottom-left-radius:14px; border-top-left-radius:4px; transform-origin:0 0; }
  .np-bub-below::after { top:auto; bottom:100%; transform:translateY(6px) rotate(45deg); }

  /* on a narrow screen the row uses the full width: copy first, the move arrows on their own line */
  @media (max-width: 760px) {
    .np-rank-list li { gap:12px !important; }
    .np-rank { flex-wrap:wrap !important; padding:13px 14px !important; }
    .np-rank-text { margin-right:0 !important; max-width:none !important; }
    .np-rank-btns { width:100%; justify-content:flex-end; margin-top:4px; }
  }

  /* the industry box says where the choice went, then gets out of the way */
  .np-indbox { position:relative; }
  .np-ind-note { position:absolute; left:calc(100% + 10px); top:50%; z-index:5;
    padding:7px 11px; border-radius:var(--r-sm); background:var(--ink); color:#fff;
    font-size:14.5px; font-weight:500; letter-spacing:-0.01em; white-space:nowrap;
    box-shadow:var(--sh-2); opacity:0; transform:translate(-4px,-50%); pointer-events:none;
    transition:opacity 180ms ease, transform 180ms ease; }
  .np-indbox[data-note="1"] .np-ind-note { opacity:1; transform:translate(0,-50%); }
  @media (prefers-reduced-motion: reduce) { .np-ind-note { transition:none; } }

  /* the Tell Us About You cards and rows lift on hover exactly like the partner cards */
  #maturity .np-fam-row > button, #maturity .np-rank,
  #maturity button:not(.np-rank-btn):not(.np-guide-start) {
    transition:box-shadow 160ms ease, border-color 160ms ease, background-color 140ms ease,
      opacity 140ms ease !important; }
  #maturity .np-fam-row > button:hover, #maturity .np-fam-row > button:focus-visible,
  #maturity .np-rank:hover,
  #maturity button:not(.np-rank-btn):not(.np-guide-start):hover,
  #maturity button:not(.np-rank-btn):not(.np-guide-start):focus-visible {
    box-shadow:var(--sh-2) !important; border-color:var(--line-2); }

  /* the Shape Your Path rows are white on the card, never tinted */
  #maturity .np-guide-step { background:var(--paper) !important; }

  /* 1 — at phone widths the four rating levels sit two by two, each a real touch target */
  @media (max-width: 460px) {
    .np-rate div:has(> .np-lvl) { grid-template-columns:repeat(2,minmax(0,1fr)) !important;
      column-gap:12px; row-gap:2px; }
    .np-lvl { display:flex; align-items:center; min-height:44px; white-space:normal;
      overflow-wrap:anywhere; }
    .np-lvl:nth-child(odd) { justify-content:flex-start; text-align:left !important; }
    .np-lvl:nth-child(even) { justify-content:flex-end; text-align:right !important; }
    .np-rate .np-rate-note { height:auto !important; min-height:74px; }
  }
  /* 2 — on a phone the invitation stands down: it lives in the footer instead, and the
     content path keeps only its circle so nothing covers the copy beside it */
  @media (max-width: 640px) {
    .np-fab:not(.np-fab-walk) { display:none !important; }
    .np-fab { --np-fab-base:calc(env(safe-area-inset-bottom, 0px) + clamp(16px,3vw,32px)); }
    .np-fab-walk .np-fab-cap { display:none; }
    .np-fab-tip { display:none !important; }
  }
  /* 3 — a field whose value is missing reads as an error, keyboard focus included */
  .np-field input[aria-invalid="true"], .np-field textarea[aria-invalid="true"] {
    border-color:#c1121f !important; box-shadow:0 0 0 1px #c1121f; }
  .np-field input:focus-visible, .np-field textarea:focus-visible {
    outline:2px solid #d7e9f8; outline-offset:2px; }

  /* the invitation stands down when it would sit over the content column */
  body[data-fab-room="0"] .np-fab:not(.np-fab-walk) { display:none !important; }

/* A definition bubble is placed against the viewport, not inside the chip: fixed, so no ancestor
   can clip it and nothing later in the page can paint over it. Below the dialogs (1200) and above
   everything else. left/top come from fitBubble. */
  .np-bub.np-bub-float {
    position:fixed; z-index:1190; bottom:auto !important; margin:0;
  }
  .np-bub.np-bub-float.np-bub-below { top:auto; }

  /* the fourth hero action: the MCP server, with a bubble explaining it */
  .np-cta-row > a.np-hero-mcp { overflow:visible; z-index:3; }
  .np-hero-mcp .np-tip { position:absolute; left:50%; top:calc(100% + 12px); transform:translateX(-50%) translateY(-4px);
    width:280px; padding:12px 14px; border-radius:var(--r-sm); background:var(--ink); color:#fff;
    font-size:14.5px; font-weight:400; line-height:1.45; letter-spacing:0; white-space:normal; text-align:left;
    box-shadow:var(--sh-2); opacity:0; visibility:hidden; pointer-events:none;
    transition:opacity 160ms ease, transform 160ms ease, visibility 0s linear 160ms; }
  .np-hero-mcp .np-tip::before { content:""; position:absolute; left:50%; top:-6px; width:12px; height:12px;
    background:var(--ink); transform:translateX(-50%) rotate(45deg); }
  .np-hero-mcp:hover .np-tip, .np-hero-mcp:focus-visible .np-tip { opacity:1; visibility:visible;
    transform:translateX(-50%) translateY(0); transition:opacity 160ms ease, transform 160ms ease; }
  .np-cta-row > a.np-hero-mcp:not([style*="absolute"]) { position:relative; }
  @media (max-width: 460px) { .np-hero-mcp .np-tip { width:min(280px, 86vw); } }

  /* Icons on the site's four main actions, wherever the same action appears (hero, header, section
     buttons). Matched by where the button goes, so a new button with the same target gets the same
     icon. Drawn as a mask in the button's text colour, so they are white on the solid buttons. */
  a.np-btn[href$="#starters"], a.np-btn[href$="#industries"], a.np-btn[href$="#talk"],
  a.np-btn[href^="https://mcp.napotek.com"] {
    display:inline-flex !important; align-items:center; justify-content:flex-start !important;
    gap:8px; text-align:left !important; padding-left:12px !important; padding-right:12px !important; }
  /* the header action makes room for its icon: same width as the hero actions */
  .np-btn[data-btn="primary"].np-headcta { width:224px; }
  a.np-btn[href$="#starters"]::before, a.np-btn[href$="#industries"]::before, a.np-btn[href$="#talk"]::before,
  a.np-btn[href^="https://mcp.napotek.com"]::before {
    content:""; flex:0 0 auto; width:16px; height:16px; background:currentColor;
    -webkit-mask:var(--np-btn-icon) center / contain no-repeat; mask:var(--np-btn-icon) center / contain no-repeat; }
  a.np-btn[href$="#starters"] { --np-btn-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'1.9'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D%22M12%203.2l2.6%205.4%205.9.8-4.3%204.1%201.1%205.9L12%2016.6%206.7%2019.4l1.1-5.9L3.5%209.4l5.9-.8z%22%2F%3E%3C%2Fsvg%3E"); }
  a.np-btn[href$="#industries"] { --np-btn-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'1.9'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D%22M3%2020.6h18%22%2F%3E%3Cpath%20d%3D%22M4.6%2020.6V9.4l5.2%203V9.4l5.2%203V4.4h4.4v16.2%22%2F%3E%3C%2Fsvg%3E"); }
  a.np-btn[href$="#talk"] { --np-btn-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'1.9'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D%22M20.4%2011.6c0%204.2-3.8%207.4-8.4%207.4-1.2%200-2.3-.2-3.3-.6L3.6%2020l1.4-3.8C4%2014.9%203.6%2013.3%203.6%2011.6%203.6%207.4%207.4%204.2%2012%204.2s8.4%203.2%208.4%207.4z%22%2F%3E%3Cpath%20d%3D%22M8.4%2011.8h.01M12%2011.8h.01M15.6%2011.8h.01%22%2F%3E%3C%2Fsvg%3E"); }
  a.np-btn[href^="https://mcp.napotek.com"] { --np-btn-icon:url("assets/icons/mcp-server-white.png"); }

  /* The hero actions: each colour runs on a 30-degree diagonal, 10% lighter at the top left and 10%
     darker at the bottom right (the colour is set per button as --np-hero-c). As each one arrives, a
     single band of light crosses it once (np-pop, added by the tagline script). Hover stays flat. */
  .np-cta-row > a.np-btn[style*="--np-hero-c"] {
    background-image:
      linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.34) 50%, transparent 60%),
      linear-gradient(120deg, color-mix(in oklab, var(--np-hero-c) 90%, #ffffff), var(--np-hero-c) 50%,
        color-mix(in oklab, var(--np-hero-c) 90%, #000000)) !important;
    background-size:260% 100%, 100% 100% !important; background-repeat:no-repeat !important; }
  .np-cta-row > a.np-pop { animation:np-hero-sheen 950ms cubic-bezier(.4,0,.2,1) 80ms both; }
  @keyframes np-hero-sheen { from { background-position:100% 0, 0 0; } to { background-position:0% 0, 0 0; } }
  @media (prefers-reduced-motion: reduce) { .np-cta-row > a.np-pop { animation:none; } }

  /* One look per action, wherever it appears. Every "Start the Conversation", "Quick-Start Accelerators",
     "Explore Your Industry" and "Connect to Our MCP" button (matched by where it goes, as the icons are)
     takes the hero version's colour, diagonal shade, size, shadow and hover. Narrow layouts keep their
     full-width rules, which are more specific. */
  a.np-btn[href$="#starters"] { --np-hero-c:var(--ink); }
  a.np-btn[href$="#industries"] { --np-hero-c:#503567; }
  a.np-btn[href$="#talk"] { --np-hero-c:#5c1824; }
  a.np-btn[href^="https://mcp.napotek.com"] { --np-hero-c:#b8401f; }
  a.np-btn[href$="#starters"], a.np-btn[href$="#industries"], a.np-btn[href$="#talk"], a.np-btn[href^="https://mcp.napotek.com"] {
    width:235px; height:52px; box-sizing:border-box; padding-top:0 !important; padding-bottom:0 !important;
    color:#ffffff !important; border:0;
    background-color:var(--np-hero-c) !important;
    background-image:
      linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.34) 50%, transparent 60%),
      linear-gradient(120deg, color-mix(in oklab, var(--np-hero-c) 90%, #ffffff), var(--np-hero-c) 50%,
        color-mix(in oklab, var(--np-hero-c) 90%, #000000)) !important;
    background-size:260% 100%, 100% 100% !important; background-repeat:no-repeat !important;
    box-shadow:0 14px 30px rgba(0,24,64,0.34), 0 4px 10px rgba(0,24,64,0.24) !important;
    transition:background-color 160ms ease, box-shadow 200ms ease, opacity 220ms ease, transform 220ms ease; }
  a.np-btn[href$="#starters"]:hover, a.np-btn[href$="#industries"]:hover, a.np-btn[href$="#talk"]:hover, a.np-btn[href^="https://mcp.napotek.com"]:hover, a.np-btn[href$="#starters"]:focus-visible, a.np-btn[href$="#industries"]:focus-visible, a.np-btn[href$="#talk"]:focus-visible, a.np-btn[href^="https://mcp.napotek.com"]:focus-visible {
    background:var(--red) !important; color:#ffffff !important;
    box-shadow:0 20px 44px rgba(0,24,64,0.42), 0 6px 14px rgba(0,24,64,0.28) !important; }

  /* one bubble at a time in the lower corner: hovering or focusing another circle puts away the
     Under the Hood announcement if it is still showing */
  body:has(.np-fab:not(.np-fab-hint):hover) .np-fab.np-fab-hint .np-fab-tip,
  body:has(.np-fab:not(.np-fab-hint):focus-visible) .np-fab.np-fab-hint .np-fab-tip {
    opacity:0 !important; transition:opacity 80ms ease; }

  /* Guide Me Through Inputs carries the hero actions' look: diagonal shade of its own colour, same
     size, shadow and hover, with a guide icon (a person and a checklist) before the label */
  .np-guide-start {
    --np-hero-c:#8a2a39; --np-btn-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'1.9'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Ccircle%20cx%3D'8'%20cy%3D'7.4'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M2.8%2019.6c0-3.2%202.3-5.6%205.2-5.6s5.2%202.4%205.2%205.6'%2F%3E%3Crect%20x%3D'14.2'%20y%3D'4.6'%20width%3D'7'%20height%3D'11.4'%20rx%3D'1.4'%2F%3E%3Cpath%20d%3D'M16.3%208.2h2.8M16.3%2011h2.8M16.3%2013.8h1.6'%2F%3E%3C%2Fsvg%3E");
    width:auto; min-width:224px; height:52px; min-height:0; box-sizing:border-box;
    padding:0 20px 0 12px !important; justify-content:flex-start !important; gap:8px; text-align:left; white-space:nowrap;
    background-color:var(--np-hero-c) !important;
    background-image:
      linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.34) 50%, transparent 60%),
      linear-gradient(120deg, color-mix(in oklab, var(--np-hero-c) 90%, #ffffff), var(--np-hero-c) 50%,
        color-mix(in oklab, var(--np-hero-c) 90%, #000000)) !important;
    background-size:260% 100%, 100% 100% !important; background-repeat:no-repeat !important;
    box-shadow:0 14px 30px rgba(0,24,64,0.34), 0 4px 10px rgba(0,24,64,0.24) !important;
    transition:background-color 160ms ease, box-shadow 200ms ease; }
  .np-guide-start::before {
    content:""; flex:0 0 auto; width:16px; height:16px; background:currentColor;
    -webkit-mask:var(--np-btn-icon) center / contain no-repeat; mask:var(--np-btn-icon) center / contain no-repeat; }
  .np-guide-start:hover, .np-guide-start:focus-visible {
    background:var(--red) !important; color:#ffffff;
    box-shadow:0 16px 34px rgba(0,24,64,0.36), 0 5px 12px rgba(0,24,64,0.24) !important; }
  @media (max-width: 460px) { .np-guide-start { width:100%; } }

  /* the header's Start the Conversation sits on the bar, so it takes a lighter shadow than the hero */
  #np-header a.np-btn.np-headcta {
    box-shadow:0 8px 18px rgba(0,24,64,0.24), 0 2px 6px rgba(0,24,64,0.16) !important; }
  #np-header a.np-btn.np-headcta:hover, #np-header a.np-btn.np-headcta:focus-visible {
    box-shadow:0 12px 26px rgba(0,24,64,0.30), 0 4px 10px rgba(0,24,64,0.20) !important; }

  /* Guide Me Through Content takes the same look as the other main buttons: its door's colour on the
     diagonal shade, the hero shadow and hover, and an open-book icon before the label */
  .np-cguide-start {
    --np-btn-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'1.9'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M12%206.4C10%205%207.4%204.4%203.6%204.6v13.6c3.8-.2%206.4.4%208.4%201.8%202-1.4%204.6-2%208.4-1.8V4.6C16.6%204.4%2014%205%2012%206.4z'%2F%3E%3Cpath%20d%3D'M12%206.4V20'%2F%3E%3C%2Fsvg%3E");
    min-width:224px; height:52px; min-height:0 !important; box-sizing:border-box;
    padding:0 20px 0 12px !important; justify-content:flex-start !important; gap:8px; text-align:left;
    background-color:var(--np-hero-c, #5c1824) !important;
    background-image:
      linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.34) 50%, transparent 60%),
      linear-gradient(120deg, color-mix(in oklab, var(--np-hero-c, #5c1824) 90%, #ffffff), var(--np-hero-c, #5c1824) 50%,
        color-mix(in oklab, var(--np-hero-c, #5c1824) 90%, #000000)) !important;
    background-size:260% 100%, 100% 100% !important; background-repeat:no-repeat !important;
    box-shadow:0 14px 30px rgba(0,24,64,0.34), 0 4px 10px rgba(0,24,64,0.24) !important;
    transition:background-color 160ms ease, box-shadow 200ms ease; }
  .np-cguide-start::before {
    content:""; flex:0 0 auto; width:16px; height:16px; background:currentColor;
    -webkit-mask:var(--np-btn-icon) center / contain no-repeat; mask:var(--np-btn-icon) center / contain no-repeat; }
  .np-cguide-start:hover, .np-cguide-start:focus-visible {
    background:var(--red) !important; color:#ffffff;
    box-shadow:0 16px 34px rgba(0,24,64,0.36), 0 5px 12px rgba(0,24,64,0.24) !important; }

  /* Guide Me Through Inputs sits inside a card, so it takes the lighter shadow the header action uses */
  #maturity .np-guide-start, .np-guide-start {
    box-shadow:0 8px 18px rgba(0,24,64,0.24), 0 2px 6px rgba(0,24,64,0.16) !important; }
  #maturity .np-guide-start:hover, #maturity .np-guide-start:focus-visible,
  .np-guide-start:hover, .np-guide-start:focus-visible {
    box-shadow:0 12px 26px rgba(0,24,64,0.30), 0 4px 10px rgba(0,24,64,0.20) !important; }
