/* ==========================================================================
   NYUZI INTERNATIONAL — DESIGN SYSTEM
   Single source of truth for layout and components. Loaded by the WordPress
   theme and by the static preview renderer, so what is reviewed is what ships.

   Contents
   01  Tokens
   02  Reset & base
   03  Layout primitives
   04  Typography utilities
   05  Buttons & links
   06  Header / navigation
   07  Hero
   08  Logo strip & client grid
   09  Sector index
   10  Advisory index
   11  Principles
   12  Feature modules
   13  Editorial blocks (prose, stats, pull quotes, definition rows)
   14  Breadcrumbs
   15  Forms
   16  Empty states
   17  Footer
   18  Motion
   ========================================================================== */

/* 01 ─ TOKENS ──────────────────────────────────────────────────────────── */

:root {
  /* Colour — mirrors theme.json. Brand green #7BCB3D is DECORATIVE ONLY:
     it fails contrast on light grounds (2.01:1). Use --nz-green-text on light. */
  --nz-forest:       #142F1B;
  --nz-forest-deep:  #0E2114;
  --nz-forest-soft:  #1E4227;
  --nz-green:        #7BCB3D;
  --nz-green-text:   #33691E;
  --nz-green-mid:    #4B8339;
  --nz-lime:         #D3E276;
  --nz-brown:        #4A1905;
  --nz-canvas:       #F7F8F4;
  --nz-canvas-warm:  #F1F0E8;
  --nz-white:        #FFFFFF;
  --nz-ink:          #1B211C;
  --nz-muted:        #5A6459;
  --nz-line:         #DCE0D6;
  --nz-line-dark:    rgba(255, 255, 255, .16);

  /* Type */
  --nz-font-display: "Archivo Variable", "Archivo", "Helvetica Neue", Arial, sans-serif;
  --nz-font-body:    "Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  /* Measure & rhythm */
  --nz-gutter:       clamp(1.25rem, 4.2vw, 3.5rem);
  --nz-max:          85rem;   /* 1360px — outer frame */
  --nz-max-wide:     78rem;   /* 1248px — standard wide content */
  --nz-max-text:     40rem;   /* 640px  — comfortable measure */
  --nz-max-lead:     46rem;

  --nz-section:      clamp(3.75rem, 6.5vw, 6rem);
  --nz-section-lg:   clamp(5rem, 9vw, 8rem);

  --nz-header-h:     5.5rem;
  --nz-radius:       2px;

  --nz-ease:         cubic-bezier(.2, 0, .1, 1);
  --nz-ease-out:     cubic-bezier(.16, 1, .3, 1);
  --nz-dur:          .42s;
}

/* 02 ─ RESET & BASE ────────────────────────────────────────────────────── */

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--nz-header-h) + 1.5rem);
}

