/* BioStudio AI — BioStudioAI Mono theme (theme-bs3).
   Ultra-minimal editorial light: warm paper, near-black ink, hairline rules,
   zero gradients, zero glow. Typography does the work. Structure comes from
   css/bsx-shell.css (token-driven); this file sets the Mono tokens, chrome,
   nested-app remaps, and editorial flourishes. Dashboard: js/core/bsx-dashboard.js
   with layout="editorial". Scoped under .theme-bs3 / .wp-bs3 / .bs3-* so
   other themes are untouched. */

/* ====================================================================== */
/* Design tokens                                                          */
/* ====================================================================== */
body.theme-bs3,
#os.theme-bs3 {
  /* Mono pack — consumed by the default White app-color palette via
     var(--mono-*, fallback) in js/platform/app-color-theme.js, and by
     nested apps that redeclare --pr-* / --ps-* / --st-* on their roots. */
  --mono-bg: #fafaf9;
  --mono-surface: #ffffff;
  --mono-surface-2: #f5f5f4;
  --mono-surface-3: #ececea;
  --mono-ink: #171717;
  --mono-ink-soft: #8c8c88;
  --mono-faint: #a8a29e;
  --mono-line: #e7e5e4;
  --mono-accent: #171717;
  --mono-accent-soft: rgba(23, 23, 23, 0.06);
  --mono-accent-ink: #ffffff;
  --mono-primary: #171717;
  --mono-primary-strong: #0a0a0a;
  --mono-primary-soft: rgba(23, 23, 23, 0.08);
  --mono-control-bg: #ffffff;
  --mono-control-line: #dcdad7;
  --mono-glass: #ffffff;
  --mono-shadow: none;
  --mono-shadow-lg: 0 16px 40px rgba(23, 23, 23, 0.1);
  --mono-scrim: rgba(23, 23, 23, 0.42);
  --mono-hover: rgba(23, 23, 23, 0.05);
  --mono-plot-grid: #e7e5e4;
  --mono-win-border: rgba(23, 23, 23, 0.14);
  --mono-tech: #404040;
  --mono-tech-2: #57534e;
  --mono-tech-3: #78716c;

  /* bsx shell tokens */
  --bsx-bg: var(--mono-bg);
  --bsx-surface: var(--mono-surface);
  --bsx-surface-2: var(--mono-surface-2);
  --bsx-border: var(--mono-line);
  --bsx-accent: var(--mono-accent);
  --bsx-accent-strong: var(--mono-accent);
  --bsx-accent-ink: var(--mono-accent-ink);
  --bsx-accent-soft: var(--mono-accent-soft);
  --bsx-radius: 6px;
  --bsx-radius-lg: 10px;
  --bsx-shadow: none;
  --bsx-shadow-lg: var(--mono-shadow-lg);
  --bsx-blur: none;

  /* system tokens consumed by window.css / apps.css / flyouts.css */
  --ink: var(--mono-ink);
  --ink-soft: var(--mono-ink-soft);
  --radius: 8px;
  --taskbar-h: 70px;
  --taskbar-clearance: calc(var(--taskbar-h) + 10px);
  /* applyTheme() writes theme.accent as an inline --accent on #os/body.
     Follow --mono-accent (including dark invert). Per-window color-picker
     rules still win because they set --accent on .window, not here. */
  --accent: var(--mono-accent) !important;
  --accent-soft: var(--mono-accent-soft);
  --accent-ink: var(--mono-accent-ink);

  --win-bg: var(--mono-surface);
  --win-body-bg: var(--mono-surface);
  --win-border: var(--mono-line);
  --win-border-focus: var(--mono-accent);
  --win-shadow: 0 2px 8px rgba(23, 23, 23, 0.05);
  --win-shadow-focus: var(--mono-shadow-lg), 0 0 0 1px var(--mono-accent);
  --win-hover-bg: var(--mono-hover);
  --titlebar-bg: #fcfcfb;
  --flyout-bg: var(--mono-surface);
  --flyout-border: var(--mono-line);
  --tile-bg: var(--mono-surface-2);
  --tile-hover: var(--mono-surface-3);
  --input-bg: var(--mono-control-bg);
  --input-border: var(--mono-control-line);

  --taskbar-bg: rgba(255, 255, 255, 0.94);
  --taskbar-border: var(--mono-line);
  --tb-hover: var(--mono-hover);
  --tb-active: rgba(23, 23, 23, 0.08);
  --app-btn-hover: var(--mono-accent-soft);

  --surface: var(--mono-surface);
  --surface-2: var(--mono-surface-2);
  --surface-3: var(--mono-surface-3);
  --text: var(--mono-ink);
  --muted: var(--mono-ink-soft);
  --faint: var(--mono-faint);
  --border: var(--mono-line);
  --line: var(--mono-line);
  --primary: var(--mono-primary);
  --primary-strong: var(--mono-primary-strong);
  --primary-soft: var(--mono-primary-soft);
  --on-primary: var(--mono-accent-ink);
  --app-bar: var(--mono-surface-2);
  --app-line: var(--mono-line);
  --app-btn: var(--mono-surface);
  --app-input: var(--mono-control-bg);
  --app-bg: var(--mono-bg);
  --menu-bg: var(--mono-surface);
  --menu-border: var(--mono-line);
  --menu-hover: var(--mono-accent-soft);

  /* nested app namespaces — inherit unless an app redeclares on its root */
  --pr-bg: var(--mono-bg);
  --pr-surface: var(--mono-surface);
  --pr-nav-bg: var(--mono-surface-2);
  --pr-line: var(--mono-line);
  --pr-ink: var(--mono-ink);
  --pr-ink-soft: var(--mono-ink-soft);
  --pr-hover: var(--mono-surface-3);
  --pr-active: var(--mono-primary-soft);
  --pr-blue: var(--mono-accent);
  --pr-blue-dk: var(--mono-primary);
  --pr-teal: var(--mono-tech);
  --pr-shadow: var(--mono-shadow);
  --st-bg: var(--mono-bg);
  --st-panel: var(--mono-surface);
  --st-line: var(--mono-line);
  --st-line-soft: var(--mono-accent-soft);
  --st-ink: var(--mono-ink);
  --st-ink-soft: var(--mono-ink-soft);
  --st-accent: var(--mono-accent);
  --st-ai: var(--mono-tech);
  --st-info: var(--mono-accent);
  --ps-ink: var(--mono-ink);
  --ps-muted: var(--mono-ink-soft);
  --ps-line: var(--mono-line);
  --ps-panel: var(--mono-surface);
  --ps-soft: var(--mono-bg);
  --ps-blue: var(--mono-accent);
  --ps-teal: var(--mono-tech);
  --ps-navy: var(--mono-primary);
  --eln-canvas: var(--mono-bg);
  --eln-surface: var(--mono-surface);
  --eln-surface-subtle: var(--mono-surface-2);
  --eln-line: var(--mono-line);
  --eln-line-strong: var(--mono-control-line);
  --eln-text: var(--mono-ink);
  --eln-muted: var(--mono-ink-soft);
  --eln-faint: var(--mono-faint);
  --eln-blue: var(--mono-accent);
  --eln-blue-dark: var(--mono-primary);
  --eln-blue-soft: var(--mono-accent-soft);
  --cl-bg: var(--mono-bg);
  --cl-panel: var(--mono-surface);
  --cl-panel-2: var(--mono-surface-2);
  --cl-line: var(--mono-line);
  --cl-accent: var(--mono-accent);
  --cl-ink: var(--mono-ink);
  --cl-soft: var(--mono-ink-soft);
  --ad-navy: var(--mono-accent);
  --ad-navy-deep: var(--mono-primary);
  --ad-navy-soft: var(--mono-accent-soft);
  --ad-surface: var(--mono-bg);
  --im-blue: var(--mono-accent);
  --im-blue-dk: var(--mono-primary);
  --path-purple: var(--mono-accent);
  --pcr-teal: var(--mono-accent);
  --pcr-navy: var(--mono-ink);
  --pcr-cyan: var(--mono-tech);
  --pcr-violet: var(--mono-tech-2);
  --hs-surface: var(--mono-surface);
  --hs-text: var(--mono-ink);
  --hs-border: var(--mono-line);
  --office-rb-accent: var(--mono-primary);
  --office-rb-accent-dark: var(--mono-primary-strong);
  --wh-page: var(--mono-bg);
  --wh-chrome: var(--mono-surface-2);
  --wh-surface: var(--mono-surface);
  --pm-accent: var(--mono-primary);
  --pm-ink: var(--mono-ink);
  --su-accent: var(--mono-primary);
  --ctx-accent: var(--mono-accent);
  --ctx-accent-soft: var(--mono-accent-soft);

  color: var(--ink);
  letter-spacing: -0.011em;
  color-scheme: light;
}

