/* 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;
}

/* Default CSS of documents.viewer */
/* The Document block. Colours are theme tokens, so light and dark mode follow the theme. */
:is(.fx-b-documents-viewer) .docv { display: flex; flex-direction: column; min-width: 0; color: var(--text); }
:is(.fx-b-documents-viewer) .docv-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 6px 0; }
:is(.fx-b-documents-viewer) .docv-heading { font-weight: 600; }
:is(.fx-b-documents-viewer) .docv-name { color: var(--text-muted); overflow-wrap: anywhere; }
:is(.fx-b-documents-viewer) .docv-dirty { color: var(--warn, var(--text-muted)); font-size: 12px; }
:is(.fx-b-documents-viewer) .docv-dirty[hidden] { display: none; }
:is(.fx-b-documents-viewer) .docv-spacer { flex: 1; }
:is(.fx-b-documents-viewer) .docv-tool { padding: 3px 10px; border: 1px solid var(--border); border-radius: 4px; background: var(--surface); color: var(--text); font: inherit; cursor: pointer; text-decoration: none; }
:is(.fx-b-documents-viewer) .docv-tool:disabled { opacity: .55; cursor: default; }
:is(.fx-b-documents-viewer) .docv-save:not(:disabled) { background: var(--accent); border-color: var(--accent); color: #fff; }
:is(.fx-b-documents-viewer) .docv-body { min-height: 120px; overflow: auto; border: 1px solid var(--border); border-radius: 4px; background: var(--surface); }
:is(.fx-b-documents-viewer) .docv-text { box-sizing: border-box; display: block; width: 100%; height: 100%; margin: 0; padding: 10px; border: 0; background: transparent; color: var(--text); font: 13px/1.5 var(--font-mono, monospace); white-space: pre-wrap; overflow-wrap: anywhere; resize: none; }
:is(.fx-b-documents-viewer) .docv-edit:focus { outline: 2px solid var(--accent); outline-offset: -2px; }
:is(.fx-b-documents-viewer) .docv-image { display: block; max-width: 100%; height: auto; margin: 0 auto; }
:is(.fx-b-documents-viewer) .docv-message { margin: 0; padding: 12px; color: var(--text-muted); }
:is(.fx-b-documents-viewer) .docv-list { margin: 0; padding: 0; list-style: none; }
:is(.fx-b-documents-viewer) .docv-pick { padding: 4px 0; border: 0; background: none; color: var(--accent); font: inherit; text-decoration: underline; cursor: pointer; text-align: start; }
:is(.fx-b-documents-viewer) .docv-hint { color: var(--text-muted); font-size: 12px; }
:is(.fx-b-documents-viewer) .docv-frame { display: block; width: 100%; height: 100%; border: 0; }
:is(.fx-b-documents-viewer) .docv-wait { position: absolute; }
:is(.fx-b-documents-viewer) .docv-body:has(> .docv-wait) { position: relative; }
:is(.fx-b-documents-viewer) .docv-pdf { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 12px; background: var(--surface-2, var(--surface)); }
:is(.fx-b-documents-viewer) .docv-page { position: relative; max-width: 100%; background: #fff; box-shadow: 0 0 0 1px var(--border); }
:is(.fx-b-documents-viewer) .docv-page canvas { display: block; }
:is(.fx-b-documents-viewer) .docv-page .textLayer { position: absolute; inset: 0; overflow: hidden; line-height: 1; opacity: 1; forced-color-adjust: none; transform-origin: 0 0; caret-color: CanvasText; }
:is(.fx-b-documents-viewer) .docv-page .textLayer :is(span, :is(.fx-b-documents-viewer) br) { position: absolute; color: transparent; white-space: pre; cursor: text; transform-origin: 0 0; }
:is(.fx-b-documents-viewer) .docv-page .textLayer ::selection { background: rgba(0, 90, 200, .3); }

/* Default CSS of nocodeobjects.pill, nocodeobjects.duration, nocodeobjects.gantt, nocodeobjects.kanban, nocodeobjects.calendar, nocodeobjects.expected */
/* Default CSS of the status and tag pill (nocodeobjects.pill), the lowest style layer (spec
   plugin-objects.md §5). The core scopes every rule to the type's .fx-o-<type>, so selectors
   name the parts only. Colours are theme tokens, so light and dark mode follow the theme;
   a pill's own colour comes from data through the core's colour check as --pill-c. */

:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pills { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; max-width: 100%; vertical-align: middle; }

:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill {
  --pill-c: var(--text-subtle);
  display: inline-flex; align-items: center; gap: 5px; min-width: 0; max-width: 100%;
  padding: 0 6px; border: 1px solid transparent; border-radius: 3px;
  font-size: 11px; font-weight: 700; line-height: 18px; white-space: nowrap;
  background: var(--surface-2); color: var(--text-muted);
}
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-text { overflow: hidden; text-overflow: ellipsis; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .z-medium .pill { padding: 1px 8px; font-size: 12px; line-height: 20px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .s-round .pill { border-radius: 999px; padding-inline: 8px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .upper .pill { text-transform: uppercase; letter-spacing: .03em; }

/* Subtle (default): tinted with the colour, the text in a darker or lighter shade of it. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .v-subtle .pill.has-colour {
  background: color-mix(in srgb, var(--pill-c) 16%, var(--surface));
  color: color-mix(in srgb, var(--pill-c) 60%, var(--text));
}
/* Bold: filled with the colour, the text dark or light by its luminance. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .v-bold .pill.has-colour { background: var(--pill-c); color: #fff; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .v-bold .pill.has-colour[data-on="dark"] { color: #172b4d; }
/* Outline: a coloured border on the surface. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .v-outline .pill { background: transparent; border-color: var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .v-outline .pill.has-colour { border-color: var(--pill-c); color: color-mix(in srgb, var(--pill-c) 60%, var(--text)); }
/* Dot: neutral pill with a coloured dot. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .v-dot .pill { background: transparent; border-color: var(--border); color: var(--text); font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--pill-c); }

:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-more { background: var(--info-bg); color: var(--info); cursor: default; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-empty { background: transparent; color: var(--text-subtle); font-weight: 400; }

/* Forms and row buttons: the pills are a button that opens the choices. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-trigger {
  display: inline-flex; align-items: center; gap: 4px; max-width: 100%;
  margin: 0; padding: 2px 4px; border: 1px solid transparent; border-radius: var(--radius, 6px);
  background: transparent; color: inherit; font: inherit; cursor: pointer;
}
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-trigger:hover { background: var(--surface-2); border-color: var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-trigger:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-trigger[aria-expanded="true"] { border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-caret { flex: none; width: 0; height: 0; border: 4px solid transparent; border-top: 5px solid var(--text-muted); border-bottom: 0; }

:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-menu {
  position: fixed; z-index: 1100; pointer-events: auto;
  display: flex; flex-direction: column; gap: 1px;
  max-height: 280px; overflow-y: auto; padding: 4px;
  background: var(--panel, var(--surface)); color: var(--text);
  border: 1px solid var(--border); border-radius: var(--radius, 6px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, .18);
}
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-option {
  display: flex; align-items: center; gap: 6px; width: 100%;
  margin: 0; padding: 4px 8px; border: 0; border-radius: 4px;
  background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer;
}
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-option:hover, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-option:focus-visible { background: var(--accent-soft, var(--surface-2)); outline: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-check { flex: none; width: 12px; text-align: center; color: var(--accent); font-size: 12px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-option[aria-selected="true"] .pill-check::before { content: "✓"; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .pill-menu-note { padding: 4px 8px; color: var(--text-muted); font-size: 12px; white-space: nowrap; }

/* Duration (nocodeobjects.duration): friendly text in the row's font, digits of even width. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration { font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--text); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-empty { color: var(--text-subtle); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-field { display: inline-flex; flex-direction: column; gap: 2px; min-width: 12em; max-width: 100%; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-input {
  box-sizing: border-box; width: 100%; padding: 4px 11px;
  font: inherit; color: var(--text); background: var(--surface);
  border: 1px solid var(--border-strong, var(--border)); border-radius: var(--radius, 6px);
}
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-input:hover { border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft, transparent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-input[aria-invalid="true"] { border-color: var(--err); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-hint, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-error { min-height: 1.4em; font-size: 12px; line-height: 1.4; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-hint { color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .duration-error { color: var(--err); }

/* Gantt (nocodeobjects.gantt): served for the block type by the core (scoped to it, rules
   relative to the block). Theme tokens only, so light and dark follow the theme; a task's
   colour comes from data through the core's colour check as --gantt-c. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt { position: relative; color: var(--text); font-size: 13px; min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 0 0 8px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-title { font-weight: 600; font-size: 14px; margin-right: 6px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-count { font-weight: 400; color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-group { display: inline-flex; border: 1px solid var(--border-strong); border-radius: var(--radius, 6px); overflow: hidden; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-btn { margin: 0; padding: 2px 9px; border: 0; background: var(--panel); color: var(--text); font: inherit; font-size: 12px; line-height: 20px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-btn:hover { background: var(--surface-2); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-btn.is-on { background: var(--accent); color: #fff; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-tool { margin: 0; padding: 2px 9px; border: 1px solid var(--border-strong); border-radius: var(--radius, 6px); background: var(--panel); color: var(--text); font: inherit; font-size: 12px; line-height: 20px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-tool:hover { border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-tool.is-on { border-color: var(--accent); color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-range { color: var(--text-muted); font-size: 12px; margin-inline: 4px; white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-spacer { flex: 1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-scroll { position: relative; overflow: auto; max-height: 70vh; border: 1px solid var(--border); border-radius: var(--radius, 6px); background: var(--panel); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-grid { position: relative; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-head { position: sticky; top: 0; z-index: 3; display: flex; height: 38px; background: var(--surface-2); border-bottom: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-corner { position: sticky; left: 0; z-index: 4; flex: none; box-sizing: border-box; display: flex; align-items: flex-end; padding: 0 10px 4px; background: var(--surface-2); border-right: 1px solid var(--border); color: var(--text-subtle); font-size: 12px; font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-scale { position: relative; flex: none; height: 38px; overflow: hidden; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-band { position: absolute; left: 0; right: 0; height: 19px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-unit { position: absolute; top: 0; box-sizing: border-box; height: 19px; padding: 0 4px; overflow: hidden; border-left: 1px solid var(--border); color: var(--text-muted); font-size: 11px; line-height: 19px; white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-unit.is-major { color: var(--text); font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-unit.is-today { color: var(--accent); font-weight: 700; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-row { position: relative; display: flex; min-height: 42px; border-bottom: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-row.is-selected { background: var(--accent-soft); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-name { position: sticky; left: 0; z-index: 2; flex: none; box-sizing: border-box; display: flex; align-items: flex-start; gap: 6px; padding: 5px 10px; background: var(--panel); border-right: 1px solid var(--border); cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-row.is-selected > .gantt-name { background: var(--accent-soft); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-name-text { display: flex; flex-direction: column; min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-key { font-family: var(--font-mono); font-size: 11px; font-weight: 700; color: var(--text-muted); line-height: 15px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-label { font-size: 13px; line-height: 16px; overflow-wrap: anywhere; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-toggle { flex: none; margin: 0; padding: 0 5px; border: 1px solid var(--border-strong); border-radius: 999px; background: var(--surface-2); color: var(--text-muted); font: inherit; font-size: 11px; line-height: 16px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-lane { position: relative; flex: none; overflow: hidden; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-lane.is-unscheduled { background: var(--warn-bg); cursor: copy; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-hint { position: sticky; left: 10px; display: inline-block; padding: 12px 10px; color: var(--text-muted); font-size: 12px; font-style: italic; pointer-events: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-bar { --gantt-c: var(--accent); position: absolute; top: 6px; box-sizing: border-box; height: 18px; min-width: 6px; overflow: hidden; border: 1px solid color-mix(in srgb, var(--gantt-c) 55%, var(--surface)); border-radius: 3px; background: color-mix(in srgb, var(--gantt-c) 22%, var(--surface)); color: color-mix(in srgb, var(--gantt-c) 55%, var(--text)); box-shadow: 0 1px 2px rgba(0, 0, 0, .12); cursor: grab; touch-action: none; user-select: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-bar.is-dragging { cursor: grabbing; box-shadow: 0 3px 10px rgba(0, 0, 0, .25); z-index: 1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-bar:hover { filter: brightness(1.06); box-shadow: 0 2px 6px rgba(0, 0, 0, .2); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-bar.is-fixed { cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-progress { position: absolute; inset: 0 auto 0 0; background: color-mix(in srgb, var(--gantt-c) 45%, var(--surface)); pointer-events: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-bar-text { position: relative; display: block; padding: 0 8px; overflow: hidden; font-size: 11px; font-weight: 600; line-height: 16px; white-space: nowrap; text-overflow: ellipsis; pointer-events: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-handle { position: absolute; top: 0; bottom: 0; width: 6px; cursor: ew-resize; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-marker { --gantt-c: var(--accent); position: absolute; top: 8px; box-sizing: border-box; width: 14px; height: 14px; margin-left: -7px; border: 1px solid color-mix(in srgb, var(--gantt-c) 70%, var(--text)); background: color-mix(in srgb, var(--gantt-c) 45%, var(--surface)); transform: rotate(45deg); cursor: grab; touch-action: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-sub { position: absolute; top: 27px; overflow: hidden; color: var(--text-muted); font-size: 10px; line-height: 13px; white-space: nowrap; text-overflow: ellipsis; pointer-events: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-lines { position: absolute; top: 38px; bottom: 0; pointer-events: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-line { position: absolute; top: 0; bottom: 0; width: 0; border-left: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-line.is-major { border-left-color: var(--border-strong); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-weekend { position: absolute; top: 0; bottom: 0; background: color-mix(in srgb, var(--surface-2) 70%, transparent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-today { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: color-mix(in srgb, var(--accent) 40%, transparent); z-index: 1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-links { position: absolute; top: 38px; left: 0; overflow: visible; pointer-events: none; z-index: 1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-link { fill: none; stroke: var(--text-muted); stroke-width: 1.25; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-link.is-depends { stroke-dasharray: 4 3; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-tip { position: absolute; z-index: 10; max-width: 320px; padding: 6px 9px; border: 1px solid var(--border); border-radius: var(--radius, 6px); background: var(--panel); color: var(--text); box-shadow: 0 6px 20px rgba(0, 0, 0, .18); font-size: 12px; line-height: 1.45; pointer-events: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-tip-title { font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-tip-muted { color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-empty { padding: 18px; color: var(--text-muted); text-align: center; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-note { margin: 0 0 8px; padding: 6px 10px; border-radius: var(--radius, 6px); background: var(--warn-bg); color: var(--text); font-size: 12px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-btn:focus-visible, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-tool:focus-visible, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-toggle:focus-visible, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-bar:focus-visible, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-marker:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .gantt-name:hover { background: var(--surface-2); }

/* Kanban (nocodeobjects.kanban): served for the block type by the core (scoped to it, rules
   relative to the block). Theme tokens only, so light and dark follow the theme; a card's
   colour comes from data through the core's colour check as --kb-c, a lane's as --kb-lane-c. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban { position: relative; color: var(--text); font-size: 13px; min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban.is-dragging { cursor: grabbing; user-select: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-toolbar { display: flex; align-items: center; gap: 6px; padding: 0 0 8px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-title { font-weight: 600; font-size: 14px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-count { font-weight: 400; color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-spacer { flex: 1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-tool { margin: 0; padding: 2px 9px; border: 1px solid var(--border-strong); border-radius: var(--radius, 6px); background: var(--panel); color: var(--text); font: inherit; font-size: 12px; line-height: 20px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-tool:hover { border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-board { display: flex; align-items: flex-start; gap: 10px; overflow-x: auto; padding-bottom: 6px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane { --kb-lane-c: var(--text-subtle); flex: none; box-sizing: border-box; display: flex; flex-direction: column; max-height: 75vh; border: 1px solid var(--border); border-radius: var(--radius-lg, 10px); background: var(--surface-2); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane.is-drop { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane.is-over .kanban-lane-count { background: var(--err-bg); color: var(--err); }
/* A collapsed lane: a 40px strip in its own place, the button on top, then the dot, count and the title running down. Only the title is set vertically: a vertical head would lay its items out across and spill under the next lane. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane.is-collapsed { width: 40px; min-width: 40px; overflow: hidden; align-items: stretch; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane.is-collapsed .kanban-lane-head { flex-direction: column; align-items: center; padding: 6px 0 10px; gap: 8px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane.is-collapsed .kanban-lane-head:hover { background: var(--surface); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane.is-collapsed .kanban-collapse { order: -1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane.is-collapsed .kanban-lane-title { flex: none; max-height: 50vh; writing-mode: vertical-rl; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane-head { display: flex; align-items: center; gap: 6px; padding: 8px 10px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--kb-lane-c); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane-title { flex: 1; min-width: 0; overflow: hidden; color: var(--text-muted); font-size: 12px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; text-overflow: ellipsis; white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-lane-count { flex: none; padding: 0 6px; border-radius: 999px; background: var(--surface); color: var(--text-muted); font-size: 11px; font-weight: 600; line-height: 18px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-collapse { flex: none; margin: 0; padding: 0 6px; border: 0; border-radius: var(--radius, 6px); background: transparent; color: var(--text-muted); font: inherit; line-height: 20px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-collapse:hover { background: var(--surface); color: var(--text); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-cards { display: flex; flex-direction: column; gap: 6px; min-height: 48px; padding: 0 8px 8px; overflow-y: auto; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-add { flex: none; margin: 0 8px 8px; padding: 4px 8px; border: 1px dashed var(--border-strong); border-radius: var(--radius, 6px); background: transparent; color: var(--text-muted); font: inherit; font-size: 12px; text-align: left; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-add:hover { border-color: var(--accent); color: var(--accent); background: var(--panel); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-add:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-empty { padding: 14px 6px; border: 1px dashed var(--border-strong); border-radius: var(--radius, 6px); color: var(--text-subtle); font-size: 12px; text-align: center; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card { --kb-c: transparent; position: relative; box-sizing: border-box; padding: 8px 10px 8px 12px; border: 1px solid var(--border); border-radius: var(--radius, 6px); background: var(--panel); box-shadow: 0 1px 2px rgba(0, 0, 0, .08); cursor: grab; touch-action: none; user-select: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; border-radius: var(--radius, 6px) 0 0 var(--radius, 6px); background: var(--kb-c); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card:hover { border-color: var(--border-strong); box-shadow: 0 2px 6px rgba(0, 0, 0, .12); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card.is-fixed { cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card.is-selected { border-color: var(--accent); background: var(--accent-soft); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card.is-dragging { opacity: .35; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-ghost { position: fixed; z-index: 1000; margin: 0; pointer-events: none; transform: rotate(2deg); box-shadow: 0 8px 24px rgba(0, 0, 0, .25); cursor: grabbing; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-placeholder { box-sizing: border-box; border: 2px dashed var(--accent); border-radius: var(--radius, 6px); background: var(--accent-soft); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card-key { color: var(--text-muted); font-family: var(--font-mono); font-size: 11px; font-weight: 700; line-height: 15px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card-title { font-size: 13px; line-height: 18px; overflow-wrap: anywhere; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card-details { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card-detail { padding: 0 6px; border-radius: 3px; background: var(--surface-2); color: var(--text-muted); font-size: 11px; line-height: 18px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-card-foot { display: flex; align-items: center; gap: 6px; margin-top: 8px; color: var(--text-muted); font-size: 12px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-avatar { flex: none; display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); font-size: 10px; font-weight: 700; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-assignee { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-message { padding: 18px; color: var(--text-muted); text-align: center; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .kanban-note { margin: 0 0 8px; padding: 6px 10px; border-radius: var(--radius, 6px); background: var(--warn-bg); color: var(--text); font-size: 12px; }

/* Calendar (nocodeobjects.calendar): served for the block type by the core (scoped to it, rules
   relative to the block). Theme tokens only, so light and dark follow the theme; an event's
   colour comes from data through the core's colour check as --cal-c. --cal-hour is one hour of
   the week and day views (ui/calendar.ts HOUR). */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal { --cal-hour: 44px; position: relative; color: var(--text); font-size: 13px; min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal.is-dragging { cursor: grabbing; user-select: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 0 0 8px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-title { font-weight: 600; font-size: 14px; margin-right: 6px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-count { font-weight: 400; color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-views, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-nav { display: inline-flex; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-btn { margin: 0 0 0 -1px; padding: 2px 10px; border: 1px solid var(--border-strong); background: var(--panel); color: var(--text); font: inherit; font-size: 12px; line-height: 20px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-views .cal-btn:first-child, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-nav .cal-btn:first-child { margin-left: 0; border-radius: var(--radius, 6px) 0 0 var(--radius, 6px); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-views .cal-btn:last-child, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-nav .cal-btn:last-child { border-radius: 0 var(--radius, 6px) var(--radius, 6px) 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-btn:hover { position: relative; border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-btn.is-on { position: relative; border-color: var(--accent); background: var(--accent); color: #fff; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-btn:focus-visible, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-tool:focus-visible { position: relative; outline: 2px solid var(--accent); outline-offset: 1px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-range { color: var(--text-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-spacer { flex: 1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-tool { margin: 0; padding: 2px 9px; border: 1px solid var(--border-strong); border-radius: var(--radius, 6px); background: var(--panel); color: var(--text); font: inherit; font-size: 12px; line-height: 20px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-tool:hover { border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-new { border-color: var(--accent); color: var(--accent); font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-col { cursor: default; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal.can-create .cal-day, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal.can-create .cal-col { cursor: copy; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-message { padding: 18px; color: var(--text-muted); text-align: center; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-note { margin: 0 0 8px; padding: 6px 10px; border-radius: var(--radius, 6px); background: var(--warn-bg); color: var(--text); font-size: 12px; }

/* Events: a tinted chip with a colour bar, as the Gantt's bars. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event { --cal-c: var(--accent); position: relative; box-sizing: border-box; display: flex; gap: 4px; min-width: 0; overflow: hidden; border-radius: 4px; background: color-mix(in srgb, var(--cal-c) 16%, var(--panel)); color: color-mix(in srgb, var(--cal-c) 45%, var(--text)); font-size: 12px; line-height: 18px; cursor: grab; touch-action: none; user-select: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event.is-fixed { cursor: pointer; touch-action: auto; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event:hover { background: color-mix(in srgb, var(--cal-c) 26%, var(--panel)); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; z-index: 3; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event.is-selected { box-shadow: 0 0 0 2px var(--accent); z-index: 2; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event.is-dragging { opacity: .7; box-shadow: 0 6px 18px rgba(0, 0, 0, .22); z-index: 5; cursor: grabbing; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-chip { padding: 0 6px 0 8px; white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-chip::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--cal-c); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event.is-allday { background: color-mix(in srgb, var(--cal-c) 30%, var(--panel)); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-chip.is-cont-before { border-top-left-radius: 0; border-bottom-left-radius: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-chip.is-cont-before::before { display: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-chip.is-cont-after { border-top-right-radius: 0; border-bottom-right-radius: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event-time { flex: none; color: var(--text-muted); font-variant-numeric: tabular-nums; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; font-weight: 500; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-event-detail { color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Month */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-month { border: 1px solid var(--border); border-radius: var(--radius-lg, 10px); overflow: hidden; background: var(--panel); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-weekdays, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-weekrow { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-weekday { padding: 6px 8px; border-bottom: 1px solid var(--border); background: var(--surface-2); color: var(--text-muted); font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day { box-sizing: border-box; display: flex; flex-direction: column; gap: 2px; min-height: 104px; min-width: 0; padding: 4px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-weekrow .cal-day:last-child { border-right: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-weekrow:last-child .cal-day { border-bottom: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day.is-other { background: var(--surface-2); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day.is-other .cal-daynum { color: var(--text-subtle); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day.is-selected { background: var(--accent-soft); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day.is-drop, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-allday-cell.is-drop { box-shadow: 0 0 0 2px var(--accent) inset; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day:focus-visible, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-allday-cell:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-daynum { align-self: flex-start; min-width: 24px; margin: 0; padding: 0 5px; border: 0; border-radius: 999px; background: transparent; color: var(--text); font: inherit; font-size: 12px; font-weight: 600; line-height: 22px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-daynum:hover { background: var(--surface); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day.is-today .cal-daynum { background: var(--accent); color: #fff; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-day-events { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-more { align-self: flex-start; margin: 0; padding: 0 6px; border: 0; border-radius: 4px; background: transparent; color: var(--text-muted); font: inherit; font-size: 11px; font-weight: 600; line-height: 18px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-more:hover { background: var(--surface); color: var(--text); }

/* Week and day: the day heads, the all-day row, then the hours. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-time { --cal-days: 7; border: 1px solid var(--border); border-radius: var(--radius-lg, 10px); overflow: hidden; background: var(--panel); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-time-head, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-allday, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-grid { display: grid; grid-template-columns: 52px repeat(var(--cal-days), minmax(0, 1fr)); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-time-head { border-bottom: 1px solid var(--border); background: var(--surface-2); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-colhead { min-width: 0; border-left: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-colhead-btn { display: flex; align-items: baseline; justify-content: center; gap: 6px; width: 100%; margin: 0; padding: 6px 4px; border: 0; background: transparent; color: var(--text-muted); font: inherit; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-colhead-btn:hover { color: var(--text); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-colhead-weekday { font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-colhead-date { color: var(--text); font-size: 16px; font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-colhead.is-today .cal-colhead-date { color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-corner { min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-allday { border-bottom: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-allday-label { padding: 4px 6px; color: var(--text-subtle); font-size: 11px; text-align: right; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-allday-cell { box-sizing: border-box; display: flex; flex-direction: column; gap: 2px; min-width: 0; min-height: 26px; padding: 2px; border-left: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-allday-cell.is-selected { background: var(--accent-soft); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-scroll { position: relative; max-height: 600px; overflow-y: auto; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-grid { position: relative; height: calc(24 * var(--cal-hour)); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-hours { position: relative; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-hour { position: absolute; right: 6px; transform: translateY(-50%); color: var(--text-subtle); font-size: 11px; font-variant-numeric: tabular-nums; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-col { position: relative; min-width: 0; border-left: 1px solid var(--border); background-image: repeating-linear-gradient(to bottom, transparent 0 calc(var(--cal-hour) - 1px), var(--border) calc(var(--cal-hour) - 1px) var(--cal-hour)); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-col.is-today { background-color: color-mix(in srgb, var(--accent) 5%, transparent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block { position: absolute; flex-direction: column; gap: 0; margin-left: 2px; padding: 2px 6px 2px 8px; border-left: 3px solid var(--cal-c); line-height: 16px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block > * { flex: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block .cal-event-title, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block .cal-event-time, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block .cal-event-detail { white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block.is-short { flex-direction: row; align-items: center; gap: 6px; padding-top: 0; padding-bottom: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block.is-short > .cal-event-title { flex: 0 0 auto; max-width: 100%; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block.is-short > .cal-event-time { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block.is-short > .cal-event-detail { display: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block .cal-event-time, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-block .cal-event-detail { font-size: 11px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-resize { position: absolute; inset: auto 0 0 0; height: 7px; cursor: ns-resize; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-resize:hover { background: color-mix(in srgb, var(--cal-c) 40%, transparent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-resize.is-days { inset: 0 0 0 auto; width: 7px; height: auto; cursor: ew-resize; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-now { position: absolute; left: 0; right: 0; z-index: 4; height: 2px; background: var(--err); pointer-events: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-now::before { content: ""; position: absolute; left: -4px; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--err); }

/* Agenda (and month and week on a narrow block) */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: var(--radius-lg, 10px); overflow: hidden; background: var(--panel); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-day { display: grid; grid-template-columns: 120px minmax(0, 1fr); border-bottom: 1px solid var(--border); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-day:last-child { border-bottom: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-date { padding: 8px 10px; color: var(--text-muted); font-size: 12px; font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-day.is-today .cal-agenda-date { color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-events { display: flex; flex-direction: column; min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-event { --cal-c: var(--accent); display: grid; grid-template-columns: 110px 10px minmax(0, 1fr); align-items: center; column-gap: 8px; padding: 7px 10px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-event:hover { background: var(--surface-2); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-event:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-event.is-selected { background: var(--accent-soft); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-time { color: var(--text-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--cal-c); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-agenda-details { grid-column: 3; color: var(--text-muted); font-size: 12px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal-empty { padding: 18px; color: var(--text-muted); text-align: center; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal.is-narrow .cal-agenda-day { grid-template-columns: minmax(0, 1fr); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal.is-narrow .cal-agenda-date { padding-bottom: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal.is-narrow .cal-agenda-event { grid-template-columns: 84px 10px minmax(0, 1fr); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .cal.is-narrow .cal-range { flex-basis: 100%; }

/* Expected rows (nocodeobjects.expected): served for the block type by the core (scoped to it,
   rules relative to the block). Theme tokens only, so light and dark follow the theme. An empty
   slot is muted with a dashed edge; a row matching no item is marked, not hidden. */
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp { position: relative; color: var(--text); font-size: 13px; min-width: 0; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 0 0 8px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-title { font-weight: 600; font-size: 14px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-summary { padding: 1px 8px; border-radius: 999px; background: var(--ok-bg); color: var(--ok); font-size: 12px; font-weight: 500; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-summary.is-short { background: var(--warn-bg); color: var(--warn); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-spacer { flex: 1; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-toggle { display: inline-flex; align-items: center; gap: 4px; color: var(--text-muted); font-size: 12px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tool { margin: 0; padding: 2px 9px; border: 1px solid var(--border-strong); border-radius: var(--radius, 6px); background: var(--panel); color: var(--text); font: inherit; font-size: 12px; line-height: 20px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tool:hover { border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-scroll { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius-lg, 10px); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-table { width: 100%; border-collapse: collapse; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-th { padding: 7px 10px; border-bottom: 1px solid var(--border); background: var(--surface-2); color: var(--text-muted); font-size: 12px; font-weight: 600; text-align: left; white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-th-actions { width: 1%; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-row > td { padding: 6px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-row:last-child > td { border-bottom: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-item { font-weight: 500; vertical-align: top; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-item-label { overflow-wrap: anywhere; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-item-cell { color: var(--text-muted); vertical-align: top; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-row.is-missing > td { background: var(--surface-2); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-row.is-missing > td.exp-cell:not(.exp-item-cell):not(.is-editable)::after { content: "—"; color: var(--text-subtle); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-row.is-missing .exp-item-label { color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-row.is-missing > td.exp-item { box-shadow: inset 3px 0 0 var(--warn); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-row.is-unexpected > td { background: var(--warn-bg); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tag { display: inline-block; padding: 0 6px; border-radius: var(--radius, 6px); background: var(--warn-bg); color: var(--warn); font-size: 11px; font-weight: 500; white-space: nowrap; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tag.is-missing { background: var(--surface); border: 1px solid var(--border); color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-cell { min-width: 120px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-cell.is-editable { padding: 3px 6px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-input { box-sizing: border-box; width: 100%; min-width: 0; padding: 3px 6px; border: 1px solid var(--border); border-radius: var(--radius, 6px); background: var(--panel); color: var(--text); font: inherit; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-input:focus { outline: none; border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-input[type="checkbox"] { width: auto; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick { position: relative; display: block; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-btn { box-sizing: border-box; width: 100%; padding: 3px 6px; border: 1px solid transparent; border-radius: var(--radius, 6px); background: transparent; color: var(--text); font: inherit; text-align: left; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-btn:hover, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-btn:focus { border-color: var(--border-strong); outline: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-btn.is-empty { border-color: var(--border); border-style: dashed; color: var(--text-subtle); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-menu { position: fixed; z-index: 1050; min-width: 220px; padding: 6px; border: 1px solid var(--border-strong); border-radius: var(--radius, 6px); background: var(--panel); box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-list { display: flex; flex-direction: column; max-height: 240px; overflow-y: auto; margin-top: 4px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-opt { padding: 4px 8px; border: none; border-radius: var(--radius, 6px); background: transparent; color: var(--text); font: inherit; text-align: left; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-opt:hover, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-opt:focus { background: var(--surface-2); outline: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-opt.is-on { font-weight: 600; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-opt.is-clear { color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-pick-none { padding: 4px 8px; color: var(--text-muted); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-actions { white-space: nowrap; text-align: right; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn { margin: 0 0 0 4px; padding: 1px 8px; border: 1px solid var(--border-strong); border-radius: var(--radius, 6px); background: var(--panel); color: var(--text); font: inherit; font-size: 12px; cursor: pointer; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn:hover { border-color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tool { display: inline-flex; align-items: center; gap: 4px; vertical-align: middle; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn-icon { flex: none; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn.is-icon, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tool.is-icon { padding-left: 5px; padding-right: 5px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn.is-primary, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tool.is-primary { border-color: var(--accent); background: var(--accent); color: var(--accent-text, #fff); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn.is-danger, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tool.is-danger { border-color: var(--err); color: var(--err); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-btn.is-link, :is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-tool.is-link { border-color: transparent; background: none; color: var(--accent); }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-create { display: inline-flex; align-items: center; gap: 6px; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-new { font-weight: 500; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-empty { padding: 14px; color: var(--text-muted); text-align: center; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-message { padding: 18px; color: var(--text-muted); text-align: center; }
:is(.fx-o-nocodeobjects-pill, .fx-o-nocodeobjects-duration, .fx-b-nocodeobjects-gantt, .fx-b-nocodeobjects-kanban, .fx-b-nocodeobjects-calendar, .fx-b-nocodeobjects-expected) .exp-note { margin: 0 0 8px; padding: 6px 10px; border-radius: var(--radius, 6px); background: var(--warn-bg); color: var(--text); font-size: 12px; }

/* 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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");
}