body {
  margin: 0;
  background: var(--nz-canvas);
  color: var(--nz-ink);
  font-family: var(--nz-font-body);
  font-size: clamp(1rem, .98rem + .12vw, 1.0625rem);
  line-height: 1.65;
  letter-spacing: -.003em;
  font-synthesis-weight: none;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img, svg, video { max-width: 100%; height: auto; display: block; }
img { background-color: var(--nz-canvas-warm); }

h1, h2, h3, h4, h5 {
  font-family: var(--nz-font-display);
  color: var(--nz-forest);
  font-weight: 620;
  line-height: 1.08;
  letter-spacing: -.021em;
  margin: 0 0 .6em;
  text-wrap: balance;
}
h1 { font-size: clamp(2.5rem, 1.6rem + 3.9vw, 4.25rem); letter-spacing: -.028em; }
h2 { font-size: clamp(1.875rem, 1.35rem + 2.3vw, 2.875rem); letter-spacing: -.024em; }
h3 { font-size: clamp(1.5rem, 1.25rem + 1.1vw, 2rem); line-height: 1.15; }
h4 { font-size: clamp(1.25rem, 1.13rem + .5vw, 1.5rem); line-height: 1.25; font-weight: 600; }
h5 { font-size: 1.0625rem; line-height: 1.35; font-weight: 650; letter-spacing: -.01em; }

p { margin: 0 0 1.15em; text-wrap: pretty; }
p:last-child { margin-bottom: 0; }

ul, ol { margin: 0 0 1.15em; padding-left: 1.15em; }
li { margin-bottom: .5em; }
li:last-child { margin-bottom: 0; }

a { color: var(--nz-green-text); text-underline-offset: .22em; text-decoration-thickness: from-font; }
a:hover { color: var(--nz-forest); }

/* A link that is a heading, a logo or a control reads as that thing first.
   Underlines stay on prose links, where they carry meaning. */
.nz-sector-row__title a,
.nz-advisory__title a,
.nz-article__title a,
.nz-mega__sector,
.nz-logo,
.nz-footer__logo,
.nz-btn,
.nz-arrow,
.nz-nav__link,
.nz-mobilenav__link,
.nz-footer__list a,
.nz-crumbs a { text-decoration: none; }

strong, b { font-weight: 620; }

hr {
  border: 0;
  border-top: 1px solid var(--nz-line);
  margin: var(--nz-section) 0;
}

/* Focus — always visible, never removed. */
:focus-visible {
  outline: 3px solid var(--nz-green-text);
  outline-offset: 3px;
  border-radius: 1px;
}
.nz-on-dark :focus-visible,
.nz-footer :focus-visible { outline-color: var(--nz-green); }

::selection { background: var(--nz-lime); color: var(--nz-forest-deep); }

.nz-skip {
  /* fixed, not absolute: the skip link must be reachable wherever the reader
     is on the page, not only at the very top of the document. */
  position: fixed;
  left: 1rem;
  top: -6rem;
  z-index: 999;
  background: var(--nz-forest);
  color: var(--nz-white);
  padding: .85rem 1.4rem;
  font-weight: 600;
  font-size: .9375rem;
  text-decoration: none;
  border-radius: var(--nz-radius);
  transition: top .18s var(--nz-ease);
}
.nz-skip:focus { top: 1rem; color: var(--nz-white); }

.nz-sr {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* 03 ─ LAYOUT PRIMITIVES ───────────────────────────────────────────────── */

.nz-shell {
  width: 100%;
  max-width: var(--nz-max);
  margin-inline: auto;
  padding-inline: var(--nz-gutter);
}
.nz-shell--wide { max-width: none; }
.nz-shell--narrow { max-width: 62rem; }

.nz-section { padding-block: var(--nz-section); }
.nz-section--lg { padding-block: var(--nz-section-lg); }
.nz-section--tight { padding-block: clamp(2.75rem, 5vw, 4rem); }
.nz-section--flush-top { padding-top: 0; }

.nz-canvas      { background: var(--nz-canvas); }
.nz-canvas-warm { background: var(--nz-canvas-warm); }
.nz-white       { background: var(--nz-white); }

.nz-on-dark {
  background: var(--nz-forest);
  color: rgba(255, 255, 255, .82);
}
.nz-on-dark h1, .nz-on-dark h2, .nz-on-dark h3,
.nz-on-dark h4, .nz-on-dark h5 { color: var(--nz-white); }
.nz-on-dark a { color: var(--nz-lime); }
.nz-on-dark a:hover { color: var(--nz-white); }
.nz-on-dark--deep { background: var(--nz-forest-deep); }

/* Editorial 12-column grid */
.nz-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: clamp(1.5rem, 3vw, 2.75rem);
}
@media (max-width: 60rem) { .nz-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
@media (max-width: 40rem) { .nz-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; } }

/* Section header: eyebrow + title left, supporting copy right. Not centred. */
.nz-sectionhead {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: clamp(1.5rem, 4vw, 4.5rem);
  align-items: end;
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}
.nz-sectionhead > :last-child { padding-bottom: .35rem; }
/* Baseline-aligning a short heading against a long right column drops the
   heading to the bottom of the row. Top-align those. */
.nz-sectionhead--top { align-items: start; }
.nz-sectionhead--top > :last-child { padding-bottom: 0; }
.nz-sectionhead h2 { margin-bottom: 0; }
.nz-sectionhead__lede {
  font-size: clamp(1.0625rem, 1rem + .3vw, 1.1875rem);
  color: var(--nz-muted);
  max-width: 34rem;
}
.nz-on-dark .nz-sectionhead__lede { color: rgba(255, 255, 255, .74); }
@media (max-width: 56rem) {
  .nz-sectionhead { grid-template-columns: 1fr; align-items: start; gap: 1.25rem; }
  .nz-sectionhead > :last-child { padding-bottom: 0; }
}

/* Rule that carries the brand mark colour without relying on green for text */
.nz-rule {
  border: 0;
  border-top: 1px solid var(--nz-line);
  margin: 0;
}
.nz-on-dark .nz-rule { border-top-color: var(--nz-line-dark); }

/* 04 ─ TYPOGRAPHY UTILITIES ────────────────────────────────────────────── */

.nz-eyebrow {
  display: flex;
  align-items: center;
  gap: .7rem;
  font-family: var(--nz-font-body);
  font-size: .8125rem;
  font-weight: 620;
  letter-spacing: .105em;
  text-transform: uppercase;
  color: var(--nz-muted);
  margin: 0 0 1.15rem;
}
.nz-eyebrow::before {
  content: "";
  width: 1.75rem;
  height: 2px;
  background: var(--nz-green);
  flex: none;
}
.nz-on-dark .nz-eyebrow { color: var(--nz-lime); }

.nz-lede {
  font-size: clamp(1.125rem, 1.03rem + .45vw, 1.375rem);
  line-height: 1.55;
  color: var(--nz-muted);
  letter-spacing: -.011em;
  max-width: var(--nz-max-lead);
}
.nz-on-dark .nz-lede { color: rgba(255, 255, 255, .8); }

.nz-prose { max-width: var(--nz-max-text); }
.nz-prose > * + * { margin-top: 1.15em; }
.nz-prose h2 { margin-top: 2.2em; }
.nz-prose h3 { margin-top: 1.8em; }
.nz-prose h2:first-child, .nz-prose h3:first-child { margin-top: 0; }

.nz-index-num {
  font-family: var(--nz-font-display);
  font-size: .8125rem;
  font-weight: 650;
  letter-spacing: .06em;
  font-variant-numeric: tabular-nums;
  color: var(--nz-green-text);
}
.nz-on-dark .nz-index-num { color: var(--nz-green); }

.nz-tagline {
  font-family: var(--nz-font-display);
  font-size: clamp(.75rem, .7rem + .2vw, .875rem);
  font-weight: 600;
  letter-spacing: .17em;
  text-transform: uppercase;
}
@media (max-width: 26rem) { .nz-tagline { letter-spacing: .09em; font-size: .75rem; } }

/* 05 ─ BUTTONS & LINKS ─────────────────────────────────────────────────── */

.nz-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  min-height: 2.875rem;
  padding: .9rem 1.6rem;
  font-family: var(--nz-font-body);
  font-size: .9375rem;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  border: 1px solid transparent;
  border-radius: var(--nz-radius);
  cursor: pointer;
  transition: background-color .2s var(--nz-ease), color .2s var(--nz-ease), border-color .2s var(--nz-ease);
}
.nz-btn--primary { background: var(--nz-forest); color: var(--nz-white); border-color: var(--nz-forest); }
.nz-btn--primary:hover { background: var(--nz-forest-deep); border-color: var(--nz-forest-deep); color: var(--nz-white); }

.nz-btn--secondary { background: transparent; color: var(--nz-forest); border-color: var(--nz-forest); }
.nz-btn--secondary:hover { background: var(--nz-forest); color: var(--nz-white); }

.nz-on-dark .nz-btn--primary { background: var(--nz-lime); color: var(--nz-forest-deep); border-color: var(--nz-lime); }
.nz-on-dark .nz-btn--primary:hover { background: var(--nz-white); border-color: var(--nz-white); color: var(--nz-forest-deep); }
.nz-on-dark .nz-btn--secondary { color: var(--nz-white); border-color: rgba(255, 255, 255, .45); }
.nz-on-dark .nz-btn--secondary:hover { background: var(--nz-white); color: var(--nz-forest-deep); border-color: var(--nz-white); }

.nz-btns { display: flex; flex-wrap: wrap; gap: .75rem; }
@media (max-width: 26rem) {
  .nz-btns { flex-direction: column; align-items: stretch; }
  .nz-btns .nz-btn { width: 100%; }
}

/* Text link with an arrow — descriptive labels, never "Learn more" */
.nz-arrow {
  display: inline-flex;
  align-items: baseline;
  gap: .5rem;
  font-weight: 600;
  font-size: .9375rem;
  color: var(--nz-forest);
  text-decoration: none;
  border-bottom: 1px solid var(--nz-line);
  padding-bottom: .3rem;
  transition: border-color .2s var(--nz-ease), color .2s var(--nz-ease);
}
.nz-arrow::after {
  content: "→";
  font-family: var(--nz-font-body);
  transition: transform .28s var(--nz-ease-out);
}
.nz-arrow:hover { color: var(--nz-forest); border-bottom-color: var(--nz-forest); }
.nz-arrow:hover::after { transform: translateX(.28rem); }
.nz-on-dark .nz-arrow { color: var(--nz-white); border-bottom-color: var(--nz-line-dark); }
.nz-on-dark .nz-arrow:hover { color: var(--nz-lime); border-bottom-color: var(--nz-lime); }

/* Whole-block click target that keeps a real, focusable link */
.nz-stretch { position: relative; }
.nz-stretch__link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* 06 ─ HEADER / NAVIGATION ─────────────────────────────────────────────── */

.nz-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--nz-canvas);
  border-bottom: 1px solid transparent;
  transition: border-color .25s var(--nz-ease), background-color .25s var(--nz-ease);
}
.nz-header[data-scrolled="true"] { border-bottom-color: var(--nz-line); background: rgba(247, 248, 244, .93); backdrop-filter: saturate(1.4) blur(10px); }

.nz-header__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  min-height: var(--nz-header-h);
}

