/* FinX Portal theme: FinX Structured */
:root:root {
  --bg: #f5f7fa;
  --panel: #ffffff;
  --surface: #ffffff;
  --surface-2: #eef1f6;
  --border: #e2e7ef;
  --border-strong: #cbd3df;
  --hero: #e7eefb;
  --mark-bg: #c9d8f6;
  --text: #0b1b33;
  --text-muted: #4a5a73;
  --text-subtle: #5b6b82;
  --accent: #1f4bb8;
  --accent-hover: #183c94;
  --accent-soft: #e7eefb;
  --teal: #0b7896;
  --teal-soft: #e0f4f9;
  --ok: #17663a;
  --ok-bg: #e3f4ea;
  --warn: #8a4b08;
  --warn-bg: #fdf1dc;
  --err: #a1261f;
  --err-bg: #fce7e5;
  --info: #0b6480;
  --info-bg: #e0f4f9;
  --topbar-bg: #ffffff;
  --topbar-text: #0b1b33;
  --topbar-muted: #4a5a73;
  --topbar-border: #e2e7ef;
  --side-bg: #ffffff;
  --side-text: #33415a;
  --side-hover: #eef1f6;
  --side-active-bg: #e7eefb;
  --side-active-text: #1f4bb8;
  --side-width: 248px;
  --log-bg: #0b1220;
  --log-text: #cbd5e1;
  --radius: 4px;
  --radius-lg: 8px;
  --font: "Source Sans 3", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;
  --font-size: 14px;
  --fx-c-blue: #1d4ed8;
  --fx-hl-blue: #dbeafe;
  --fx-c-green: #15803d;
  --fx-hl-green: #dcfce7;
  --fx-c-red: #b91c1c;
  --fx-hl-red: #fee2e2;
  --fx-c-orange: #c2410c;
  --fx-hl-orange: #ffedd5;
  --fx-c-gold: #a16207;
  --fx-hl-gold: #fef3c7;
  --fx-c-purple: #7e22ce;
  --fx-hl-purple: #f3e8ff;
  --fx-c-cyan: #0e7490;
  --fx-hl-cyan: #cffafe;
  --fx-c-grey: #64748b;
  --fx-hl-grey: #e2e8f0;
}
:root:root[data-theme="dark"] {
  --bg: #0d1117;
  --panel: #181c22;
  --surface: #20242b;
  --surface-2: #20242b;
  --border: #31363d;
  --border-strong: #41454d;
  --hero: #181c22;
  --mark-bg: #2f4773;
  --text: #e6e8ec;
  --text-muted: #c4c7ce;
  --text-subtle: #b7bbc1;
  --accent: #9db9ef;
  --accent-hover: #c9d8f6;
  --accent-soft: #1e2b43;
  --teal: #74cde2;
  --teal-soft: #112c32;
  --ok: #95deae;
  --ok-bg: #192d20;
  --warn: #f8c885;
  --warn-bg: #322513;
  --err: #f8a49d;
  --err-bg: #37211f;
  --info: #8ed7ef;
  --info-bg: #122c34;
  --topbar-bg: #13161d;
  --topbar-text: #e6e8ec;
  --topbar-muted: #c4c7ce;
  --topbar-border: #31363d;
  --side-bg: #13161d;
  --side-text: #c4c7ce;
  --side-hover: #20242b;
  --side-active-bg: #1e2b43;
  --side-active-text: #c6d8f9;
  --side-width: 248px;
  --log-bg: #070c16;
  --log-text: #cbd5e1;
  --radius: 4px;
  --radius-lg: 8px;
  --font: "Source Sans 3", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;
  --font-size: 14px;
  --fx-c-blue: #93c5fd;
  --fx-hl-blue: #1e3a8a;
  --fx-c-green: #86efac;
  --fx-hl-green: #14532d;
  --fx-c-red: #fca5a5;
  --fx-hl-red: #7f1d1d;
  --fx-c-orange: #fdba74;
  --fx-hl-orange: #7c2d12;
  --fx-c-gold: #fde047;
  --fx-hl-gold: #713f12;
  --fx-c-purple: #d8b4fe;
  --fx-hl-purple: #581c87;
  --fx-c-cyan: #67e8f9;
  --fx-hl-cyan: #164e63;
  --fx-c-grey: #cbd5e1;
  --fx-hl-grey: #334155;
}