/* Inverted grayscale when the appearance toggle is on. */
#os.theme-bs3.dark,
body.theme-bs3.dark,
body.dark.theme-bs3 {
  --mono-bg: #121212;
  --mono-surface: #1a1a1a;
  --mono-surface-2: #222222;
  --mono-surface-3: #2a2a2a;
  --mono-ink: #f5f5f4;
  --mono-ink-soft: #a8a29e;
  --mono-faint: #78716c;
  --mono-line: #2e2e2e;
  --mono-accent: #f5f5f4;
  --mono-accent-soft: rgba(245, 245, 244, 0.08);
  --mono-accent-ink: #171717;
  --mono-primary: #f5f5f4;
  --mono-primary-strong: #ffffff;
  --mono-primary-soft: rgba(245, 245, 244, 0.1);
  --mono-control-bg: #161616;
  --mono-control-line: #3f3f3f;
  --mono-glass: #1a1a1a;
  --mono-shadow-lg: 0 18px 48px rgba(0, 0, 0, 0.55);
  --mono-scrim: rgba(0, 0, 0, 0.62);
  --mono-hover: rgba(245, 245, 244, 0.06);
  --mono-plot-grid: #2e2e2e;
  --mono-win-border: rgba(245, 245, 244, 0.14);
  --mono-tech: #d6d3d1;
  --mono-tech-2: #a8a29e;
  --mono-tech-3: #78716c;

  --titlebar-bg: #181818;
  --taskbar-bg: rgba(18, 18, 18, 0.94);
  --win-shadow: 0 2px 10px rgba(0, 0, 0, 0.45);
  color-scheme: dark;
}

