/* Rules added for the ASP.NET site on top of the design's own CSS (tokens/components/site.css,
   which are kept as extracted from the design so a new design drop can be diffed against them).
   Mostly: real links where the React prototype used buttons, server-rendered states that the
   prototype rendered conditionally, the mobile menu, and pages the prototype didn't have. */

[hidden]{ display:none !important; }
html{ scroll-padding-top:90px; }
@media (prefers-reduced-motion:no-preference){ html{ scroll-behavior:smooth; } }

/* Design-system Icon component: the prototype set these inline. */
.np-icon{ display:inline-flex; align-items:center; justify-content:center; flex:none; }
.np-icon svg{ display:block; }

.np-skip{ position:absolute; left:-9999px; top:8px; z-index:300; background:var(--surface-card); color:var(--text-strong); padding:10px 16px; border-radius:var(--radius-sm); box-shadow:var(--shadow-md); font-weight:700; }
.np-skip:focus{ left:16px; }
.np-sr{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* ---- Links that replaced buttons ---- */
a.np-navlink, a.np-btn{ text-decoration:none; }
a.np-navlink{ color:var(--text-strong); }
a.np-navlink:hover, a.np-navlink[aria-current="page"]{ color:var(--text-brand); }
.np-btn--primary, .np-btn--primary:hover{ color:var(--text-on-brand); }
.np-btn--secondary, .np-btn--secondary:hover{ color:var(--text-inverse); }
.np-btn--ghost{ color:var(--text-body); }
.np-linkcard{ display:block; color:inherit; text-decoration:none; }
.np-linkcard:hover{ color:inherit; }
/* These were <button>s in the prototype, which size as border-box by default. */
.np-demo__chip, a.np-rec, a.np-pair, a.np-btn{ box-sizing:border-box; }
a.np-rec, a.np-pair{ color:var(--text-body); text-decoration:none; }
a.np-rec:hover, a.np-pair:hover{ color:var(--text-body); }
a.np-textlink:hover{ color:var(--text-strong); }
.np-crumbs a{ color:inherit; }
.np-crumbs a:hover{ text-decoration:underline; }

/* Card whose title link covers the whole card (press releases). */
.np-card--interactive{ position:relative; }
.np-stretched{ color:inherit; }
.np-stretched::after{ content:""; position:absolute; inset:0; }

/* ---- Nav ---- */
.np-nav__grouplabel{ font-size:var(--text-xs); font-weight:var(--weight-heavy); letter-spacing:var(--tracking-caps); text-transform:uppercase; color:var(--text-subtle); padding:4px 12px 2px; }
.np-nav__menu a.np-nav__item{ gap:9px; padding:9px 12px; color:var(--text-body); }
.np-nav__menu a.np-nav__item:hover{ color:var(--text-strong); }
.np-nav__burger{ display:none; padding:6px; }
.np-mobilenav{ border-top:1px solid var(--border-subtle); background:var(--surface-card); max-height:calc(100vh - 74px); overflow:auto; }
.np-mobilenav .np-container{ display:flex; flex-direction:column; padding-block:var(--space-4) var(--space-6); }
.np-mobilenav a{ padding:10px 0; font-weight:var(--weight-heavy); color:var(--text-strong); border-bottom:1px solid var(--border-subtle); }
.np-mobilenav a.np-mobilenav__sub{ padding-left:var(--space-4); font-weight:600; color:var(--text-body); }
.np-mobilenav__label{ padding:14px 0 4px; font-size:var(--text-xs); font-weight:var(--weight-heavy); letter-spacing:var(--tracking-caps); text-transform:uppercase; color:var(--text-subtle); }
@media (max-width:900px){
  .np-nav__burger{ display:inline-flex; }
  .np-nav__links{ padding-left:0; }
}
@media (min-width:901px){ .np-mobilenav{ display:none !important; } }
/* The design's full-size nav is ~1400px wide and overflows its 1200px container, so use its compact sizing at every width. */
.np-nav__links{ gap:14px; padding-left:clamp(16px,2vw,24px); }
.np-navlink{ font-size:12.5px; padding-inline:0; }
@media (max-width:520px){ .np-nav__demo, .np-nav__sep{ display:none; } }

/* ---- Product finder: server renders every state, site.js toggles ---- */
.np-need:not(.is-on) .np-need__tick{ display:none; }
.np-finder__all{ text-decoration:none; }

/* ---- Testimonials ---- */
.np-quote__item{ margin:0; }

/* ---- Accordion: heading wrapper for the FAQ triggers ---- */
.np-acc-heading{ margin:0; font:inherit; letter-spacing:normal; }

/* ---- Demo form ---- */
/* Honeypot: hidden with the [hidden] attribute (display:none) so browser autofill never fills it. */
.np-demo__form{ position:relative; }
fieldset.np-demo__pick{ border:none; margin:0; padding:0; min-width:0; }
legend.np-demo__picklabel{ padding:0; margin-bottom:var(--space-2); }
.np-demo__chip{ cursor:pointer; }
.np-demo__form .np-demo__chipbox{ position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.np-demo__chip:has(.np-demo__chipbox:focus-visible){ box-shadow:0 0 0 3px var(--focus-ring); }
.np-demo__chip .np-demo__chipon, .np-demo__chip.is-on .np-demo__chipoff{ display:none; }
.np-demo__chip.is-on .np-demo__chipon{ display:inline-flex; }
.np-alert{ padding:var(--space-3) var(--space-4); border-radius:var(--radius-sm); background:var(--color-danger-subtle); color:var(--red-600); font-size:var(--text-sm); font-weight:var(--weight-semibold); }
.np-demo__privacy{ margin-top:var(--space-3); font-size:var(--text-xs); color:var(--text-muted); text-align:center; }

/* ---- Footer ---- */
.np-footer__heading{ color:#fff; font-size:var(--text-sm); font-weight:var(--weight-heavy); text-transform:uppercase; letter-spacing:var(--tracking-wide); line-height:var(--leading-tight); margin-bottom:var(--space-4); }
.np-footer address{ font-style:normal; }
.np-footer__partners{ flex-wrap:wrap; }

/* ---- Legal pages ---- */
.np-prose{ max-width:72ch; color:var(--text-body); line-height:var(--leading-relaxed); }
.np-prose h2{ font-size:var(--text-h5); margin:var(--space-8) 0 var(--space-3); }
.np-prose h2:first-child{ margin-top:0; }
.np-prose p, .np-prose ul, .np-prose ol{ margin:0 0 var(--space-4); }
.np-prose ul, .np-prose ol{ padding-left:1.4em; }
.np-prose li{ margin-bottom:var(--space-2); }

/* ---- Cookie notice ---- */
.np-cookies{ position:fixed; left:16px; right:16px; bottom:16px; z-index:150; max-width:720px; margin-inline:auto; display:flex; align-items:center; gap:var(--space-4); padding:var(--space-4) var(--space-5); background:var(--surface-ink); color:rgba(255,255,255,.85); border-radius:var(--radius-md); box-shadow:var(--shadow-xl); font-size:var(--text-sm); }
.np-cookies a{ color:var(--sky-blue); }
@media (max-width:560px){ .np-cookies{ flex-direction:column; align-items:stretch; } .np-cookies__actions .np-btn{ flex:1; } }

/* ---- Product hero: the design's dark-hero columns out-rank its own 900px single-column rule ---- */
@media (max-width:900px){
  .np-pd-hero--dark .np-pd-hero__grid{ grid-template-columns:minmax(0,1fr); }
  .np-pd-hero--dark .np-pd-hero__grid > :last-child{ max-width:none; justify-self:stretch; }
}

/* ---- Cookie consent (Accept / Reject) and the footer "Cookie settings" link ---- */
.np-cookies__actions{ display:flex; gap:var(--space-2); flex:none; }
.np-cookies .np-cookies__reject{ --_fg:#fff; --_border:rgba(255,255,255,.4); --_bg-hover:rgba(255,255,255,.1); color:#fff; }
.np-footer__linkbtn{ all:unset; cursor:pointer; color:rgba(255,255,255,.6); font-size:var(--text-sm); line-height:2; }
.np-footer__linkbtn:hover{ color:var(--sky-blue); }
.np-footer__linkbtn:focus-visible{ outline:2px solid var(--sky-blue); outline-offset:2px; }

/* ---- Tables in legal pages ---- */
.np-prose__table{ overflow-x:auto; margin:0 0 var(--space-4); }
.np-prose table{ width:100%; border-collapse:collapse; font-size:var(--text-sm); line-height:var(--leading-normal); }
.np-prose th, .np-prose td{ text-align:left; vertical-align:top; padding:var(--space-3); border-bottom:1px solid var(--border-subtle); }
.np-prose th{ color:var(--text-strong); font-weight:var(--weight-heavy); background:var(--surface-muted); }
.np-prose code{ font-family:var(--font-mono); font-size:.92em; color:var(--text-strong); }
.np-clauses p > b:first-child{ color:var(--text-strong); margin-right:.4em; }