/* The supplied master logo is a STACKED lockup (mark over wordmark over
   "INTERNATIONAL"), so it needs real height to stay legible in a horizontal
   bar. A horizontal lockup is listed in docs/ASSET_REQUIREMENTS.md; when one
   is supplied it drops straight into the same slot. */
.nz-logo { display: inline-flex; align-items: center; text-decoration: none; flex: none; }
.nz-logo img, .nz-logo svg { height: 3.5rem; width: auto; }
@media (max-width: 68rem) { .nz-logo img, .nz-logo svg { height: 3rem; } }
@media (max-width: 30rem) { .nz-logo img, .nz-logo svg { height: 2.625rem; } }

.nz-nav { display: flex; align-items: center; gap: .25rem; }
.nz-nav__list { display: flex; align-items: center; gap: .1rem; list-style: none; margin: 0; padding: 0; }
.nz-nav__item { margin: 0; position: relative; }

.nz-nav__link {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .6rem .85rem;
  font-size: .9375rem;
  font-weight: 520;
  color: var(--nz-ink);
  text-decoration: none;
  border-radius: var(--nz-radius);
  white-space: nowrap;
  transition: color .18s var(--nz-ease);
}
.nz-nav__link:hover { color: var(--nz-forest); }
.nz-nav__link[aria-current="page"] { color: var(--nz-forest); font-weight: 620; }
.nz-nav__link[aria-current="page"]::after {
  content: "";
  position: absolute;
  left: .85rem; right: .85rem; bottom: .15rem;
  height: 2px;
  background: var(--nz-green);
}

.nz-nav__toggle {
  background: none;
  border: 0;
  font: inherit;
  cursor: pointer;
}
.nz-nav__caret {
  width: .55rem; height: .55rem;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-.1em);
  transition: transform .25s var(--nz-ease);
  flex: none;
}
.nz-nav__toggle[aria-expanded="true"] .nz-nav__caret { transform: rotate(-135deg) translateY(-.1em); }

.nz-header__actions { display: flex; align-items: center; gap: .75rem; flex: none; }

/* Mega panel — one structured panel, opened by click, closed by Esc */
.nz-mega {
  position: absolute;
  left: 0; right: 0;
  top: 100%;
  background: var(--nz-white);
  border-top: 1px solid var(--nz-line);
  border-bottom: 1px solid var(--nz-line);
  box-shadow: 0 24px 48px -32px rgba(20, 47, 27, .3);
}
.nz-mega[hidden] { display: none !important; }
.nz-mega__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  padding-block: clamp(2rem, 3.5vw, 3rem);
}
.nz-mega__col > h2 {
  font-size: .8125rem;
  font-family: var(--nz-font-body);
  font-weight: 620;
  letter-spacing: .105em;
  text-transform: uppercase;
  color: var(--nz-muted);
  margin-bottom: 1.35rem;
}
.nz-mega__sectors {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.75rem;
  list-style: none; margin: 0; padding: 0;
  align-items: start;
}
.nz-mega__sectors li { margin: 0; }
.nz-mega__sector {
  display: block;
  text-decoration: none;
  color: inherit;
}
.nz-mega__thumb {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--nz-canvas-warm);
  margin-bottom: .7rem;
}
.nz-mega__thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--nz-ease-out); }
.nz-mega__sector:hover .nz-mega__thumb img { transform: scale(1.04); }
/* Names reserve two lines so every card's description starts on the same
   baseline, whatever the sector is called. */
.nz-mega__sector-name {
  display: block;
  font-weight: 600;
  font-size: .9375rem;
  color: var(--nz-forest);
  line-height: 1.3;
  min-height: 2.6em;
}
.nz-mega__sector-desc {
  display: block;
  font-size: .8125rem;
  color: var(--nz-muted);
  margin-top: .1rem;
  line-height: 1.45;
}

.nz-mega__advisory { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 2rem; }
.nz-mega__advisory li { margin: 0 0 .1rem; break-inside: avoid; }
.nz-mega__advisory a {
  display: block;
  padding: .4rem 0;
  font-size: .875rem;
  color: var(--nz-ink);
  text-decoration: none;
  border-bottom: 1px solid transparent;
}
.nz-mega__advisory a:hover { color: var(--nz-forest); border-bottom-color: var(--nz-line); }
.nz-mega__foot { grid-column: 1 / -1; padding-top: 1.5rem; border-top: 1px solid var(--nz-line); }

/* Mobile navigation — a purpose-built panel, not a collapsed desktop menu */
.nz-burger {
  display: none;
  align-items: center;
  gap: .55rem;
  min-height: 2.75rem;
  padding: .5rem .75rem;
  background: none;
  border: 0;
  font: inherit;
  font-size: .875rem;
  font-weight: 600;
  color: var(--nz-forest);
  cursor: pointer;
}
.nz-burger__bars { position: relative; width: 1.25rem; height: .75rem; flex: none; }
.nz-burger__bars span {
  position: absolute; left: 0;
  width: 100%; height: 1.5px;
  background: currentColor;
  transition: transform .3s var(--nz-ease), opacity .2s var(--nz-ease);
}
.nz-burger__bars span:nth-child(1) { top: 0; }
.nz-burger__bars span:nth-child(2) { top: 50%; margin-top: -.75px; }
.nz-burger__bars span:nth-child(3) { bottom: 0; }
.nz-burger[aria-expanded="true"] .nz-burger__bars span:nth-child(1) { transform: translateY(.36rem) rotate(45deg); }
.nz-burger[aria-expanded="true"] .nz-burger__bars span:nth-child(2) { opacity: 0; }
.nz-burger[aria-expanded="true"] .nz-burger__bars span:nth-child(3) { transform: translateY(-.36rem) rotate(-45deg); }

.nz-mobilenav {
  position: fixed;
  inset: var(--nz-header-h) 0 0;
  z-index: 99;
  background: var(--nz-canvas);
  overflow-y: auto;
  overscroll-behavior: contain;
  display: flex;
  flex-direction: column;
}
.nz-mobilenav[hidden] { display: none !important; }
.nz-mobilenav__scroll { flex: 1; padding: 1.5rem var(--nz-gutter) 2rem; }
.nz-mobilenav__list { list-style: none; margin: 0; padding: 0; }
.nz-mobilenav__list > li { border-bottom: 1px solid var(--nz-line); }
.nz-mobilenav__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  min-height: 3.5rem;
  padding: .9rem 0;
  background: none;
  border: 0;
  font-family: var(--nz-font-display);
  font-size: 1.375rem;
  font-weight: 600;
  letter-spacing: -.018em;
  color: var(--nz-forest);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}