/* wallpaper — flat paper, nothing else */
#os.wp-bs3 {
  background: #fafaf9;
}
#os.wp-bs3.dark {
  background: #121212;
}

/* ====================================================================== */
/* Editorial dashboard flourishes                                         */
/* ====================================================================== */
.bs3-home .bsx-greeting h1 {
  font-size: clamp(32px, 4vw, 52px);
  font-weight: 350;
  letter-spacing: -0.045em;
}
.bs3-home .bsx-nav-link {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.09em;
}
.bs3-home .bsx-nav-link.active {
  background: none;
  border-radius: 0;
  box-shadow: inset 0 -2px 0 var(--mono-accent, #171717);
  color: var(--mono-ink, #171717);
}
.bs3-home .bsx-app { box-shadow: none; }
.bs3-home .bsx-app:hover { transform: none; background: var(--bsx-accent-soft); }
.bs3-home .bsx-cmd {
  border: none;
  border-bottom: 1px solid var(--bsx-border);
  border-radius: 0;
  background: none;
  padding: 12px 2px;
  box-shadow: none;
}
.bs3-home .bsx-cmd:hover,
.bs3-home .bsx-cmd:focus-within { border-bottom-color: var(--mono-accent, #171717); }
.bs3-home .bsc-keys kbd { border-radius: 4px; }
.bs3-home[data-layout="editorial"] .bsx-proj {
  border: none;
  border-bottom: 1px solid var(--bsx-border);
  border-radius: 0;
  background: none;
  box-shadow: none;
  padding: 15px 2px;
}
.bs3-home[data-layout="editorial"] .bsx-proj:first-child { border-top: 1px solid var(--bsx-border); }
.bs3-home[data-layout="editorial"] .bsx-proj:hover { background: var(--bsx-accent-soft); }
.bs3-home .bsx-proj-mark { width: 7px; height: 7px; }
.bs3-home .bsx-proj-new { border-bottom-style: dashed; }
.bs3-home .bsw-widget {
  border: none;
  border-bottom: 1px solid var(--bsx-border);
  border-radius: 0;
  background: none;
  box-shadow: none;
  padding: 0 0 16px;
}
.bs3-home .bsw-widget.editing {
  border: 1px dashed #b9b7b3;
  border-radius: 10px;
  padding: 12px;
}
.bs3-home .bsw-clock-time { font-weight: 300; font-size: 38px; }

/* ====================================================================== */
/* Window chrome — flat paper, hairline, black focus ring                 */
/* ====================================================================== */
#os.theme-bs3 .window {
  border-radius: var(--bsx-radius-lg);
  border: 1px solid var(--bsx-border);
  box-shadow: var(--win-shadow);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
#os.theme-bs3 .window.focused {
  box-shadow: var(--win-shadow-focus);
  border-color: var(--mono-accent);
}
#os.theme-bs3 .window.maximized { border-radius: 0; }
#os.theme-bs3 .window-titlebar {
  border-bottom: 1px solid var(--bsx-border);
  background: var(--titlebar-bg);
}
#os.theme-bs3 .window-title-text {
  font-weight: 500;
  letter-spacing: -0.02em;
}
#os.theme-bs3 .win-btn { border-radius: 4px; }
#os.theme-bs3 .win-btn:hover { background: var(--bsx-accent-soft); }
#os.theme-bs3 .win-btn.close:hover { background: #ef4444; color: #fff; }
#os.theme-bs3 .window.drop-target { outline-color: var(--mono-accent); }
#os.theme-bs3 .window.drop-target::after { background: var(--mono-accent); color: var(--mono-accent-ink); }

/* taskbar dock — white hairline pill */
#os.theme-bs3 .taskbar.bs-dock {
  box-shadow: 0 10px 30px rgba(23, 23, 23, 0.09);
  border-radius: 14px;
}
#os.theme-bs3 .taskbar.bs-dock .taskbar-start {
  background: var(--mono-accent);
  box-shadow: none;
}
#os.theme-bs3 .tb-style-toggle {
  border-radius: 999px;
  letter-spacing: 0.04em;
}

