/* NSI webfonts. Substituted from Google Fonts — see readme.md "Type substitution". */
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: italic;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("assets/04a65b11-56eb-4d32-81e6-53091967d1f5.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: italic;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("assets/ab957a04-c20c-4172-a97a-562cab761dc0.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("assets/f045962f-1435-4ba7-9497-cea3a47ed35e.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("assets/1750c136-930c-4e8a-992a-4173c4b25c11.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Zilla Slab';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("assets/7fe000b2-a39b-4e6d-ad02-c23a7e138228.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Zilla Slab';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("assets/5eada999-ddc3-4d6e-97d4-68f3d23756fd.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Zilla Slab';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("assets/46f0a1d2-df92-4c58-8f78-c99895c64353.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Zilla Slab';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("assets/7d75ecf4-8b1f-400e-a105-e53133ea0b86.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("assets/6f55d715-ec9e-4869-82b2-853f996a61cd.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("assets/e76677b8-ca83-4fb8-8e7d-b62277eed6ef.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("assets/310729c5-ceac-4d52-b8b9-566d5a294c23.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("assets/165c81de-ea04-4c04-a510-83be2654b013.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("assets/ecd370f5-7392-49ce-a44f-6fbc52007895.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("assets/b6a61057-22fb-4a38-8124-0f5d203516be.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/9c629bb6-05df-42cb-b3ac-d5fdc57461e2.bin") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/d9c79d9f-993f-4c44-a6ad-7111b29a5e64.bin") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


:root{
/* ================================================================
   FOUR FAMILIES. Nothing else. Values read off the reference
   field guide's own colour plates.
     Midnight   PMS 280C / 281U   #101456
     True Blue  PMS 285C / 300U   #0048BA
     Off-White  PMS 913C / CG1U   #DFE0D8
   Ink is the neutral type ramp; --critical-* is functional only.
   ================================================================ */

/* Midnight — the dark. Headlines, inverse surfaces, every offset shadow. */
--midnight-100:#DCDDEC;--midnight-200:#B4B7D4;--midnight-300:#7B80B0;--midnight-500:#2A3079;--midnight-700:#101456;--midnight-800:#0A0D3B;--midnight-900:#060828;

/* True Blue — the primary. Every action and every filled mark. */
--blue-100:#D9E4F7;--blue-200:#A9C2E8;--blue-300:#5C8FDD;--blue-500:#0048BA;--blue-600:#003A97;--blue-700:#002C74;

/* Off-White — paper. Every background. Never pure white. */
--bone-050:#F2F2EC;--bone-100:#E9E9E1;--bone-200:#DFE0D8;--bone-300:#CFD0C6;--bone-400:#B8BAAE;--bone-500:#9EA095;

/* Ink — the neutral type ramp. Near-black with a blue cast. */
--ink-900:#111214;--ink-800:#1C1D22;--ink-700:#2C2E36;--ink-500:#5A5D68;--ink-400:#7C808B;--ink-300:#A3A7B0;

/* Critical — functional only. Never decorative, never a background field. */
--critical-200:#E3C8BF;--critical-500:#8C4A34;--critical-700:#63301F;

/* --- Semantic surfaces -------------------------------------------- */
--surface-page:var(--bone-200);
--surface-card:var(--bone-100);
--surface-raised:var(--bone-050);
--surface-sunken:var(--bone-300);
--surface-inverse:var(--midnight-700);
--surface-accent:var(--blue-500);
--surface-muted:var(--bone-300);

/* --- Semantic text ------------------------------------------------- */
--text-primary:var(--midnight-700);
--text-body:var(--ink-800);
--text-secondary:var(--ink-500);
--text-muted:var(--ink-400);
--text-inverse:var(--bone-200);
--text-accent:var(--blue-500);
--text-link:var(--blue-500);
--text-link-hover:var(--blue-700);

/* --- Lines --------------------------------------------------------- */
--line-hairline:#CFD0C6;
--line-soft:#B8BAAE;
--line-strong:var(--midnight-700);
--line-inverse:rgba(223,224,216,.26);

/* --- Status — drawn from the four, plus the one critical hue -------- */
--status-success:var(--blue-600);--status-success-bg:var(--blue-100);
--status-warning:var(--midnight-700);--status-warning-bg:var(--midnight-100);
--status-danger:var(--critical-500);--status-danger-bg:var(--critical-200);
--status-info:var(--ink-700);--status-info-bg:var(--bone-300);

/* --- Interaction ---------------------------------------------------- */
--focus-ring:var(--blue-300);
--focus-ring-width:3px;
--overlay-scrim:rgba(16,20,86,.62);
}

:root{
/* Serif display face — the wordmark and every headline. */
--font-display:"Zilla Slab",Georgia,"Times New Roman",serif;
/* Grotesque for interface, body copy and all utility type. */
--font-text:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
/* Utility type is the same grotesque, uppercase and tracked — the field-guide
   labels are set in the sans, not a mono. Kept as a token for API stability. */
--font-mono:"Instrument Sans","Helvetica Neue",Arial,sans-serif;

/* Weights */
--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-black:700;

/* Widths — retained for API stability; the serif has no width axis. */
--width-condensed:100;/* @kind other */
--width-normal:100;/* @kind other */
--width-expanded:100;/* @kind other */

/* Sizes — display */
--size-display-1:76px;--size-display-2:56px;--size-display-3:42px;
/* Sizes — headings */
--size-h1:34px;--size-h2:27px;--size-h3:21px;--size-h4:17px;
/* Sizes — body */
--size-body-lg:19px;--size-body:16px;--size-body-sm:14px;--size-caption:12.5px;
/* Sizes — utility */
--size-label:12px;--size-mono:13px;

/* Line heights */
--leading-tight:1.02;--leading-snug:1.1;--leading-normal:1.5;--leading-relaxed:1.62;

/* Tracking */
--tracking-display:-0.014em;--tracking-heading:-0.008em;--tracking-normal:0;--tracking-label:0.11em;--tracking-lockup:0.01em;
}

:root{
--space-0:0px;--space-1:2px;--space-2:4px;--space-3:6px;--space-4:8px;--space-5:12px;--space-6:16px;--space-7:20px;--space-8:24px;--space-9:32px;--space-10:40px;--space-11:48px;--space-12:64px;--space-13:80px;--space-14:96px;--space-15:128px;
--gutter-page:32px;--gutter-page-lg:64px;
--measure-prose:66ch;--measure-narrow:46ch;
--container-max:1240px;--container-narrow:760px;
}

:root{
/* The reference identity rounds generously — patch and sign corners are
   roughly 12–18% of the shape's height. */
--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px;--radius-2xl:40px;--radius-pill:999px;
/* Logo lockup box: the rounded gear-tag corner. */
--radius-lockup:34px;
--border-width-hairline:1px;--border-width-strong:2px;--border-width-heavy:3px;
}

:root{
/* Flat, printed, embroidered. Offsets are midnight, never black, never blurred. */
--shadow-hard-sm:2px 2px 0 0 var(--midnight-700);
--shadow-hard:3px 3px 0 0 var(--midnight-700);
--shadow-hard-accent:3px 3px 0 0 var(--blue-500);
--shadow-soft:0 6px 20px -8px rgba(16,20,86,.24);
--shadow-card:0 1px 2px rgba(16,20,86,.07),0 8px 24px -18px rgba(16,20,86,.45);
--shadow-inset-press:inset 0 2px 0 rgba(16,20,86,.16);
--shadow-none:none;
}

:root{
--dur-instant:80ms;/* @kind other */
--dur-fast:130ms;/* @kind other */
--dur-base:220ms;/* @kind other */
--dur-slow:380ms;/* @kind other */
--ease-standard:cubic-bezier(.2,.8,.2,1);/* @kind other */
--ease-out:cubic-bezier(0,.6,.3,1);/* @kind other */
--ease-in-out:cubic-bezier(.6,0,.3,1);/* @kind other */
--press-shift:1px;
}
@media (prefers-reduced-motion:reduce){:root{
--dur-instant:0ms;/* @kind other */
--dur-fast:0ms;/* @kind other */
--dur-base:0ms;/* @kind other */
--dur-slow:0ms;/* @kind other */
}}

html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-text);font-size:var(--size-body);line-height:var(--leading-normal)}
h1,h2,h3,h4,h5{font-family:var(--font-display);color:var(--text-primary);letter-spacing:var(--tracking-heading);line-height:var(--leading-snug);font-weight:var(--weight-bold);margin:0}
p{margin:0;text-wrap:pretty}
a{color:var(--text-link);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px;transition:color var(--dur-fast) var(--ease-standard)}
a:hover{color:var(--text-link-hover)}
:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:2px}
::selection{background:var(--blue-200);color:var(--midnight-700)}
.nsi-label{font-family:var(--font-text);font-size:var(--size-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-secondary)}


body{margin:0;background:var(--surface-page)}