.nz-mobilenav__sub { list-style: none; margin: 0; padding: 0 0 1rem; }
.nz-mobilenav__sub li { margin: 0; }
.nz-mobilenav__sub a {
  display: block;
  min-height: 2.75rem;
  padding: .6rem 0 .6rem 1rem;
  border-left: 2px solid var(--nz-line);
  font-size: 1rem;
  color: var(--nz-ink);
  text-decoration: none;
}
.nz-mobilenav__sub a:hover { border-left-color: var(--nz-green); color: var(--nz-forest); }
.nz-mobilenav__sub[hidden] { display: none !important; }
.nz-mobilenav__foot {
  padding: 1.5rem var(--nz-gutter) 2.5rem;
  background: var(--nz-forest);
  color: rgba(255, 255, 255, .82);
}
.nz-mobilenav__foot .nz-btn { width: 100%; }
.nz-mobilenav__contact { margin-top: 1rem; font-size: .9375rem; }
/* Contact links in the mobile panel are primary actions, so they get real
   tap targets rather than inline text height. */
.nz-mobilenav__contact a {
  display: flex;
  align-items: center;
  min-height: 2.875rem;
  color: var(--nz-lime);
  text-decoration: none;
  border-bottom: 1px solid var(--nz-line-dark);
}
.nz-mobilenav__contact a:last-child { border-bottom: 0; }
.nz-mobilenav__contact a:hover { text-decoration: underline; }

@media (max-width: 68rem) {
  .nz-nav, .nz-header__actions .nz-btn { display: none; }
  .nz-burger { display: inline-flex; }
}
@media (min-width: 68.0625rem) { .nz-mobilenav { display: none !important; } }

body[data-nav-open="true"] { overflow: hidden; }

/* 07 ─ HERO ────────────────────────────────────────────────────────────── */

.nz-hero {
  position: relative;
  background: var(--nz-canvas);
  padding-top: clamp(2.5rem, 5vw, 4.5rem);
  overflow: hidden;
}
.nz-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
  gap: clamp(2rem, 4vw, 4.5rem);
  align-items: end;
}
.nz-hero__copy { padding-bottom: clamp(2.5rem, 5vw, 4.5rem); max-width: 37rem; }
.nz-hero h1 {
  margin-bottom: 1.15rem;
  font-size: clamp(2.375rem, 1.5rem + 3.1vw, 3.75rem);
}
.nz-hero__lede { max-width: 32rem; margin-bottom: 2rem; }
.nz-hero__btns { margin-bottom: 0; }

/* The image is deliberately full-bleed to the right edge, cropped tall.
   Text never sits over it — no legibility compromise, no scrim. */
.nz-hero__media {
  position: relative;
  /* Runs to the true viewport edge, not just past the gutter. */
  margin-right: calc((100vw - min(100vw, var(--nz-max))) / -2 - var(--nz-gutter));
  aspect-ratio: 4 / 3.35;
  min-height: 22rem;
  background: var(--nz-canvas-warm);
  overflow: hidden;
}
.nz-hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 62% 50%; }

/* A single brand rule anchors the composition instead of a decorative card */
.nz-hero__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .75rem clamp(1.25rem, 3vw, 2.5rem);
  padding: 1.1rem 0 1.3rem;
  border-top: 1px solid var(--nz-line);
  margin-top: clamp(2.5rem, 5vw, 4rem);
}
.nz-hero__meta .nz-tagline { color: var(--nz-forest); }
.nz-hero__meta-note { font-size: .875rem; color: var(--nz-muted); margin-left: auto; }

@media (max-width: 62rem) {
  .nz-hero__grid { grid-template-columns: 1fr; gap: 0; }
  .nz-hero__copy { padding-bottom: 2.25rem; max-width: none; }
  .nz-hero__lede { max-width: 38rem; }
  /* Mobile art direction: a wider, shallower crop that keeps the subject */
  .nz-hero__media {
    margin-inline: calc(var(--nz-gutter) * -1);
    aspect-ratio: 16 / 11;
    min-height: 0;
  }
  .nz-hero__media img { object-position: 58% 50%; }
}
@media (max-width: 30rem) {
  .nz-hero__media { aspect-ratio: 4 / 3; }
  .nz-hero__meta-note { margin-left: 0; flex-basis: 100%; }
}

/* 08 ─ LOGO STRIP & CLIENT GRID ────────────────────────────────────────── */

.nz-logos { padding-block: clamp(2.5rem, 4.5vw, 3.75rem); }
.nz-logos__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1.5rem;
  flex-wrap: wrap;
  margin-bottom: 2rem;
}
.nz-logos__title {
  font-family: var(--nz-font-body);
  font-size: .8125rem;
  font-weight: 620;
  letter-spacing: .105em;
  text-transform: uppercase;
  color: var(--nz-muted);
  margin: 0;
}
.nz-logos__grid {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: clamp(1.75rem, 3.5vw, 2.75rem) clamp(1rem, 2vw, 2rem);
  align-items: center;
  justify-items: center;
}
@media (max-width: 75rem) { .nz-logos__grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
@media (max-width: 52rem) { .nz-logos__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 30rem) { .nz-logos__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem 1rem; } }
.nz-logo-item {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 3.75rem;
  width: 100%;
}
/* Logos are shown as supplied — never recoloured or distorted.
   Width and height are computed per mark in PHP so a 4.8:1 wordmark and a
   0.58:1 crest carry similar visual weight (see nyuzi_client_logo). CSS only
   guards the upper bound on narrow screens. */
.nz-logo-item img {
  max-width: 100%;
  height: auto;
  object-fit: contain;
  mix-blend-mode: multiply;
}
.nz-logos__note {
  margin-top: clamp(2rem, 4vw, 3rem);
  padding-top: 1.25rem;
  border-top: 1px solid var(--nz-line);
  font-size: .8125rem;
  color: var(--nz-muted);
  max-width: 46rem;
}

.nz-clientgrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(12.5rem, 1fr));
  gap: 0;
  border-top: 1px solid var(--nz-line);
  border-left: 1px solid var(--nz-line);
}
.nz-clientgrid__cell {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(1.5rem, 3vw, 2.25rem);
  min-height: 10rem;
  border-right: 1px solid var(--nz-line);
  border-bottom: 1px solid var(--nz-line);
  background: var(--nz-white);
}
.nz-clientgrid__cell img {
  max-width: 100%;
  height: auto;
  object-fit: contain;
  mix-blend-mode: multiply;
}

/* 09 ─ SECTOR INDEX ────────────────────────────────────────────────────── */
/* An editorial index, not six identical icon cards. Each row is a full-width
   rule-separated entry that expands its image on hover/focus. */

.nz-sectors { border-top: 1px solid var(--nz-line); }

.nz-sector-row {
  position: relative;
  display: grid;
  grid-template-columns: 3.5rem minmax(0, 1fr) minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(1rem, 3vw, 2.5rem);
  padding: clamp(1.35rem, 2.6vw, 2rem) 0;
  border-bottom: 1px solid var(--nz-line);
  transition: background-color .3s var(--nz-ease);
}
.nz-sector-row:hover { background: var(--nz-white); }
.nz-sector-row__num { align-self: start; padding-top: .35rem; }
.nz-sector-row__title {
  font-family: var(--nz-font-display);
  font-size: clamp(1.375rem, 1.1rem + 1.1vw, 2rem);
  font-weight: 620;
  letter-spacing: -.022em;
  line-height: 1.1;
  color: var(--nz-forest);
  margin: 0;
  text-wrap: balance;
}
.nz-sector-row__desc { font-size: .9375rem; color: var(--nz-muted); margin: 0; max-width: 30rem; }
.nz-sector-row__go {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem; height: 2.75rem;
  border: 1px solid var(--nz-line);
  border-radius: 50%;
  color: var(--nz-forest);
  font-size: 1rem;
  flex: none;
  transition: background-color .25s var(--nz-ease), border-color .25s var(--nz-ease), color .25s var(--nz-ease), transform .3s var(--nz-ease-out);
}
.nz-sector-row:hover .nz-sector-row__go,
.nz-sector-row:focus-within .nz-sector-row__go {
  background: var(--nz-forest);
  border-color: var(--nz-forest);
  color: var(--nz-white);
  transform: translateX(.2rem);
}
/* Preview image revealed alongside the row on pointer devices only.
   All information remains available without hover. */