/* ====================================================================== */
/* Menus, flyouts, dialogs, search, toasts                                */
/* ====================================================================== */
#os.theme-bs3 .start-menu,
#os.theme-bs3 .flyout {
  border-radius: var(--bsx-radius-lg);
  border: 1px solid var(--bsx-border);
  background: var(--flyout-bg);
  box-shadow: var(--mono-shadow-lg);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
#os.theme-bs3 .start-section-title {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
#os.theme-bs3 .start-searchbar {
  border-radius: 0;
  border: none;
  border-bottom: 1px solid var(--bsx-border);
  background: transparent;
}
#os.theme-bs3 .start-searchbar:focus-within {
  border-bottom-color: var(--mono-accent);
  box-shadow: none;
}
#os.theme-bs3 .start-footer {
  background: var(--mono-surface-2);
  border-top: 1px solid var(--bsx-border);
}
#os.theme-bs3 .qs-tile { border-radius: 8px; }
#os.theme-bs3 .qs-tile.on,
#os.theme-bs3 .cal-cell.today {
  background: var(--mono-accent);
  color: var(--mono-accent-ink);
}

body.theme-bs3 .ctx-menu,
body.theme-bs3 .tb-preview-popover,
body.theme-bs3 .snap-flyout {
  --menu-bg: var(--mono-surface);
  --menu-border: var(--mono-line);
  --menu-hover: var(--mono-accent-soft);
  color: var(--mono-ink);
  border-radius: 8px;
  box-shadow: var(--mono-shadow-lg);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
body.theme-bs3 .ctx-item { border-radius: 4px; }
body.theme-bs3 .ctx-check { color: var(--mono-accent); }

body.theme-bs3 .platform-dialog {
  border-radius: 10px;
  border: 1px solid var(--bsx-border);
  background: var(--mono-surface);
  color: var(--mono-ink);
  box-shadow: var(--mono-shadow-lg);
}
body.theme-bs3 .platform-dialog-overlay { background: var(--mono-scrim); }

body.theme-bs3 .bs-search-overlay { background: var(--mono-scrim); backdrop-filter: none; }
body.theme-bs3 .bs-search-box {
  background: var(--mono-surface);
  color: var(--mono-ink);
  border: 1px solid var(--mono-line);
  border-radius: 10px;
  box-shadow: var(--mono-shadow-lg);
  backdrop-filter: none;
}
body.theme-bs3 .bs-search-mag { color: var(--mono-accent); opacity: 1; }
body.theme-bs3 .bs-search-row { border-radius: 6px; }

#os.theme-bs3 .toast-layer { bottom: calc(var(--taskbar-h) + 16px); }
#os.theme-bs3 .toast {
  border-radius: 8px;
  background: var(--mono-surface);
  border: 1px solid var(--mono-line);
  box-shadow: var(--mono-shadow-lg);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
#os.theme-bs3 .toast.sticky,
#os.theme-bs3 .toast.chat { border-left: 2px solid var(--mono-accent); }

#os.theme-bs3 .tv-scrim { background: var(--mono-scrim); backdrop-filter: none; }
#os.theme-bs3 .tv-window {
  border-radius: 10px;
  border: 1px solid var(--bsx-border);
  background: var(--mono-surface);
}
#os.theme-bs3 .tv-window:hover,
#os.theme-bs3 .tv-desktop.active { border-color: var(--mono-accent); }

