/* IBM Plex, self-hosted (SIL Open Font License 1.1, see ../fonts/LICENSE.txt).
   The Latin1 and Latin2 subsets of the upstream split build (@ibm/plex-sans
   1.1.0, @ibm/plex-mono 2.5.0): basic Latin with the Latin-1 supplement, and
   Latin Extended-A. The ranges are the upstream ones. No italic faces: nothing
   in the stylesheets asks for one that the browser cannot slant itself.
   Nothing is fetched from Google Fonts any more; the files go through the
   hashed manifest with the rest of static/, so keep the urls relative. */
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-Regular-Latin1.678efa63c3fb.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-Regular-Latin2.72d89b52ddc0.woff2") format("woff2");
  unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-Medium-Latin1.e0399fc4473d.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-Medium-Latin2.497f7ca8f78e.woff2") format("woff2");
  unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-SemiBold-Latin1.106da8161b57.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-SemiBold-Latin2.fb04fa4acdbb.woff2") format("woff2");
  unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-Bold-Latin1.102e1e2880b8.woff2") format("woff2");
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/IBMPlexSans-Bold-Latin2.40aaa3f805c7.woff2") format("woff2");
  unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/IBMPlexMono-Regular-Latin1.23b4f5fce19d.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/IBMPlexMono-Regular-Latin2.8d0e8e929ab2.woff2") format("woff2");
  unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/IBMPlexMono-Medium-Latin1.2bdc5f6e5e80.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/IBMPlexMono-Medium-Latin2.99b9e89a27ea.woff2") format("woff2");
  unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/IBMPlexMono-SemiBold-Latin1.e3879a5733bc.woff2") format("woff2");
  unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/IBMPlexMono-SemiBold-Latin2.2532785f6107.woff2") format("woff2");
  unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF;
}

/* Cisoly design tokens — taken from the Brand Book v1.2 (Sept 2026).
   Dashboard and website use the same variables. */
:root {
  /* Tells the browser that we handle the theme ourselves; without this
     Chrome applies its own inversion and headings become unreadable. */
  color-scheme: light;
  /* brand. The violet is the brand book's #7367F0 taken one step darker
     (WCAG 2.1 AA, 2026-09-17): white on #7367F0 and #7367F0 on white both
     stopped at 4.26:1, #6456EE reaches 4.5:1 on white, on the canvas and
     on its own tint. --violet-text is the violet used as text: the same
     in the light theme, a lighter shade in the dark one. */
  --violet: #6456EE; --violet-hover: #5B4FD9; --violet-tint: #F1F0FE; --violet-text: #6456EE;
  /* semantic */
  --blue: #2B7FE3; --blue-tint: #E6F0FC; --blue-text: #1B6BCB;
  --teal: #3CC5C0; --teal-tint: #E4F7F6;
  --green: #28C76F; --green-tint: #E3F8EC; --green-text: #187E45; --green-deep: #187E45;
  --amber: #F5B942; --amber-tint: #FDF4E0; --amber-text: #95680B;
  --red: #EA5455; --red-tint: #FDE8E8; --red-text: #C53637;
  /* the -text shades are the nearest that reach 4.5:1 on white and on their
     own tint (were #1E9A55, #B07A0D, #C93A3B); the fills (--green, --red)
     are not for text: a solid fill carrying white text or a white glyph
     uses --green-deep (the same in both themes) or --red-text. */
  /* risk scale — cell fills, always with --risk-text */
  --risk-1: #5AB55E; --risk-2: #8DC24B; --risk-3: #F6E14B; --risk-4: #F19536; --risk-5: #E63A30; --risk-6: #A61B14; --risk-text: #111111;
  /* --risk-5 was #E53228 (4.33:1 with the risk text); the darkest cell takes
     --risk-text-dark instead of --risk-text, black on it would be 2.5:1. */
  --risk-text-dark: #FFFFFF;
  /* neutrals */
  --ink: #2F3349; --body: #464B63; --secondary: #686D81; --disabled: #9DA2B4;
  /* --secondary was #6E7388: 4.42:1 on the canvas and 4.12:1 on the neutral
     tint; #686D81 reaches 4.5:1 on both. */
  --neutral-tint: #EEF0F4;  /* neutral badge */
  --rule: #C9CCD8; --table-rule: #C9CCD8;  --table-head-bg: #6456EE; /* table header in the brand violet (by request, rather than ink) */
  --hairline: #DDE0E8; --skeleton: #E9EBF0; --user-card-rule: #F5F6F9; --user-card-text: #A3A7B8; --table-head: #EEF0F4; --canvas: #F7F8FA; --card: #FFFFFF;
  /* type */
  --font-sans: "IBM Plex Sans", system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, monospace;
  --text-display: 600 56px/1.05 var(--font-sans); --text-h2: 600 28px/1.2 var(--font-sans);
  --text-stat: 600 36px/1 var(--font-sans); --text-body: 400 15px/1.6 var(--font-sans);
  --text-label: 500 14px/1.4 var(--font-sans); --text-eyebrow: 500 11px/1 var(--font-mono);
  /* space & shape */
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-6: 24px; --s-8: 32px; --s-12: 48px; --s-16: 64px; --s-24: 96px;
  --r-badge: 2px; --r-control: 4px; --r-card: 4px; --r-full: 999px;
  --shadow-float: 0 2px 0 rgba(47,51,73,.06);
  --focus: 0 0 0 2px #fff, 0 0 0 4px var(--focus-ring);
  /* the focus ring (2px, 2px offset, :focus-visible only) and the border of
     a form field: both reach 3:1 on the card and the canvas (WCAG 1.4.11) */
  --focus-ring: var(--violet); --field-rule: #858A9D; --red-deep: #C53637;
  /* motion */
  --ease: cubic-bezier(.2,.8,.2,1); --t-fast: 120ms; --t-base: 200ms; --t-slow: 240ms;
}
[data-theme="dark"] {
  color-scheme: dark;
  --canvas: #1C1F2E; --card: #252838; --hairline: #33374A; --rule: #454A63; --table-head: #2B2F41; --user-card-rule: #272A3B; --user-card-text: #6E7388;
  --ink: #F3F4F8; --body: #B4B8C8; --secondary: #9196A9;
  --violet-text: #9D94F4; --blue-text: #66A3EB; --focus-ring: #9D94F4; --field-rule: #737893;
  --violet-tint: rgba(115,103,240,.18); --green-tint: rgba(40,199,111,.16); --red-tint: rgba(234,84,85,.18);
  --amber-tint: rgba(245,185,66,.16); --blue-tint: rgba(43,127,227,.18); --teal-tint: rgba(60,197,192,.16);
}
