/* Durable Intelligence console tokens: the ONE source of faces, type scale, weights, spacing, radii, control heights and
   colours for the console (deploy/public/platform) and its sign-in screens (acul/src/acul.css imports this file). Pages
   never write a raw size, weight, radius or colour. The site's brand (Inter for UI text, Source Serif 4 for titles,
   IBM Plex Mono for code and keys), adapted to a dense, calm work tool. */
/* The console's faces (deploy/platform/fonts/SOURCE.md): Inter, Source Serif 4, IBM Plex Mono, each split into a
   core file every page needs and an -ext file fetched only for text that needs it. ?v= is the file's sha256 (8). */
@font-face { font-family: Inter; src: url(../fonts/inter.woff2?v=42d0afb7) format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+2000-205F,U+20AC,U+2122,U+2190-2199,U+21B5,U+21E4-21EA,U+2212,U+2248-2265,U+2303,U+2318-2326,U+232B,U+238B,U+23CE,U+25B2,U+25B6,U+25BC,U+25C0,U+25CB-25CF,U+2713-2717,U+FEFF; }
@font-face { font-family: Inter; src: url(../fonts/inter-ext.woff2?v=3d3c1b3e) format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+0100-0130,U+0132-0151,U+0154-02BA,U+02BD-02C5,U+02C7-02D9,U+02DB,U+02DD-0303,U+0306-0307,U+0309-036F,U+1D00-1EFF,U+2070-20AB,U+20AD-2121,U+2126-2189,U+21A9-21B4,U+21BA-21DF,U+2202-2211,U+221A-2236,U+2295-2298,U+2304-2305,U+2327,U+2380-2387,U+23CF,U+2423-2468,U+24B6-24EA,U+25A0-25AA,U+25B3,U+25B7-25BB,U+25BD,U+25C1-25CA,U+25E6-26A0,U+2756-2788,U+27EF-27FA,U+2913,U+2A38,U+2B06-2B24,U+2C7C-2C7F,U+2E18,U+A7FF; }
@font-face { font-family: "Source Serif 4"; src: url(../fonts/serif.woff2?v=57ef7bcf) format("woff2"); font-weight: 200 900; font-display: swap; unicode-range: U+0020-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2002-2049,U+20AC,U+2122,U+2190-2199,U+2212-2215,U+2248-2265,U+25B2,U+25B6,U+25BC,U+25C0,U+2713; }
@font-face { font-family: "Source Serif 4"; src: url(../fonts/serif-ext.woff2?v=06018362) format("woff2"); font-weight: 200 900; font-display: swap; unicode-range: U+0100-0130,U+0134-0151,U+0154-0261,U+02B0-02B8,U+02BE-02BF,U+02C7-02D9,U+02DB,U+02DD-0303,U+0306-0307,U+0309-0328,U+032E-0331,U+1D43-1D5B,U+1D9C-1DBB,U+1E0C-1EF9,U+2070-20AB,U+20AE-20BF,U+2113-2120,U+2126-215E,U+2202-2211,U+2219-222B,U+25A0,U+25B3,U+25B7,U+25BD,U+25C1-25CA,U+2610-2611,U+266A,U+2752,U+2E3A-2E3B,U+FB00-FB04; }
@font-face { font-family: "Source Serif 4"; src: url(../fonts/serif-italic.woff2?v=3756f324) format("woff2"); font-weight: 200 900; font-style: italic; font-display: swap; unicode-range: U+0020-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2002-2049,U+20AC,U+2122,U+2190-2199,U+2212-2215,U+2248-2265,U+25B2,U+25B6,U+25BC,U+25C0,U+2713; }
@font-face { font-family: "Source Serif 4"; src: url(../fonts/serif-italic-ext.woff2?v=4fab42ff) format("woff2"); font-weight: 200 900; font-style: italic; font-display: swap; unicode-range: U+0100-0130,U+0134-0151,U+0154-0261,U+02B0-02B8,U+02BE-02BF,U+02C7-02D9,U+02DB,U+02DD-0303,U+0306-0307,U+0309-0328,U+032E-0331,U+1D43-1D5B,U+1D9C-1DBB,U+1E0C-1EF9,U+2070-20AB,U+20AE-20BF,U+2113-2120,U+2126-215E,U+2202-2211,U+2219-222B,U+25A0,U+25B3,U+25B7,U+25BD,U+25C1-25CA,U+2610-2611,U+266A,U+2752,U+2E3A-2E3B,U+FB00-FB04; }
@font-face { font-family: "IBM Plex Mono"; src: url(../fonts/mono-400.woff2?v=47b716b8) format("woff2"); font-weight: 400; font-display: swap; unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02C6,U+02DA,U+02DC,U+0304,U+0308,U+2000-205F,U+20AC,U+2122,U+2190-2199,U+2212-2215,U+2248-2265,U+2713,U+FEFF,U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; src: url(../fonts/mono-400-ext.woff2?v=8f8c356d) format("woff2"); font-weight: 400; font-display: swap; unicode-range: U+0100-0130,U+0132-0151,U+0154-0259,U+02C7-02D9,U+02DB,U+02DD-0303,U+0306-0307,U+0309-0331,U+1E0C-1EF9,U+2070-20AB,U+20AD-20BF,U+2113-2116,U+2126-215E,U+21A9-2211,U+2219-2236,U+2400-2421,U+2500-25CA,U+274C,U+2B0E-2B11,U+FB01-FB02; }
@font-face { font-family: "IBM Plex Mono"; src: url(../fonts/mono-500.woff2?v=cd8ca799) format("woff2"); font-weight: 500; font-display: swap; unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02C6,U+02DA,U+02DC,U+0304,U+0308,U+2000-205F,U+20AC,U+2122,U+2190-2199,U+2212-2215,U+2248-2265,U+2713,U+FEFF,U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; src: url(../fonts/mono-500-ext.woff2?v=fb58a344) format("woff2"); font-weight: 500; font-display: swap; unicode-range: U+0100-0130,U+0132-0151,U+0154-0259,U+02C7-02D9,U+02DB,U+02DD-0303,U+0306-0307,U+0309-0331,U+1E0C-1EF9,U+2070-20AB,U+20AD-20BF,U+2113-2116,U+2126-215E,U+21A9-2211,U+2219-2236,U+2400-2421,U+2500-25CA,U+274C,U+2B0E-2B11,U+FB01-FB02; }