/* ====================================================================== */
/* Buttons, inputs, tabs, toolbars, scrollbars                            */
/* ====================================================================== */
#os.theme-bs3 .btn,
body.theme-bs3 .btn {
  border-radius: 6px;
  border: 1px solid var(--input-border);
  background: var(--mono-surface);
  color: var(--mono-ink);
  font-weight: 550;
  letter-spacing: -0.01em;
}
#os.theme-bs3 .btn:hover,
body.theme-bs3 .btn:hover { background: var(--mono-surface-2); }
#os.theme-bs3 .btn.primary,
body.theme-bs3 .btn.primary {
  background: var(--mono-accent);
  border-color: transparent;
  color: var(--mono-accent-ink);
}

#os.theme-bs3 .field,
#os.theme-bs3 input[type="text"],
#os.theme-bs3 input[type="search"],
#os.theme-bs3 input[type="number"],
#os.theme-bs3 input[type="email"],
#os.theme-bs3 input[type="password"],
#os.theme-bs3 textarea,
#os.theme-bs3 select,
#os.theme-bs3 .bs-select {
  border-radius: 6px;
  background: var(--input-bg);
  border-color: var(--input-border);
  color: var(--ink);
}
#os.theme-bs3 input,
#os.theme-bs3 textarea,
#os.theme-bs3 select { color-scheme: light; }
#os.theme-bs3.dark input,
#os.theme-bs3.dark textarea,
#os.theme-bs3.dark select { color-scheme: dark; }

#os.theme-bs3 .app-toolbar,
#os.theme-bs3 .files-toolbar,
#os.theme-bs3 .app-statusbar {
  background: var(--app-bar);
  border-color: var(--app-line);
}
#os.theme-bs3 .st-toolbar,
#os.theme-bs3 .st-sidebar,
#os.theme-bs3 .st-inspector,
#os.theme-bs3 .st-ai {
  background: var(--st-panel);
  border-color: var(--st-line);
}

#os.theme-bs3 :focus-visible,
body.theme-bs3 :focus-visible {
  outline: 2px solid var(--mono-accent);
  outline-offset: 2px;
}
#os.theme-bs3 input:focus-visible,
#os.theme-bs3 textarea:focus-visible,
#os.theme-bs3 select:focus-visible {
  outline: none;
  border-color: var(--mono-accent);
  box-shadow: 0 0 0 1px var(--mono-accent);
}

#os.theme-bs3 ::-webkit-scrollbar { width: 10px; height: 10px; }
#os.theme-bs3 ::-webkit-scrollbar-thumb {
  background: #c4c0ba;
  border: 2px solid transparent;
  border-radius: 8px;
  background-clip: padding-box;
}
#os.theme-bs3.dark ::-webkit-scrollbar-thumb { background: #3f3f3f; background-clip: padding-box; }
#os.theme-bs3 { scrollbar-color: #c4c0ba transparent; }

