/* Inside pages in the night-and-paper design (local preview, 7 Nov 2026).
   Night is the lab's voice: the masthead and the footer, the homepage's own. Paper is the evidence: the reading body,
   ink on warm paper, joined to the night by the hero's pixel edge (the homepage's edge-ink.png). Instrument Serif
   headings, IBM Plex Sans text at reading size, Plex Mono only for small metadata. No navy, no blue buttons, no
   ornaments; the lake blue marks links and citations, and red stays on the homepage. Built by assemble_night_pages.py. */
.np-page {
  --np-ink: #16181d; --np-text: rgba(22, 24, 29, .9); --np-muted: rgba(22, 24, 29, .66); --np-faint: rgba(22, 24, 29, .55);
  --np-rule: rgba(22, 24, 29, .14); --np-rule2: rgba(22, 24, 29, .3); --np-card: #fbf9f4; --np-lake: var(--pl-lake);
  /* the reading grid: contents, gap, text, gap, margin notes */
  --np-toc: 200px; --np-g1: 64px; --np-text-w: 584px; --np-g2: 48px; --np-notes: 248px;
}
.np-page main > section { border-top: 0; }
.np-page .n-footer { border-top: 0; }
.np-page .n-nav a[aria-current], .np-page .n-mobile a[aria-current] { color: #fff; }
.np-page .n-nav a[aria-current]::after { right: 0; }

/* ---------------------------------------------------------------- night masthead */
.np-mast { position: relative; padding: clamp(44px, 6.4vw, 96px) 0 clamp(64px, 7vw, 104px); background: var(--n-ink); }
.np-crumb { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin: 0 0 clamp(28px, 3.6vw, 44px); font: 400 12px/1.5 var(--n-mono); letter-spacing: .04em; color: var(--n-muted); } /* the secondary text role (visual QA, 7 Nov 2026) */
.np-crumb a { color: #b9c1d1; transition: color .2s; }
.np-crumb a:hover { color: #fff; }
.np-title { margin: 0; max-width: 15.5em; font: 400 clamp(40px, 5.2vw, 78px)/1.02 var(--n-serif); letter-spacing: -.02em; color: #f4f6fb; text-wrap: balance; }
.np-hy { margin-inline: -.07em; } /* Instrument Serif's hyphen sits wide: "private-beta" read as a spaced dash */
.np-title--big { max-width: 13em; font-size: clamp(52px, 7.4vw, 116px); line-height: .96; }
.np-dek { margin: 26px 0 0; max-width: 36em; font: 400 clamp(17px, 1.45vw, 20px)/1.55 var(--n-sans); color: #b9c1d1; text-wrap: pretty; }
.np-dek a { color: #fff; text-decoration: underline; text-decoration-color: rgba(255, 255, 255, .35); text-underline-offset: 4px; }
.np-dek a:hover { text-decoration-color: #fff; }
.np-ledes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 56px; max-width: 1180px; margin-top: 18px; }
.np-ledes .np-dek { max-width: 34em; font-size: clamp(16px, 1.25vw, 18px); }
.np-ledes .np-dek + .np-dek { color: var(--n-muted); }
.np-mast__act { margin: 36px 0 0; }

/* ---------------------------------------------------------------- paper */
.np-paper { position: relative; isolation: isolate; padding: 168px 0 216px; color: var(--np-ink); background-color: var(--pl-paper); background-image: var(--pl-grain); }
.np-paper::before, .np-paper::after { content: ""; position: absolute; left: 0; right: 0; z-index: -1; height: 112px; pointer-events: none;
  background: url('../assets/night/edge-ink.png') 0 0 / 1600px 112px repeat-x; image-rendering: pixelated; }
.np-paper::before { top: 0; }
.np-paper::after { bottom: 0; transform: scaleY(-1); background-position: 37% 0; }
.np-page .np-paper a:focus-visible, .np-page .np-paper button:focus-visible { outline-color: var(--np-lake); }
.np-page .np-paper ::selection { background: rgba(49, 83, 140, .2); color: var(--np-ink); }

/* shared type on paper */
.np-page main h2, .np-page main h3 { text-wrap: balance; } /* no heading leaves one word alone on its last line */
.np-sec { padding: 0 0 112px; } /* a section break, under the 120px void limit (visual QA, round 2) */
.np-head { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 24px 48px; align-items: end; margin-bottom: 48px; }
.np-h2 { margin: 0; font: 400 clamp(42px, 4.6vw, 72px)/.98 var(--n-serif); letter-spacing: -.02em; color: var(--np-ink); text-wrap: balance; }
.np-h3 { margin: 0; font: 400 clamp(32px, 3vw, 46px)/1.04 var(--n-serif); letter-spacing: -.015em; color: var(--np-ink); text-wrap: balance; }
.np-intro { margin: 0; max-width: 34em; font: 400 17px/1.6 var(--n-sans); color: var(--np-muted); }
.np-arrow { font-family: var(--n-sans); color: var(--np-faint); transition: transform .3s var(--pl-ease), color .3s; }
.np-page .np-textlink { font: 500 17px/1.4 var(--n-sans); color: var(--np-ink); border-bottom: 1px solid var(--np-rule2); padding-bottom: 2px; transition: border-color .2s; }
.np-page .np-textlink:hover { border-color: var(--np-ink); }
.np-note { margin: 10px 0 0; font: 400 15px/1.6 var(--n-sans); color: var(--np-muted); }
.np-page .np-note a { color: var(--np-ink); text-decoration: underline; text-decoration-color: var(--np-rule2); text-underline-offset: 3px; }
.np-page .np-note a:hover { text-decoration-color: currentColor; }

/* buttons: Plex Sans, sentence case */
.np-page .np-btn, .np-page .np-article .ip-button { display: inline-flex; align-items: center; gap: 10px; padding: 13px 20px; border: 1px solid var(--np-ink); background: transparent; color: var(--np-ink);
  font: 500 12px/1 var(--n-mono); letter-spacing: .1em; text-transform: uppercase; text-decoration: none; cursor: pointer; transition: background .2s, color .2s, border-color .2s; } /* the homepage's button, everywhere */
.np-page .np-btn:hover, .np-page .np-article .ip-button:hover { background: var(--np-ink); color: var(--pl-paper); }
.np-page .np-btn--solid { background: var(--np-ink); color: var(--pl-paper); }
.np-page .np-btn--solid:hover { background: #000; border-color: #000; }
.np-page .np-btn--quiet { border-color: var(--np-rule2); }
.np-page .np-btn--light { border-color: var(--n-bone); background: var(--n-bone); color: #08090d; }
.np-page .np-btn--light:hover { border-color: #fff; background: #fff; color: #08090d; }
.np-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 28px 0 0; }
.np-page .np-mail { display: inline-block; margin-top: 22px; padding-bottom: 4px; border-bottom: 1px solid var(--np-rule2); font: italic 400 clamp(26px, 2.4vw, 34px)/1.1 var(--n-serif); color: var(--np-ink); transition: border-color .2s; }
.np-page .np-mail:hover { border-color: var(--np-ink); }

/* plates: the homepage's ink drawings, on a lighter card */
.np-page .np-plate { margin: 0; padding: 14px; background: var(--np-card); background-image: none; border: 1px solid rgba(22, 24, 29, .12); box-shadow: 0 1px 0 rgba(255, 255, 255, .7); }
/* Each drawing keeps its own proportions (set on it by the build). A plate with a compact phone drawing (.alt) shows it
   at 900px and below, as the homepage does; the desktop drawing is .wide (visual QA, 7 Nov 2026). */
.np-page .np-plate .n-plate__mark { height: auto; aspect-ratio: auto; border: 0; background: none; box-shadow: none; }
.np-page .np-plate .n-plate__mark svg { height: auto; }
.np-page .np-plate .wide { display: block; } /* the homepage's own ≤900px swap doesn't reach in here */
.np-page .np-plate .alt { display: none; max-width: 440px; margin-inline: auto; } /* a phone drawing never grows past phone size */
/* the swap also asks that the plate itself be phone-sized: at 768px an essay's plate fills a 620px column, where the
   phone drawing's labels would grow past 24px, so the desktop drawing stays */
.np-page .np-plate .n-plate__mark { container: np-plate / inline-size; }
@media (max-width: 900px) {
  @container np-plate (max-width: 440px) {
    .np-page .np-plate .wide { display: none; }
    .np-page .np-plate .alt { display: block; }
  }
}
/* a double-cell drawing (AI defense, 840 by 240) needs its full 840px to keep its labels at size: an essay's front gives it the margin
   too, like a wide table, and any narrower box shows the phone drawing, centred */
.np-front .np-plate--double { max-width: none; }
.np-page .np-plate--double .alt { max-width: 440px; } /* its labels then match the other plates' size, as on the tablet-width index (visual QA P2-16) */
@container np-plate (max-width: 839px) {
  .np-page .np-plate--double .wide { display: none; }
  .np-page .np-plate--double .alt { display: block; }
}
/* Outside an essay's front (the research index), the AI-defense card shows the phone drawing in a box sized like its
   neighbours'. At 76% of the box its labels match theirs (18 px at 1440, 15 px at 1024), and the margins keep the card at
   their 5:3 shape (live inspection, 7 Nov 2026). */
@container np-plate (min-width: 441px) and (max-width: 839px) {
  .np-page .np-plate--double:not(.np-front .np-plate--double) .alt { width: 76%; max-width: none; margin-block: 7.2cqi; }
}
@media (min-width: 901px) { /* above 900px the other plates keep their desktop drawing in any box */
  @container np-plate (max-width: 839px) {
    .np-page .np-plate--double:not(.np-front .np-plate--double) .alt { width: 76%; max-width: none; margin-block: 7.2cqi; }
  }
}
/* An essay's front swaps to the phone drawing only at 900px and below (visual QA P2-16, 7 Nov 2026). From 901px to
   1039px the plate leaves the 600px reading column, centred, up to 880px wide, as a wide figure, so the desktop drawing
   keeps its labels at size; at 1040px and up the front already spans the text and the margin. */
@media (min-width: 901px) {
  @container np-plate (max-width: 839px) {
    .np-page .np-front .np-plate--double .wide { display: block; }
    .np-page .np-front .np-plate--double .alt { display: none; }
  }
}
@media (min-width: 901px) and (max-width: 1039px) {
  .np-front .np-plate--double { --np-fig: min(880px, calc(100vw - 2 * var(--n-pad))); width: var(--np-fig); margin-inline: calc((100% - var(--np-fig)) / 2); }
}
/* the homepage drawing an essay uses as its own plate sits in a 5:3 frame like the line plates (visual QA P2-14) */
.np-page .np-plate--own .alt { max-width: 400px; }

/* ---------------------------------------------------------------- research library */
.np-lines { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--np-ink); }
.np-line { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 32px 64px; padding: 48px 0; border-bottom: 1px solid var(--np-rule); scroll-margin-top: 24px; }
.np-line .np-plate { align-self: start; }
.np-line__label { margin: 0; font: 400 clamp(34px, 3.2vw, 48px)/1 var(--n-serif); letter-spacing: -.015em; color: var(--np-ink); }
.np-line__q { margin: 14px 0 0; max-width: 32em; font: 400 17px/1.55 var(--n-sans); color: var(--np-muted); }
.np-line__list { list-style: none; margin: 30px 0 0; padding: 0; border-top: 1px solid var(--np-rule); }
.np-page .np-line__list a { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 4px 20px; padding: 16px 0; border-bottom: 1px solid var(--np-rule); color: var(--np-ink); }
/* The line's own rule closes the list: the last question's rule sat 40-50px above it and read as a double rule (live inspection, 7 Nov 2026). */
.np-page .np-line__list li:last-child a { border-bottom: 0; }
.np-line__t { font: 400 clamp(21px, 1.8vw, 26px)/1.18 var(--n-serif); text-wrap: balance; transition: color .25s; }
.np-start { grid-row: 2; font: 500 11px/1.4 var(--n-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--np-lake); }
.np-line__list .np-arrow { grid-column: 2; grid-row: 1; }
.np-line__list a:hover .np-line__t, .np-row a:hover .np-row__title { color: var(--np-lake); }
.np-line__list a:hover .np-arrow, .np-row a:hover .np-arrow { transform: translateX(4px); color: var(--np-ink); }

.np-rows { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--np-ink); }
.np-page .np-row a { display: grid; grid-template-columns: 112px 150px minmax(0, 1fr) 28px; gap: 24px; align-items: baseline; padding: 24px 0; border-bottom: 1px solid var(--np-rule); color: var(--np-ink); }
.np-page .np-row__date { font: 400 12.5px/1.4 var(--n-mono); letter-spacing: .02em; color: var(--np-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.np-row__type { font: 400 14px/1.4 var(--n-sans); color: var(--np-muted); }
.np-row__body { display: grid; gap: 8px; }
.np-row__title { font: 400 clamp(22px, 2vw, 28px)/1.15 var(--n-serif); letter-spacing: -.005em; text-wrap: balance; transition: color .25s; }
.np-row__line { max-width: 44em; font: 400 15.5px/1.55 var(--n-sans); color: var(--np-muted); }
.np-row .np-arrow { text-align: right; }

.np-tests { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px 64px; padding-top: 40px; padding-bottom: 0; border-top: 1px solid var(--np-ink); }
.np-tests__body > p { margin: 0; }
.np-tests__line { max-width: 34em; font: 400 18px/1.6 var(--n-sans) !important; color: var(--np-text); margin-bottom: 18px !important; }
.np-tests__ask { margin: 36px 0 26px !important; }

/* ---------------------------------------------------------------- essays: the reading grid */
.np-grid { display: grid; grid-template-columns: var(--np-toc) var(--np-g1) var(--np-text-w) var(--np-g2) var(--np-notes); justify-content: center; padding-inline: var(--n-pad); }
.np-grid > * { min-width: 0; }
.np-mast__in { grid-column: 3 / 6; }
.np-front { grid-column: 3 / 6; grid-row: 1; }
.np-toc { grid-column: 1; grid-row: 2; align-self: start; position: sticky; top: 28px; max-height: calc(100vh - 56px); overflow: auto; padding-top: 6px; scrollbar-width: thin; }
.np-article { grid-column: 3; grid-row: 2; }

.np-plate--text { width: 100%; max-width: var(--np-text-w); padding: 18px; }
.np-byline { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px 16px; max-width: var(--np-text-w); margin: 40px 0 0; padding: 0; } /* four equal columns, inside the text column (visual QA P2-17) */
.np-byline dt { margin: 0 0 9px; font: 500 11px/1 var(--n-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--np-muted); }
.np-byline dd { margin: 0; font: 400 15.5px/1.45 var(--n-sans); color: var(--np-ink); }
.np-page .np-byline a { color: var(--np-ink); text-decoration: underline; text-decoration-color: var(--np-rule2); text-underline-offset: 3px; }
.np-page .np-byline a:hover { text-decoration-color: currentColor; }
.np-byline__org { display: block; color: var(--np-muted); }
.np-page .np-byline time { font: inherit; font-variant-numeric: tabular-nums; } /* one face across the row */
.np-byline__note { max-width: var(--np-text-w); margin: 20px 0 0; font: 400 14.5px/1.55 var(--n-sans); color: var(--np-muted); }

/* contents */
.np-toc__h { margin: 0 0 14px; font: 500 11px/1 var(--n-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--np-muted); }
.np-toc ol { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--np-rule); }
.np-page .np-toc li a { display: block; margin-left: -1px; padding: 6px 0 6px 14px; border-left: 1px solid transparent; font: 400 14px/1.4 var(--n-sans); color: rgba(22, 24, 29, .78); transition: color .2s, border-color .2s; }
.np-page .np-toc li a:hover, .np-page .np-toc li a[aria-current] { color: var(--np-ink); border-left-color: var(--np-ink); }
.np-toc__tools { margin-top: 22px; font: 400 13.5px/1.4 var(--n-sans); }
.np-page .np-toc__tools a { color: var(--np-ink); border-bottom: 1px solid var(--np-rule2); }
.np-page .np-toc__tools a:hover { border-color: var(--np-ink); }

/* the essay body */
.np-article { font: 400 18px/1.7 var(--n-sans); color: var(--np-text); overflow-wrap: break-word; }
.np-article .rp-source-list, .np-article .rp-colophon { overflow-wrap: anywhere; }
.np-article p, .np-article ul, .np-article ol { margin: 0 0 1.05em; }
/* body text sets its last lines with care: no word left alone on a paragraph's last line (visual QA P2-9) */
.np-paper p, .np-paper li, .np-paper dd { text-wrap: pretty; }
.np-article ul, .np-article ol { padding-left: 1.25em; }
.np-article li { margin: 0 0 .45em; padding-left: .2em; }
.np-article li::marker { color: var(--np-faint); }
.np-article strong { font-weight: 600; color: var(--np-ink); }
.np-article h2 { margin: 2.4em 0 .7em; font: 400 clamp(30px, 2.5vw, 38px)/1.1 var(--n-serif); letter-spacing: -.01em; color: var(--np-ink); text-wrap: balance; }
.np-article h3 { margin: 1.5em 0 .4em; font-weight: 500; line-height: 1.3; }
.np-status, .np-nobr { white-space: nowrap; } /* a heading's short status, "(Client)", stays whole and beside the last word */
/* a link that leaves the site: ↗, joined to its last word by the build, never underlined */
.np-page .np-ext { display: inline-block; margin-left: .16em; font-size: .78em; line-height: 1; font-family: var(--n-sans); text-decoration: none; opacity: .75; }
.np-article .rp-chapter, .np-article .rp-sources { scroll-margin-top: 24px; }
.np-page .np-article a { color: var(--np-lake); text-decoration: underline; text-decoration-thickness: 1px; text-decoration-color: rgba(49, 83, 140, .35); text-underline-offset: 3px; }
.np-page .np-article a:hover { text-decoration-color: currentColor; }
.np-article code { padding: .1em .34em; border-radius: 2px; background: rgba(22, 24, 29, .065); font: 400 .82em/1 var(--n-mono); color: var(--np-ink); white-space: nowrap; overflow-wrap: normal; }
/* A code chip, a URL or a path never breaks inside a word or at a hyphen (visual QA P2-5 and P2-15, 7 Nov 2026): the
   build keeps each piece whole (.np-nw) and puts a <wbr> after each "/"; a long command (.np-wrap) also breaks at a space. */
.np-page code.np-wrap { white-space: normal; }
.np-nw, .np-name { white-space: nowrap; }
.np-hash { font: 400 .86em/1 var(--n-mono); letter-spacing: -.02em; overflow-wrap: anywhere; } /* a commit hash, whole on a phone */
.np-page .np-article .rp-cite { position: relative; top: -.42em; padding: 0 .08em; font: 500 max(11px, .64em)/1 var(--n-mono); letter-spacing: 0; text-decoration: none; color: var(--np-lake); }
.np-page .np-article .rp-cite:hover { text-decoration: underline; }

/* In short, between two rules */
.np-article .rp-abstract { margin: 48px 0 0; padding: 26px 0 28px; border-top: 1px solid var(--np-ink); border-bottom: 1px solid var(--np-rule2); font: 400 clamp(19px, 1.5vw, 21px)/1.55 var(--n-sans); color: var(--np-ink); }
.np-article .rp-abstract__lead { font-weight: 600; }
.np-article .rp-scope { margin: 18px 0 0; font: 400 15px/1.6 var(--n-sans); color: var(--np-muted); }
.np-article .rp-scope__lead, .np-article .rp-update__lead { font-weight: 600; color: var(--np-ink); }
.np-article .rp-update { margin: 18px 0 0; padding: 14px 18px; border-left: 2px solid var(--np-lake); background: rgba(49, 83, 140, .06); font-size: 16px; line-height: 1.6; }
.np-article .rp-mobile-contents { display: none; }
.np-article .rp-abstract + .rp-scope + .rp-mobile-contents + .rp-chapter > h2:first-child,
.np-article .rp-mobile-contents + .rp-chapter > h2:first-child { margin-top: 1.9em; }

/* margin notes: each chapter's first citation of a source, beside the line that cites it */
.np-sn { float: right; clear: right; width: var(--np-notes); margin: .5em calc(-1 * (var(--np-g2) + var(--np-notes))) .9em 0; padding-top: 9px; border-top: 1px solid var(--np-rule);
  font: 400 13px/1.5 var(--n-sans); letter-spacing: 0; color: var(--np-muted); text-align: left; }
.np-sn__n { margin-right: 8px; font: 500 11px/1 var(--n-mono); color: var(--np-lake); }
.np-sn__t { color: var(--np-ink); }
.np-sn__m { display: block; margin-top: 4px; font-size: 12.5px; color: var(--np-muted); }
/* Where a chapter's notes outrun its text, the build sets them a little closer and starts a crowded stack higher, but
   never above the paragraph that cites a note (visual QA P2-3 and final sign-off, 7 Nov 2026) */
.np-sn.np-sn--tight { margin-top: .3em; margin-bottom: .6em; padding-top: 7px; }
/* Each chapter holds its own margin notes, so a long stack pushes the next heading down instead of sitting beside it;
   the build keeps every note at or below the top of the paragraph that cites it (final sign-off, 7 Nov 2026). The last
   block keeps no margin of its own, so the space between chapters is the heading's, as before. */
.np-article .rp-chapter { display: flow-root; }
.np-article .rp-chapter > :last-child { margin-bottom: 0; }

/* tables: a figure on a card; a wide one reaches into the margin, so only a wide one clears the margin notes (a narrow
   one clearing them left voids of 200px and more under a long run of notes) */
.np-article .rp-table-wrap { margin: 44px 0; padding: 26px 28px 22px; overflow-x: auto; border: 1px solid rgba(22, 24, 29, .12); background: var(--np-card); }
.np-article .rp-table-wrap.np-wide { clear: right; margin-right: calc(-1 * (var(--np-g2) + var(--np-notes))); padding: 32px 34px 26px; }
/* a wide table that margin notes still reach stays in the text column, beside them, when it fits there; the build
   marks it (visual QA P2-13, 7 Nov 2026) */
.np-article .rp-table-wrap.np-wide.np-wide--col { clear: none; margin-right: 0; padding: 26px 28px 22px; }
.np-article .rp-table-wrap:focus-visible { outline: 2px solid var(--np-lake); outline-offset: 3px; }
.np-article table { width: 100%; border-collapse: collapse; font: 400 15px/1.5 var(--n-sans); color: var(--np-text); }
.np-article caption { caption-side: top; padding: 0 0 18px; text-align: left; font: 400 clamp(22px, 1.8vw, 26px)/1.2 var(--n-serif); color: var(--np-ink); text-wrap: balance; }
.np-article thead th { padding: 0 18px 10px 0; border-bottom: 1px solid var(--np-ink); text-align: left; vertical-align: bottom; font: 500 12.5px/1.35 var(--n-sans); color: var(--np-muted); }
.np-article td { padding: 13px 18px 13px 0; border-bottom: 1px solid var(--np-rule); vertical-align: top; }
.np-article tbody tr:last-child td { border-bottom: 0; }
.np-article td.np-group { padding-top: 26px; padding-bottom: 8px; border-bottom: 1px solid var(--np-rule2); }
.np-article td.np-group strong { font: 500 11px/1.4 var(--n-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--np-muted); }
.np-article tbody tr:first-child td.np-group { padding-top: 14px; }
.np-article td code { font-size: 12.5px; white-space: nowrap; overflow-wrap: normal; }
.np-article td code.np-wrap { white-space: normal; }
.np-article td.np-yes { font-weight: 500; color: var(--np-ink); }
.np-article td.np-no { color: var(--np-muted); }
.np-article .np-mark { white-space: nowrap; }
.np-article .np-mark::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 8px; box-sizing: border-box; vertical-align: 1px; }
.np-article td.np-yes .np-mark::before { background: var(--np-ink); }
.np-article td.np-no .np-mark::before { border: 1px solid var(--np-faint); }

/* a table as stacked cards: one card per row, every field under its column's name. A wide table (four or five
   columns) stacks at 1039px and below, where it can no longer reach into the margin; every table stacks on phones. */
@media (max-width: 1039px) {
  .np-article .rp-table-wrap.np-wide { overflow-x: visible; }
  .np-article .np-wide table, .np-article .np-wide tbody, .np-article .np-wide tr, .np-article .np-wide td { display: block; width: auto; }
  .np-article .np-wide thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .np-article .np-wide caption { display: block; }
  .np-article .np-wide tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; padding: 16px 0 18px; border-bottom: 1px solid var(--np-rule); }
  .np-article .np-wide td:first-child, .np-article .np-wide td.np-group { grid-column: 1 / -1; } /* the row's name across the card, its fields in pairs */
  .np-article .np-wide tbody tr:last-child { border-bottom: 0; padding-bottom: 4px; }
  .np-article .np-wide tr:has(.np-group) { padding: 0; border-bottom: 0; }
  .np-article .np-wide td { padding: 2px 0; border: 0; }
  .np-article .np-wide td[data-label]::before { content: attr(data-label); display: block; position: static; width: auto; margin: 12px 0 2px; white-space: normal;
    font: 500 13px/1.4 var(--n-sans); color: rgba(22, 24, 29, .72); }
  .np-article .np-wide td[data-label]:first-child::before { display: none; }
  .np-article .np-wide td[data-label]:first-child { font-weight: 500; color: var(--np-ink); }
  .np-article .np-wide td.np-group { padding: 22px 0 8px; border-bottom: 1px solid var(--np-rule2); }
  .np-article .np-wide tbody tr:first-child td.np-group { padding-top: 10px; }
  .np-article .np-wide td code.np-wrap { white-space: normal; }
}

/* scope and limits */
.np-article .rp-limits__list { margin: 0; border-top: 1px solid var(--np-ink); }
.np-article .rp-limits__list > div { display: grid; grid-template-columns: 158px minmax(0, 1fr); gap: 24px; padding: 18px 0; border-bottom: 1px solid var(--np-rule); }
.np-article .rp-limits__list dt { font: 500 15px/1.6 var(--n-sans); color: var(--np-ink); }
.np-article .rp-limits__list dd { margin: 0; font-size: 16.5px; line-height: 1.65; }

/* appendix, open question, materials */
.np-article .rp-appendix { margin-top: 88px; padding-top: 28px; border-top: 1px solid var(--np-ink); }
.np-article .rp-appendix__label { margin: 0 !important; font: 500 11px/1 var(--n-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--np-muted); }
.np-article .rp-appendix .rp-chapter > h2 { margin-top: 1.3em; }
.np-article .rp-inquiry { margin-top: 24px; }
.np-article .rp-inquiry__question { margin: 0 0 1em; padding-left: 22px; border-left: 2px solid var(--np-lake); font: italic 400 clamp(25px, 2.2vw, 31px)/1.28 var(--n-serif); color: var(--np-ink); text-wrap: pretty; }
.np-article .rp-inquiry__action { margin-top: 28px; }
.np-article .rp-resource-list { list-style: none; padding: 0; border-top: 1px solid var(--np-rule); }
.np-article .rp-resource-list li { margin: 0; padding: 12px 0; border-bottom: 1px solid var(--np-rule); font-size: 16px; }

/* references */
.np-article .rp-sources { margin-top: 96px; }
.np-article .rp-source-intro { font-size: 15px; line-height: 1.6; color: var(--np-muted); }
.np-article .rp-source-list { list-style: none; margin: 28px 0 0; padding: 0; border-top: 1px solid var(--np-ink); }
.np-article .rp-source-list > li { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 0 10px; margin: 0; padding: 20px 0 18px; border-bottom: 1px solid var(--np-rule); font-size: 15px; line-height: 1.6; scroll-margin-top: 24px; }
.np-article .rp-source-list > li:last-child { border-bottom: 0; }
.np-article .rp-source-list > li:target { background: rgba(49, 83, 140, .07); box-shadow: -12px 0 0 rgba(49, 83, 140, .07), 12px 0 0 rgba(49, 83, 140, .07); }
.np-article .rp-source-id { font: 500 12px/1.9 var(--n-mono); color: var(--np-lake); }
.np-article .rp-source-list h3 { margin: 0 0 4px; font: 500 16px/1.45 var(--n-sans); }
.np-page .np-article .rp-source-list h3 a { color: var(--np-ink); text-decoration-color: var(--np-rule2); }
.np-article .rp-source-list p { margin: 0 0 .5em; }
.np-article .rp-source-meta { font-size: 14px; color: var(--np-muted); }
.np-page .np-article .rp-return { display: block; width: max-content; margin-top: 8px; font-size: 13.5px; text-decoration: none; }
.np-page .np-article .rp-return:hover { text-decoration: underline; }

/* colophon */
.np-article .rp-colophon { margin-top: 72px; padding-top: 26px; border-top: 1px solid var(--np-ink); font-size: 15px; line-height: 1.65; color: var(--np-muted); }
.np-article .rp-colophon strong { font-weight: 600; color: var(--np-ink); }
.np-article .rp-article-tools { margin-top: 18px; font-size: 14.5px; }

/* related research */
.np-related { margin-top: 96px; padding-inline: var(--n-pad); }
.np-related__in { max-width: calc(var(--np-text-w) + var(--np-g2) + var(--np-notes)); margin: 0 auto; transform: translateX(calc((var(--np-toc) + var(--np-g1)) / 2)); }
.np-related h2 { margin: 0 0 26px; font: 400 clamp(30px, 2.6vw, 40px)/1.05 var(--n-serif); letter-spacing: -.01em; color: var(--np-ink); }
.np-related .rp-next__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--np-ink); }
.np-page .np-related .rp-next__list a { display: grid; grid-template-columns: 200px minmax(0, 1fr) 28px; gap: 6px 24px; align-items: baseline; padding: 18px 0; border-bottom: 1px solid var(--np-rule); color: var(--np-ink); }
.np-related .rp-next__label { font: 500 11px/1.5 var(--n-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--np-muted); }
.np-related .rp-next__title { font: 400 clamp(21px, 1.8vw, 25px)/1.2 var(--n-serif); text-wrap: balance; transition: color .25s; }
.np-related .rp-next__arrow { text-align: right; color: var(--np-faint); transition: transform .3s var(--pl-ease), color .3s; }
.np-related .rp-next__list a:hover .rp-next__title { color: var(--np-lake); }
.np-related .rp-next__list a:hover .rp-next__arrow { transform: translateX(4px); color: var(--np-ink); }

/* ---------------------------------------------------------------- the study: result and data */
.np-result { display: grid; grid-template-columns: var(--np-text-w) var(--np-notes); gap: 0 var(--np-g2); align-items: stretch; }
.np-result__fig { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 22px 40px; align-items: end; margin: 0; padding: 30px 32px 28px; border: 1px solid rgba(22, 24, 29, .12); background: var(--np-card); }
.np-result__num { margin: 0; font: 400 clamp(64px, 7vw, 112px)/.84 var(--n-serif); letter-spacing: -.03em; color: var(--np-faint); white-space: nowrap; }
.np-result__num span { color: var(--np-ink); }
.np-units { display: grid; grid-template-columns: repeat(10, 14px); gap: 6px; justify-content: end; padding-bottom: 6px; }
.np-units i { width: 14px; height: 14px; border: 1px solid rgba(22, 24, 29, .3); }
.np-units i.is-hit { border-color: var(--np-ink); background: var(--np-ink); }
.np-result__fig figcaption { grid-column: 1 / -1; padding-top: 20px; border-top: 1px solid var(--np-rule); }
.np-result__cap { margin: 0; max-width: 34em; font: 400 18px/1.55 var(--n-sans); color: var(--np-ink); }
.np-result__src { margin: 12px 0 0; font: 400 13.5px/1.55 var(--n-sans); color: var(--np-muted); }
.np-page .np-result__src a { color: var(--np-muted); text-decoration: underline; text-decoration-color: var(--np-rule2); text-underline-offset: 3px; }
.np-page .np-result__src a:hover { color: var(--np-ink); text-decoration-color: currentColor; }
.np-data { padding: 24px 0 0; border-top: 1px solid var(--np-ink); }
.np-data__h { margin: 0 0 12px; font: 500 11px/1 var(--n-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--np-muted); }
.np-data__list { list-style: none; margin: 0; padding: 0; }
.np-page .np-data__list a { display: grid; gap: 3px; padding: 11px 0; border-bottom: 1px solid var(--np-rule); color: var(--np-ink); }
.np-data__label { font: 500 14px/1.35 var(--n-sans); }
.np-data__file { font: 400 12px/1.3 var(--n-mono); color: var(--np-muted); overflow-wrap: anywhere; }
.np-page .np-data__list a:hover .np-data__label { color: var(--np-lake); }

/* ---------------------------------------------------------------- products */
.np-sec--first { padding-bottom: 96px; }
.np-prods { display: grid; gap: 112px; }
.np-prod__head { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 20px 64px; align-items: start; padding-top: 28px; border-top: 1px solid var(--np-ink); margin-bottom: 40px; }
.np-prod__name { margin: 0; font: 400 clamp(40px, 4vw, 62px)/1 var(--n-serif); letter-spacing: -.02em; color: var(--np-ink); }
.np-prod__copy p { margin: 0 0 12px; max-width: 36em; font: 400 17px/1.6 var(--n-sans); color: var(--np-muted); }
.np-prod__copy .np-prod__lead { font-size: 19px; color: var(--np-ink); }
.np-prod__go { margin-top: 24px !important; }
.np-mat { padding: clamp(18px, 4vw, 56px) clamp(18px, 4vw, 56px) 22px; border: 1px solid rgba(22, 24, 29, .12);
  background-color: var(--np-card); background-image: radial-gradient(circle, rgba(22, 24, 29, .12) .8px, transparent 1.3px); background-size: 18px 18px; background-position: 9px 9px; }
.np-win { display: flex; max-width: 1120px; margin: 0 auto; }
.np-page .np-win .n-win { box-shadow: 0 0 0 1px rgba(10, 12, 18, .9), inset 0 1px 0 rgba(255, 255, 255, .06), 0 46px 70px -44px rgba(34, 26, 14, .7), 0 14px 26px -16px rgba(34, 26, 14, .4); }
.np-mat__cap { max-width: 1120px; margin: 20px auto 0; font: italic 400 16px/1.2 var(--n-serif); color: var(--np-muted); }

/* editorial rows: products and reviews */
.np-ed { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px 64px; padding: 56px 0 64px; border-top: 1px solid var(--np-rule2); }
.np-ed--first { padding-top: 0; border-top: 0; }
.np-ed--first .np-h3 { font-size: clamp(42px, 4.6vw, 72px); line-height: .98; letter-spacing: -.02em; }
.np-prose { max-width: 40em; }
.np-prose > p { margin: 0 0 1em; font: 400 18px/1.65 var(--n-sans); color: var(--np-text); }
.np-page .np-prose a:not(.np-btn):not(.np-mail) { color: var(--np-lake); text-decoration: underline; text-decoration-color: rgba(49, 83, 140, .35); text-underline-offset: 3px; }
.np-page .np-prose a:not(.np-btn):not(.np-mail):hover { text-decoration-color: currentColor; }
.np-checks, .np-items { list-style: none; margin: 8px 0 0; padding: 0; border-top: 1px solid var(--np-rule); }
.np-checks li { padding: 14px 0 14px 26px; border-bottom: 1px solid var(--np-rule); font: 400 17px/1.55 var(--n-sans); color: var(--np-text); background: linear-gradient(var(--np-ink), var(--np-ink)) 2px 1.32em / 10px 1px no-repeat; }
.np-items li { padding: 18px 0; border-bottom: 1px solid var(--np-rule); font: 400 16.5px/1.6 var(--n-sans); color: var(--np-muted); }
.np-items__t { display: block; margin-bottom: 4px; font: 500 18px/1.4 var(--n-sans); color: var(--np-ink); }
.np-ed--box { margin: 24px 0 64px; padding: 32px; border: 1px solid var(--np-ink); background: var(--np-card); } /* edges on the page's hairlines; 32px inside, 20px on phones */
.np-ed--box .np-actions { margin-top: 8px; }
.np-ed--box .np-prose > :last-child { margin-bottom: 0; } /* the box's padding is the same on every side */
.np-ed--contact { padding-bottom: 0; border-top: 1px solid var(--np-ink); }
.np-ed--contact .np-note { font-size: 15px; }

/* reviews: the stages as a line, durations in serif */
.np-how { padding-top: 24px; }
.np-track { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--np-ink); }
/* Focused review and Full review are alternatives: side by side, split by a dashed rule and an "or" (visual inspection, 7 Nov 2026) */
.np-step--fork { grid-column: span 2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.np-step--fork .np-stage:first-child { padding-right: 32px; }
.np-step--fork .np-stage--alt { border-top: 0; border-left: 1px dashed var(--np-rule2); padding-left: 32px; }
/* "or": 12px in the secondary text colour, set beside the dashed rule rather than on a chip over it (visual QA, 7 Nov 2026) */
.np-step--fork .np-stage--alt::before { content: "or"; position: absolute; right: calc(100% + 8px); top: 44px; font: 500 12px/1 var(--n-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--np-muted); }
.np-step { position: relative; padding: 0 40px 0 0; }
.np-step + .np-step { padding-left: 32px; border-left: 1px solid var(--np-rule); }
.np-step::before { content: ""; position: absolute; top: -5px; left: 0; width: 9px; height: 9px; background: var(--np-ink); }
.np-step + .np-step::before { left: -5px; }
.np-stage { padding: 34px 0 30px; }
.np-stage--alt { position: relative; border-top: 1px dashed var(--np-rule2); }
.np-stage__d { margin: 0 0 18px; font: 400 clamp(52px, 5.4vw, 84px)/.9 var(--n-serif); letter-spacing: -.02em; color: var(--np-faint); }
.np-stage__n { color: var(--np-ink); }
.np-stage__name { margin: 0 0 8px; font: 500 18px/1.35 var(--n-sans); color: var(--np-ink); }
.np-stage__t { margin: 0; max-width: 30em; font: 400 16px/1.6 var(--n-sans); color: var(--np-muted); }
.np-how__foot { margin: 30px 0 0; padding-top: 22px; max-width: 46em; border-top: 1px solid var(--np-rule); font: 400 18px/1.6 var(--n-sans); color: var(--np-text); }

/* ---------------------------------------------------------------- narrower screens */
@media (max-width: 1319px) {
  .np-page { --np-toc: 0px; --np-g1: 0px; --np-text-w: 576px; --np-g2: 40px; --np-notes: 220px; }
  .np-toc { display: none; }
  .np-article .rp-mobile-contents { display: block; margin: 26px 0 0; border-bottom: 1px solid var(--np-rule); font-size: 15px; }
  .np-article .rp-mobile-contents summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 0; cursor: pointer; list-style: none;
    font: 500 11px/1.4 var(--n-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--np-muted); }
  .np-article .rp-mobile-contents summary::-webkit-details-marker { display: none; }
  /* the house marker: a drawn plus that turns into a minus when open, not the browser's triangle */
  .np-article .rp-mobile-contents summary::after { content: ""; flex: none; width: 11px; height: 11px; margin-right: 2px;
    background: linear-gradient(var(--np-ink), var(--np-ink)) center / 11px 1px no-repeat, linear-gradient(var(--np-ink), var(--np-ink)) center / 1px 11px no-repeat; }
  .np-article .rp-mobile-contents[open] summary::after { background: linear-gradient(var(--np-ink), var(--np-ink)) center / 11px 1px no-repeat; }
  .np-article .rp-mobile-contents summary:hover { color: var(--np-ink); }
  .np-article .rp-mobile-contents ol { margin: 0 0 16px; }
  .np-article .rp-mobile-contents li { margin: 0 0 .3em; }
  .np-page .np-article .rp-mobile-contents a { color: var(--np-ink); text-decoration-color: var(--np-rule2); }
  .np-related__in { transform: none; }
}
@media (max-width: 1100px) {
  .np-byline { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 32px; max-width: 520px; }
}
@media (max-width: 1080px) {
  .np-ledes { grid-template-columns: minmax(0, 1fr); max-width: 40em; }
  .np-track { grid-template-columns: minmax(0, 1fr); border-top: 0; border-left: 1px solid var(--np-ink); }
  .np-step--fork { display: block; }
  .np-step--fork .np-stage:first-child { padding-right: 0; }
  .np-step--fork .np-stage--alt { border-left: 0; border-top: 0; padding-left: 0; }
  .np-step--fork .np-stage--alt::after { content: ""; position: absolute; top: 0; left: 30px; right: 0; border-top: 1px dashed var(--np-rule2); }
  .np-step--fork .np-stage--alt::before { right: auto; left: 0; top: -6px; }
  .np-step, .np-step + .np-step { padding: 0 0 0 28px; border-left: 0; }
  .np-step::before, .np-step + .np-step::before { top: 38px; left: -5px; }
  .np-stage { padding: 28px 0; }
  .np-step + .np-step .np-stage:first-child { border-top: 1px solid var(--np-rule); }
  /* each stage as a row across the width: duration and name on the left, what happens on the right */
  .np-stage { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: auto 1fr; gap: 0 48px; }
  .np-stage__d, .np-stage__name { grid-column: 1; }
  .np-stage__t { grid-column: 2; grid-row: 1 / span 2; align-self: start; max-width: 36em; padding-top: 8px; } /* each description starts level with its duration (visual QA P2-7) */
}
@media (min-width: 901px) and (max-width: 1080px) {
  /* the words start on the same line as the section's intro above (its head splits 1.1 : 1 with a 48px gap) */
  .np-stage { grid-template-columns: calc((100% - 19px) * 1.1 / 2.1 - 29px) minmax(0, 1fr); }
}
@media (max-width: 1180px) {
  .np-line, .np-tests { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 48px; } /* the plate keeps a readable size */
}
@media (max-width: 900px) {
  .np-line, .np-tests { grid-template-columns: minmax(0, 1fr); }
  .np-line .np-plate { box-sizing: border-box; width: 100%; max-width: none; } /* the plate fills the column, with no empty band beside it (visual QA P2-8) */
}
@media (max-width: 1039px) {
  .np-grid { display: block; max-width: 680px; margin: 0 auto; }
  .np-sn { display: none; }
  .np-result { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .np-article .rp-table-wrap.np-wide { margin-right: 0; }
  .np-plate--text { max-width: none; } /* the plate fills the reading column */
  .np-related__in { max-width: calc(680px - 2 * var(--n-pad)); } /* the article column's own width, so both share one left edge */
}
@media (max-width: 900px) {
  .np-paper { padding: 136px 0 176px; }
  .np-head, .np-ed, .np-prod__head { grid-template-columns: minmax(0, 1fr); }
  .np-head { gap: 18px; margin-bottom: 36px; }
  .np-sec { padding-bottom: 96px; }
  .np-ed { gap: 18px; padding: 40px 0 48px; }
  .np-ed--first { padding-top: 0; }
  .np-ed--box { padding: 32px; }
  .np-prods { gap: 80px; }
  .np-prod__head { margin-bottom: 24px; }
  .np-mat { margin-inline: calc(-1 * var(--n-pad) + 8px); padding: 10px 10px 14px; }
  .np-mat__cap { margin-top: 12px; padding-left: 4px; }
  .np-page .np-row a { grid-template-columns: auto minmax(0, 1fr); gap: 10px 16px; padding: 22px 0; }
  .np-row__body { grid-column: 1 / -1; }
  .np-row .np-arrow { display: none; }
}
@media (max-width: 640px) {
  .np-mast { padding-top: 32px; }
  .np-crumb { margin-bottom: 24px; }
  .np-title { font-size: clamp(36px, 10.4vw, 48px); line-height: 1.04; }
  .np-title--big { font-size: clamp(46px, 13vw, 64px); line-height: .98; }
  .np-dek { margin-top: 20px; font-size: 17px; }
  .np-mast__act .np-btn { width: auto; } /* one button rule on every width: sized to its words, arrow beside them */
  .np-article { font-size: 17.5px; line-height: 1.68; }
  .np-article h2 { margin-top: 2em; font-size: 30px; }
  .np-article .rp-abstract { font-size: 19px; }
  .np-plate--text { padding: 10px; }
  .np-byline { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 20px; margin-top: 30px; }
  .np-article .rp-limits__list > div { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  /* table cards keep the page's 20px gutter */
  .np-article .rp-table-wrap, .np-article .rp-table-wrap.np-wide { margin-inline: 0; padding: 22px 18px 16px; overflow-x: visible; }
  .np-article .rp-table-wrap table, .np-article .rp-table-wrap tbody, .np-article .rp-table-wrap tr, .np-article .rp-table-wrap td { display: block; width: auto; }
  .np-article .rp-table-wrap thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .np-article .rp-table-wrap caption { display: block; padding-bottom: 12px; }
  .np-article .rp-table-wrap tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; padding: 14px 0 16px; border-bottom: 1px solid var(--np-rule); }
  .np-article .rp-table-wrap td { grid-column: 1 / -1; }
  .np-article .rp-table-wrap td.np-yes, .np-article .rp-table-wrap td.np-no { grid-column: auto; align-self: end; } /* short yes/no answers side by side, on one line */
  .np-article .rp-table-wrap tbody tr:last-child { border-bottom: 0; padding-bottom: 4px; }
  .np-article .rp-table-wrap tr:has(.np-group) { padding: 0; border-bottom: 0; }
  .np-article .rp-table-wrap td { padding: 2px 0; border: 0; }
  .np-article .rp-table-wrap td[data-label]::before { content: attr(data-label); display: block; position: static; width: auto; margin: 10px 0 2px; white-space: normal;
    font: 500 13px/1.4 var(--n-sans); color: rgba(22, 24, 29, .72); }
  .np-article .rp-table-wrap td[data-label]:first-child::before { display: none; }
  .np-article .rp-table-wrap td[data-label]:first-child { font-weight: 500; color: var(--np-ink); }
  .np-article .rp-table-wrap td.np-group { padding: 20px 0 8px; border-bottom: 1px solid var(--np-rule2); }
  .np-article .rp-table-wrap tbody tr:first-child td.np-group { padding-top: 8px; }
  .np-article .rp-table-wrap td code.np-wrap { white-space: normal; }
  .np-result__fig { grid-template-columns: minmax(0, 1fr); padding: 22px 18px 20px; gap: 18px; }
  .np-units { justify-content: start; grid-template-columns: repeat(10, 18px); }
  .np-units i { width: 18px; height: 18px; }
  .np-page .np-related .rp-next__list a { grid-template-columns: minmax(0, 1fr) 20px; }
  .np-related .rp-next__label { grid-column: 1 / -1; }
  .np-line { padding: 36px 0 40px; }
  .np-line .np-plate { max-width: none; }
  .np-stage { display: block; }
  .np-stage__t { max-width: none; }
  .np-line__list a { gap: 4px 14px; }
  .np-stage__d { font-size: 52px; }
  .np-page .np-mail { font-size: 24px; overflow-wrap: anywhere; }
}
.np-data__label { text-wrap: balance; }
.np-data__label > span[aria-hidden] { white-space: nowrap; }

/* ================================================================ how we work: a lab protocol (7 Nov 2026)
   The checks run as a sequence on one line, the kinds of piece sit side by side, the counts stand as big numbers over
   the date they were counted, and the build log reads as a dated register. */
.np-mast__act { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 28px; }
.np-page .np-mast__link { padding: 4px 0; border-bottom: 1px solid rgba(255, 255, 255, .32); font: 500 12px/1.4 var(--n-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--n-text); transition: border-color .2s, color .2s; }
.np-page .np-mast__link:hover { border-color: #fff; color: #fff; }
.np-ed--lead .np-prose > p { font-size: 20px; line-height: 1.6; color: var(--np-ink); }

.np-kinds, .np-proc { padding: 56px 0 72px; border-top: 1px solid var(--np-rule2); }
.np-page--method .np-ed { padding: 56px 0 72px; }
.np-page--method .np-ed--first { padding-top: 0; }
/* the interests box sits on the page's hairlines, like every boxed note (visual QA, 7 Nov 2026) */
.np-page--method .np-ed--box, .np-page--series .np-ed--box { margin: 8px 0 64px; padding: 32px; }
.np-kinds > .np-h3, .np-proc > .np-h3 { margin-bottom: 40px; }
.np-kinds__list, .np-proc__list, .np-stats, .np-facts, .np-log, .np-routes, .np-board__list { list-style: none; margin: 0; padding: 0; }
.np-kinds__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 48px; }
.np-kind { padding-top: 24px; border-top: 1px solid var(--np-ink); }
.np-kind p { margin: 0; font: 400 16.5px/1.62 var(--n-sans); color: var(--np-muted); }
/* each kind's name runs into its sentence, so the sentence still reads as written */
.np-kind strong { font: 400 1.62em/1 var(--n-serif); letter-spacing: -.01em; color: var(--np-ink); }
.np-kinds__note { max-width: 46em; margin: 40px 0 0; padding-top: 18px; border-top: 1px solid var(--np-rule); font: 400 16px/1.6 var(--n-sans); color: var(--np-muted); }
.np-page .np-kind a, .np-page .np-kinds__note a, .np-page .np-proc a, .np-page .np-stat a, .np-page .np-facts a, .np-page .np-log a, .np-page .np-route a:not(.np-textlink), .np-page .np-intro a {
  color: var(--np-lake); text-decoration: underline; text-decoration-color: rgba(49, 83, 140, .35); text-underline-offset: 3px; }
.np-page .np-kind a:hover, .np-page .np-kinds__note a:hover, .np-page .np-proc a:hover, .np-page .np-stat a:hover, .np-page .np-facts a:hover, .np-page .np-log a:hover, .np-page .np-intro a:hover { text-decoration-color: currentColor; }

/* the checks, in the order they run: one line, a square where each starts */
.np-proc__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--np-ink); }
.np-proc__step { position: relative; padding: 32px 40px 0 0; }
.np-proc__step + .np-proc__step { padding-left: 32px; border-left: 1px solid var(--np-rule); }
.np-proc__step::before { content: ""; position: absolute; top: -5px; left: 0; width: 9px; height: 9px; background: var(--np-ink); }
.np-proc__step + .np-proc__step::before { left: -5px; }
.np-proc__step p { margin: 0; max-width: 30em; font: 400 17px/1.62 var(--n-sans); color: var(--np-text); }

.np-prose > p.np-tenet { padding-left: 20px; border-left: 2px solid var(--np-ink); color: var(--np-ink); }
.np-links { display: flex; flex-wrap: wrap; gap: 10px 26px; margin: 28px 0 0; padding-top: 18px; border-top: 1px solid var(--np-rule); }
.np-page .np-prose .np-links > a:not(.np-btn):not(.np-mail) { padding-bottom: 2px; border-bottom: 1px solid var(--np-rule2); font: 500 12px/1.4 var(--n-mono); letter-spacing: .08em; text-transform: uppercase; text-decoration: none; color: var(--np-ink); }
.np-page .np-prose .np-links > a:not(.np-btn):not(.np-mail):hover { border-color: var(--np-ink); }

/* where we are: the counts large, the day they were counted as their source line */
.np-where { padding: 56px 0 88px; border-top: 1px solid var(--np-ink); scroll-margin-top: 24px; }
.np-where > .np-h2 { margin-bottom: 56px; }
.np-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 48px; }
.np-stat { padding-top: 26px; border-top: 1px solid var(--np-ink); font: 400 16.5px/1.6 var(--n-sans); color: var(--np-muted); }
.np-stat__n { display: block; margin: 0 0 22px; font: 400 clamp(96px, 11vw, 168px)/.8 var(--n-serif); letter-spacing: -.04em; color: var(--np-ink); font-variant-numeric: lining-nums; }
.np-stat__t { display: block; max-width: 24em; }
.np-src { margin: 40px 0 0; padding-top: 14px; border-top: 1px solid var(--np-rule); font: 400 12.5px/1.5 var(--n-mono); letter-spacing: .02em; color: var(--np-muted); }
.np-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 48px; margin-top: 56px; }
.np-facts li { padding: 20px 0; border-top: 1px solid var(--np-rule2); font: 400 17px/1.6 var(--n-sans); color: var(--np-text); }