.nz-sector-row__peek {
  position: absolute;
  right: 5.5rem;
  top: 50%;
  width: 13rem;
  aspect-ratio: 4 / 3;
  transform: translateY(-50%) scale(.94);
  opacity: 0;
  pointer-events: none;
  overflow: hidden;
  background: var(--nz-canvas-warm);
  transition: opacity .3s var(--nz-ease), transform .45s var(--nz-ease-out);
}
.nz-sector-row__peek img { width: 100%; height: 100%; object-fit: cover; }
@media (hover: hover) and (min-width: 64rem) {
  .nz-sector-row:hover .nz-sector-row__peek,
  .nz-sector-row:focus-within .nz-sector-row__peek { opacity: 1; transform: translateY(-50%) scale(1); }
}

@media (max-width: 64rem) {
  .nz-sector-row { grid-template-columns: 2.75rem minmax(0, 1fr) auto; }
  .nz-sector-row__desc { grid-column: 2 / 3; }
  .nz-sector-row__peek { display: none; }
}
@media (max-width: 40rem) {
  .nz-sector-row {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: .5rem 1rem;
    padding: 1.35rem 0;
  }
  .nz-sector-row__num { grid-column: 1 / 2; padding-top: 0; }
  .nz-sector-row__title { grid-column: 1 / 2; }
  .nz-sector-row__desc { grid-column: 1 / 2; }
  .nz-sector-row__go { grid-column: 2 / 3; grid-row: 1 / 3; align-self: center; }
}

/* Sector cards used on the Solutions overview — restrained, image-led */
.nz-sector-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr));
  gap: clamp(1.75rem, 3vw, 2.5rem);
}
.nz-sector-card { position: relative; display: flex; flex-direction: column; }
.nz-sector-card__media {
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: var(--nz-canvas-warm);
  margin-bottom: 1.25rem;
}
.nz-sector-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--nz-ease-out); }
.nz-sector-card:hover .nz-sector-card__media img { transform: scale(1.035); }
.nz-sector-card h3 { font-size: 1.375rem; margin-bottom: .5rem; }
.nz-sector-card p { font-size: .9375rem; color: var(--nz-muted); margin-bottom: 1rem; }
.nz-sector-card__cap { margin-top: auto; }

/* 10 ─ ADVISORY INDEX ──────────────────────────────────────────────────── */
/* Eight areas in a disciplined numbered matrix separated by hairlines. */

.nz-advisory {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--nz-line-dark);
}
.nz-advisory--light { border-top-color: var(--nz-line); }
.nz-advisory__item {
  position: relative;
  padding: clamp(1.5rem, 2.5vw, 2.25rem) clamp(1rem, 2vw, 1.75rem) clamp(1.75rem, 3vw, 2.5rem) 0;
  border-bottom: 1px solid var(--nz-line-dark);
  border-right: 1px solid var(--nz-line-dark);
}
.nz-advisory--light .nz-advisory__item { border-color: var(--nz-line); }
.nz-advisory__item:nth-child(4n),
.nz-advisory__item:last-child { border-right: 0; padding-right: 0; }
.nz-advisory__num { display: block; margin-bottom: .85rem; }
.nz-advisory__title {
  font-family: var(--nz-font-display);
  font-size: 1.0625rem;
  font-weight: 620;
  line-height: 1.28;
  letter-spacing: -.014em;
  margin: 0 0 .55rem;
  text-wrap: balance;
}
.nz-advisory__desc { font-size: .875rem; line-height: 1.55; margin: 0; opacity: .78; }
.nz-advisory__item a { text-decoration: none; color: inherit; }
.nz-advisory__item a::after { content: ""; position: absolute; inset: 0; }
.nz-advisory__item:hover .nz-advisory__title { text-decoration: underline; text-underline-offset: .22em; }

@media (max-width: 64rem) {
  .nz-advisory { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nz-advisory__item:nth-child(4n) { border-right: 1px solid var(--nz-line-dark); padding-right: clamp(1rem, 2vw, 1.75rem); }
  .nz-advisory--light .nz-advisory__item:nth-child(4n) { border-right-color: var(--nz-line); }
  .nz-advisory__item:nth-child(2n) { border-right: 0; padding-right: 0; }
}
@media (max-width: 40rem) {
  .nz-advisory { grid-template-columns: 1fr; }
  .nz-advisory__item,
  .nz-advisory__item:nth-child(4n),
  .nz-advisory__item:nth-child(2n) { border-right: 0; padding-right: 0; }
}

/* 11 ─ PRINCIPLES ──────────────────────────────────────────────────────── */
/* Five operating principles as a typographic ledger — no icons, no cards. */

.nz-principles { border-top: 1px solid var(--nz-line); }
.nz-principle {
  display: grid;
  grid-template-columns: 3.5rem minmax(0, 13rem) minmax(0, 1fr);
  gap: clamp(1rem, 3vw, 3rem);
  align-items: baseline;
  padding: clamp(1.35rem, 2.4vw, 1.9rem) 0;
  border-bottom: 1px solid var(--nz-line);
}
.nz-principle__name {
  font-family: var(--nz-font-display);
  font-size: clamp(1.25rem, 1.1rem + .6vw, 1.5rem);
  font-weight: 620;
  letter-spacing: -.02em;
  color: var(--nz-forest);
  margin: 0;
}
.nz-principle__def { font-size: 1rem; color: var(--nz-muted); margin: 0; max-width: 34rem; }
.nz-on-dark .nz-principles,
.nz-on-dark .nz-principle { border-color: var(--nz-line-dark); }
.nz-on-dark .nz-principle__name { color: var(--nz-white); }
.nz-on-dark .nz-principle__def { color: rgba(255, 255, 255, .74); }
@media (max-width: 48rem) {
  .nz-principle { grid-template-columns: 2.5rem minmax(0, 1fr); gap: .35rem 1rem; }
  .nz-principle__def { grid-column: 2 / 3; }
}

/* 12 ─ FEATURE MODULES ─────────────────────────────────────────────────── */
/* Large editorial features. Alternating side, generous scale, no card chrome. */

/* Media is first in the DOM so it reads before its description; --flip moves
   it to the right-hand column so consecutive features alternate. */
.nz-feature {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
.nz-feature + .nz-feature { margin-top: var(--nz-section); }
.nz-feature--flip { grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr); }
.nz-feature--flip .nz-feature__media { order: 2; }
.nz-feature--flip .nz-feature__body { order: 1; }
.nz-feature__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--nz-canvas-warm);
}
.nz-feature__media img { width: 100%; height: 100%; object-fit: cover; }
.nz-feature__body { max-width: 32rem; }
.nz-feature__body h3 { font-size: clamp(1.625rem, 1.3rem + 1.4vw, 2.25rem); margin-bottom: .9rem; }
.nz-feature__list {
  list-style: none;
  margin: 1.5rem 0;
  padding: 0;
  border-top: 1px solid var(--nz-line);
}
.nz-feature__list li {
  margin: 0;
  padding: .7rem 0;
  border-bottom: 1px solid var(--nz-line);
  font-size: .9375rem;
}
@media (max-width: 56rem) {
  .nz-feature,
  .nz-feature--flip { grid-template-columns: 1fr; gap: 1.75rem; }
  .nz-feature--flip .nz-feature__media { order: 0; }
  .nz-feature--flip .nz-feature__body { order: 0; }
  .nz-feature__media { aspect-ratio: 16 / 10; }
  .nz-feature__body { max-width: none; }
}