/* ====================================================================== */
/* Nested apps — beat local token redeclares (not the color-theme picker) */
/* ====================================================================== */
#os.theme-bs3 .studio,
#os.theme-bs3 .graph-studio-app,
#os.theme-bs3 .graph-studio-root,
#os.theme-bs3 .lims-studio-app,
#os.theme-bs3 .lims-gs-app,
#os.theme-bs3 .scs-studio-root,
#os.theme-bs3 .sc-gs-app,
#os.theme-bs3 .spatial-studio-app,
#os.theme-bs3 .sp-gs-app,
#os.theme-bs3 .seahorse-studio-root,
#os.theme-bs3 .sh-gs-app,
#os.theme-bs3 .ms-studio-root,
#os.theme-bs3 .ms-gs-app,
#os.theme-bs3 .tox-studio-app,
#os.theme-bs3 .tox-gs-app,
#os.theme-bs3 .qms-lite-app,
#os.theme-bs3 .qms-gs-app,
#os.theme-bs3 .ss-studio-root,
#os.theme-bs3 .pkpd-studio-root,
#os.theme-bs3 .pkpd-app,
#os.theme-bs3 .compound-studio-app,
#os.theme-bs3 .pathology-studio-app,
#os.theme-bs3 .path-root,
#os.theme-bs3 .design-studio-root,
#os.theme-bs3 .ds-app,
#os.theme-bs3 .im-gs-app,
#os.theme-bs3 .pcr-studio-app,
#os.theme-bs3 .plasmid-studio-root,
#os.theme-bs3 .ps-app,
#os.theme-bs3 .eln-studio-root,
#os.theme-bs3 .clib,
#os.theme-bs3 .ad,
#os.theme-bs3 .las-runner-root,
#os.theme-bs3 .las-root,
#os.theme-bs3 .method-validation-root,
#os.theme-bs3 .omics-studio-app,
#os.theme-bs3 .molecular-design-root,
#os.theme-bs3 .mds-app {
  --pr-bg: var(--mono-bg);
  --pr-surface: var(--mono-surface);
  --pr-nav-bg: var(--mono-surface-2);
  --pr-line: var(--mono-line);
  --pr-ink: var(--mono-ink);
  --pr-ink-soft: var(--mono-ink-soft);
  --pr-hover: var(--mono-surface-3);
  --pr-active: var(--mono-primary-soft);
  --pr-blue: var(--mono-accent);
  --pr-blue-dk: var(--mono-primary);
  --pr-teal: var(--mono-tech);
  --st-bg: var(--mono-bg);
  --st-panel: var(--mono-surface);
  --st-line: var(--mono-line);
  --st-ink: var(--mono-ink);
  --st-ink-soft: var(--mono-ink-soft);
  --st-accent: var(--mono-accent);
  --st-ai: var(--mono-tech);
  --st-info: var(--mono-accent);
}

#os.theme-bs3 .las-src-line.is-on {
  background: var(--mono-accent);
  color: var(--mono-accent-ink);
}
#os.theme-bs3 .las-src-line:hover { background: var(--mono-accent-soft); }