:root {
  /* brand */
  --ultra: #3A34E6; --ultra-deep: #1D1A8C; --verm: #E06245; --gold: #F4CE46; --chalk: #EEEAE3; --plum: #231F2B;
  --lilac: #B6A5CF; --cream: #FBF1CF; --apricot: #F0AE45;

  /* faces: no system fallback is expected to draw a glyph (the font check reads every text node) */
  --sans: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;
  --serif: "Source Serif 4", Inter, Georgia, serif;
  --mono: "IBM Plex Mono", Inter, ui-monospace, Menlo, monospace;

  /* type scale (px): 11 12 13 14 16 18 22 28 48 */
  --fs-micro: 11px;    /* kbd, chart ticks, avatar initials */
  --fs-small: 12px;    /* meta, hints, column heads, badges, field labels, captions */
  --fs-body: 13px;     /* body, controls, table cells, descriptions */
  --fs-heading: 14px;  /* section headings, step and popover titles */
  --fs-lead: 16px;     /* lead statements (serif), palette input, sign-in inputs */
  --fs-title-s: 18px;  /* sheet, modal and empty-state titles (serif) */
  --fs-figure: 22px;   /* stat values */
  --fs-title: 28px;    /* page titles (serif) */
  --fs-display: 48px;  /* the billing balance */
  --w-regular: 400; --w-medium: 500; --w-semibold: 600;
  --lh-tight: 1.15; --lh-snug: 1.3; --lh-heading: 1.4; --lh-body: 1.5; --lh-lead: 1.55; --lh-code: 1.6;
  --track-title: -.012em; --track-display: -.03em;
  --f-micro: var(--w-medium) var(--fs-micro)/var(--lh-snug) var(--sans);
  --f-small: var(--w-regular) var(--fs-small)/1.45 var(--sans);
  --f-label: var(--w-medium) var(--fs-small)/1.45 var(--sans);
  --f-body: var(--w-regular) var(--fs-body)/var(--lh-body) var(--sans);
  --f-heading: var(--w-semibold) var(--fs-heading)/var(--lh-heading) var(--sans);
  --f-lead: var(--w-regular) var(--fs-lead)/var(--lh-lead) var(--serif);
  --f-title-s: var(--w-semibold) var(--fs-title-s)/var(--lh-snug) var(--serif);
  --f-figure: var(--w-semibold) var(--fs-figure)/1.2 var(--sans);
  --f-title: var(--w-semibold) var(--fs-title)/var(--lh-tight) var(--serif);
  --f-display: var(--w-semibold) var(--fs-display)/1.05 var(--sans);
  --f-code: var(--w-regular) var(--fs-small)/var(--lh-code) var(--mono);

  /* spacing */
  --gap-label: 6px; /* a label to its control */
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 20px; --s-6: 24px; --s-8: 32px; --s-10: 40px; --s-12: 48px;
  /* radii */
  --r-xs: 4px; --r-s: 6px; --r-m: 8px; --r-l: 12px; --r-xl: 16px; --r-pill: 999px;
  /* control heights */
  --h-sm: 28px; --h-md: 32px; --h-lg: 44px;

  --ease: cubic-bezier(.2, .7, .1, 1);
  --rise: cubic-bezier(.18, .9, .28, 1.06);

  /* colours: every token holds its light and its dark value (light-dark), so one definition serves the console (which
     sets data-theme from the person's choice) and the sign-in screens (which follow the system: color-scheme below).
     Surfaces are a cool plum-tinted neutral, not the landing page's chalk. */
  color-scheme: light dark;
  --canvas: light-dark(#F5F4F7, #15121B);
  --panel: light-dark(#FFFFFF, #1C1823);
  --raised: light-dark(#FFFFFF, #25202D);
  --sunk: light-dark(#EEECF1, #110E16);
  --hover: light-dark(rgba(35, 31, 43, .045), rgba(238, 234, 227, .05));
  --press: light-dark(rgba(35, 31, 43, .08), rgba(238, 234, 227, .09));
  --sel: light-dark(rgba(58, 52, 230, .085), rgba(126, 120, 250, .16));
  --line: light-dark(rgba(35, 31, 43, .085), rgba(238, 234, 227, .075));
  --line-2: light-dark(rgba(35, 31, 43, .15), rgba(238, 234, 227, .14));
  --grid: light-dark(rgba(35, 31, 43, .07), rgba(238, 234, 227, .07));
  --ink: light-dark(#231F2B, #EEEAE3);
  --ink-2: light-dark(#565068, #B9B3C4);
  --ink-3: light-dark(#6F6981, #9790A5);
  --ink-4: light-dark(#A29DAF, #6B6479);
  --accent: light-dark(#3A34E6, #7E78FA);
  --accent-ink: light-dark(#3530D6, #A9A5FF);
  --accent-wash: light-dark(rgba(58, 52, 230, .08), rgba(126, 120, 250, .13));
  --btn: light-dark(#3A34E6, #4B45EF);
  --btn-hover: light-dark(#2F29D2, #5A54F5);
  --on-btn: #FFFFFF;
  --on-color: #FFFFFF;
  --btn-danger: #C4432A; /* white on it is 5:1 in both themes (--bad is 2.7:1 in dark) */
  --focus: 0 0 0 2px var(--panel), 0 0 0 4px light-dark(rgba(58, 52, 230, .55), rgba(126, 120, 250, .7));

  /* status: reserved, always with an icon and a word */
  --good: light-dark(#16865A, #3FB984); --good-wash: light-dark(rgba(22, 134, 90, .1), rgba(63, 185, 132, .13));
  --warn: #F4CE46; --warn-ink: light-dark(#7D5600, #F4CE46); --warn-wash: light-dark(rgba(244, 206, 70, .26), rgba(244, 206, 70, .13));
  --bad: light-dark(#E06245, #F07A5E); --bad-ink: light-dark(#B23F27, #F59A83); --bad-wash: light-dark(rgba(224, 98, 69, .1), rgba(240, 122, 94, .13));

  /* categorical, validated (dataviz validate_palette.js: light on #FFFFFF, dark on #1E1A25, all pass) */
  --c1: light-dark(#3A34E6, #7E78FA); --c2: light-dark(#C9801A, #BF7D1C); --c3: light-dark(#B8479F, #C35AAA);
  --c1-wash: light-dark(rgba(58, 52, 230, .1), rgba(126, 120, 250, .14));

  /* the toast is the inverse of the page */
  --toast-bg: light-dark(#231F2B, #F3F0EA); --toast-ink: light-dark(#EEEAE3, #231F2B);
  --toast-ic: light-dark(#6FD3A4, #16865A); --toast-ic-bad: light-dark(#FF9B83, #B23F27);
  --toast-btn: light-dark(rgba(255, 255, 255, .12), rgba(35, 31, 43, .08));
  --code-bg: light-dark(#EEECF1, #0F0C14);

  --shadow-pop: 0 0 0 1px light-dark(rgba(35, 31, 43, .07), rgba(238, 234, 227, .09)), 0 18px 48px -12px light-dark(rgba(35, 31, 43, .28), rgba(0, 0, 0, .6)), 0 3px 8px light-dark(rgba(35, 31, 43, .06), rgba(0, 0, 0, .2));
  --shadow-sheet: -1px 0 0 light-dark(rgba(35, 31, 43, .08), rgba(238, 234, 227, .08)), -24px 0 60px -24px light-dark(rgba(35, 31, 43, .22), rgba(0, 0, 0, .55));
  --shadow-toast: 0 12px 32px -8px rgba(0, 0, 0, .35);
  --scrim: light-dark(rgba(35, 31, 43, .18), rgba(8, 6, 12, .45));
}

/* The console's theme switch (js/theme.js sets data-theme before first paint); without it the system decides. */
:root[data-theme="light"] { color-scheme: light; }
:root[data-theme="dark"] { color-scheme: dark; }