/* the build log: a dated register, a square on the line for each entry */
.np-logsec { padding: 56px 0 88px; border-top: 1px solid var(--np-rule2); scroll-margin-top: 24px; }
.np-log { position: relative; border-top: 1px solid var(--np-ink); }
.np-log::before { content: ""; position: absolute; top: 0; bottom: 0; left: 240px; border-left: 1px solid var(--np-rule2); }
.np-log__row { display: grid; grid-template-columns: 216px minmax(0, 1fr); gap: 4px 52px; align-items: baseline; padding: 16px 0; border-bottom: 1px solid var(--np-rule); }
.np-log__row--year { border-top: 1px solid var(--np-ink); margin-top: -1px; }
.np-log__d { font: 400 13px/1.5 var(--n-mono); letter-spacing: .01em; color: var(--np-muted); font-variant-numeric: tabular-nums; }
.np-log__t { position: relative; max-width: 44em; font: 400 17px/1.55 var(--n-sans); color: var(--np-text); }
.np-log__t::before { content: ""; position: absolute; top: .55em; left: -31px; width: 7px; height: 7px; background: var(--np-ink); }

.np-page--method .np-ed--coda { border-top: 1px solid var(--np-ink); padding-bottom: 0; }
.np-prose > p.np-coda { margin: 30px 0 0; font: 400 clamp(36px, 3.6vw, 56px)/1.02 var(--n-serif); letter-spacing: -.018em; color: var(--np-ink); text-wrap: balance; }