#os.theme-bs3 .plasmid-studio-root,
#os.theme-bs3 .ps-app {
  --ps-ink: var(--mono-ink);
  --ps-muted: var(--mono-ink-soft);
  --ps-line: var(--mono-line);
  --ps-panel: var(--mono-surface);
  --ps-soft: var(--mono-bg);
  --ps-blue: var(--mono-accent);
  --ps-teal: var(--mono-tech);
  --ps-navy: var(--mono-primary);
}
#os.theme-bs3 .eln-studio-root {
  --eln-canvas: var(--mono-bg);
  --eln-surface: var(--mono-surface);
  --eln-blue: var(--mono-accent);
  --eln-blue-dark: var(--mono-primary);
  --eln-blue-soft: var(--mono-accent-soft);
  --eln-text: var(--mono-ink);
  --eln-muted: var(--mono-ink-soft);
  --eln-line: var(--mono-line);
}
#os.theme-bs3 .clib {
  --cl-bg: var(--mono-bg);
  --cl-panel: var(--mono-surface);
  --cl-accent: var(--mono-accent);
  --cl-ink: var(--mono-ink);
  --cl-soft: var(--mono-ink-soft);
  --cl-line: var(--mono-line);
}
#os.theme-bs3 .clib-header {
  background: var(--mono-accent);
  color: var(--mono-accent-ink);
}
#os.theme-bs3 .ad {
  --ad-navy: var(--mono-accent);
  --ad-navy-deep: var(--mono-primary);
  --ad-navy-soft: var(--mono-accent-soft);
  --ad-surface: var(--mono-bg);
}
#os.theme-bs3 .ad-formpane,
#os.theme-bs3 .ad-previewpane { background: var(--mono-bg); }
#os.theme-bs3 .ad-section {
  background: var(--mono-surface);
  border-color: var(--mono-line);
  box-shadow: none;
}
#os.theme-bs3 .im-gs-app {
  --im-blue: var(--mono-accent);
  --im-blue-dk: var(--mono-primary);
}
#os.theme-bs3 .pathology-studio-app,
#os.theme-bs3 .path-root { --path-purple: var(--mono-accent); }
#os.theme-bs3 .pcr-studio-app {
  --pcr-teal: var(--mono-accent);
  --pcr-navy: var(--mono-ink);
  --pcr-cyan: var(--mono-tech);
  --pcr-violet: var(--mono-tech-2);
}

/* ribbons that paint a blue gradient from --pr-blue stay readable as ink bars */
#os.theme-bs3 .graph-studio-toolbar-wrap,
#os.theme-bs3 .graph-studio-ribbon-strip,
#os.theme-bs3 .im-gs-app .im-gs-ribbon,
#os.theme-bs3 .graph-studio-org-run,
#os.theme-bs3 .graph-studio-org-run.secondary {
  color: var(--mono-accent-ink);
  background: var(--mono-accent);
  background-image: none;
  box-shadow: none;
}
#os.theme-bs3 .graph-studio-ribbon-aitoggle {
  background: transparent;
  background-image: none;
  color: var(--mono-accent-ink);
  border-color: color-mix(in srgb, var(--mono-accent-ink) 38%, transparent);
  box-shadow: none;
}
#os.theme-bs3 .graph-studio-ribbon-aitoggle.on {
  background: var(--mono-accent-ink);
  color: var(--mono-accent);
}
#os.theme-bs3 .graph-studio-ribbon-mark {
  color: color-mix(in srgb, var(--mono-accent-ink) 72%, transparent);
}
#os.theme-bs3 .graph-studio-ai-fab,
#os.theme-bs3 .os-ai-fab,
#os.theme-bs3 .os-ai-fab-float,
#os.theme-bs3 .os-ai-fab-chrome {
  background: var(--mono-accent);
  background-image: none;
  color: var(--mono-accent-ink);
  box-shadow: none;
}
#os.theme-bs3 .os-ai-fab-chrome:hover,
#os.theme-bs3 .os-ai-fab-float:hover,
#os.theme-bs3 .graph-studio-ai-fab:hover {
  box-shadow: none;
  transform: none;
}
#os.theme-bs3 .graph-studio-ai-dot,
#os.theme-bs3 .graph-studio-ai .ai-usage-dot {
  box-shadow: none;
}
#os.theme-bs3 .graph-studio-org-progress-fill {
  background: var(--mono-accent);
  background-image: none;
}

/* OS support chat FAB is a hardcoded sky-blue gradient — flatten to ink. */
#os.theme-bs3 .ops-support-fab,
body.theme-bs3 .ops-support-fab {
  background: var(--mono-accent);
  background-image: none;
  color: var(--mono-accent-ink);
  box-shadow: none;
  animation: none;
}
#os.theme-bs3 .ops-support-fab:hover,
body.theme-bs3 .ops-support-fab:hover {
  transform: none;
  box-shadow: none;
}
#os.theme-bs3 .ops-support-fab.has-unread,
body.theme-bs3 .ops-support-fab.has-unread {
  box-shadow: none;
  animation: none;
}