/* Bleed feature — image runs to one viewport edge */
.nz-bleed {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(2rem, 5vw, 5.5rem);
}
.nz-bleed__media { aspect-ratio: 5 / 4; overflow: hidden; background: var(--nz-canvas-warm); }
.nz-bleed__media img { width: 100%; height: 100%; object-fit: cover; }
.nz-bleed--right .nz-bleed__media { margin-right: calc((100vw - min(100vw, var(--nz-max))) / -2 - var(--nz-gutter)); }
.nz-bleed--left .nz-bleed__media { order: -1; margin-left: calc((100vw - min(100vw, var(--nz-max))) / -2 - var(--nz-gutter)); }
@media (max-width: 56rem) {
  .nz-bleed { grid-template-columns: 1fr; gap: 1.75rem; }
  .nz-bleed--left .nz-bleed__media { order: 0; }
  .nz-bleed--right .nz-bleed__media,
  .nz-bleed--left .nz-bleed__media {
    margin-inline: calc(var(--nz-gutter) * -1);
    aspect-ratio: 16 / 10;
  }
}

/* 13 ─ EDITORIAL BLOCKS ────────────────────────────────────────────────── */

/* Capability ledger — source capability lists rendered as a numbered table */
.nz-capabilities { border-top: 1px solid var(--nz-line); margin: 0; }
.nz-capability {
  display: grid;
  grid-template-columns: 3.5rem minmax(0, 1fr);
  gap: 1rem clamp(1rem, 2.5vw, 2rem);
  padding: clamp(1rem, 1.8vw, 1.35rem) 0;
  border-bottom: 1px solid var(--nz-line);
  align-items: baseline;
}
.nz-capability__name {
  font-family: var(--nz-font-display);
  font-size: clamp(1.0625rem, 1rem + .35vw, 1.1875rem);
  font-weight: 600;
  letter-spacing: -.014em;
  color: var(--nz-forest);
  margin: 0;
}
.nz-on-dark .nz-capabilities, .nz-on-dark .nz-capability { border-color: var(--nz-line-dark); }
.nz-on-dark .nz-capability__name { color: var(--nz-white); }

/* Deliverables — a two-column checklist, hairline separated, no bullets */
.nz-deliverables {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 clamp(2rem, 5vw, 4rem);
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--nz-line);
}
.nz-deliverables li {
  display: grid;
  grid-template-columns: 1.35rem minmax(0, 1fr);
  gap: .75rem;
  align-items: baseline;
  margin: 0;
  padding: .95rem 0;
  border-bottom: 1px solid var(--nz-line);
  font-size: 1rem;
}
.nz-deliverables li::before {
  content: "";
  width: .5rem;
  height: .5rem;
  background: var(--nz-green);
  transform: translateY(-.15em);
}
@media (max-width: 48rem) { .nz-deliverables { grid-template-columns: 1fr; } }

/* Two-column definition rows (Vision / Mission, legal info, etc.) */
.nz-defs { border-top: 1px solid var(--nz-line); }
.nz-def {
  display: grid;
  grid-template-columns: minmax(0, 14rem) minmax(0, 1fr);
  gap: .5rem clamp(1.5rem, 4vw, 4rem);
  padding: clamp(1.5rem, 3vw, 2.25rem) 0;
  border-bottom: 1px solid var(--nz-line);
}
.nz-def__term {
  font-family: var(--nz-font-body);
  font-size: .8125rem;
  font-weight: 620;
  letter-spacing: .105em;
  text-transform: uppercase;
  color: var(--nz-muted);
  margin: 0;
}
.nz-def__desc { margin: 0; font-size: clamp(1.0625rem, 1rem + .4vw, 1.25rem); line-height: 1.5; color: var(--nz-ink); max-width: 40rem; }
.nz-on-dark .nz-defs, .nz-on-dark .nz-def { border-color: var(--nz-line-dark); }
.nz-on-dark .nz-def__term { color: var(--nz-lime); }
.nz-on-dark .nz-def__desc { color: rgba(255, 255, 255, .88); }
@media (max-width: 44rem) { .nz-def { grid-template-columns: 1fr; } }

/* Verifiable figures only — never invented metrics */
.nz-figures {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  gap: 0;
  border-top: 1px solid var(--nz-line-dark);
}
.nz-figures--light { border-top-color: var(--nz-line); }
.nz-figure {
  padding: clamp(1.75rem, 3vw, 2.5rem) clamp(1.25rem, 2.5vw, 2rem) clamp(1.75rem, 3vw, 2.5rem) 0;
  border-bottom: 1px solid var(--nz-line-dark);
  border-right: 1px solid var(--nz-line-dark);
}
.nz-figures--light .nz-figure { border-color: var(--nz-line); }
.nz-figure:last-child { border-right: 0; padding-right: 0; }
.nz-figure__value {
  display: block;
  font-family: var(--nz-font-display);
  font-size: clamp(2.75rem, 2rem + 3vw, 4.25rem);
  font-weight: 600;
  line-height: 1;
  letter-spacing: -.035em;
  color: var(--nz-white);
  margin-bottom: .6rem;
}
.nz-figures--light .nz-figure__value { color: var(--nz-forest); }
.nz-figure__label { font-size: .9375rem; line-height: 1.45; margin: 0; opacity: .8; max-width: 15rem; }

/* Pull quote / statement block */
.nz-statement {
  font-family: var(--nz-font-display);
  font-size: clamp(1.5rem, 1.1rem + 1.9vw, 2.5rem);
  font-weight: 550;
  line-height: 1.22;
  letter-spacing: -.024em;
  color: var(--nz-forest);
  max-width: 32ch;
  margin: 0;
  text-wrap: balance;
}
.nz-on-dark .nz-statement { color: var(--nz-white); }

/* Supporting copy inside sections */
.nz-capability__note { margin: .3rem 0 0; font-size: .9375rem; color: var(--nz-muted); }
.nz-on-dark .nz-capability__note { color: rgba(255, 255, 255, .7); }

