/* ============================================================================
   NOURA LAWYERS — MAGAZINE PRINT / PDF STYLESHEET
   ----------------------------------------------------------------------------
   Turns any /insights/, /knowledge/, /guides/, /practices/ or /jurisdictions/
   page into a branded editorial PDF:

       cover  →  two-column editorial interior  →  colophon / back cover

   Paired with /assets/print.js, which clones the article into #nl-print-doc
   before printing. Everything outside that node is hidden at print time, so
   output is identical regardless of how varied the live page markup is.

   Stock is warm cream, ink is Court Navy, Lawyer Gold marks structure.

   The cream field is a plain background-color on html/body, which relies on
   backgrounds being printed. The server route (/api/pdf) always renders with
   printBackground on, so that holds. The fallback route — the browser's own
   print dialog — ships with "Background graphics" OFF in Chrome, and there
   the sheet prints white; the layout and every rule still hold, it just
   loses the warmth. That is the accepted cost of the fallback.
   ============================================================================ */

/* ── SCREEN: the trigger button ─────────────────────────────────────────── */

.nlp-trigger {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px 9px 13px;
  font-family: var(--font-sans, "Geist", system-ui, sans-serif);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gold, #C9A961);
  background: rgba(201, 169, 97, .07);
  border: 1px solid rgba(201, 169, 97, .28);
  border-radius: 999px;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  transition:
    background 160ms cubic-bezier(.23, 1, .32, 1),
    border-color 160ms cubic-bezier(.23, 1, .32, 1),
    transform 160ms cubic-bezier(.23, 1, .32, 1);
}
.nlp-trigger svg { width: 15px; height: 15px; flex: none; }

@media (hover: hover) and (pointer: fine) {
  .nlp-trigger:hover {
    background: rgba(201, 169, 97, .14);
    border-color: rgba(201, 169, 97, .5);
  }
}
.nlp-trigger:active { transform: scale(.97); }