/* CSS of this theme */
/* The brand fonts, served by the portal (OFL 1.1) */
@font-face {
  font-family: "Manrope";
  src: url("/theme-fonts/manrope-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Manrope";
  src: url("/theme-fonts/manrope-700.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Manrope";
  src: url("/theme-fonts/manrope-800.woff2") format("woff2");
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("/theme-fonts/source-sans-3-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("/theme-fonts/source-sans-3-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/theme-fonts/ibm-plex-mono-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* FinX Structured: the built-in theme with SAP GUI's structure in a modern
   look (Daniel, 2026-11-05; brief docs/specs/theme-structured in the
   coordinator's repo). Tokens do the colours; this CSS adds the structure:
   a light top bar and a tidy side-menu tree, a coloured title band on every
   page and pop-up with its buttons on it, group boxes with a header row,
   grids with cell lines, zebra rows and a strong header, details as label +
   display field, forms with a clear required mark and focus, tab strips,
   a status bar along the bottom, and the content and plugin blocks.
   Colours come from the tokens (and the --st-* values below, derived from
   them), so a copy with another accent follows it, in light and dark.
   Brand round 2 (Daniel, 2026-11-05; ~/Claude/Branding): the Harbour
   palette, flat colour only (no gradients, glows or drop shadows), cards
   set apart by fill and hairlines (no coloured edge stripes), Manrope for
   headings and key figures, Source Sans 3 for the UI, IBM Plex Mono for
   IDs; the title band is the brand's ink "brand-block" (blue-600 in dark)
   with one cyan tile as the spark. */

/* ======================================================================
   Derived values (light; dark below)
   ====================================================================== */
:root:root {
  /* the title band: the brand's ink block (brand-block) with white text */
  --st-band: #0b1b33;
  --st-band-text: #ffffff;
  --st-band-muted: #c9d8f6;
  --st-on-band: rgba(255, 255, 255, .08);
  --st-on-band-hover: rgba(255, 255, 255, .16);
  --st-on-band-border: rgba(255, 255, 255, .30);
  --st-on-band-border-hover: rgba(255, 255, 255, .55);
  --st-band-line: transparent;
  /* the band's primary button: white, the band's colour as text; a danger button white with red text */
  --st-band-primary: #ffffff;
  --st-band-primary-hover: #e7eefb;
  --st-band-primary-text: #0b1b33;
  --st-band-danger: #ffffff;
  --st-band-danger-line: #ffffff;
  --st-band-danger-text: #a1261f;
  --st-band-focus: #ffffff;
  /* the spark: the brand's cyan, a small tile only (never text on white) */
  --st-spark: #14a3c7;
  /* a fill under on-primary text: the primary */
  --st-solid: var(--accent);
  --st-solid-hover: var(--accent-hover);
  --st-on-solid: #ffffff;
  /* the brand's focus colour (bright blue) */
  --st-focus: #3d7bf5;
  --st-display-font: Manrope, "Segoe UI", system-ui, -apple-system, sans-serif;
  --st-head: var(--surface-2);
  --st-grid: var(--border);
  --st-zebra: color-mix(in srgb, var(--surface-2) 60%, var(--panel));
  --st-hover: color-mix(in srgb, var(--accent) 6%, var(--panel));
  --st-display: color-mix(in srgb, var(--surface-2) 60%, var(--panel));
  --st-display-line: var(--border);
  --st-field: var(--surface);
  --st-field-line: var(--border-strong);
  --st-focus-fill: color-mix(in srgb, var(--accent) 3%, var(--surface));
  --st-ring: 0 0 0 1px var(--st-focus);
  --st-mask: rgba(11, 27, 51, .45);
  --st-tip-bg: #0b1b33;
  --st-tip-text: #ffffff;
  --st-tip-line: #0b1b33;
  /* status solids (graphics only: dots, tiles, bars) */
  --st-ok-solid: #1f8a4c;
  --st-warn-solid: #d08a1e;
  --st-err-solid: #d2443b;
  --st-info-solid: #14a3c7;
}
:root:root[data-theme="dark"] {
  /* Round 3 (Daniel, 2026-11-05: "blue on blue on blue"): the neutral OKLCH
     scale in theme-structured.ts. The title band is a raised neutral surface
     (step 4) with a hairline (step 6), the off-white title and the cyan tile
     as the brand detail; its primary button is the brand blue. */
  --st-band: #20242b;
  --st-band-text: #e6e8ec;
  --st-band-muted: #c4c7ce;
  --st-band-line: #31363d;
  --st-on-band: #262a31;
  --st-on-band-hover: #31363d;
  --st-on-band-border: #41454d;
  --st-on-band-border-hover: #575b63;
  --st-band-primary: var(--accent);
  --st-band-primary-hover: var(--accent-hover);
  --st-band-primary-text: #0d1117;
  --st-band-danger: #262a31;
  --st-band-danger-line: color-mix(in srgb, var(--err) 45%, #41454d);
  --st-band-danger-text: var(--err);
  --st-band-focus: var(--st-focus);
  --st-spark: #3cc3e0;
  --st-on-solid: #0d1117;
  --st-focus: var(--accent);
  /* elevation by lightness: zebra half a step above the panel, hover a
     neutral step 5, the selected row the blue tint (with its marker) */
  --st-zebra: #1e2229;
  --st-hover: #262a31;
  --st-display: #20242b;
  --st-display-line: #31363d;
  /* fields: an input well one step below the panel, framed in step 7 */
  --st-field: #13161d;
  --st-focus-fill: #13161d;
  --st-mask: rgba(5, 7, 10, .66);
  --st-tip-bg: #262a31;
  --st-tip-text: #e6e8ec;
  --st-tip-line: #41454d;
  /* status solids (dots, tiles, bars): lighter and less saturated than in light */
  --st-ok-solid: #59b47d;
  --st-warn-solid: #ca933e;
  --st-err-solid: #df7f78;
  --st-info-solid: #4aadc9;
}

/* ======================================================================
   Whole page
   ====================================================================== */
body {
  font-feature-settings: "tnum";
  line-height: 1.4;
}
/* Headings in Manrope (600-800), sentence case, slightly tight */
.fx-main :is(h1, h2, h3, h4),
.ant-typography:is(h1, h2, h3, h4),
.fx-page-title {
  font-family: var(--st-display-font) !important;
  letter-spacing: -.01em;
}
::selection {
  background: color-mix(in srgb, var(--accent) 28%, transparent);
}
:focus-visible {
  outline-color: var(--st-focus);
}

/* ======================================================================
   Top bar: light, a hairline under it; the current area underlined
   ====================================================================== */
.fx-topbar {
  background: var(--topbar-bg) !important;
  color: var(--topbar-text) !important;
  border-bottom: 1px solid var(--topbar-border);
  box-shadow: none !important;
  min-height: 52px;
}
.fx-brand img {
  height: 34px;
}
.fx-areas {
  align-self: stretch;
  gap: 2px;
}
.fx-areas a,
.fx-areas .fx-top-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  align-self: stretch;
  border-radius: 0;
  padding: 0 .85rem;
  color: var(--topbar-muted);
  font-weight: 600;
}
.fx-areas a:hover,
.fx-areas .fx-top-btn:hover,
.fx-areas .fx-top-btn[aria-expanded="true"] {
  color: var(--topbar-text);
  background: color-mix(in srgb, var(--topbar-text) 5%, transparent);
}
.fx-areas a.active,
.fx-areas .fx-top-btn.active {
  color: var(--accent);
  background: transparent;
  font-weight: 600;
}
.fx-areas a.active::after,
.fx-areas .fx-top-btn.active::after {
  content: "";
  position: absolute;
  inset: auto .6rem 0 .6rem;
  height: 2px;
  border-radius: 0;
  background: var(--accent);
}
.fx-icon-btn,
.fx-menu-btn {
  color: var(--topbar-muted);
}
.fx-icon-btn:hover,
.fx-icon-btn[aria-expanded="true"],
.fx-menu-btn:hover,
.fx-menu-btn[aria-expanded="true"],
.fx-user-btn:hover,
.fx-user-btn[aria-expanded="true"],
.fx-design-btn:hover {
  color: var(--topbar-text);
  background: color-mix(in srgb, var(--topbar-text) 7%, transparent);
}
.fx-menu-btn {
  color: var(--topbar-text);
}
.fx-design-btn {
  border-color: var(--topbar-border);
  color: var(--topbar-text);
}
.fx-avatar {
  background: var(--st-solid);
  color: var(--st-on-solid);
  border-radius: 25%;
}
.fx-design-btn.active {
  background: var(--st-solid);
  border-color: var(--st-solid);
  color: var(--st-on-solid);
}
.fx-topbar-sep {
  background: var(--topbar-border);
}

/* ======================================================================
   Side menu: a tidy tree (Easy Access)
   ====================================================================== */
.fx-sidebar {
  background: var(--side-bg) !important;
  border-right: 1px solid var(--border) !important;
}
.fx-sidebar-inner {
  padding: .6rem 0 1rem;
}
.fx-sidemenu.ant-menu {
  font-size: 14px;
  color: var(--side-text);
}
.fx-sidemenu.ant-menu .ant-menu-item,
.fx-sidemenu.ant-menu .ant-menu-submenu-title {
  height: 30px !important;
  line-height: 30px !important;
  margin: 1px 8px !important;
  width: calc(100% - 16px) !important;
  border-radius: var(--radius) !important;
  color: var(--side-text) !important;
  transition: background-color .12s ease, color .12s ease !important;
}
/* Groups and sub-menus: a bold node of the tree */
.fx-sidemenu.ant-menu .ant-menu-submenu-title {
  font-weight: 600 !important;
  color: var(--text) !important;
}
.fx-sidemenu .ant-menu-submenu-arrow {
  color: var(--text-subtle) !important;
}
/* The tree's lines: each level's items hang on a hairline */
.fx-sidemenu .ant-menu-sub.ant-menu-inline {
  background: transparent !important;
  position: relative;
}
.fx-sidemenu .ant-menu-sub.ant-menu-inline::before {
  content: "" !important;
  display: block !important;
  position: absolute;
  top: 2px;
  bottom: 2px;
  left: 22px;
  border-left: 1px solid var(--border);
  pointer-events: none;
}
.fx-sidemenu .ant-menu-sub .ant-menu-sub.ant-menu-inline::before {
  left: 46px;
}
.fx-sidemenu .ant-menu-sub .ant-menu-sub .ant-menu-sub.ant-menu-inline::before {
  left: 70px;
}
.fx-sidemenu.ant-menu .ant-menu-item:hover,
.fx-sidemenu.ant-menu .ant-menu-submenu-title:hover {
  background: var(--side-hover) !important;
  color: var(--text) !important;
}
.fx-sidemenu.ant-menu .ant-menu-item-selected,
.fx-sidemenu.ant-menu .ant-menu-item-selected:hover {
  background: var(--side-active-bg) !important;
  color: var(--side-active-text) !important;
  font-weight: 600;
  box-shadow: none !important;
}
.fx-sidemenu.ant-menu .ant-menu-item-selected::after {
  display: none !important;
}
.fx-sidemenu .ant-menu-item .anticon,
.fx-sidemenu .ant-menu-item .fx-icon {
  color: var(--text-subtle);
}
.fx-sidemenu .ant-menu-item-selected .anticon,
.fx-sidemenu .ant-menu-item-selected .fx-icon {
  color: var(--side-active-text);
}
.fx-sidemenu .fx-group-active > .ant-menu-submenu-title {
  color: var(--text) !important;
}
.ant-menu-item-group-title {
  color: var(--text-subtle) !important;
  font-size: 12px !important;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.fx-drawer .ant-drawer-header {
  background: var(--topbar-bg) !important;
  border-bottom: 1px solid var(--topbar-border) !important;
}
.fx-drawer .ant-drawer-close,
.fx-drawer .ant-drawer-close .anticon {
  color: var(--topbar-text) !important;
}

/* ======================================================================
   Page area: the page on the background; sections as cards
   ====================================================================== */
.fx-main {
  background: transparent;
  border-radius: 0;
  margin: 0;
  padding: 16px 24px 32px;
}
@media (max-width: 720px) {
  .fx-main {
    margin: 0;
    padding: 12px 12px 24px;
  }
}

/* ======================================================================
   Title band: each page starts with a coloured header strip, its buttons
   on the band's right
   ====================================================================== */
:is(.fx-page-header, .fx-main .fx-page-head),
.fx-main h1.fx-page-title:not(:is(.fx-page-head, .fx-tp-main, .fx-title-row) *),
.fx-main .fx-title-row:not(:is(.fx-page-head, .fx-tp-main) *) {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  min-height: 48px;
  margin: 0 0 16px;
  padding: 8px 8px 8px 16px;
  border-radius: var(--radius-lg);
  background: var(--st-band);
  border: 0;
  outline: 1px solid var(--st-band-line);
  outline-offset: -1px;
  box-shadow: none;
  color: var(--st-band-text);
}
/* the spark: one small cyan tile before the title */
:is(.fx-page-header, .fx-main .fx-page-head) .fx-page-title::before,
:is(.fx-page-header, .fx-main .fx-page-head) > :is(h2, h3, .ant-typography):first-child::before,
.fx-main h1.fx-page-title:not(:is(.fx-page-head, .fx-tp-main) *)::before,
.ant-modal-header .ant-modal-title::before,
.ant-drawer-header:not(.fx-drawer *) .ant-drawer-title::before {
  content: "";
  display: inline-block;
  flex: none;
  width: 8px;
  height: 8px;
  margin-inline-end: 10px;
  border-radius: 25%;
  background: var(--st-spark);
  vertical-align: 2px;
}
:is(.fx-page-header, .fx-main .fx-page-head) .fx-page-title,
:is(.fx-page-header, .fx-main .fx-page-head) h1,
/* tags and badges on the band keep their own text and fill */
:is(.fx-page-header, .fx-main .fx-page-head) .fx-title-block,
:is(.fx-page-header, .fx-main .fx-page-head) .fx-title-block *:not(.ant-tag, .ant-tag *, .fx-badge, .fx-badge *),
:is(.fx-page-header, .fx-main .fx-page-head) > :is(h2, h3, .ant-typography) {
  color: var(--st-band-text) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) > :is(h2, h3, .ant-typography) {
  margin: 0 !important;
  font-family: var(--st-display-font) !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: 0;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-dangerous:not(.ant-btn-primary):not(.ant-btn-variant-link):not(.ant-btn-variant-text) {
  background: var(--st-band-danger) !important;
  border-color: var(--st-band-danger-line) !important;
  color: var(--st-band-danger-text) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .fx-page-title {
  margin: 0 !important;
  font-family: var(--st-display-font) !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: 0;
  line-height: 1.3;
}
:is(.fx-page-header, .fx-main .fx-page-head) .fx-title-meta {
  color: var(--st-band-muted) !important;
  margin: 0;
}
:is(.fx-page-header, .fx-main .fx-page-head) .fx-page-actions .ant-btn,
:is(.fx-page-header, .fx-main .fx-page-head) .fx-popup-actions .ant-btn {
  height: 30px;
}
/* Buttons on the band: translucent white; the primary one solid white */
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn:not(.ant-btn-primary):not(.ant-btn-variant-link):not(.ant-btn-variant-text) {
  background: var(--st-on-band) !important;
  border-color: var(--st-on-band-border) !important;
  color: var(--st-band-text) !important;
  box-shadow: none !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn:not(.ant-btn-primary):not(.ant-btn-variant-link):not(.ant-btn-variant-text):not(:disabled):hover {
  background: var(--st-on-band-hover) !important;
  border-color: var(--st-on-band-border-hover) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn:not(.ant-btn-primary) .anticon,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn:not(.ant-btn-primary) .fx-icon {
  color: var(--st-band-text) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-primary:not(.ant-btn-variant-link):not(.ant-btn-variant-text),
:root[data-theme="dark"] :is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-primary:not(.ant-btn-variant-link):not(.ant-btn-variant-text) {
  background: var(--st-band-primary) !important;
  border-color: var(--st-band-primary) !important;
  color: var(--st-band-primary-text) !important;
  font-weight: 600;
  box-shadow: none !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-primary .anticon,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-primary .fx-icon {
  color: inherit !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-primary:not(:disabled):hover,
:root[data-theme="dark"] :is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-primary:not(:disabled):hover {
  background: var(--st-band-primary-hover) !important;
  border-color: var(--st-band-primary-hover) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-variant-link,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-variant-text,
:is(.fx-page-header, .fx-main .fx-page-head) a:not(.ant-btn),
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-variant-link .anticon,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-variant-text .anticon,
:is(.fx-page-header, .fx-main .fx-page-head) > .anticon {
  color: var(--st-band-text) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-variant-link:hover,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn-variant-text:hover {
  background: var(--st-on-band-hover) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-breadcrumb,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-breadcrumb li,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-breadcrumb a,
:is(.fx-page-header, .fx-main .fx-page-head) .ant-breadcrumb-separator {
  color: var(--st-band-muted) !important;
}
:is(.fx-page-header, .fx-main .fx-page-head) .ant-btn:focus-visible {
  outline: 2px solid var(--st-band-focus) !important;
  outline-offset: 2px;
}

/* a core screen's title without a header row: the same band. A title in a
   .fx-title-row (a detail page's, with its status tags): the row is the band,
   full width, and the tags stay beside the title. A title alone in some other
   flex row (buttons beside it) takes the room the buttons leave. */
.fx-main h1.fx-page-title:not(:is(.fx-page-head, .fx-tp-main) *) {
  flex: 1 1 auto;
  min-width: 0;
  color: var(--st-band-text) !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  line-height: 1.3;
  padding-block: 12px;
}
.fx-main h1.fx-page-title:not(:is(.fx-page-head, .fx-tp-main) *) *:not(.ant-tag, .ant-tag *, .fx-badge, .fx-badge *) {
  color: inherit !important;
}
.fx-main .fx-title-row:not(:is(.fx-page-head, .fx-tp-main) *) {
  margin-bottom: 0;
  padding-block: 12px;
}
.fx-main .fx-title-row:not(:is(.fx-page-head, .fx-tp-main) *) h1.fx-page-title {
  flex: 0 1 auto;
  padding-block: 0;
}
.fx-main h1.fx-page-title:not(:is(.fx-page-head, .fx-tp-main) *) + .fx-title-meta {
  margin-top: -6px;
}

/* ======================================================================
   Group boxes: framed blocks and cards with a header row
   ====================================================================== */
.fx-frame,
.fx-card.ant-card,
.ant-card {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}
.fx-frame {
  padding: 16px;
}
.ant-card .ant-card-head {
  background: var(--st-head) !important;
  border-bottom: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0 !important;
  min-height: 42px !important;
  padding: 0 16px !important;
  color: var(--text) !important;
}
.fx-card .ant-card-head-wrapper {
  padding: 6px 0;
}
/* the card's title: Manrope on the header row's fill; no edge stripe */
.ant-card .ant-card-head-title {
  font-family: var(--st-display-font);
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 0;
}
.ant-card .ant-card-body {
  padding: 16px !important;
}
.fx-card-flat.ant-card {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
.fx-card-flat.ant-card > .ant-card-head {
  background: transparent !important;
}

/* ======================================================================
   Grids (tables): the toolbar on top of the grid, a strong header row,
   cell lines, zebra rows, a clear selected row, compact rows
   ====================================================================== */
.fx-frame-table {
  padding: 0;
  overflow: hidden;
}
.fx-frame-table > .fx-table-block > .fx-toolbar,
.fx-frame-table .fx-table-block > .fx-toolbar {
  margin: 0 !important;
  padding: 8px;
  background: var(--st-head);
  border-bottom: 1px solid var(--border);
}
.fx-frame-table .ant-table-wrapper .ant-table {
  border-radius: 0 !important;
}
.fx-frame-table .ant-table-pagination.ant-pagination {
  margin: 0 !important;
  padding: 8px 12px;
  border-top: 1px solid var(--border);
  background: var(--st-head);
}
.fx-frame-table > .fx-table-block > :not(.fx-toolbar):not(.ant-table-wrapper):not(.fx-quick-filters) {
  margin-left: 12px;
  margin-right: 12px;
}
.ant-table-wrapper .ant-table {
  background: var(--panel) !important;
  color: var(--text) !important;
  font-size: 14px !important;
}
.ant-table-wrapper .ant-table-container,
.ant-table-wrapper .ant-table-thead > tr > th:first-child,
.ant-table-wrapper .ant-table-thead > tr > th:last-child {
  border-radius: 0 !important;
}
.ant-table-thead > tr > th,
.ant-table-thead > tr > td {
  background: var(--st-head) !important;
  color: var(--text) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  white-space: nowrap;
  padding: 7px 10px !important;
  border-bottom: 1px solid var(--border-strong) !important;
  border-right: 1px solid var(--st-grid) !important;
}
.ant-table-thead > tr > th:last-child {
  border-right: 0 !important;
}
.ant-table-thead > tr > th::before {
  display: none !important;
}
.ant-table-thead > tr > th.ant-table-column-has-sorters:hover {
  background: color-mix(in srgb, var(--accent) 6%, var(--st-head)) !important;
}
.ant-table-thead > tr > th.ant-table-column-sort {
  background: color-mix(in srgb, var(--accent) 9%, var(--st-head)) !important;
  color: var(--accent) !important;
}
.ant-table-column-sorter,
.ant-table-filter-trigger {
  color: var(--text-subtle) !important;
}
.ant-table-column-sorter-up.active,
.ant-table-column-sorter-down.active,
.ant-table-filter-trigger.active {
  color: var(--accent) !important;
}
.ant-table-tbody > tr > td {
  background: var(--panel) !important;
  color: var(--text);
  padding: 5px 10px !important;
  border-bottom: 1px solid var(--st-grid) !important;
  border-right: 1px solid var(--st-grid);
  transition: background-color .1s ease !important;
}
.ant-table-tbody > tr > td:last-child {
  border-right: 0;
}
.ant-table-small .ant-table-tbody > tr > td,
.ant-table-small .ant-table-thead > tr > th {
  padding: 4px 8px !important;
}
.ant-table-tbody > tr.ant-table-measure-row > td {
  padding: 0 !important;
  border: 0 !important;
}
/* Zebra rows, not on rows a colour rule tints (rowColorRules). :where() keeps the stripe at the lowest
   weight, so hover, selected and colour rules always win over it (Daniel 2026-11-05: a selected striped row
   lost its fill). */
.ant-table-tbody > tr:where(:nth-child(even of .ant-table-row):not(.fx-row-tone-ok, .fx-row-tone-warn, .fx-row-tone-err, .fx-row-tone-info)) > td {
  background: var(--st-zebra) !important;
}
/* Row colours (rowColorRules): the cells' own background above is !important, so they are set here again. */
.ant-table-tbody > tr.ant-table-row.fx-row-tone-ok > td { background: var(--ok-bg) !important; }
.ant-table-tbody > tr.ant-table-row.fx-row-tone-warn > td { background: var(--warn-bg) !important; }
.ant-table-tbody > tr.ant-table-row.fx-row-tone-err > td { background: var(--err-bg) !important; }
.ant-table-tbody > tr.ant-table-row.fx-row-tone-info > td { background: var(--info-bg) !important; }
.ant-table-tbody > tr.ant-table-row:hover > td,
.ant-table-tbody > tr.ant-table-row > td.ant-table-cell-row-hover {
  background: var(--st-hover) !important;
}
.ant-table-tbody > tr.ant-table-row.ant-table-row-selected > td,
.ant-table-tbody > tr.ant-table-row.ant-table-row-selected:hover > td,
.ant-table-tbody > tr.ant-table-row.fx-row-selected > td,
.ant-table-tbody > tr.ant-table-row[aria-selected="true"] > td {
  background: var(--accent-soft) !important;
}
.ant-table-tbody > tr.ant-table-row-selected > td:first-child,
.ant-table-tbody > tr.fx-row-selected > td:first-child,
.ant-table-tbody > tr[aria-selected="true"] > td:first-child {
  box-shadow: inset 3px 0 0 var(--accent);
}
.ant-table-tbody > tr.ant-table-placeholder > td {
  color: var(--text-subtle);
  background: var(--panel) !important;
}
.ant-table-tbody a {
  color: var(--accent);
  font-weight: 600;
  text-decoration: none;
}
.ant-table-tbody a:hover {
  text-decoration: underline;
}
.ant-table-tbody .ant-btn {
  height: 24px;
  padding: 0 8px;
  font-size: 13px !important;
}
.ant-table-cell-fix-start,
.ant-table-cell-fix-end {
  background: inherit;
}
/* a fixed column scrolled over: a hairline, not antd's shadow */
:is(.ant-table-cell-fix-start-shadow, .ant-table-cell-fix-end-shadow)::before,
:is(.ant-table-cell-fix-start-shadow, .ant-table-cell-fix-end-shadow)::after {
  box-shadow: none !important;
}
.ant-table-cell-fix-end-shadow-show {
  border-inline-start: 1px solid var(--border-strong) !important;
}
.ant-table-cell-fix-start-shadow-show {
  border-inline-end: 1px solid var(--border-strong) !important;
}
/* a table scrolled sideways: no edge shadow (the cell lines show the cut) */
.ant-table-wrapper .ant-table-container::before,
.ant-table-wrapper .ant-table-container::after {
  box-shadow: none !important;
}

/* ======================================================================
   Details: label left, the value in a soft display-only field
   ====================================================================== */
.fx-kv {
  border-collapse: separate !important;
  border-spacing: 0 6px;
  margin-top: -6px;
}
.fx-kv th,
.fx-kv td {
  border-bottom: 0 !important;
  vertical-align: middle;
}
.fx-kv th,
.fx-kv-label {
  color: var(--text-muted) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
}
.fx-kv th {
  box-sizing: border-box;
  width: 132px !important;
  min-width: 132px;
  padding: 0 12px 0 0 !important;
  white-space: normal !important;
}
.fx-kv td,
.fx-kv-value {
  background: var(--st-display) !important;
  border: 1px solid var(--st-display-line) !important;
  border-radius: var(--radius) !important;
  color: var(--text) !important;
  padding: 5px 8px !important;
  min-height: 32px;
  line-height: 20px;
}
/* Side by side (rows of cells): each item a row, a fixed label column left */
.fx-kv-rows > .fx-kv-cell,
.fx-kv-rows > .fx-el-row {
  border-bottom: 0 !important;
}
.fx-kv-rows .fx-el-row {
  column-gap: 20px;
}
.fx-kv-rows .fx-kv-cell {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 3px 0 !important;
}
.fx-kv-rows .fx-kv-cell > .fx-kv-label {
  flex: 0 0 120px;
  width: 120px;
  margin: 0 !important;
  overflow-wrap: anywhere;
}
.fx-kv-rows .fx-kv-cell > .fx-kv-value {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
}
.fx-details-editing .fx-kv-value,
.fx-details-editing td {
  background: transparent !important;
  border-color: transparent !important;
  padding: 0 !important;
}

/* ======================================================================
   Forms: labels without colons, a clear required mark, white inputs with a
   thin frame, a strong focus with a faint fill, grey disabled fields
   ====================================================================== */
.ant-form-item-label > label {
  color: var(--text) !important;
  font-size: 13px !important;
  font-weight: 600;
}
.ant-form-item-label > label::after {
  content: "" !important;
  margin-inline-end: 6px !important;
}
.ant-form-vertical .ant-form-item-label {
  padding-bottom: 4px !important;
}
/* required: a small tile in the primary before the label (the brand's marker shape; not a red star) */
.ant-form-item-label > label.ant-form-item-required::before {
  content: "" !important;
  display: inline-block !important;
  width: 8px;
  height: 8px;
  margin-inline-end: 8px !important;
  border-radius: 25%;
  background: var(--accent) !important;
  vertical-align: 1px;
}
.ant-form-item {
  margin-bottom: 16px;
}
.ant-form-item-explain-error {
  color: var(--err) !important;
  font-size: 12px;
}
.ant-form-item-extra {
  color: var(--text-muted) !important;
  font-size: 12px;
}
/* a sub-heading between fields: an overline (uppercase, +0.08em) with a hairline */
.fx-form-heading {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--text-muted) !important;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  border-bottom: 0 !important;
  margin: 8px 0 12px !important;
  padding: 0 !important;
}
.fx-form-heading::after {
  content: "";
  flex: 1;
  border-top: 1px solid var(--border);
}
.fx-form-actions {
  margin-top: 8px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.ant-input,
.ant-input-affix-wrapper,
.ant-input-number,
.ant-picker,
.ant-select:not(.ant-select-customize),
.ant-input-group-addon {
  background: var(--st-field) !important;
  color: var(--text) !important;
  border: 1px solid var(--st-field-line) !important;
  border-radius: var(--radius) !important;
  box-shadow: none !important;
  transition: border-color .12s ease, box-shadow .12s ease, background-color .12s ease !important;
}
.ant-input-group-addon {
  background: var(--st-head) !important;
  color: var(--text-muted) !important;
}
.ant-input-affix-wrapper .ant-input,
.ant-input-number .ant-input-number-input,
.ant-picker input,
.ant-select .ant-select-input {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}
.ant-input:hover,
.ant-input-affix-wrapper:hover,
.ant-input-number:hover,
.ant-picker:hover,
.ant-select:not(.ant-select-disabled):hover {
  border-color: color-mix(in srgb, var(--accent) 55%, var(--st-field-line)) !important;
}
/* the field with the cursor: a 2 px frame in the brand's focus blue and a faint fill */
.ant-input:focus,
.ant-input-focused,
.ant-input-affix-wrapper-focused,
.ant-input-affix-wrapper:focus-within,
.ant-input-number-focused,
.ant-input-number:focus-within,
.ant-picker-focused,
.ant-select-focused:not(.ant-select-customize),
.ant-select-open:not(.ant-select-customize) {
  border-color: var(--st-focus) !important;
  background: var(--st-focus-fill) !important;
  box-shadow: var(--st-ring) !important;
  outline: none !important;
}
.ant-input-affix-wrapper-focused .ant-input,
.ant-input-affix-wrapper:focus-within .ant-input {
  box-shadow: none !important;
  background: transparent !important;
}
.ant-input::placeholder,
.ant-picker input::placeholder,
.ant-select-placeholder,
.ant-input-number-input::placeholder {
  color: var(--text-subtle) !important;
}
/* display-only (disabled and read-only) fields: the display field's grey */
.ant-input[disabled],
.ant-input-disabled,
.ant-input-affix-wrapper-disabled,
.ant-input-number-disabled,
.ant-picker-disabled,
.ant-select-disabled,
.ant-input[readonly]:not(.ant-select-input):not(.ant-picker input) {
  background: var(--st-display) !important;
  border-color: var(--st-display-line) !important;
  color: var(--text) !important;
  box-shadow: none !important;
  cursor: default !important;
}
.ant-form-item-has-error .ant-input,
.ant-form-item-has-error .ant-input-affix-wrapper,
.ant-form-item-has-error .ant-select,
.ant-form-item-has-error .ant-input-number,
.ant-form-item-has-error .ant-picker,
.ant-input-status-error,
.ant-select-status-error,
.ant-picker-status-error,
.ant-input-number-status-error {
  border-color: var(--err) !important;
  background: color-mix(in srgb, var(--err) 4%, var(--surface)) !important;
}
.ant-form-item-has-error .ant-input:focus,
.ant-input-status-error:focus,
.ant-input-status-error:focus-within,
.ant-select-status-error.ant-select-focused {
  box-shadow: 0 0 0 1px var(--err) !important;
}

/* drop-down and date fields: a visible button on the right */
.ant-select:not(.ant-select-customize) {
  padding-inline-end: 38px !important;
}
.ant-select:not(.ant-select-customize) {
  position: relative;
}
.ant-select:not(.ant-select-customize) .ant-select-suffix {
  position: absolute !important;
  inset-block: 0 !important;
  inset-inline-end: 0 !important;
  width: 30px !important;
  height: auto !important;
  align-self: stretch !important;
  margin: 0 !important;
  display: flex;
  align-items: center;
  justify-content: center;
  border-inline-start: 1px solid var(--border);
  border-radius: 0 calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0;
  background: var(--st-head);
  color: var(--text-muted) !important;
}
.ant-select-open:not(.ant-select-customize) .ant-select-suffix,
.ant-select-focused:not(.ant-select-customize) .ant-select-suffix {
  color: var(--accent) !important;
}
.ant-select .ant-select-clear {
  inset-inline-end: 38px !important;
  background: transparent !important;
}
/* The tag only: in antd 6 .ant-select-content-item wraps every tag and the search box too, so styling it drew an
   empty tag (the search box) in every multi-select and a second frame around each tag (Daniel 2026-11-05). */
.ant-select-multiple .ant-select-selection-item {
  background: var(--accent-soft) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent) !important;
  border-radius: var(--radius) !important;
  color: var(--text) !important;
}
.ant-picker:not(.ant-picker-range) {
  padding-inline-end: 0 !important;
}
.ant-picker:not(.ant-picker-range) .ant-picker-suffix {
  align-self: stretch;
  width: 30px;
  margin: -4px 0 -4px 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-inline-start: 1px solid var(--border);
  border-radius: 0 calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0;
  background: var(--st-head);
  color: var(--text-muted) !important;
}
.ant-picker-focused:not(.ant-picker-range) .ant-picker-suffix {
  color: var(--accent) !important;
}
.ant-picker .ant-picker-clear {
  inset-inline-end: 38px !important;
}
.ant-picker-range .ant-picker-active-bar {
  background: var(--accent) !important;
}
.ant-input-number .ant-input-number-actions,
.ant-input-number .ant-input-number-handler-wrap {
  background: var(--st-head) !important;
  border-inline-start: 1px solid var(--border) !important;
}
.ant-input-number .ant-input-number-action,
.ant-input-number .ant-input-number-handler {
  border-color: var(--border) !important;
  color: var(--text-muted) !important;
}

/* check boxes, radios, switches */
.ant-checkbox-inner {
  border-radius: 4px !important;
  border-color: var(--border-strong) !important;
}
.ant-checkbox-checked .ant-checkbox-inner {
  background: var(--st-solid) !important;
  border-color: var(--st-solid) !important;
}
.ant-checkbox-checked .ant-checkbox-inner::after {
  border-color: var(--st-on-solid) !important;
}
.ant-radio-inner {
  border-color: var(--border-strong) !important;
}
.ant-radio-checked .ant-radio-inner {
  background: var(--st-solid) !important;
  border-color: var(--st-solid) !important;
}
.ant-radio-checked .ant-radio-inner::after {
  background: var(--st-on-solid) !important;
}
.ant-switch {
  background: var(--border-strong) !important;
}
.ant-switch.ant-switch-checked {
  background: var(--st-solid) !important;
}

/* editors: a toolbar row on top of the edit area */
.ql-toolbar,
.ql-toolbar.ql-snow,
.fx-rich-toolbar {
  background: var(--st-head) !important;
  border: 1px solid var(--st-field-line) !important;
  border-bottom: 1px solid var(--border) !important;
  border-radius: var(--radius) var(--radius) 0 0 !important;
}
.cm-editor {
  border: 1px solid var(--st-field-line) !important;
  border-radius: var(--radius) !important;
}
.cm-editor.cm-focused {
  border-color: var(--st-focus) !important;
  box-shadow: var(--st-ring);
  outline: none !important;
}
.cm-editor .cm-gutters {
  background: var(--st-head) !important;
  color: var(--text-subtle) !important;
  border-inline-end: 1px solid var(--border) !important;
}

/* ======================================================================
   Push buttons: clear frames; the primary one solid in the accent
   ====================================================================== */
/* buttons: radius-md, Source Sans 600 (the brand's ui type), no shadows */
.ant-btn:not(.ant-btn-variant-link):not(.ant-btn-variant-text) {
  border-radius: var(--radius-lg) !important;
  font-weight: 600 !important;
  transition: background-color .12s ease, border-color .12s ease, color .12s ease, box-shadow .12s ease !important;
}
.ant-btn-variant-outlined:not(.ant-btn-dangerous),
.ant-btn-variant-dashed:not(.ant-btn-dangerous) {
  background: var(--surface) !important;
  border-color: var(--st-field-line) !important;
  color: var(--text) !important;
  box-shadow: none !important;
}
.ant-btn-variant-outlined:not(.ant-btn-dangerous):not(:disabled):hover,
.ant-btn-variant-dashed:not(.ant-btn-dangerous):not(:disabled):hover {
  border-color: var(--accent) !important;
  color: var(--accent) !important;
  background: color-mix(in srgb, var(--accent) 4%, var(--surface)) !important;
}
.ant-btn-variant-outlined .anticon,
.ant-btn-variant-outlined .fx-icon {
  color: var(--text-muted);
}
.ant-btn-variant-outlined:not(:disabled):hover .anticon,
.ant-btn-variant-outlined:not(:disabled):hover .fx-icon {
  color: inherit;
}
.ant-btn-primary.ant-btn-variant-solid:not(.ant-btn-dangerous) {
  background: var(--st-solid) !important;
  border-color: var(--st-solid) !important;
  color: var(--st-on-solid) !important;
  font-weight: 600 !important;
  box-shadow: none !important;
}
.ant-btn-primary.ant-btn-variant-solid:not(.ant-btn-dangerous):not(:disabled):hover {
  background: var(--st-solid-hover) !important;
  border-color: var(--st-solid-hover) !important;
}
.ant-btn-dangerous.ant-btn-variant-outlined {
  background: var(--surface) !important;
  border-color: color-mix(in srgb, var(--err) 45%, var(--st-field-line)) !important;
  color: var(--err) !important;
}
.ant-btn-dangerous.ant-btn-variant-outlined:not(:disabled):hover {
  background: var(--err-bg) !important;
  border-color: var(--err) !important;
}
.ant-btn:disabled,
.ant-btn.ant-btn-disabled {
  background: var(--st-display) !important;
  border-color: var(--border) !important;
  color: var(--text-subtle) !important;
  box-shadow: none !important;
}
.ant-btn-variant-link,
.ant-btn-variant-text {
  color: var(--accent) !important;
}
.ant-btn-variant-text:not(:disabled):hover {
  background: color-mix(in srgb, var(--accent) 8%, transparent) !important;
}
.ant-btn:focus-visible {
  outline: 2px solid var(--st-focus) !important;
  outline-offset: 2px !important;
}

/* ======================================================================
   Badges and tags
   ====================================================================== */
/* badges and tags: the StatusBadge shape (radius-sm, 12 px, 600) */
.fx-badge,
.ant-tag {
  border-radius: var(--radius) !important;
  font-size: 12px;
  font-weight: 600;
  line-height: 20px;
  box-shadow: none !important;
}
.fx-choice-tag.ant-tag {
  border: 1px solid transparent !important;
}
/* choice colours in the brand: blue the tint, green/gold/red/cyan the status pairs */
.ant-tag:is(.ant-tag-blue, .ant-tag-geekblue) { background: var(--accent-soft) !important; color: var(--accent) !important; border-color: transparent !important; }
.ant-tag.ant-tag-green { background: var(--ok-bg) !important; color: var(--ok) !important; border-color: transparent !important; }
.ant-tag:is(.ant-tag-gold, .ant-tag-orange, .ant-tag-yellow) { background: var(--warn-bg) !important; color: var(--warn) !important; border-color: transparent !important; }
.ant-tag:is(.ant-tag-red, .ant-tag-volcano) { background: var(--err-bg) !important; color: var(--err) !important; border-color: transparent !important; }
.ant-tag.ant-tag-cyan { background: var(--info-bg) !important; color: var(--info) !important; border-color: transparent !important; }

/* KPI tiles: the brand's key figure, set apart by fill (no edge stripe): a
   panel tile, the tint for information, a status's own bg/text pair */
.fx-stat {
  position: relative;
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
  padding: 12px 16px !important;
}
.fx-stat:has(.tone-info) { background: var(--accent-soft) !important; border-color: var(--accent-soft) !important; }
.fx-stat:has(.tone-ok) { background: var(--ok-bg) !important; border-color: var(--ok-bg) !important; }
.fx-stat:has(.tone-warn) { background: var(--warn-bg) !important; border-color: var(--warn-bg) !important; }
.fx-stat:has(.tone-err) { background: var(--err-bg) !important; border-color: var(--err-bg) !important; }
.fx-stat-value {
  font-family: var(--st-display-font);
  font-size: 28px !important;
  font-weight: 800 !important;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
}
.fx-stat-label {
  color: var(--text-muted) !important;
  font-size: 13px !important;
  font-weight: 400;
}
.fx-stat:has(.tone-ok) .fx-stat-label { color: var(--ok) !important; }
.fx-stat:has(.tone-warn) .fx-stat-label { color: var(--warn) !important; }
.fx-stat:has(.tone-err) .fx-stat-label { color: var(--err) !important; }

/* quick filter chips: a row of toggles */
.fx-chip.ant-tag {
  margin: 0 !important;
  padding: 2px 11px !important;
  border: 1px solid var(--st-field-line) !important;
  border-radius: var(--radius-lg) !important;
  background: var(--surface) !important;
  color: var(--text) !important;
  font-size: 13px;
  font-weight: 600;
  line-height: 22px;
}
.fx-chip.ant-tag:hover {
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}
.fx-chip.ant-tag-checkable-checked {
  background: var(--accent-soft) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
  font-weight: 600;
}
.fx-chip-count {
  margin-inline-start: 6px;
  padding: 0 6px;
  border-radius: var(--radius);
  background: var(--surface-2);
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 600;
}
.fx-chip.ant-tag-checkable-checked .fx-chip-count {
  background: var(--st-solid);
  color: var(--st-on-solid);
}
.fx-quick-filters {
  gap: 8px !important;
}

/* ======================================================================
   Pop-ups: a window with the same title band, buttons bottom-left
   ====================================================================== */
.ant-modal-mask {
  background: var(--st-mask) !important;
}
.ant-modal-container,
.ant-modal-content {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
  padding: 0 !important;
  overflow: hidden;
}
.ant-modal-header {
  background: var(--st-band) !important;
  border-bottom: 0 !important;
  box-shadow: 0 1px 0 0 var(--st-band-line) !important;
  border-radius: 0 !important;
  margin: 0 !important;
  padding: 12px 52px 12px 16px !important;
}
.ant-modal-title,
.ant-modal-title * {
  color: var(--st-band-text) !important;
}
.ant-modal-title {
  font-family: var(--st-display-font) !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: 0;
  line-height: 24px !important;
}
.ant-modal-close {
  top: 10px !important;
  inset-inline-end: 10px !important;
  width: 28px !important;
  height: 28px !important;
  border-radius: var(--radius) !important;
  color: var(--st-band-text) !important;
}
.ant-modal-close:hover {
  background: var(--st-on-band-hover) !important;
}
.ant-modal-close .ant-modal-close-x,
.ant-modal-close .anticon {
  color: var(--st-band-text) !important;
}
/* buttons in a pop-up's band (header buttons) */
.ant-modal-header .ant-btn:not(.ant-btn-primary) {
  background: var(--st-on-band) !important;
  border-color: var(--st-on-band-border) !important;
  color: var(--st-band-text) !important;
  box-shadow: none !important;
}
.ant-modal-header .ant-btn:not(.ant-btn-primary) .anticon,
.ant-modal-header .ant-btn:not(.ant-btn-primary) .fx-icon {
  color: var(--st-band-text) !important;
}
.ant-modal-header .ant-btn-primary,
:root[data-theme="dark"] .ant-modal-header .ant-btn-primary {
  background: var(--st-band-primary) !important;
  border-color: var(--st-band-primary) !important;
  color: var(--st-band-primary-text) !important;
}
.ant-modal-body {
  padding: 16px !important;
}
.ant-modal-footer {
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 8px;
  text-align: start !important;
  background: var(--st-head);
  border-top: 1px solid var(--border);
  margin: 0 !important;
  padding: 8px 16px !important;
}
.ant-modal-footer > .ant-btn + .ant-btn {
  margin-inline-start: 0 !important;
}
/* a form in a pop-up: its buttons on a footer row, bottom-left */
.ant-modal-body .fx-form-actions {
  margin: 16px -16px -16px;
  padding: 8px 16px;
  background: var(--st-head);
  border-top: 1px solid var(--border);
}
/* confirm boxes have no header: keep them plain */
.ant-modal-confirm .ant-modal-container {
  padding: 24px !important;
}
.ant-modal-confirm .ant-modal-confirm-title {
  color: var(--text) !important;
  font-family: var(--st-display-font);
  font-weight: 700;
}

/* drawers */
.ant-drawer-content,
.ant-drawer-section {
  background: var(--panel) !important;
}
.ant-drawer-header {
  background: var(--st-band) !important;
  border-bottom: 0 !important;
  box-shadow: 0 1px 0 0 var(--st-band-line) !important;
  padding: 12px 16px !important;
}
.ant-drawer-title,
.ant-drawer-close,
.ant-drawer-header .anticon {
  color: var(--st-band-text) !important;
}
.ant-drawer-title {
  font-family: var(--st-display-font) !important;
  font-size: 16px !important;
  font-weight: 700 !important;
}
.ant-drawer-footer {
  background: var(--st-head);
  border-top: 1px solid var(--border) !important;
}

/* ======================================================================
   Drop-down lists, menus and calendars (open on the page body)
   ====================================================================== */
.ant-select-dropdown,
.ant-cascader-dropdown,
.ant-dropdown .ant-dropdown-menu,
.ant-picker-dropdown .ant-picker-panel-container,
.fx-action-menu {
  background: var(--panel) !important;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}
.ant-select-dropdown,
.ant-dropdown .ant-dropdown-menu {
  padding: 4px !important;
}
.ant-select-item,
.ant-dropdown-menu-item,
.ant-dropdown-menu-submenu-title {
  border-radius: var(--radius) !important;
  color: var(--text) !important;
  min-height: 32px;
}
.ant-select-item-option-active,
.ant-dropdown-menu-item:hover,
.ant-dropdown-menu-item-active,
.ant-dropdown-menu-submenu-title:hover {
  background: var(--st-hover) !important;
}
.ant-select-item-option-selected:not(.ant-select-item-option-disabled) {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
  font-weight: 600 !important;
}
.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled) {
  color: var(--err) !important;
}
.ant-dropdown-menu-item-danger:not(.ant-dropdown-menu-item-disabled):hover {
  background: var(--err-bg) !important;
}
.ant-select-item-group,
.ant-dropdown-menu-item-group-title {
  color: var(--text-subtle) !important;
  font-size: 12px !important;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.ant-dropdown-menu-item-divider {
  background: var(--border) !important;
}
.fx-user-menu {
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}
.fx-user-menu .ant-dropdown-menu {
  border: 0 !important;
  border-top: 1px solid var(--border) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* calendars: a header row, the chosen day in the accent, today marked */
.ant-picker-dropdown .ant-picker-panel {
  border: 0 !important;
}
.ant-picker-dropdown .ant-picker-header {
  border-bottom: 1px solid var(--border) !important;
  color: var(--text) !important;
}
.ant-picker-dropdown .ant-picker-content th {
  color: var(--text-muted) !important;
  font-weight: 600;
}
.ant-picker-dropdown .ant-picker-cell .ant-picker-cell-inner {
  border-radius: var(--radius) !important;
}
.ant-picker-dropdown .ant-picker-cell-selected .ant-picker-cell-inner,
.ant-picker-dropdown .ant-picker-cell-range-start .ant-picker-cell-inner,
.ant-picker-dropdown .ant-picker-cell-range-end .ant-picker-cell-inner {
  background: var(--st-solid) !important;
  color: var(--st-on-solid) !important;
}
.ant-picker-dropdown .ant-picker-cell-today .ant-picker-cell-inner::before {
  border-color: var(--accent) !important;
  border-radius: var(--radius) !important;
}
.ant-picker-dropdown .ant-picker-cell-in-range::before {
  background: var(--accent-soft) !important;
}
.ant-picker-dropdown .ant-picker-footer {
  background: var(--st-head);
  border-top: 1px solid var(--border) !important;
}

/* ======================================================================
   Tab strips that look like tabs
   ====================================================================== */
.ant-tabs-top > .ant-tabs-nav {
  margin-bottom: 14px !important;
}
.ant-tabs-top > .ant-tabs-nav::before {
  border-bottom: 1px solid var(--border-strong) !important;
}
.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab {
  margin: 0 2px 0 0 !important;
  padding: 7px 14px !important;
  border: 1px solid transparent !important;
  border-bottom: 0 !important;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0 !important;
  background: transparent;
  font-size: 14px;
  font-weight: 600;
  transition: background-color .12s ease, color .12s ease;
}
.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-btn {
  color: var(--text-muted) !important;
}
.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab:hover {
  background: var(--st-head);
}
.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab:hover .ant-tabs-tab-btn {
  color: var(--text) !important;
}
.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active {
  background: var(--panel) !important;
  border-color: var(--border-strong) !important;
  margin-bottom: -1px !important;
  box-shadow: none !important;
}
.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {
  color: var(--accent) !important;
  font-weight: 600;
  text-shadow: none !important;
}
.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar {
  display: none !important;
}

/* ======================================================================
   Pagination
   ====================================================================== */
.ant-pagination .ant-pagination-item,
.ant-pagination .ant-pagination-prev .ant-pagination-item-link,
.ant-pagination .ant-pagination-next .ant-pagination-item-link {
  border: 1px solid var(--st-field-line) !important;
  border-radius: var(--radius) !important;
  background: var(--surface) !important;
}
.ant-pagination .ant-pagination-item a {
  color: var(--text) !important;
}
.ant-pagination .ant-pagination-item-active {
  background: var(--st-solid) !important;
  border-color: var(--st-solid) !important;
}
.ant-pagination .ant-pagination-item-active a {
  color: var(--st-on-solid) !important;
  font-weight: 600;
}

/* ======================================================================
   Messages: a status bar along the bottom of the window
   ====================================================================== */
.ant-message.ant-message-top,
.ant-message {
  top: auto !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  transform: none !important;
}
.ant-message {
  height: auto !important;
  max-height: none !important;
  padding: 0 !important;
  margin: 0 !important;
  pointer-events: none;
}
.ant-message .ant-message-list-content {
  width: 100% !important;
  margin: 0 !important;
}
.ant-message .ant-message-notice {
  pointer-events: auto;
}
.ant-message .ant-message-notice {
  top: auto !important;
  bottom: var(--notification-y, 0) !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  max-width: none !important;
  transform: none !important;
  clip-path: none !important;
  margin: 0 !important;
  padding: 9px 22px !important;
  background: var(--panel) !important;
  color: var(--text) !important;
  border: 0 !important;
  border-top: 1px solid var(--border-strong) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-size: 14px;
}
.ant-message .ant-message-notice::after {
  display: none !important;
}
.ant-message .ant-message-notice-wrapper {
  justify-content: flex-start !important;
  text-align: start !important;
}
/* a status's own bg/text pair across the bar (no edge stripe, no shadow) */
.ant-message .ant-message-notice-success { background: var(--ok-bg) !important; color: var(--ok) !important; border-top-color: color-mix(in srgb, var(--ok) 30%, var(--ok-bg)) !important; }
.ant-message .ant-message-notice-error { background: var(--err-bg) !important; color: var(--err) !important; border-top-color: color-mix(in srgb, var(--err) 30%, var(--err-bg)) !important; }
.ant-message .ant-message-notice-warning { background: var(--warn-bg) !important; color: var(--warn) !important; border-top-color: color-mix(in srgb, var(--warn) 30%, var(--warn-bg)) !important; }
.ant-message .ant-message-notice-info,
.ant-message .ant-message-notice-loading { background: var(--accent-soft) !important; color: var(--text) !important; }
.ant-message .ant-message-notice :is(.ant-message-notice-content, .ant-message-custom-content) { color: inherit !important; font-weight: 600; }
.ant-message .ant-message-notice-icon-success .anticon { color: var(--ok) !important; }
.ant-message .ant-message-notice-icon-error .anticon { color: var(--err) !important; }
.ant-message .ant-message-notice-icon-warning .anticon { color: var(--warn) !important; }
.ant-message .ant-message-notice-icon-info .anticon,
.ant-message .ant-message-notice-icon-loading .anticon { color: var(--accent) !important; }
.ant-notification .ant-notification-notice {
  background: var(--panel) !important;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}

/* ======================================================================
   Alerts, quick-info tooltips, search matches
   ====================================================================== */
/* alerts: the Callout, set apart by the status's fill (no edge stripe) */
.ant-alert {
  border-radius: var(--radius-lg) !important;
  border: 0 !important;
  padding: 12px 16px !important;
}
.ant-alert-info { background: var(--info-bg) !important; }
.ant-alert-success { background: var(--ok-bg) !important; }
.ant-alert-warning { background: var(--warn-bg) !important; }
.ant-alert-error { background: var(--err-bg) !important; }
.ant-alert .ant-alert-title,
.ant-alert .ant-alert-message {
  color: var(--text) !important;
  font-weight: 600;
}
.ant-alert-info :is(.ant-alert-title, .ant-alert-message) { color: var(--info) !important; }
.ant-alert-success :is(.ant-alert-title, .ant-alert-message) { color: var(--ok) !important; }
.ant-alert-warning :is(.ant-alert-title, .ant-alert-message) { color: var(--warn) !important; }
.ant-alert-error :is(.ant-alert-title, .ant-alert-message) { color: var(--err) !important; }
.ant-alert .ant-alert-description {
  color: var(--text) !important;
}
.ant-alert-info .ant-alert-icon { color: var(--info) !important; }
.ant-alert-success .ant-alert-icon { color: var(--ok) !important; }
.ant-alert-warning .ant-alert-icon { color: var(--warn) !important; }
.ant-alert-error .ant-alert-icon { color: var(--err) !important; }
.ant-tooltip .ant-tooltip-inner,
.ant-tooltip .ant-tooltip-container {
  background: var(--st-tip-bg) !important;
  color: var(--st-tip-text) !important;
  outline: 1px solid var(--st-tip-line);
  outline-offset: -1px;
  border-radius: var(--radius) !important;
  font-size: 13px;
  padding: 4px 8px !important;
  min-height: 0 !important;
  box-shadow: none !important;
}
.ant-tooltip {
  --antd-arrow-background-color: var(--st-tip-bg);
}
mark {
  background: var(--mark-bg);
  color: var(--text);
  border-radius: 2px;
  padding: 0 1px;
}

/* ======================================================================
   Menus in the page area (the menu block): a menu bar and a tree
   ====================================================================== */
.fx-main .ant-menu:not(.fx-sidemenu),
.ant-modal-container .ant-menu,
.ant-drawer-content .ant-menu:not(.fx-sidemenu) {
  background: var(--panel) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}
.fx-main .ant-menu:not(.fx-sidemenu) .ant-menu-item,
.fx-main .ant-menu:not(.fx-sidemenu) .ant-menu-submenu-title {
  border-radius: 5px !important;
  color: var(--text) !important;
}
.fx-main .ant-menu-inline:not(.fx-sidemenu) .ant-menu-submenu-title,
.fx-main .ant-menu-vertical:not(.fx-sidemenu) .ant-menu-submenu-title {
  font-weight: 600;
}
.fx-main .ant-menu:not(.fx-sidemenu) .ant-menu-sub {
  background: transparent !important;
}
.fx-main .ant-menu:not(.fx-sidemenu) .ant-menu-item:hover,
.fx-main .ant-menu:not(.fx-sidemenu) .ant-menu-submenu-title:hover {
  background: var(--st-hover) !important;
}
.fx-main .ant-menu:not(.fx-sidemenu) .ant-menu-item-selected {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
  font-weight: 600;
}
.fx-main .ant-menu .ant-menu-item::after,
.fx-main .ant-menu .ant-menu-submenu::after {
  display: none !important;
}
/* the horizontal menu: a menu bar (Menu · Edit · Goto …) */
.fx-main .ant-menu-horizontal {
  background: var(--st-head) !important;
  line-height: 36px !important;
  padding: 0 4px;
}
.fx-main .ant-menu-horizontal > .ant-menu-item,
.fx-main .ant-menu-horizontal > .ant-menu-submenu {
  padding: 0 12px !important;
  margin: 3px 1px !important;
  line-height: 30px !important;
  height: 30px !important;
  top: 0 !important;
  border-radius: 5px !important;
}
.fx-main .ant-menu-horizontal > .ant-menu-item:hover,
.fx-main .ant-menu-horizontal > .ant-menu-submenu:hover,
.fx-main .ant-menu-horizontal > .ant-menu-submenu-open {
  background: var(--st-hover) !important;
  color: var(--accent) !important;
}
.fx-main .ant-menu-horizontal > .ant-menu-item-selected,
.fx-main .ant-menu-horizontal > .ant-menu-submenu-selected {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
}
/* submenus that pop out: a drop-down menu */
.ant-menu-submenu-popup > .ant-menu,
.ant-menu-submenu-popup .ant-menu-sub {
  background: var(--panel) !important;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
  padding: 4px !important;
}
.ant-menu-submenu-popup .ant-menu-item,
.ant-menu-submenu-popup .ant-menu-submenu-title {
  height: 30px !important;
  line-height: 30px !important;
  margin: 0 !important;
  width: 100% !important;
  border-radius: 5px !important;
  color: var(--text) !important;
}
.ant-menu-submenu-popup .ant-menu-item:hover,
.ant-menu-submenu-popup .ant-menu-item-active,
.ant-menu-submenu-popup .ant-menu-submenu-title:hover {
  background: var(--st-hover) !important;
}
.ant-menu-submenu-popup .ant-menu-item-selected {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
  font-weight: 600;
}

/* ======================================================================
   Page menus (command bar, menu bar, ribbon)
   ====================================================================== */
.fx-cmenu-row,
.fx-rb {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}
.fx-cmenu-menubar .fx-cmenu-row {
  background: var(--st-head) !important;
}
.fx-cmenu-top:hover,
.fx-cmenu-top[aria-expanded="true"] {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
}
.fx-cmd {
  border-radius: 5px !important;
}
.fx-cmd:hover {
  background: var(--st-hover) !important;
  border-color: color-mix(in srgb, var(--accent) 25%, transparent) !important;
}
.fx-cmd:not([aria-disabled="true"]) .fx-cmd-icon {
  color: var(--accent);
}
.fx-cmd-danger:not([aria-disabled="true"]) .fx-cmd-icon {
  color: var(--err);
}
.fx-cmd-primary {
  background: var(--st-solid) !important;
  color: var(--st-on-solid) !important;
}
.fx-cmd-primary .fx-cmd-icon {
  color: var(--st-on-solid) !important;
}
.fx-cmd-primary:hover {
  background: var(--st-solid-hover) !important;
}
.fx-cmenu-panel {
  background: var(--panel) !important;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}
.fx-cmenu-item:hover,
.fx-cmenu-item:focus-visible {
  background: var(--st-hover) !important;
}
.fx-rb-tabs {
  background: var(--st-head);
  border-bottom: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  padding: 0 8px;
}
.fx-rb-tabs [role="tab"] {
  color: var(--text-muted) !important;
  font-weight: 500;
}
.fx-rb-tabs [role="tab"][aria-selected="true"] {
  color: var(--text) !important;
  font-weight: 600;
  border-bottom-color: var(--accent) !important;
}
.fx-rb-group {
  border-right: 1px solid var(--border) !important;
}
.fx-rb-cap,
.fx-cmenu-cap {
  color: var(--text-subtle) !important;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}

/* ======================================================================
   Other content blocks
   ====================================================================== */
/* lists: rows with lines and zebra */
.ant-list-bordered {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  overflow: hidden;
}
.ant-list-header {
  background: var(--st-head) !important;
  border-bottom: 1px solid var(--border-strong) !important;
  font-weight: 600;
}
.ant-list-footer {
  background: var(--st-head) !important;
  border-top: 1px solid var(--border) !important;
}
.ant-list .ant-list-item {
  border-block-end: 1px solid var(--st-grid) !important;
}
.ant-list-bordered .ant-list-item:nth-child(even) {
  background: var(--st-zebra);
}
.ant-list-bordered .ant-list-item:hover {
  background: var(--st-hover);
}
.ant-list-item-meta-title,
.ant-list-item-meta-title > a {
  color: var(--text) !important;
  font-weight: 600;
}
.ant-list-item-meta-description {
  color: var(--text-muted) !important;
}

/* collapse: expandable group boxes */
.ant-collapse {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
  overflow: hidden;
}
.ant-collapse > .ant-collapse-item {
  border-bottom: 1px solid var(--border) !important;
}
.ant-collapse > .ant-collapse-item:last-child {
  border-bottom: 0 !important;
}
.ant-collapse > .ant-collapse-item > .ant-collapse-header {
  background: var(--st-head) !important;
  color: var(--text) !important;
  font-weight: 600;
  padding: 9px 14px !important;
  align-items: center !important;
}
.ant-collapse .ant-collapse-arrow,
.ant-collapse .ant-collapse-expand-icon {
  color: var(--accent) !important;
}
.ant-collapse .ant-collapse-content {
  background: var(--panel) !important;
  border-top: 1px solid var(--border) !important;
  color: var(--text) !important;
}

/* trees: hierarchy lines, the chosen node in the accent */
.ant-tree {
  background: transparent !important;
  color: var(--text) !important;
}
.ant-tree .ant-tree-node-content-wrapper {
  border-radius: 5px !important;
}
.ant-tree .ant-tree-node-content-wrapper:hover {
  background: var(--st-hover) !important;
}
.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
  font-weight: 600;
}
.ant-tree .ant-tree-switcher {
  color: var(--text-muted) !important;
}
.ant-tree .ant-tree-indent-unit::before {
  border-inline-end: 1px solid var(--border) !important;
}

/* steps: a road map */
.ant-steps .ant-steps-item-icon {
  border: 1px solid var(--border-strong) !important;
  background: var(--panel) !important;
}
.ant-steps .ant-steps-item-icon .ant-steps-icon {
  color: var(--text-muted) !important;
}
.ant-steps .ant-steps-item-process .ant-steps-item-icon {
  background: var(--st-solid) !important;
  border-color: var(--st-solid) !important;
}
.ant-steps .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon {
  color: var(--st-on-solid) !important;
}
/* step numbers as tiles (the brand's shape) */
.ant-steps .ant-steps-item-icon {
  border-radius: 25% !important;
}
.ant-steps .ant-steps-item-finish .ant-steps-item-icon {
  background: var(--accent-soft) !important;
  border-color: var(--accent) !important;
}
.ant-steps .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon {
  color: var(--accent) !important;
}
.ant-steps .ant-steps-item-error .ant-steps-item-icon {
  background: var(--err-bg) !important;
  border-color: var(--err) !important;
}
.ant-steps .ant-steps-item-error .ant-steps-item-icon .ant-steps-icon {
  color: var(--err) !important;
}
.ant-steps .ant-steps-item-title {
  color: var(--text) !important;
}
.ant-steps .ant-steps-item-process .ant-steps-item-title {
  font-weight: 600;
}
.ant-steps .ant-steps-item-description {
  color: var(--text-muted) !important;
}
.ant-steps .ant-steps-item-title::after,
.ant-steps .ant-steps-item-tail::after {
  background: var(--border) !important;
}
.ant-steps .ant-steps-item-finish .ant-steps-item-title::after,
.ant-steps .ant-steps-item-finish .ant-steps-item-tail::after {
  background: var(--accent) !important;
}

/* timeline */
.ant-timeline .ant-timeline-item-tail {
  border-inline-start: 2px solid var(--border) !important;
}
.ant-timeline .ant-timeline-item-head {
  background: var(--panel) !important;
}
.ant-timeline .ant-timeline-item-content {
  color: var(--text) !important;
}
.ant-timeline .ant-timeline-item-label {
  color: var(--text-muted) !important;
}

/* statistics */
.ant-statistic .ant-statistic-title {
  color: var(--text-muted) !important;
  font-size: 12px !important;
  font-weight: 500;
}
.ant-statistic .ant-statistic-content {
  color: var(--accent) !important;
  font-family: var(--st-display-font);
  font-weight: 800;
  letter-spacing: -.02em;
}

/* progress */
.ant-progress .ant-progress-inner,
.ant-progress-line .ant-progress-rail {
  background: var(--surface-2) !important;
  box-shadow: none !important;
}
.ant-progress .ant-progress-bg,
.ant-progress .ant-progress-track {
  background: var(--accent) !important;
}
.ant-progress-status-success .ant-progress-bg,
.ant-progress-status-success .ant-progress-track {
  background: var(--ok) !important;
}
.ant-progress-status-exception .ant-progress-bg,
.ant-progress-status-exception .ant-progress-track {
  background: var(--err) !important;
}
.ant-progress .ant-progress-text,
.ant-progress .ant-progress-indicator {
  color: var(--text) !important;
}
.ant-progress-circle .ant-progress-circle-path {
  stroke: var(--accent) !important;
}
.ant-progress-circle .ant-progress-circle-trail,
.ant-progress-circle .ant-progress-circle-rail {
  stroke: var(--surface-2) !important;
}

/* breadcrumbs */
.ant-breadcrumb {
  color: var(--text-muted) !important;
}
.ant-breadcrumb a {
  color: var(--accent) !important;
}
.ant-breadcrumb .ant-breadcrumb-separator {
  color: var(--text-subtle) !important;
}
.ant-breadcrumb li:last-child {
  color: var(--text) !important;
  font-weight: 500;
}

/* segmented controls and button radios: toggle buttons */
.ant-segmented {
  background: var(--surface-2) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius) !important;
  padding: 2px !important;
}
.ant-segmented .ant-segmented-item {
  color: var(--text-muted) !important;
  border-radius: calc(var(--radius) - 2px) !important;
}
.ant-segmented .ant-segmented-item-selected,
.ant-segmented .ant-segmented-thumb {
  background: var(--panel) !important;
  color: var(--text) !important;
  font-weight: 600;
  box-shadow: 0 0 0 1px var(--border-strong) !important;
}
.ant-radio-button-wrapper {
  background: var(--surface) !important;
  border-color: var(--st-field-line) !important;
  color: var(--text) !important;
}
.ant-radio-button-wrapper:first-child { border-start-start-radius: var(--radius) !important; border-end-start-radius: var(--radius) !important; }
.ant-radio-button-wrapper:last-child { border-start-end-radius: var(--radius) !important; border-end-end-radius: var(--radius) !important; }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
  background: var(--accent-soft) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
  font-weight: 600;
}
.ant-radio-button-wrapper-checked::before {
  background: var(--accent) !important;
}

/* empty states, dividers, avatars */
.ant-empty .ant-empty-description {
  color: var(--text-subtle) !important;
}
.ant-divider {
  border-color: var(--border) !important;
}
.ant-divider-with-text {
  color: var(--text) !important;
  font-weight: 600 !important;
}
.ant-avatar {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
}
.ant-avatar-square {
  border-radius: 25% !important;
}

/* the calendar block: a grid with a header row */
.ant-picker-calendar {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  overflow: hidden;
}
.ant-picker-calendar .ant-picker-calendar-header {
  background: var(--st-head) !important;
  border-bottom: 1px solid var(--border) !important;
  padding: 8px 12px !important;
}
.ant-picker-calendar .ant-picker-panel {
  background: var(--panel) !important;
}
.ant-picker-calendar .ant-picker-content th {
  color: var(--text-muted) !important;
  font-weight: 600;
}
.ant-picker-calendar-full .ant-picker-cell .ant-picker-calendar-date {
  border-top: 1px solid var(--st-grid) !important;
}
.ant-picker-calendar-full .ant-picker-cell-today .ant-picker-calendar-date {
  background: color-mix(in srgb, var(--accent-soft) 60%, var(--panel)) !important;
}
.ant-picker-calendar-full .ant-picker-cell-selected .ant-picker-calendar-date {
  background: var(--accent-soft) !important;
}

/* ======================================================================
   Plugin blocks (pills, Kanban, Gantt, calendar, expected rows): tokens do
   most; these give them the same group boxes and header rows
   ====================================================================== */
.kanban-lane {
  background: var(--st-head) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
}
.kanban-lane-head {
  border-bottom: 1px solid var(--border);
  margin-bottom: 8px;
  background: transparent;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}
/* lane titles as overlines */
.kanban-lane-title {
  color: var(--text) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: .08em !important;
}
.kanban-lane-count {
  background: var(--panel) !important;
  border: 1px solid var(--border);
  border-radius: var(--radius) !important;
}
.kanban-card {
  background: var(--panel) !important;
  border-color: var(--border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: none !important;
}
/* a card's colour as a small tile in its corner, not an edge stripe */
.kanban-card::before {
  inset: 10px 10px auto auto !important;
  width: 8px !important;
  height: 8px !important;
  border-radius: 25% !important;
}
.kanban-card:hover {
  border-color: var(--border-strong) !important;
  box-shadow: none !important;
}
.kanban-card.is-selected {
  border-color: var(--accent) !important;
  background: var(--accent-soft) !important;
  box-shadow: 0 0 0 1px var(--accent) !important;
}
.kanban-ghost,
.gantt-bar,
.gantt-bar:hover,
.gantt-bar.is-dragging,
.cal-event.is-dragging {
  box-shadow: none !important;
}
.gantt-tip,
.exp-pick-menu {
  border-color: var(--border-strong) !important;
  box-shadow: none !important;
}
.kanban-title,
.cal-title,
.gantt-title,
.exp-title {
  font-family: var(--st-display-font) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 0;
}
:is(.kanban-title, .cal-title, .gantt-title, .exp-title) :is(.kanban-count, .cal-count) {
  font-family: var(--font);
  font-weight: 400;
  color: var(--text-muted);
}
/* lane dots as tiles, choice colours in the brand's solids */
.kanban-lane-dot {
  border-radius: 25% !important;
}
.kanban-lane[style*="--kb-lane-c: blue"] { --kb-lane-c: var(--accent) !important; }
.kanban-lane[style*="--kb-lane-c: green"] { --kb-lane-c: var(--st-ok-solid) !important; }
.kanban-lane[style*="--kb-lane-c: gold"] { --kb-lane-c: var(--st-warn-solid) !important; }
.kanban-lane[style*="--kb-lane-c: red"] { --kb-lane-c: var(--st-err-solid) !important; }
:is(.kanban-card, .cal-event)[style*="-c: blue"] { --kb-c: var(--accent) !important; --cal-c: var(--accent) !important; }
:is(.kanban-card, .cal-event)[style*="-c: green"] { --kb-c: var(--st-ok-solid) !important; --cal-c: var(--st-ok-solid) !important; }
:is(.kanban-card, .cal-event)[style*="-c: gold"] { --kb-c: var(--st-warn-solid) !important; --cal-c: var(--st-warn-solid) !important; }
:is(.kanban-card, .cal-event)[style*="-c: red"] { --kb-c: var(--st-err-solid) !important; --cal-c: var(--st-err-solid) !important; }
.kanban-card-key {
  font-family: var(--font-mono) !important;
}
.kanban-tool,
.cal-tool,
.cal-btn {
  border-color: var(--st-field-line) !important;
  border-radius: var(--radius-lg);
  background: var(--surface) !important;
}
.cal-btn.is-on {
  background: var(--st-solid) !important;
  border-color: var(--st-solid) !important;
  color: var(--st-on-solid) !important;
}
.cal-month,
.cal-time {
  border-color: var(--border) !important;
  border-radius: var(--radius-lg);
  box-shadow: none !important;
}
.cal-weekday,
.cal-time-head {
  background: var(--st-head) !important;
  color: var(--text) !important;
  border-bottom-color: var(--border-strong) !important;
  font-weight: 600;
  letter-spacing: .08em;
}
.cal-day {
  border-color: var(--st-grid) !important;
}
.cal-day.is-other {
  background: color-mix(in srgb, var(--surface-2) 50%, var(--panel)) !important;
}
:root[data-theme="dark"] .cal-day.is-other {
  background: color-mix(in srgb, var(--bg) 60%, var(--panel)) !important;
}
/* today: a tinted day with its number in a primary tile (no edge stripe) */
.cal-day.is-today {
  box-shadow: none !important;
  background: color-mix(in srgb, var(--accent-soft) 60%, var(--panel)) !important;
}
.cal-day.is-today .cal-daynum,
.cal-event.is-selected .cal-daynum {
  background: var(--st-solid) !important;
  color: var(--st-on-solid) !important;
  border-radius: 25% !important;
}
/* events set apart by their tinted fill; no edge stripe */
.cal-chip::before {
  display: none !important;
}
.cal-chip {
  padding-left: 6px !important;
}
.cal-block {
  border-left: 0 !important;
  padding-left: 6px !important;
}
.exp-row.is-missing > td.exp-item {
  box-shadow: none !important;
  background: var(--warn-bg) !important;
}
.fx-my-requests-count {
  background: var(--st-solid) !important;
  color: var(--st-on-solid) !important;
  border-radius: var(--radius) !important;
}
.pill {
  border-radius: var(--radius);
}

/* Light mode: the default logo with dark text on the light top bar (dark mode keeps /logo.png). */
:root:not([data-theme="dark"]) .fx-brand img[src="/logo.png"],
:root:not([data-theme="dark"]) .fx-drawer-logo[src="/logo.png"] {
  content: url("data:image/png;base64,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");
}