.nz-impact__body { margin-top: 1.75rem; max-width: 34rem; color: var(--nz-muted); }
.nz-impact__link { margin-top: 1.75rem; }
.nz-cta__body { margin-bottom: 1.75rem; }

/* Closing CTA */
.nz-cta { padding-block: var(--nz-section-lg); }
.nz-cta__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: end;
}
.nz-cta h2 { font-size: clamp(2rem, 1.4rem + 2.6vw, 3.25rem); margin-bottom: 0; max-width: 18ch; }
.nz-cta__side { padding-bottom: .5rem; }
@media (max-width: 56rem) {
  .nz-cta__inner { grid-template-columns: 1fr; gap: 2rem; align-items: start; }
  .nz-cta__side { padding-bottom: 0; }
}

/* Page hero for interior pages */
.nz-pagehero { padding-top: clamp(2.5rem, 5vw, 4rem); padding-bottom: clamp(2.5rem, 5vw, 4.5rem); }
.nz-pagehero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: clamp(1.5rem, 4vw, 4.5rem);
  align-items: end;
}
.nz-pagehero h1 { margin-bottom: 0; max-width: 16ch; }
.nz-pagehero__lede { padding-bottom: .5rem; }
.nz-pagehero__media {
  margin-top: clamp(2.5rem, 5vw, 4rem);
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--nz-canvas-warm);
}
/* Applied when the source image cannot fill the full width at 1x. Keeps the
   composition honest rather than upscaling a small asset. */
.nz-pagehero__media--constrained,
.nz-sectorlead--constrained {
  max-width: 64rem;
  aspect-ratio: 16 / 9;
}
.nz-pagehero__media img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 56rem) {
  .nz-pagehero__grid { grid-template-columns: 1fr; gap: 1.25rem; align-items: start; }
  .nz-pagehero h1 { max-width: none; }
  .nz-pagehero__lede { padding-bottom: 0; }
  .nz-pagehero__media { aspect-ratio: 16 / 9; }
}

/* Product plate — cutout imagery presented honestly on a tint, never as a
   full-bleed background. Small source images are never upscaled past 1x. */
.nz-plates {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--nz-line);
  border-left: 1px solid var(--nz-line);
}
@media (max-width: 64rem) { .nz-plates { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 44rem) { .nz-plates { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nz-plate {
  background: var(--nz-white);
  padding: clamp(1.25rem, 2.5vw, 1.75rem);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  border-right: 1px solid var(--nz-line);
  border-bottom: 1px solid var(--nz-line);
}
.nz-plate__img {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--nz-canvas-warm);
}
.nz-plate__img img { max-width: 78%; max-height: 78%; width: auto; height: auto; object-fit: contain; mix-blend-mode: multiply; }
.nz-plate__label { font-size: .8125rem; line-height: 1.45; color: var(--nz-muted); margin: 0; }

/* Insight / article cards — editorial, not blog-template */
.nz-articles { border-top: 1px solid var(--nz-line); }
.nz-article {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 9rem) minmax(0, 1fr) minmax(0, 14rem);
  gap: clamp(1rem, 3vw, 2.5rem);
  padding: clamp(1.5rem, 3vw, 2.25rem) 0;
  border-bottom: 1px solid var(--nz-line);
  align-items: start;
}
.nz-article__meta { font-size: .8125rem; color: var(--nz-muted); letter-spacing: .04em; text-transform: uppercase; font-weight: 600; }
.nz-article__title { font-size: clamp(1.25rem, 1.1rem + .7vw, 1.625rem); margin: 0 0 .5rem; }
.nz-article__title a { color: inherit; text-decoration: none; }
.nz-article__title a::after { content: ""; position: absolute; inset: 0; }
.nz-article:hover .nz-article__title { text-decoration: underline; text-underline-offset: .2em; }
.nz-article__excerpt { font-size: .9375rem; color: var(--nz-muted); margin: 0; max-width: 44rem; }
.nz-article__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--nz-canvas-warm); }
.nz-article__media img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 56rem) {
  .nz-article { grid-template-columns: 1fr; gap: .75rem; }
  .nz-article__media { order: -1; margin-bottom: .5rem; }
}

/* 14 ─ BREADCRUMBS ─────────────────────────────────────────────────────── */

.nz-crumbs { padding-block: 1rem; font-size: .8125rem; }
.nz-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.nz-crumbs li { margin: 0; display: flex; align-items: center; gap: .5rem; color: var(--nz-muted); }
.nz-crumbs li + li::before { content: "/"; color: var(--nz-line); }
.nz-crumbs a {
  color: var(--nz-muted);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  min-height: 1.5rem;
}
@media (max-width: 48rem) {
  .nz-crumbs { padding-block: .75rem; }
  .nz-crumbs a { min-height: 2.25rem; }
}
.nz-crumbs a:hover { color: var(--nz-forest); text-decoration: underline; }
.nz-crumbs [aria-current="page"] { color: var(--nz-forest); font-weight: 600; }

/* 15 ─ FORMS ───────────────────────────────────────────────────────────── */

.nz-form { max-width: 44rem; }
.nz-form__section { padding-top: clamp(2rem, 4vw, 2.75rem); margin-top: clamp(2rem, 4vw, 2.75rem); border-top: 1px solid var(--nz-line); }
.nz-form__section:first-child { padding-top: 0; margin-top: 0; border-top: 0; }
.nz-form__legend {
  font-family: var(--nz-font-body);
  font-size: .8125rem;
  font-weight: 620;
  letter-spacing: .105em;
  text-transform: uppercase;
  color: var(--nz-muted);
  margin: 0 0 1.5rem;
  padding: 0;
}
.nz-fieldset { border: 0; padding: 0; margin: 0; }

.nz-field { margin-bottom: 1.5rem; }
.nz-field--half { margin-bottom: 0; }
.nz-fieldrow {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  gap: 1.5rem;
  margin-bottom: 1.5rem;
}

.nz-label {
  display: block;
  font-size: .9375rem;
  font-weight: 600;
  color: var(--nz-forest);
  margin-bottom: .45rem;
}
.nz-label__opt { font-weight: 400; color: var(--nz-muted); }
.nz-hint { display: block; font-size: .8125rem; color: var(--nz-muted); margin-bottom: .5rem; }

.nz-input, .nz-select, .nz-textarea {
  display: block;
  width: 100%;
  min-height: 3rem;
  padding: .75rem .95rem;
  font-family: inherit;
  font-size: 1rem;
  color: var(--nz-ink);
  background: var(--nz-white);
  border: 1px solid var(--nz-line);
  border-radius: var(--nz-radius);
  transition: border-color .18s var(--nz-ease), box-shadow .18s var(--nz-ease);
}
.nz-textarea { min-height: 9rem; resize: vertical; line-height: 1.6; }
.nz-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%235A6459' stroke-width='1.6' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1rem center;
  background-size: .7rem;
  padding-right: 2.5rem;
}
.nz-input:hover, .nz-select:hover, .nz-textarea:hover { border-color: var(--nz-muted); }
.nz-input:focus, .nz-select:focus, .nz-textarea:focus {
  border-color: var(--nz-green-text);
  box-shadow: 0 0 0 3px rgba(51, 105, 30, .16);
  outline: none;
}
.nz-input[aria-invalid="true"], .nz-select[aria-invalid="true"], .nz-textarea[aria-invalid="true"] {
  border-color: #A32013;
  box-shadow: 0 0 0 3px rgba(163, 32, 19, .12);
}