/* ================================================================ collaborate: letterhead (7 Nov 2026)
   One sheet on the desk: the lab's name and email at its head over a double rule, the routes as plain columns,
   and a sign-off with the email set like a signature. */
.np-sheet { margin: 0; padding: 0 clamp(20px, 5.6vw, 88px) clamp(48px, 5.6vw, 88px); border: 1px solid rgba(22, 24, 29, .14); background: var(--np-card);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8), 0 60px 90px -70px rgba(34, 26, 14, .6), 0 18px 34px -26px rgba(34, 26, 14, .35); }
.np-sheet__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 32px; margin-bottom: 80px; padding: 34px 0 24px; border-bottom: 3px double var(--np-ink); }
.np-sheet__brand { display: flex; align-items: center; gap: 12px; margin: 0; color: var(--np-ink); }
.np-sheet__mark { flex: none; width: 24px; height: 27px; }
.np-sheet__word { font: italic 400 30px/1 var(--n-serif); letter-spacing: -.01em; }
.np-sheet__lab { padding-top: 6px; font: 500 11px/1 var(--n-mono); letter-spacing: .32em; text-transform: uppercase; color: var(--np-muted); }
.np-page .np-sheet__mail { padding-bottom: 2px; border-bottom: 1px solid var(--np-rule2); font: 400 13px/1.4 var(--n-mono); letter-spacing: .02em; color: var(--np-ink); transition: border-color .2s; }
.np-page .np-sheet__mail:hover { border-color: var(--np-ink); }
.np-sheet__routes { padding-bottom: 96px; }
.np-routes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--np-ink); }
.np-route { display: flex; flex-direction: column; padding: 30px 36px 0 0; }
.np-route + .np-route { padding-left: 32px; border-left: 1px solid var(--np-rule); }
.np-route__name { margin: 0 0 14px; font: 400 clamp(28px, 2.4vw, 36px)/1.04 var(--n-serif); letter-spacing: -.012em; color: var(--np-ink); }
.np-route__t { margin: 0 0 26px; max-width: 26em; font: 400 16.5px/1.62 var(--n-sans); color: var(--np-muted); }
.np-route__go { margin: auto 0 0; }
.np-page .np-route__go .np-textlink { font-size: 16px; }
.np-sheet .np-ed:last-child { padding-bottom: 0; }
.np-ed--sign { border-top-color: var(--np-ink); scroll-margin-top: 24px; }
.np-ed--sign .np-mail { margin-top: 28px; }
.np-ed--sign .np-note { margin-top: 22px; }
.np-checks + .np-note { margin-top: 20px; }

