/* NykiHub design tokens - the single platform-owned source for fonts, colours,
   radii, shadows and motion. Every surface (marketing site, login, tenant
   workspaces, platform admin) loads this file. Tenant spaces may later override
   only the documented brand-accent tokens; see
   docs/decisions/2026-10-01-design-tokens-and-tenant-branding.md. */

/* Inter 4 (OFL-1.1, rsms/inter) and JetBrains Mono (OFL-1.1), self-hosted so
   every device renders the same typeface instead of Segoe UI / SF / Roboto. */
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fonts/inter-cyrillic-opsz-normal.woff2) format("woff2-variations"),url(/assets/fonts/inter-cyrillic-opsz-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fonts/inter-latin-ext-wght-normal.woff2) format("woff2-variations"),url(/assets/fonts/inter-latin-ext-wght-normal.woff2) 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}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fonts/inter-latin-opsz-normal.woff2) format("woff2-variations"),url(/assets/fonts/inter-latin-opsz-normal.woff2) 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}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/fonts/jetbrains-mono-cyrillic-wght-normal.woff2) format("woff2-variations"),url(/assets/fonts/jetbrains-mono-cyrillic-wght-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/fonts/jetbrains-mono-latin-wght-normal.woff2) format("woff2-variations"),url(/assets/fonts/jetbrains-mono-latin-wght-normal.woff2) 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{
  /* Typography */
  --nh-font-sans:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --nh-font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Consolas,monospace;
  --nh-text-xs:12px;--nh-text-sm:13px;--nh-text-md:14px;--nh-text-base:16px;
  --nh-text-lg:20px;--nh-text-xl:24px;--nh-text-2xl:32px;--nh-text-3xl:48px;
  --nh-tracking-tight:-.02em;

  /* Brand scale. 600 is the primary action colour (5.3:1 on white). */
  --nh-brand-50:#ecf8f2;--nh-brand-100:#d3efe2;--nh-brand-200:#a8dfc5;--nh-brand-300:#6fc9a3;
  --nh-brand-400:#26bf87;--nh-brand-500:#16935f;--nh-brand-600:#0f7a55;--nh-brand-700:#0b6346;
  --nh-brand-800:#0a4d38;--nh-brand-900:#083b2c;--nh-brand-950:#082c2b;

  /* Neutrals with a slight green tint so grey surfaces belong to the brand. */
  --nh-gray-0:#ffffff;--nh-gray-25:#fafcfb;--nh-gray-50:#f5f8f7;--nh-gray-100:#eef2f1;
  --nh-gray-200:#e2e8e6;--nh-gray-300:#cfd8d6;--nh-gray-400:#a3b0b0;--nh-gray-500:#7a8a8c;
  --nh-gray-600:#5b6b6f;--nh-gray-700:#435257;--nh-gray-800:#2a383d;--nh-gray-900:#15262c;

  /* Semantic roles. Status colours are deliberately separate from the brand. */
  --nh-text:var(--nh-gray-900);
  --nh-text-secondary:var(--nh-gray-700);
  --nh-text-muted:var(--nh-gray-600);
  --nh-border:var(--nh-gray-200);
  --nh-border-strong:var(--nh-gray-300);
  --nh-surface:var(--nh-gray-0);
  --nh-surface-subtle:var(--nh-gray-25);
  --nh-surface-sunken:var(--nh-gray-50);
  --nh-surface-hover:var(--nh-gray-100);
  --nh-accent:var(--nh-brand-600);
  --nh-accent-hover:var(--nh-brand-700);
  --nh-accent-soft:var(--nh-brand-50);
  --nh-accent-text:var(--nh-brand-700);
  --nh-on-accent:#ffffff;
  --nh-focus-ring:0 0 0 3px rgba(15,122,85,.28);
  --nh-success:#1a7f37;--nh-success-soft:#e7f6ec;
  --nh-warning:#a15c07;--nh-warning-soft:#fdf3e2;
  --nh-danger:#c4323c;--nh-danger-soft:#fdecee;
  --nh-info:#1d63c9;--nh-info-soft:#e9f1fd;

  /* Shape, depth and motion */
  --nh-radius-sm:6px;--nh-radius-md:10px;--nh-radius-lg:16px;--nh-radius-full:999px;
  --nh-shadow-xs:0 1px 2px rgba(16,40,43,.06);
  --nh-shadow-sm:0 1px 3px rgba(16,40,43,.08),0 1px 2px rgba(16,40,43,.04);
  --nh-shadow-md:0 8px 24px rgba(16,40,43,.10);
  --nh-ease:cubic-bezier(.2,.8,.2,1);
  --nh-duration:160ms;

  /* Workspace shell */
  --nh-sidebar-bg:var(--nh-gray-50);
  --nh-sidebar-border:var(--nh-gray-200);
  --nh-sidebar-text:var(--nh-gray-700);
  --nh-sidebar-icon:var(--nh-gray-500);
  --nh-sidebar-hover:var(--nh-gray-100);
  --nh-sidebar-active-bg:var(--nh-gray-0);
  --nh-sidebar-active-text:var(--nh-brand-700);
  --nh-sidebar-active-icon:var(--nh-brand-600);
}

/* Native controls do not inherit the page font; without this every button,
   input and select fell back to Arial next to Inter text. Element selectors
   keep page-level component rules in charge of everything else. */
button,input,select,textarea,optgroup{font-family:inherit}
/* Brand mark: the same geometric N as the favicon on every surface. */
.has-logo-mark{padding:0!important;background:none!important;box-shadow:none!important;overflow:hidden}
.nh-logo-mark{display:block;width:100%;height:100%}

/* Drawn chevron; text glyphs such as U+2304 sit low and vary per font. */
.nh-chevron{display:inline-block;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex:none}

::selection{background:var(--nh-brand-100);color:var(--nh-gray-900)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