.nz-error {
  display: flex;
  align-items: flex-start;
  gap: .45rem;
  font-size: .875rem;
  font-weight: 500;
  color: #8C1B10;
  margin-top: .45rem;
}
.nz-error::before { content: "!"; font-weight: 700; flex: none; width: 1.15em; height: 1.15em; border-radius: 50%; background: #8C1B10; color: #fff; font-size: .72em; display: grid; place-items: center; margin-top: .18em; }

.nz-choice { display: flex; align-items: flex-start; gap: .7rem; margin-bottom: .65rem; }
.nz-choice input { width: 1.15rem; height: 1.15rem; margin: .2rem 0 0; flex: none; accent-color: var(--nz-green-text); }
.nz-choice label { font-size: .9375rem; font-weight: 400; color: var(--nz-ink); margin: 0; }

.nz-checkgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: .35rem 1.5rem; }

.nz-file {
  display: block;
  padding: 1.25rem;
  border: 1px dashed var(--nz-line);
  border-radius: var(--nz-radius);
  background: var(--nz-white);
}
.nz-file input { font-size: .875rem; margin-top: .5rem; }

.nz-form__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem; margin-top: 2.25rem; }

.nz-notice {
  padding: 1.25rem 1.5rem;
  border-left: 3px solid var(--nz-green);
  background: var(--nz-white);
  margin-bottom: 2rem;
}
.nz-notice--error { border-left-color: #A32013; }
.nz-notice h2, .nz-notice h3 { font-size: 1.125rem; margin-bottom: .35rem; }
.nz-notice p { font-size: .9375rem; color: var(--nz-muted); margin-bottom: 0; }

.nz-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* What happens next — reassurance without promising unconfirmed SLAs */
.nz-steps { list-style: none; margin: 0; padding: 0; counter-reset: nzstep; border-top: 1px solid var(--nz-line); }
.nz-steps li {
  counter-increment: nzstep;
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr);
  gap: 1rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--nz-line);
  margin: 0;
  font-size: .9375rem;
}
.nz-steps li::before {
  content: counter(nzstep, decimal-leading-zero);
  font-family: var(--nz-font-display);
  font-size: .8125rem;
  font-weight: 650;
  color: var(--nz-green-text);
  font-variant-numeric: tabular-nums;
}

/* 16 ─ EMPTY STATES ────────────────────────────────────────────────────── */

/* Never "No posts found." — an editorial statement instead. */
.nz-empty {
  padding: clamp(2.5rem, 5vw, 4rem) 0;
  border-top: 1px solid var(--nz-line);
  border-bottom: 1px solid var(--nz-line);
  max-width: 46rem;
}
.nz-empty h3 { font-size: clamp(1.375rem, 1.2rem + .8vw, 1.75rem); margin-bottom: .75rem; }
.nz-empty p { color: var(--nz-muted); max-width: 38rem; }
.nz-empty__actions { margin-top: 1.75rem; }

/* 17 ─ FOOTER ──────────────────────────────────────────────────────────── */

.nz-footer { background: var(--nz-forest-deep); color: rgba(255, 255, 255, .74); padding-block: clamp(3.5rem, 6vw, 5.5rem) 0; }
.nz-footer h2, .nz-footer h3 { color: var(--nz-white); }
.nz-footer a { color: rgba(255, 255, 255, .74); text-decoration: none; }
.nz-footer a:hover { color: var(--nz-lime); text-decoration: underline; }

.nz-footer__top {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr));
  gap: clamp(2rem, 4vw, 3.5rem);
  padding-bottom: clamp(2.5rem, 5vw, 4rem);
}
.nz-footer__brand { max-width: 24rem; }
.nz-footer__logo { margin-bottom: 1.35rem; display: inline-block; }
.nz-footer__logo img { height: 4rem; width: auto; }
.nz-footer__desc { font-size: .9375rem; line-height: 1.65; }

.nz-footer__col h3 {
  font-family: var(--nz-font-body);
  font-size: .75rem;
  font-weight: 620;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .55);
  margin-bottom: 1.15rem;
}
.nz-footer__list { list-style: none; margin: 0; padding: 0; }
.nz-footer__list li { margin: 0; }
/* Navigation links are targets rather than inline prose, so they carry a
   comfortable hit area rather than bare line-height (WCAG 2.2 target size). */
.nz-footer__list a {
  display: inline-flex;
  align-items: center;
  min-height: 2rem;
  padding-block: .15rem;
  font-size: .9375rem;
}
@media (max-width: 48rem) { .nz-footer__list a { min-height: 2.75rem; } }

.nz-footer__contact { font-size: .9375rem; line-height: 1.75; font-style: normal; }
.nz-footer__contact a { display: inline-block; }

.nz-footer__mid {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding-block: clamp(1.75rem, 3vw, 2.5rem);
  border-top: 1px solid var(--nz-line-dark);
}
.nz-footer__tagline { color: var(--nz-lime); margin: 0; }

.nz-footer__legal {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 2rem;
  padding-block: 1.5rem 2.5rem;
  border-top: 1px solid var(--nz-line-dark);
  font-size: .8125rem;
  color: rgba(255, 255, 255, .55);
}
.nz-footer__legal ul { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; list-style: none; margin: 0; padding: 0; }
.nz-footer__legal li { margin: 0; }
.nz-footer__legal a {
  display: inline-flex;
  align-items: center;
  min-height: 1.75rem;
  font-size: .8125rem;
  color: rgba(255, 255, 255, .55);
}
@media (max-width: 48rem) { .nz-footer__legal a { min-height: 2.75rem; } }

@media (max-width: 62rem) {
  .nz-footer__top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nz-footer__brand { grid-column: 1 / -1; max-width: 34rem; }
}
@media (max-width: 34rem) {
  .nz-footer__top { grid-template-columns: 1fr; gap: 2rem; }
  .nz-footer__legal { flex-direction: column; align-items: flex-start; }
}

/* 18 ─ MOTION ──────────────────────────────────────────────────────────── */
/* A single, quiet reveal. Applied selectively — never to every section. */

.nz-reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .7s var(--nz-ease-out), transform .7s var(--nz-ease-out);
  will-change: opacity, transform;
}
.nz-reveal.is-in { opacity: 1; transform: none; }
.no-js .nz-reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .nz-reveal { opacity: 1 !important; transform: none !important; }
}

/* Print — keep the profile readable if a page is printed */
@media print {
  .nz-header, .nz-mobilenav, .nz-footer__mid, .nz-cta, .nz-skip { display: none !important; }
  body { background: #fff; color: #000; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .8em; }
}