/* the enquiry dialog in paper and ink: square, Plex, the homepage's mono buttons (fields, names and script unchanged) */
.np-page #lugano-lead-dialog { --lead-ink: #16181d; --lead-muted: #55585f; --lead-paper: #f3efe6; --lead-card: #fbf9f4; --lead-blue: #16181d; --lead-blue-deep: #16181d;
  --lead-lake: rgba(49, 83, 140, .1); --lead-line: rgba(22, 24, 29, .2); border: 1px solid #16181d; border-radius: 0; box-shadow: 0 40px 120px rgba(0, 0, 0, .55); }
.np-page #lugano-lead-dialog::backdrop { background: rgba(5, 6, 9, .82); backdrop-filter: blur(3px); }
.np-page .lugano-lead__frame { background: var(--pl-paper); scrollbar-color: rgba(22, 24, 29, .3) transparent; }
.np-page .lugano-lead__frame::before { display: none; }
.np-page .lugano-lead__brand, .np-page .lugano-lead__eyebrow, .np-page .lugano-lead__progress, .np-page .lugano-lead__context, .np-page .lugano-lead__reference span {
  font-family: var(--n-mono); font-weight: 500; letter-spacing: .14em; color: var(--np-ink); }
.np-page .lugano-lead__brand span { color: var(--np-faint); }
.np-page .lugano-lead__progress-count { font-size: 11px; color: var(--np-muted); }
.np-page .lugano-lead__close { border-radius: 0; background: transparent; }
.np-page .lugano-lead__close:hover { border-color: var(--np-ink); background: var(--np-card); transform: none; }
.np-page .lugano-lead__progress-rule { background: rgba(22, 24, 29, .14); }
.np-page .lugano-lead__progress-rule span { background: var(--np-ink); }
.np-page .lugano-lead__step > h2, .np-page .lugano-lead__success h2 { font: 400 clamp(30px, 3.4vw, 38px)/1.04 var(--n-serif); letter-spacing: -.015em; }
.np-page .lugano-lead__field-group > legend, .np-page .lugano-lead__field > span:first-child { font-weight: 500; letter-spacing: 0; }
.np-page .lugano-lead__choice > span, .np-page .lugano-lead__field input, .np-page .lugano-lead__field select, .np-page .lugano-lead__field textarea,
.np-page .lugano-lead__priority-list label span, .np-page .lugano-lead__error-summary, .np-page .lugano-lead__mode-notice, .np-page .lugano-lead__fallback { border-radius: 0; }
.np-page .lugano-lead__choice > span, .np-page .lugano-lead__field input, .np-page .lugano-lead__field select, .np-page .lugano-lead__field textarea { background-color: var(--np-card); box-shadow: none; }
.np-page .lugano-lead__choice b { font-weight: 500; }
.np-page .lugano-lead__choice:hover > span { border-color: var(--np-ink); background: #fff; transform: none; }
.np-page .lugano-lead__choice input:checked + span { border-color: var(--np-ink); background: var(--np-ink); box-shadow: none; }
.np-page .lugano-lead__choice input:checked + span b, .np-page .lugano-lead__choice input:checked + span small { color: var(--pl-paper); }
.np-page .lugano-lead__field input:hover, .np-page .lugano-lead__field textarea:hover, .np-page .lugano-lead__field select:hover { border-color: rgba(22, 24, 29, .45); }
.np-page .lugano-lead__field input:focus, .np-page .lugano-lead__field textarea:focus, .np-page .lugano-lead__field select:focus { border-color: var(--np-ink); background-color: #fff; box-shadow: 0 0 0 3px rgba(49, 83, 140, .18); }
.np-page .lugano-lead__field textarea::placeholder { color: #75777d; }
.np-page .lugano-lead__button { min-height: 46px; padding: 13px 20px; border-radius: 0; font: 500 12px/1 var(--n-mono); letter-spacing: .1em; text-transform: uppercase; box-shadow: none; }
.np-page .lugano-lead__button--primary { border-color: var(--np-ink); background: var(--np-ink); color: var(--pl-paper); }
.np-page .lugano-lead__button--primary:hover:not(:disabled) { border-color: #000; background: #000; transform: none; }
.np-page .lugano-lead__button--secondary { border-color: rgba(22, 24, 29, .3); color: var(--np-ink); }
.np-page .lugano-lead__button--secondary:hover:not(:disabled) { border-color: var(--np-ink); background: var(--np-card); }
.np-page .lugano-lead__actions { background: linear-gradient(to bottom, rgba(243, 239, 230, 0), var(--pl-paper) 14px); }
.np-page .lugano-lead__mode-notice, .np-page .lugano-lead__fallback { background: rgba(22, 24, 29, .06); color: var(--np-ink); }
.np-page .lugano-lead :focus-visible, .np-page .lugano-lead__choice input:focus-visible + span { outline: 2px solid var(--np-lake); outline-offset: 3px; }
.np-page .lugano-lead__privacy a, .np-page .lugano-lead__fallback a { color: var(--np-lake); }

/* ================================================================ experiment designs (7 Nov 2026)
   The essay frame, with the ten designs on a board at the top, the shared rules as a protocol sheet, and each design as
   its own section: its research line, its question, the words that say what would count against its essay set apart
   with an ink rule, and its schedule as a formula. */
.np-board { margin: 0 0 8px; }
.np-board__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; }
.np-page .np-board__list a { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px 16px; align-items: baseline; height: 100%; padding: 18px 0 24px; border-top: 1px solid var(--np-ink); color: var(--np-ink); }
.np-board__line { grid-column: 1 / -1; font: 500 11px/1.4 var(--n-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--np-muted); }
.np-board__q { font: 400 clamp(21px, 1.7vw, 25px)/1.18 var(--n-serif); text-wrap: balance; transition: color .25s; }
.np-board__list a:hover .np-board__q { color: var(--np-lake); }
.np-board__list a:hover .np-arrow { transform: translateY(3px); color: var(--np-ink); }
.np-page--designs .np-byline { margin-top: 32px; padding-top: 28px; border-top: 1px solid var(--np-rule); }

.np-article .np-rules { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; margin: 30px calc(-1 * (var(--np-g2) + var(--np-notes))) 1.6em 0; padding: 0; list-style: none; border-top: 1px solid var(--np-ink); }
.np-article .np-rules li { margin: 0; padding: 18px 0 20px; border-bottom: 1px solid var(--np-rule); font-size: 15.5px; line-height: 1.6; color: var(--np-muted); }
.np-article .np-rules em { display: block; margin-bottom: 6px; font: italic 400 22px/1.2 var(--n-serif); color: var(--np-ink); text-wrap: balance; }

.np-article .np-design { position: relative; margin-top: 96px; padding-top: 26px; } /* section voids cap at 96px; it holds its own notes, like every chapter, so none crosses the next design's rule (visual QA P2-3) */
.np-article .np-design::before { content: ""; position: absolute; top: 0; left: 0; right: calc(-1 * (var(--np-g2) + var(--np-notes))); border-top: 1px solid var(--np-ink); }
.np-article .np-design__line { margin: 0 0 16px; font: 500 11px/1.4 var(--n-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--np-muted); }
.np-article .np-design > h2 { margin: 0 0 .85em; font-size: clamp(34px, 3.1vw, 46px); line-height: 1.04; letter-spacing: -.016em; }
.np-article .np-design .rp-update { margin: 0 0 1.3em; }
.np-article .np-wrong { margin: 0 0 1.3em; padding: 2px 0 2px 22px; border-left: 3px solid var(--np-ink); }
.np-article .np-wrong p, .np-article .np-wrong ul { font-size: 19px; line-height: 1.6; color: var(--np-ink); }
.np-article .np-wrong > :last-child { margin-bottom: 0; }
.np-article .np-sched { margin: 1.5em 0; padding: 15px 0 16px; border-top: 1px solid var(--np-ink); border-bottom: 1px solid var(--np-rule2); color: var(--np-ink); }
.np-sched__f { padding: .08em .34em; background: rgba(22, 24, 29, .065); font: 500 .86em/1.5 var(--n-mono); letter-spacing: -.01em; -webkit-box-decoration-break: clone; box-decoration-break: clone; }

@media (max-width: 1039px) {
  .np-article .np-rules { margin-right: 0; }
  .np-article .np-design::before { right: 0; }
}
/* the three ways in stay as columns down to 960px, then become full-width rows: name on the left, words and link on
   the right; on phones, one column (visual QA, 7 Nov 2026) */
@media (max-width: 1200px) {
  .np-route { padding-right: 28px; }
  .np-route + .np-route { padding-left: 28px; }
}
@media (max-width: 959px) {
  .np-routes { grid-template-columns: minmax(0, 1fr); border-top: 0; }
  .np-route, .np-route + .np-route { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: auto 1fr; gap: 0 40px; align-items: start;
    padding: 28px 0 32px; border-left: 0; border-top: 1px solid var(--np-ink); }
  .np-route + .np-route { border-top-color: var(--np-rule2); }
  .np-route__name { grid-column: 1; grid-row: 1 / span 2; margin: 0; }
  .np-route__t { grid-column: 2; max-width: none; margin-bottom: 20px; }
  .np-route__go { grid-column: 2; margin-top: 0; }
}
@media (max-width: 640px) {
  .np-route, .np-route + .np-route { grid-template-columns: minmax(0, 1fr); padding: 24px 0 28px; }
  .np-route__name, .np-route__t, .np-route__go { grid-column: 1; grid-row: auto; }
  .np-route__name { margin-bottom: 12px; }
}
@media (max-width: 900px) {
  .np-facts { grid-template-columns: minmax(0, 1fr); }
  .np-kinds__list, .np-stats { grid-template-columns: minmax(0, 1fr); }
  .np-kind + .np-kind, .np-stat + .np-stat { margin-top: 36px; }
  .np-proc__list { grid-template-columns: minmax(0, 1fr); border-top: 0; border-left: 1px solid var(--np-ink); }
  .np-proc__step, .np-proc__step + .np-proc__step { padding: 0 0 32px 28px; border-left: 0; }
  .np-proc__step:last-child { padding-bottom: 0; }
  .np-proc__step::before, .np-proc__step + .np-proc__step::before { top: .5em; left: -5px; }
  .np-kind p, .np-kinds__note { max-width: 40em; }
  .np-log::before { left: 3px; }
  .np-log__row { grid-template-columns: minmax(0, 1fr); padding: 14px 0 16px 26px; }
  .np-log__t::before { top: -1.6em; left: -26px; }
  .np-sheet__head { margin-bottom: 56px; }
  .np-sheet__routes { padding-bottom: 48px; }
}
@media (max-width: 640px) {
  .np-board__list { grid-template-columns: minmax(0, 1fr); }
  .np-page .np-board__list a { padding: 16px 0 18px; }
  .np-article .np-rules { grid-template-columns: minmax(0, 1fr); }
  .np-article .np-design { margin-top: 80px; }
  .np-article .np-design > h2 { font-size: 32px; }
  .np-article .np-wrong { padding-left: 16px; }
  .np-article .np-wrong p, .np-article .np-wrong ul { font-size: 18px; }
  .np-stat__n { font-size: 104px; }
  .np-where, .np-logsec, .np-kinds, .np-proc { padding-top: 44px; }
  .np-sheet { margin-inline: calc(-1 * var(--n-pad) + 8px); padding-inline: 18px; }
  .np-ed--box, .np-page--method .np-ed--box, .np-page--series .np-ed--box { padding: 24px 20px; }
  .np-sheet__head { padding-top: 24px; }
  .np-sheet__word { font-size: 26px; }
  .np-prose > p.np-coda { font-size: 38px; }
}

/* ================================================================ privacy, security, terms: reading documents (7 Nov 2026)
   No flourish: the essays' column and contents rail, subheads on a hairline, and the closing note on a card. */
.np-nowrap { white-space: nowrap; }
.np-page--legal .np-paper { padding-bottom: 200px; }
.np-legal__sec > h2:first-child { margin-top: 0; }
.np-legal h3 { margin: 2.1em 0 .55em; padding-top: 22px; border-top: 1px solid var(--np-rule); font: 500 19px/1.35 var(--n-sans); color: var(--np-ink); scroll-margin-top: 24px; }
.np-legal__sec > h2 + h3 { margin-top: 1.2em; }
.np-legal__close { margin-top: 80px; padding: 36px 40px 40px; border: 1px solid var(--np-ink); background: var(--np-card); scroll-margin-top: 24px; }
.np-article .np-legal__close h2 { margin: 0 0 .5em; font-size: clamp(28px, 2.3vw, 34px); }
.np-legal__close > p:not(.np-actions):not(.np-note) { font-size: 17.5px; }
.np-legal__close .np-mail { margin: 4px 0 0; }
.np-legal__close .np-actions { margin: 26px 0 0; }
.np-legal__close .np-note { margin: 24px 0 0; padding-top: 16px; border-top: 1px solid var(--np-rule); }
/* buttons and the email keep their own look inside a reading column */
.np-page .np-article a.np-btn, .np-page .np-article a.np-mail { color: var(--np-ink); text-decoration: none; }
.np-page .np-article a.np-btn:hover { color: var(--pl-paper); }

/* ================================================================ kinds of piece: the library's labels as cards (7 Nov 2026) */
.np-labels { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 72px 48px; }
.np-label { padding-top: 24px; border-top: 1px solid var(--np-ink); scroll-margin-top: 24px; }
.np-label__name { margin: 0 0 18px; font: 400 clamp(36px, 3.2vw, 50px)/1 var(--n-serif); letter-spacing: -.018em; color: var(--np-ink); }
.np-label__t { margin: 0; font: 400 17px/1.62 var(--n-sans); color: var(--np-text); }
.np-label__lib { margin: 22px 0 0; padding-top: 14px; border-top: 1px solid var(--np-rule); font: 400 14.5px/1.65 var(--n-sans); color: var(--np-muted); }
.np-page .np-label__lib a { color: var(--np-ink); text-decoration: underline; text-decoration-color: var(--np-rule2); text-underline-offset: 3px; }
.np-page .np-label__lib a:hover { color: var(--np-lake); text-decoration-color: currentColor; }
.np-page--series .np-ed--never { margin-top: 120px; scroll-margin-top: 24px; }

/* ================================================================ evidence: the moved notice and where each part went (7 Nov 2026) */
.np-page--moved .np-paper { padding: 152px 0 184px; }
.np-moved { max-width: 880px; margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--np-ink); }
.np-page .np-moved a { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 16px; padding: 22px 0; border-bottom: 1px solid var(--np-rule); color: var(--np-ink); }
.np-moved__t { font: 400 clamp(26px, 2.4vw, 34px)/1.15 var(--n-serif); letter-spacing: -.01em; transition: color .25s; }
.np-moved a:hover .np-moved__t { color: var(--np-lake); }
.np-moved a:hover .np-arrow { transform: translateX(4px); color: var(--np-ink); }

@media (max-width: 1080px) {
  .np-labels { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px 40px; }
}
@media (max-width: 640px) {
  .np-labels { grid-template-columns: minmax(0, 1fr); gap: 48px; }
  .np-label__name { font-size: 38px; }
  .np-legal__close { margin-inline: 0; padding: 28px 20px 30px; } /* on the page's 20px gutter, like every boxed note (visual QA P2-4) */
  .np-legal h3 { font-size: 18px; }
  .np-page--series .np-ed--never { margin-top: 88px; }
}