/* Clarity host overlay (parent document) — default White chrome, not teal/blue. */
#os.theme-bs3 .clarity-studio-overlay {
  --clarity-bg: var(--mono-bg);
  --clarity-surface: var(--mono-surface);
  --clarity-surface-2: var(--mono-surface-2);
  --clarity-surface-3: var(--mono-surface-3);
  --clarity-text: var(--mono-ink);
  --clarity-muted: var(--mono-ink-soft);
  --clarity-line: var(--mono-line);
  --clarity-primary: var(--mono-primary);
  --clarity-primary-strong: var(--mono-primary-strong);
  --clarity-primary-soft: var(--mono-primary-soft);
  --clarity-accent: var(--mono-accent);
  --clarity-accent-soft: var(--mono-accent-soft);
  --clarity-control-bg: var(--mono-control-bg);
  --clarity-control-line: var(--mono-control-line);
  background: var(--mono-bg);
  color: var(--mono-ink);
}

/* Office Word/Excel brand chrome → ink bars */
#os.theme-bs3 .office-app { background: var(--mono-surface-2); }
#os.theme-bs3 .word-app .office-titlebar,
#os.theme-bs3 .excel-app .office-titlebar {
  background: var(--mono-accent);
  color: var(--mono-accent-ink);
}
#os.theme-bs3 .office-ribbon {
  background: var(--mono-surface);
  border-bottom-color: var(--mono-line);
}

/* Messages — injected styles lose to the theme marker */
#os.theme-bs3 .msg-new,
#os.theme-bs3 .msg-send,
#os.theme-bs3 .msg-modal-btn.primary {
  background: var(--mono-accent);
  color: var(--mono-accent-ink);
}
#os.theme-bs3 .msg-avatar,
#os.theme-bs3 .msg-bubble-wrap.mine .msg-bubble {
  background: var(--mono-accent);
  color: var(--mono-accent-ink);
}
#os.theme-bs3 .msg-filter.active,
#os.theme-bs3 .msg-conv.active {
  background: var(--mono-accent-soft);
  border-color: var(--mono-line);
}
#os.theme-bs3 .msg-pane-resizer:hover,
#os.theme-bs3 .msg-pane-resizer.is-dragging {
  background: color-mix(in srgb, var(--mono-accent) 35%, transparent);
}

/* built-in files / calc / settings cards */
#os.theme-bs3 .fe-explorer-root {
  --fe-accent: var(--mono-accent);
  --fe-accent-hover: var(--mono-primary-strong);
  --fe-accent-soft: var(--mono-accent-soft);
  --fe-accent-strong: var(--mono-primary-soft);
  --fe-surface: var(--mono-surface-2);
  --fe-elevated: var(--mono-surface);
  --fe-sidebar: var(--mono-surface);
  --fe-line: var(--mono-line);
  --fe-line-strong: var(--mono-control-line);
  --fe-ink: var(--mono-ink);
  --fe-ink-soft: var(--mono-ink-soft);
  --fe-shadow: none;
}
#os.theme-bs3 .files-sidebar,
#os.theme-bs3 .files-path,
#os.theme-bs3 .files-preview,
#os.theme-bs3 .files-home-card,
#os.theme-bs3 .theme-card,
#os.theme-bs3 .calc-display,
#os.theme-bs3 .calc-key {
  background: var(--mono-surface);
  border-color: var(--mono-line);
  color: var(--mono-ink);
}
#os.theme-bs3 .files-side-item.active,
#os.theme-bs3 .theme-card.active,
#os.theme-bs3 .file-item.selected {
  background: var(--mono-accent-soft);
  color: var(--mono-ink);
  border-color: var(--mono-accent);
  outline-color: var(--mono-accent);
}

#os.theme-bs3 th {
  background: var(--mono-surface-2);
  color: var(--mono-ink-soft);
  border-color: var(--mono-line);
}
#os.theme-bs3 td { border-color: var(--mono-line); }
#os.theme-bs3 tbody tr:hover td { background: var(--mono-hover); }

/* Default White color-theme windows pick up Mono through --mono-* (see
   TOKEN_PALETTES.white). Explicit picker choices (navy, wine, …) keep their
   palettes — those are an intentional per-app override. */