/* Rendering takes a few seconds server-side; the button has to say so. */
.nlp-trigger.is-busy {
  cursor: progress;
  opacity: .72;
}
.nlp-trigger.is-busy svg {
  animation: nlp-spin 900ms linear infinite;
  transform-origin: center;
}
@keyframes nlp-spin {
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .nlp-trigger.is-busy svg { animation: none; }
}
.nlp-trigger:focus-visible {
  outline: 2px solid var(--gold, #C9A961);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .nlp-trigger { transition: none; }
  .nlp-trigger:active { transform: none; }
}

/* Standalone bar, used when there is no .share-bar to dock into */
.nlp-trigger-bar {
  display: flex;
  justify-content: flex-end;
  margin: 22px 0 26px;
}

/* The print document never shows on screen */
#nl-print-doc { display: none; }

/* ── PRINT ──────────────────────────────────────────────────────────────── */

/* The stock colour belongs on @page, not on html/body: a background on
   html/body only paints the BODY BOX, which the page margins inset, so the
   sheet printed cream in the text area and bare white in the margins.

   Margins themselves are set by the renderer (functions/api/pdf.ts), not here.
   They have to be, because the running header and page numbers are drawn by
   Chrome into the page-margin boxes, and that mechanism only reads the
   renderer's margin values. */
@page {
  size: A4;
  background: #FAF7F1;
}

@media print {

  /* Hide the entire live page; print only our constructed document. */
  body > *:not(#nl-print-doc) { display: none !important; }
  #nl-print-doc { display: block !important; }

  /* The site dresses every page in two full-viewport grain overlays
     (body::before / body::after — position:fixed, an feTurbulence SVG as a
     repeating background). Hiding body's *children* does not touch them.
     Left in, Chrome rasterises each one into a full-page RGBA bitmap plus an
     alpha mask FOR EVERY SHEET: four images per page, ~6MB each, which turned
     an 18-page guide into a 110MB download. Grain is a screen affectation
     anyway — paper has its own. */
  body::before, body::after { display: none !important; content: none !important; }

  html, body {
    /* Belt and braces behind the @page background above. */
    background: #FAF7F1 !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  #nl-print-doc {
    font-family: "Geist", "Inter", system-ui, -apple-system, sans-serif;
    font-weight: 300;
    font-size: 10.5pt;
    line-height: 1.62;
    /* CRITICAL fix: the embedded serif was substituting fi/fl/ff/ti/tt
       ligatures whose glyphs were dropped by the subsetter, so "first" printed
       as "rst", "matter" as "ma er", "office" as "o ice" — visible holes in
       every paragraph. Disable ligature substitution so the base letterforms
       (which ARE embedded) are used. */
    font-variant-ligatures: none;
    -webkit-font-variant-ligatures: none;
    font-feature-settings: "liga" 0, "dlig" 0, "clig" 0, "calt" 0;
    /* One ink for every word of running text. Body copy used to sit at 86%
       navy while bold runs and headings sat at 100%, so a paragraph carried
       two greys and looked unevenly printed. Weight now carries emphasis;
       colour does not. */
    color: #0F1B2D;
    /* The renderer sets zero LEFT/RIGHT page margins so the stock colour can
       reach both edges — content cannot paint into a page margin. The text
       inset it would have provided is applied here instead. */
    padding: 0 16mm;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  #nl-print-doc * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  /* Belt and braces alongside the class strip in print.js: nothing cloned out
     of the live page gets to carry a screen-theme ink colour onto paper. The
     editorial colours below re-assert themselves at higher specificity. */
  #nl-print-doc .nlp-col :not(strong):not(b):not(h2):not(h3):not(h4):not(h5):not(h6):not(a):not(summary):not(th) {
    color: inherit;
  }

  /* Same problem as the ink, one layer out: knowledge and practice pages are
     built from card components whose dark Court Navy surfaces are set by
     class, not by an inline style, so stripping [style] does not reach them.
     Left in, they print as navy slabs with cream text sitting on cream paper
     inside them. Everything cloned starts transparent and unframed; the few
     surfaces this stylesheet actually wants are re-declared below. */
  #nl-print-doc .nlp-col *,
  #nl-print-doc .nlp-col *::before,
  #nl-print-doc .nlp-col *::after {
    background: none !important;
    box-shadow: none !important;
    text-shadow: none !important;
    filter: none !important;
    border-radius: 0 !important;
  }

  /* Entry animations must not survive into print.
     The FAQ answers carry `animation: faq-reveal` whose from-state is
     opacity:0. A headless renderer captures frame zero, so every answer
     printed blank — the questions appeared, the answers silently did not, and
     the reserved space left half-empty pages. Same hazard for any
     scroll-reveal state (opacity/transform/filter set until JS marks it seen);
     no JS runs on the cloned copy, so those would stick too.

     Scoped to .nlp-col — cloned page content only — so the cover and contents
     keep their own deliberate opacities. */
  #nl-print-doc .nlp-col *,
  #nl-print-doc .nlp-col *::before,
  #nl-print-doc .nlp-col *::after {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
    visibility: visible !important;
    max-height: none !important;
  }

  /* Headings, quotes and tabular text are set left — justification is for
     running prose only, and stretching a short heading across the measure
     opens rivers wide enough to drive through. */
  #nl-print-doc .nlp-col h2,
  #nl-print-doc .nlp-col h3,
  #nl-print-doc .nlp-col h4,
  #nl-print-doc .nlp-col h5,
  #nl-print-doc .nlp-col h6,
  #nl-print-doc .nlp-col th,
  #nl-print-doc .nlp-col td,
  #nl-print-doc .nlp-col summary,
  #nl-print-doc .nlp-col blockquote,
  #nl-print-doc .nlp-col figcaption {
    text-align: left;
  }

  /* ── Right-to-left (the /ar/ mirror) ──────────────────────────────────
     print.js stamps dir="rtl" and lang on the document. Columns, alignment
     and the rules that hang off an edge all have to follow. Justification is
     dropped: Arabic justifies by kashida, which Chrome does not do, so forced
     justification just opens holes in the line. */
  #nl-print-doc[dir="rtl"] {
    font-family: "IBM Plex Sans Arabic", "Amiri", "Geist", sans-serif;
  }
  #nl-print-doc[dir="rtl"] .nlp-col { text-align: right; }
  #nl-print-doc[dir="rtl"] .nlp-col p { text-align: right; }
  #nl-print-doc[dir="rtl"] .nlp-headline,
  #nl-print-doc[dir="rtl"] .nlp-open h2,
  #nl-print-doc[dir="rtl"] .nlp-col h2,
  #nl-print-doc[dir="rtl"] .nlp-col h3,
  #nl-print-doc[dir="rtl"] .nlp-col h4,
  #nl-print-doc[dir="rtl"] .nlp-col li,
  #nl-print-doc[dir="rtl"] .nlp-col th,
  #nl-print-doc[dir="rtl"] .nlp-col td { text-align: right; }
  #nl-print-doc[dir="rtl"] .nlp-open .nlp-standfirst,
  #nl-print-doc[dir="rtl"] .nlp-col blockquote,
  #nl-print-doc[dir="rtl"] .nlp-col .advice-box,
  #nl-print-doc[dir="rtl"] .nlp-col .disclaimer-box {
    border-left: 0;
    border-right: .53mm solid #C9A961;
    padding-left: 0;
    padding-right: 5.8mm;
  }
  #nl-print-doc[dir="rtl"] .nlp-col ul,
  #nl-print-doc[dir="rtl"] .nlp-col ol { padding-left: 0; padding-right: 6.4mm; }
  #nl-print-doc[dir="rtl"] .nlp-col .nlp-dropcap::first-letter {
    float: right;
    padding: 2.1mm 0 0 3.2mm;
  }
  #nl-print-doc[dir="rtl"] .nlp-back-grid,
  #nl-print-doc[dir="rtl"] .nlp-back-source,
  #nl-print-doc[dir="rtl"] .nlp-disclaimer { text-align: right; }

  /* ══ SHARED FURNITURE ════════════════════════════════════════════════════ */

  /* The oversized eclipse watermark. Positioned in px by print.js; kept at
     its natural aspect ratio so it stays a true circle, and drawn in a flat
     pre-mixed cream rather than with opacity — an opacity group rasterises
     the whole sheet into a bitmap. */
  .nlp-motif {
    position: absolute;
    width: 200mm;
    height: 200mm;
    z-index: 0;
    pointer-events: none;
  }

  .nlp-lockup { display: flex; align-items: center; gap: 4mm; flex: none; overflow: visible; }
  .nlp-lockup > svg { flex: none; }
  .nlp-lockup > div { flex: none; }
  .nlp-lockup > svg { flex: none; }
  .nlp-lockup .nlp-rule {
    width: .26mm;
    height: 9mm;
    background: #0F1B2D;
    opacity: .6;
    flex: none;
  }
  .nlp-noura {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 500;
    font-size: 15.75pt;
    letter-spacing: .05em;
    /* Was .85 — tight enough that the capitals overhung the line box and were
       clipped at the top of the cover. */
    line-height: 1;
    color: #0F1B2D;
  }
  .nlp-lawyers {
    font-family: "Cinzel", "Cormorant Garamond", serif;
    font-size: 5.6pt;
    letter-spacing: .5em;
    color: #0F1B2D;
    margin-top: 1.3mm;
    padding-left: .5em;
  }

  .nlp-issue {
    font-family: "Cinzel", "Cormorant Garamond", serif;
    font-size: 9pt;
    letter-spacing: .35em;
    color: #8E7340;
  }

  .nlp-kicker {
    font-family: "Cinzel", "Cormorant Garamond", serif;
    letter-spacing: .42em;
    text-transform: uppercase;
    color: #8E7340;
    margin: 0;
  }

  .nlp-headline {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 400;
    line-height: 1.0;
    letter-spacing: -.004em;
    color: #0F1B2D;
    margin: 0;
    text-wrap: balance;
  }

  .nlp-sub {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-style: italic;
    color: #C9A961;
    margin: 0;
  }

  /* ══ COVER ═══════════════════════════════════════════════════════════════
     A dedicated navy sheet, full-bleed, on its own page. It is rendered in the
     "frame" pass with the running header/footer OFF (see functions/api/pdf.ts),
     so nothing but the cover is on the sheet, and it can reach all four edges.
     The negative side margins cancel #nl-print-doc's 16mm padding so the navy
     bleeds to the paper edge; the 297mm height is a full A4 because the frame
     pass renders at margin:0. */
  .nlp-cover {
    position: relative;
    box-sizing: border-box;
    height: 297mm;
    margin: 0 -16mm;
    padding: 26mm 22mm 20mm;
    overflow: hidden;
    background: #0F1B2D;
    color: #FAF7F1;
    break-after: page;
    page-break-after: always;
    display: flex;
    flex-direction: column;
  }

  /* Top band: gold lockup on the left, house motto on the right. */
  .nlp-cover-top {
    flex: none;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8mm;
  }
  .nlp-cover .nlp-lockup--cover { display: flex; align-items: center; gap: 4mm; }
  .nlp-cover .nlp-lockup--cover > svg { width: 13mm; height: 13mm; flex: none; }
  .nlp-cover .nlp-lockup--cover .nlp-rule { display: none; }
  .nlp-cover .nlp-noura {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 600;
    font-size: 22pt;
    letter-spacing: .05em;
    line-height: 1.06;
    color: #C9A961;
  }
  .nlp-cover .nlp-lawyers {
    font-family: "Cinzel", serif;
    font-size: 7.5pt;
    letter-spacing: .5em;
    color: #FAF7F1;
    margin-top: 1.6mm;
  }
  .nlp-cover-motto {
    font-family: "Cinzel", serif;
    font-size: 8pt;
    letter-spacing: .34em;
    text-transform: uppercase;
    color: #C9A961;
    margin: 2.4mm 0 0;
    text-align: right;
    white-space: nowrap;
  }

  /* The title block sits low on the sheet — the whole point of the cover. */
  .nlp-cover-main { margin-top: auto; }
  .nlp-cover-rail {
    font-family: "Cinzel", serif;
    font-weight: 600;
    font-size: 8pt;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #B8985C;
    line-height: 1.5;
    margin: 0 0 6mm;
  }
  .nlp-cover-title {
    /* size set inline by print.js, stepped to headline length */
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 500;
    line-height: 1.07;
    letter-spacing: -.004em;
    color: #C9A961;
    margin: 0;
    text-wrap: balance;
  }
  .nlp-cover-standfirst {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-style: italic;
    font-size: 15pt;
    line-height: 1.42;
    color: #E7DFCF;
    margin: 7mm 0 0;
    max-width: 132mm;
  }

  /* Foot: practice label + web address, over a thin gold rule. */
  .nlp-cover-foot {
    flex: none;
    margin-top: 12mm;
    padding-top: 5mm;
    border-top: .3mm solid rgba(201, 169, 97, .42);
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 6mm;
  }
  .nlp-cover-practice {
    font-family: "Cinzel", serif;
    font-size: 8pt;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: #FAF7F1;
  }
  .nlp-cover-web {
    font-family: "Geist", "Inter", system-ui, sans-serif;
    font-size: 8.5pt;
    letter-spacing: .04em;
    color: #C9A961;
  }

  /* ══ CONTENTS ════════════════════════════════════════════════════════════ */

  /* A standalone contents page. Not decoration: it is what turns a long
     article into a report you can navigate and cite by section. */
  .nlp-contents {
    position: relative;
    /* No watermark here, so nothing needs clipping — and a long contents list
       must be allowed to flow onto a second sheet rather than be truncated. */
    min-height: 243mm;
    overflow: visible;
    break-after: page;
    page-break-after: always;
    display: flex;
    flex-direction: column;
  }
  .nlp-contents-head {
    /* See .nlp-cover-head — flush against the top of the page area, the
       wordmark's capitals overhang their line box and fall off the sheet. */
    padding: 4mm 0 0;
    flex: none;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
  }
  .nlp-contents-head .nlp-lockup > svg { width: 10.6mm; height: 10.6mm; }

  .nlp-contents-label {
    font-size: 9.75pt;
    letter-spacing: .42em;
    margin: 18mm 0 7mm;
    padding-bottom: 4.2mm;
    border-bottom: .26mm solid #C9A961;
  }

  .nlp-toc {
    list-style: none;
    margin: 0;
    padding: 0;
    counter-reset: none;
  }
  .nlp-toc li {
    border-bottom: .2mm solid rgba(15, 27, 45, .1);
    break-inside: avoid;
  }
  /* The row is the anchor, so the whole line is a click target. Chrome turns
     an <a href="#id"> into a real PDF link annotation, which is what makes the
     contents page navigable in a reader. */
  .nlp-toc-link {
    display: flex;
    align-items: baseline;
    gap: 7mm;
    padding: 3.4mm 0;
    text-decoration: none;
    color: inherit;
  }
  .nlp-toc-n {
    flex: none;
    width: 10mm;
    font-family: "Cinzel", "Cormorant Garamond", serif;
    font-size: 8.25pt;
    letter-spacing: .12em;
    color: #8E7340;
  }
  .nlp-toc-t {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-size: 14.25pt;
    line-height: 1.3;
    color: #0F1B2D;
  }

  .nlp-contents-foot {
    margin-top: auto;
    display: flex;
    gap: 12mm;
    padding-top: 5.5mm;
    border-top: .26mm solid rgba(15, 27, 45, .16);
  }

  /* Links outside the article body — contents rows, the cover imprint, the
     colophon's site/phone/source. They must carry a real href so the PDF gets
     a link annotation, but they must not look like web links on paper: the
     surrounding rule already styles them, so they only inherit. */
  #nl-print-doc .nlp-cover a,
  #nl-print-doc .nlp-contents a,
  #nl-print-doc .nlp-back a {
    /* inherit the surrounding light ink on the navy sheets. !important because
       a site-wide link colour (navy) otherwise wins and the phone/web/source
       links printed invisibly navy-on-navy. */
    color: inherit !important;
    text-decoration: none;
    border: 0;
  }

  /* ══ INTERIOR ════════════════════════════════════════════════════════════ */

  .nlp-body {
    position: relative;
    padding: 0;
  }

  /* No CSS running head or foot.
     position:fixed is the only way to repeat furniture across printed pages,
     and in a paged context Chrome positions it against the page CONTENT box —
     it lands on top of the text rather than in the reserved margin, whatever
     offset you give it. The document carries its identity on the cover, the
     colophon and the section rules instead. If per-page furniture and page
     numbers are wanted later, the renderer's own headerTemplate/footerTemplate
     is the mechanism, and it needs uniform margins on every page. */
  .nlp-runhead, .nlp-runfoot { display: none; }

  /* — the masthead: firm lockup, gold hairline, metadata rail, title,
     standfirst — aligned to the centred body measure — */
  .nlp-open { margin: 0 auto 6.5mm; max-width: 126mm; padding-top: 3mm; }

  .nlp-open .nlp-masthead {
    display: flex;
    align-items: center;
    padding-bottom: 4.4mm;
    border-bottom: .3mm solid #C9A961;   /* the gold hairline */
    margin-bottom: 4.6mm;
    /* The wordmark's Cormorant capitals overhang their line box; without a
       little headroom here they were sliced by the top of the sheet. */
    min-height: 13mm;
  }
  .nlp-open .nlp-masthead .nlp-lockup { display: flex; align-items: center; gap: 4mm; }
  .nlp-open .nlp-masthead .nlp-lockup > svg { width: 11mm; height: 11mm; flex: none; }
  /* Keep the wordmark unmistakably navy and prominent in the masthead. */
  .nlp-open .nlp-masthead .nlp-lockup > div { flex: none; display: block; }
  .nlp-open .nlp-masthead .nlp-noura {
    color: #0F1B2D !important; font-family: "Cormorant Garamond", Georgia, serif !important;
    font-weight: 600 !important; font-size: 20pt !important; letter-spacing: .06em;
    line-height: 1.16 !important; display: block;
  }
  .nlp-open .nlp-masthead .nlp-lawyers {
    color: #0F1B2D !important; font-family: "Cinzel", serif !important;
    font-size: 7pt !important; letter-spacing: .52em; display: block; margin-top: 1.4mm;
  }

  /* metadata rail — practice · case number · date */
  .nlp-open .nlp-meta {
    font-family: "Cinzel", serif;
    font-weight: 600;
    font-size: 8pt;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: #8E7340;
    margin: 0 0 6mm;
  }

  .nlp-open .nlp-headline {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 400;
    line-height: 1.02;
    letter-spacing: -.008em;
    color: #0F1B2D;
    margin: 0 0 6.4mm;
    text-wrap: balance;
  }
  .nlp-open .nlp-standfirst {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-style: italic;
    font-size: 16pt;
    line-height: 1.4;
    color: #8E7340;
    border-left: .5mm solid #C9A961;
    padding-left: 5.5mm;
    margin: 0;
    max-width: 108mm;
  }

  /* — single-column text field (case-note spec) —
     A plain block, NOT a multicol container. It used to carry column-count:1,
     which still establishes a multi-column formatting context — and in that
     context every `column-span: all` descendant (headings, callouts, figures)
     forces a fragmentation break before AND after itself. That is what stranded
     whole sections on fresh sheets and left the opening pages nine-tenths empty.
     Dropping the property renders identically (one column) but removes the
     multicol breaks, so content back-fills each page. The measure is capped to
     ~70 characters so the line length stays readable. */
  .nlp-col {
    max-width: 126mm;      /* ~70-74ch at 10.5pt Cormorant — the spec's measure */
    margin-left: auto;     /* centre the measure so the page reads balanced,   */
    margin-right: auto;    /* not jammed against the left with a blank right    */
    hyphens: auto;
    text-align: left;
  }

  /* Justify running prose only; never the glance rows, lists or tables, where
     justification opens rivers at a narrow measure. */
  .nlp-col p { margin: 0 0 3.4mm; orphans: 3; widows: 3; text-align: justify; }

  /* Drop cap on the opening paragraph — the one unmistakably magazine move */
  .nlp-col .nlp-dropcap::first-letter {
    float: left;
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 500;
    font-size: 39pt;
    line-height: .7;
    color: #0F1B2D;
    padding: 2.1mm 3.2mm 0 0;
  }

  .nlp-col strong, .nlp-col b { font-weight: 500; }

  /* — Case at a glance: a rules-based label/value table, not the CMS grid.
     Overrides the inline `grid-template-columns:1fr` the page emits so the
     label and value sit side by side, separated by 0.5pt navy hairlines —
     no fills, no rivers. Kept whole so it never splits across a sheet. */
  /* The glance is <dl> → .cm-row → (dt label + dd value). Stack the rows in
     one column; each row is a label|value grid with a 0.5pt navy hairline. */
  .nlp-col dl {
    display: block !important;
    margin: 4mm 0 8mm !important;
    max-width: 100%;
  }
  .nlp-col dl .cm-row {
    display: grid !important;
    grid-template-columns: 33mm 1fr;
    column-gap: 6mm;
    align-items: start;
    border-top: .17mm solid rgba(15, 27, 45, .18);
    padding: 2.4mm 0;
    margin: 0;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .nlp-col dl .cm-row:last-child { border-bottom: .17mm solid rgba(15, 27, 45, .18); }
  .nlp-col dl .cm-row dt {
    font-family: "Cinzel", serif;
    font-weight: 600;
    font-size: 7.6pt;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: #8E7340;
    margin: 0;
    padding-top: .6mm;
  }
  .nlp-col dl .cm-row dd {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-size: 10.5pt;
    line-height: 1.42;
    color: rgba(15, 27, 45, .9);
    margin: 0;
    text-align: left;
  }
  .nlp-col em, .nlp-col i { font-style: italic; }

  /* Links print as ink. External URLs surface once as a small gold gloss —
     a citation, not a browser artefact. */
  .nlp-col a {
    color: #0F1B2D;
    text-decoration: none;
    border-bottom: .2mm solid rgba(201, 169, 97, .55);
  }
  /* styles.css carries an UNSCOPED @media print rule that appends " (href)"
     after every external link. That is a sensible default for printing a web
     page, but wrong here: every link in this document is a real PDF
     annotation, so the raw URL is redundant — and on the related-guides list
     and the colophon it wrapped into unreadable runs of slashes, and printed
     the firm's own address twice on the cover. */
  #nl-print-doc a::after { content: none !important; }
  .nlp-col a[href^="#"], .nlp-col a[href^="/"] { border-bottom: 0; }

  /* Section heads carry a gold hairline above (see the H2 rule); the author's
     own "1." … "7." numbering stays in the heading text. The decorative
     "01 … 12" counter is REMOVED — it ran a second, drifting sequence beside
     the author's ("02 · 1. The claim …") and stamped numbers onto unnumbered
     sections. One sequence only. */
  .nlp-col h2[data-nlp-n]::before { content: none !important; }
  .nlp-col h2 {
    column-span: all;
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 400;
    font-size: 19pt;          /* was 26pt — spec H2 is ~18pt; also fewer wrapped
                                 heading lines, which compacts the document */
    line-height: 1.12;
    color: #0F1B2D;
    margin: 6.5mm 0 3.2mm;    /* tighter section rhythm to cut the sparse tails */
    padding-top: 3mm;
    border-top: .26mm solid rgba(15, 27, 45, .16);
    break-after: avoid;      /* keep the heading with its first line */
    page-break-after: avoid;
    break-inside: avoid;
    page-break-inside: avoid;
    text-wrap: balance;
  }
  .nlp-col h3 {
    font-family: "Cinzel", "Cormorant Garamond", serif;
    font-weight: 500;
    font-size: 9.75pt;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #0F1B2D;
    margin: 6.4mm 0 2.6mm;
    break-after: avoid;
    page-break-after: avoid;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .nlp-col h4, .nlp-col h5, .nlp-col h6 {
    font-family: "Geist", "Inter", system-ui, sans-serif;
    font-weight: 500;
    font-size: 8.25pt;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #8E7340;
    margin: 5.3mm 0 1.9mm;
    break-after: avoid;
    page-break-after: avoid;
  }

  /* — lists — */
  .nlp-col ul, .nlp-col ol { margin: 0 0 4.8mm; padding-left: 6.4mm; text-align: left; }
  /* A short list (≤6 items, tagged in sanitise) is kept whole so it is never
     orphaned with one item stranded across a page break. Longer lists stay
     splittable but carry at least two lines either side of the break. */
  .nlp-col .nlp-keep-together { break-inside: avoid; page-break-inside: avoid; }
  .nlp-col ul, .nlp-col ol { orphans: 2; widows: 2; }
  .nlp-col li { margin-bottom: 1.9mm; break-inside: avoid; orphans: 2; widows: 2; }
  .nlp-col ul li::marker { color: #C9A961; }
  .nlp-col ol li::marker { color: #8E7340; font-weight: 500; }

  .nlp-col ul.checklist { list-style: none; padding-left: 0; }
  .nlp-col ul.checklist li {
    position: relative;
    padding: 2.1mm 0 2.1mm 6.4mm;
    border-bottom: .2mm solid rgba(15, 27, 45, .1);
  }
  /* Leading gold en-dash — a case-note marker, not a marketing tick. */
  .nlp-col ul.checklist li::before {
    content: "\2013";
    position: absolute;
    left: 0;
    top: 2.1mm;
    color: #C9A961;
    font-weight: 400;
  }

  /* — pull quote — */
  .nlp-col blockquote {
    column-span: all;
    margin: 8mm 0;
    padding: 0 0 0 6.4mm;
    border-left: .53mm solid #C9A961;
    font-family: "Cormorant Garamond", Georgia, serif;
    font-style: italic;
    font-size: 20pt;
    line-height: 1.38;
    color: #8E7340;
    text-align: left;
    break-inside: avoid;
  }
  .nlp-col blockquote p { margin: 0; }

  /* — the contents block, set across the full measure — */
  .nlp-col .article-toc,
  .nlp-col .toc-block {
    column-span: all;
    background: none;
    border: 0;
    border-top: .26mm solid #C9A961;
    border-bottom: .26mm solid #C9A961;
    border-radius: 0;
    padding: 5.3mm 0;
    margin: 0 0 8mm;
    text-align: left;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .nlp-col .article-toc h3,
  .nlp-col .article-toc h4,
  .nlp-col .toc-block h3,
  .nlp-col .toc-block h4 {
    font-family: "Cinzel", serif;
    font-size: 7.5pt;
    letter-spacing: .34em;
    text-transform: uppercase;
    color: #8E7340;
    margin: 0 0 3.2mm;
    border: 0;
    padding: 0;
  }
  .nlp-col .article-toc ol,
  .nlp-col .toc-block ol {
    columns: 2;
    column-gap: 10.6mm;
    padding-left: 5.3mm;
    margin: 0;
  }
  .nlp-col .article-toc li,
  .nlp-col .toc-block li {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-size: 12pt;
    line-height: 1.4;
    color: #0F1B2D;
    margin-bottom: 1.2mm;
    break-inside: avoid;
  }

  /* — callouts — hairline rules, never a filled box or a side-stripe
     (both banned by the print spec). Structure comes from the rules and the
     lead-in run, not from a coloured panel. */
  .nlp-col .advice-box,
  .nlp-col .disclaimer-box,
  .nlp-col .callout,
  .nlp-col .note,
  .nlp-col .warning-box {
    background: transparent !important;
    border: 0 !important;
    border-top: .18mm solid rgba(15, 27, 45, .22) !important;
    border-bottom: .18mm solid rgba(15, 27, 45, .22) !important;
    border-radius: 0 !important;
    padding: 4.6mm 0 !important;
    margin: 7mm 0 !important;
    font-size: 10pt;
    line-height: 1.5;
    text-align: left;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  /* The glance wrapper is a plain container — no panel, no border. */
  .nlp-col .case-meta {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 6mm 0 8mm !important;
  }
  .nlp-col .advice-box strong:first-child,
  .nlp-col .disclaimer-box strong:first-child,
  .nlp-col .callout strong:first-child,
  .nlp-col .warning-box strong:first-child {
    font-family: "Cinzel", serif;
    font-weight: 600;
    font-size: 8.5pt;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #8E7340;
  }
  .nlp-col .advice-box p:last-child,
  .nlp-col .disclaimer-box p:last-child { margin-bottom: 0; }

  /* — tables, set like a financial appendix, spanning both columns — */
  /* — TABLES ————————————————————————————————————————————————
     Formal-document conventions: the header row repeats on every sheet a
     table spans (display:table-header-group), rows are kept whole, numeric
     columns align right, and a caption sits above the table as its label.
     Tables are allowed to break across pages — forcing break-inside:avoid on
     a long table pushes the whole thing to the next sheet and leaves half a
     page blank, which is worse than a clean split. */
  .nlp-col table {
    column-span: all;
    width: 100%;
    border-collapse: collapse;
    margin: 6mm 0 8mm;
    font-size: 9pt;
    text-align: left;
    page-break-inside: auto;
  }
  .nlp-col caption {
    caption-side: top;
    text-align: left;
    font-family: "Cinzel", "Cormorant Garamond", serif;
    font-size: 7.5pt;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: #8E7340;
    padding-bottom: 2.4mm;
  }
  /* Repeat the head on every page the table runs onto. */
  .nlp-col thead { display: table-header-group; }
  .nlp-col tfoot { display: table-footer-group; }
  .nlp-col tr { break-inside: avoid; page-break-inside: avoid; }
  .nlp-col th {
    text-align: left;
    font-family: "Cinzel", "Cormorant Garamond", serif;
    font-size: 7.5pt;
    font-weight: 500;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #0F1B2D;
    background: rgba(201, 169, 97, .12) !important;
    padding: 2.6mm 3.2mm;
    border-bottom: .4mm solid #C9A961;
    border-top: .2mm solid rgba(15, 27, 45, .18);
  }
  .nlp-col td {
    padding: 2.6mm 3.2mm;
    border-bottom: .2mm solid rgba(15, 27, 45, .1);
    vertical-align: top;
    line-height: 1.5;
  }
  /* Row banding aids tracking across wide tables. */
  .nlp-col tbody tr:nth-child(even) td { background: rgba(15, 27, 45, .028) !important; }
  /* Figures right-align so digits line up; marked up by print.js. */
  .nlp-col td[data-num], .nlp-col th[data-num] { text-align: right; font-variant-numeric: tabular-nums; }
  .nlp-col table + .nlp-table-note {
    font-size: 7.4pt;
    color: #72777F;   /* single muted tone */
    margin: -6mm 0 7mm;
  }

  /* — CALCULATOR OUTPUT ————————————————————————————————————
     Tool pages print an inputs snapshot and a figure breakdown, built by
     print.js because the live values live in form controls that are stripped.
     Both are set as ledgers: label left, figure right on tabular numerals, so
     the estimate reads as a costed schedule rather than a web widget. */
  .nlp-col .nlp-io {
    column-span: none;          /* narrow enough to sit inside one column */
    font-size: 8.6pt;
    margin: 4mm 0 7mm;
  }
  /* Row headers, not column headers — drop the banded fill the <thead>
     treatment applies, or every label cell prints as a gold bar. */
  .nlp-col .nlp-io th[scope="row"] {
    background: none !important;
    border-top: 0;
    border-bottom: .2mm solid rgba(15, 27, 45, .1);
    text-transform: none;
    letter-spacing: .02em;
    font-family: inherit;
    font-size: 8.6pt;
    font-weight: 400;
    color: #3A4250;
    width: 58%;
  }
  .nlp-col .nlp-io td {
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: #0F1B2D;
  }
  .nlp-col .nlp-io tbody tr:nth-child(even) td { background: none !important; }

  .nlp-col .nlp-result { column-span: none; margin: 4mm 0 8mm; }
  /* Keep the "published range" qualifier with the fee it belongs to. Tried
     break-inside:avoid on the whole ledger first: in a multicol that is tall
     enough, Chrome pushes the entire block to the next column and leaves the
     sheet all but empty. Binding just this one row to the previous is the
     narrow fix the problem actually needed. */
  .nlp-col .nlp-result .result-row--note {
    break-before: avoid;
    page-break-before: avoid;
  }
  .nlp-col .nlp-result .result-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 6mm;
    padding: 2.4mm 0;
    border-bottom: .2mm solid rgba(15, 27, 45, .1);
    break-inside: avoid;
  }
  .nlp-col .nlp-result .result-row .label { color: #3A4250; }
  .nlp-col .nlp-result .result-row .value {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    white-space: nowrap;
    color: #0F1B2D;
  }
  /* The total is the line the reader came for. */
  .nlp-col .nlp-result .result-row.total {
    border-top: .4mm solid #C9A961;
    border-bottom: 0;
    margin-top: 2mm;
    padding-top: 3mm;
    font-size: 10.5pt;
  }
  .nlp-col .nlp-result .result-row.total .label,
  .nlp-col .nlp-result .result-row.total .value { color: #0F1B2D; font-weight: 700; }
  .nlp-col .nlp-result p { font-size: 8pt; color: #72777F; margin: 3mm 0 0; }

  /* The interior sets body copy justified with automatic hyphenation, which is
     right for prose and wrong for a ledger: it stretched "Arbitrator fee (sole
     arbitrator)" across the column with word-gaps and hyphenated "arbi-trator".
     Ledger cells are ranged left and never hyphenated. */
  .nlp-col .nlp-io th[scope="row"],
  .nlp-col .nlp-io td,
  .nlp-col .nlp-result .result-row .label,
  .nlp-col .nlp-result .result-row .value {
    text-align: left;
    hyphens: none;
    -webkit-hyphens: none;
  }
  .nlp-col .nlp-io td,
  .nlp-col .nlp-result .result-row .value { text-align: right; }

  /* The published-range line is a qualifier on the fee above it, not a line
     item of its own. Keyed off a class, because print.js strips [style]
     attributes before printing and the inline tint never reached paper. */
  .nlp-col .nlp-result .result-row--note {
    font-size: 8.2pt;
    border-bottom: 0;
    padding-top: 0;
    margin-top: -1.4mm;
  }
  .nlp-col .nlp-result .result-row--note .label,
  .nlp-col .nlp-result .result-row--note .value {
    color: #72777F;
    font-weight: 400;
  }

  /* — QUESTIONS & ANSWERS ————————————————————————————————
     <details> is a screen affordance; on paper each entry becomes a numbered
     Q/A pair. The counter runs across the whole answer set so a reader can
     cite "Q7" unambiguously, and a pair is never split across a sheet. */

  .nlp-col details {
    background: none;
    border: 0;
    border-top: .2mm solid rgba(15, 27, 45, .12);
    border-radius: 0;
    padding: 3.6mm 0;
    margin: 0;
    text-align: left;
    /* The pair may break; the question may not be left behind. summary has
       break-after: avoid below, and the answer carries orphans/widows, so a
       split always leaves the question with the opening lines of its answer
       and never strands a line or two on its own. Previously the whole pair
       was unbreakable, which pushed tall pairs to the next sheet and left up
       to half a page blank. */
    break-inside: auto;
    page-break-inside: auto;
  }
  .nlp-col details > div,
  .nlp-col details > p {
    orphans: 3;
    widows: 3;
  }
  .nlp-col details summary {
    break-after: avoid;
    page-break-after: avoid;
    list-style: none;
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 500;
    font-size: 13pt;
    line-height: 1.3;
    color: #0F1B2D;
    margin-bottom: 2.2mm;
    padding-left: 11mm;
    position: relative;
  }
  /* Written into the DOM by print.js — see the note there.
     Set in the sans, not Cinzel: Cinzel's capital Q has a long swash tail
     that at 8pt reads as a stray squiggle rather than a letter. Its digits
     are fine, which is why the section numerals still use it. */
  .nlp-col details summary .nlp-q {
    position: absolute;
    left: 0;
    top: .8mm;
    font-family: "Geist", "Inter", system-ui, sans-serif;
    font-weight: 500;
    font-size: 8pt;
    letter-spacing: .1em;
    color: #8E7340;
  }
  .nlp-col details > div,
  .nlp-col details > p { padding-left: 11mm; }
  .nlp-col details summary::-webkit-details-marker { display: none; }
  /* The site's FAQ accordion draws a +/- affordance via summary::after.
     There is nothing to expand on paper. */
  .nlp-col details summary::after { content: none !important; display: none !important; }

  /* — figures — */
  .nlp-col img, .nlp-col svg { max-width: 100%; height: auto; break-inside: avoid; }
  .nlp-col figure { column-span: all; margin: 7mm 0; break-inside: avoid; }
  .nlp-col figcaption {
    font-size: 8.25pt;
    letter-spacing: .06em;
    color: #72777F;   /* single muted tone */
    margin-top: 2.1mm;
    text-align: left;
  }

  /* — related reading flattens to a list — */
  .nlp-col .related-list { display: block; padding-left: 0; list-style: none; }
  .nlp-col .related-list li {
    background: none;
    border: 0;
    border-bottom: .2mm solid rgba(15, 27, 45, .1);
    border-radius: 0;
    padding: 2.1mm 0;
  }

  .nlp-col hr {
    column-span: all;
    border: 0;
    border-top: .26mm solid rgba(15, 27, 45, .16);
    margin: 8mm 0;
  }

  /* — the closing line, set full measure in italic —
     column-span:all closes the columns before it, and when the text ended near
     a page boundary that push was enough to strand this single line alone on a
     final sheet before the colophon. It stays in the column flow instead, and
     asks not to be separated from the text it closes. */
  .nlp-col .nlp-endmark {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-style: italic;
    font-size: 15pt;
    color: #8E7340;
    text-align: left;
    margin: 6mm 0 0;
    break-before: avoid;
    page-break-before: avoid;
    break-inside: avoid;
  }

  /* ══ BACK COVER / COLOPHON ═══════════════════════════════════════════════
     A dedicated navy sheet, full-bleed, on its own page — the mirror of the
     cover. Rendered in the frame pass with the furniture off. Height is a full
     A4 and overflow is clipped, so the panel can never spill onto a second
     sheet (the old flowing colophon's one failure). Negative side margins bleed
     the navy to the paper edge. Branding sits at the top; the contact grid,
     source line and disclaimer are pushed to the lower half. */
  .nlp-back {
    position: relative;
    box-sizing: border-box;
    height: 297mm;
    margin: 0 -16mm;
    padding: 30mm 22mm 22mm;
    overflow: hidden;
    background: #0F1B2D;
    color: #FAF7F1;
    break-before: page;
    page-break-before: always;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }
  .nlp-back > *:not(.nlp-motif) { position: relative; z-index: 1; }
  .nlp-back .nlp-motif { display: none; }   /* no oversized watermark in-flow */

  .nlp-back-mark { flex: none; }
  .nlp-back-mark > svg { width: 20mm; height: 20mm; }
  .nlp-back-wordmark { flex: none; margin-top: 5mm; }
  .nlp-back-wordmark .nlp-noura {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-weight: 600;
    font-size: 24pt;
    line-height: 1.06;
    color: #C9A961;
  }
  .nlp-back-wordmark .nlp-lawyers {
    font-family: "Cinzel", serif;
    font-size: 9pt;
    letter-spacing: .55em;
    color: #FAF7F1;
    margin-top: 2.4mm;
    padding-left: .55em;
  }

  .nlp-back-rule {
    width: 15mm;
    height: .3mm;
    background: #C9A961;
    border: 0;
    margin: 6mm 0;
  }

  .nlp-back-line {
    font-family: "Cormorant Garamond", Georgia, serif;
    font-style: italic;
    font-size: 16pt;
    line-height: 1.45;
    color: #E7DFCF;
    max-width: 30ch;
    margin: 0;
  }

  /* Contact + regulatory block — pushed to the lower half by margin-top:auto. */
  .nlp-back-grid {
    display: flex;
    gap: 10mm;
    width: 100%;
    max-width: 150mm;
    margin: auto 0 0;
    padding-top: 8mm;
    border-top: .3mm solid rgba(201, 169, 97, .35);
    text-align: left;
  }
  .nlp-back-col { flex: 1; }
  .nlp-back-col h3 {
    font-family: "Cinzel", serif;
    font-size: 7pt;
    font-weight: 500;
    letter-spacing: .28em;
    text-transform: uppercase;
    color: #C9A961;
    margin: 0 0 3mm;
  }
  .nlp-back-col p {
    font-family: "Geist", "Inter", system-ui, sans-serif;
    font-size: 8.4pt;
    font-weight: 300;
    line-height: 1.6;
    color: #D9D2C4;
    margin: 0 0 1.8mm;
  }

  .nlp-back-foot { flex: none; margin-top: 8mm; width: 100%; max-width: 150mm; text-align: left; }
  .nlp-back-foot .nlp-kicker {
    font-family: "Cinzel", serif;
    font-size: 8pt;
    letter-spacing: .34em;
    text-transform: uppercase;
    color: #C9A961;
  }
  .nlp-back-foot .nlp-web {
    font-family: "Geist", "Inter", system-ui, sans-serif;
    font-size: 10pt;
    font-weight: 300;
    letter-spacing: .04em;
    color: #FAF7F1;
    margin-top: 2.4mm;
  }
  .nlp-back-source {
    margin-top: 7mm;
    padding-top: 4.2mm;
    border-top: .3mm solid rgba(201, 169, 97, .22);
    font-family: "Geist", "Inter", system-ui, sans-serif;
    font-size: 7pt;
    line-height: 1.7;
    color: #9AA0A8;
    word-break: break-all;
    text-align: left;
  }
  .nlp-disclaimer {
    margin-top: 4.2mm;
    font-family: "Geist", "Inter", system-ui, sans-serif;
    font-size: 7pt;
    line-height: 1.66;
    color: #8E93A0;
    text-align: left;
  }

  /* ══ THINGS THAT MUST NEVER REACH PAPER ══════════════════════════════════ */

  #nl-print-doc canvas,
  #nl-print-doc video,
  #nl-print-doc iframe,
  #nl-print-doc form,
  #nl-print-doc button,
  #nl-print-doc .share-bar,
  #nl-print-doc .nlp-trigger,
  #nl-print-doc .nlp-trigger-bar,
  #nl-print-doc .cx-acts,
  #nl-print-doc .cta,
  #nl-print-doc .cta-band,
  #nl-print-doc .newsletter,
  #nl-print-doc .float-cta,
  #nl-print-doc .sticky-bar,
  #nl-print-doc [data-widget],
  #nl-print-doc .breadcrumb,
  #nl-print-doc .progress,
  #nl-print-doc .wiz-nav {
    display: none !important;
  }
}
