/* BioStudio AI — shared structure for unified futuristic tone profiles
   (Nebula / Pulse / Vector / Lumen). Reuses the bsx dashboard DOM and
   token namespace (--bsx-*) from each identity theme file. Loaded after
   css/bsx-shell.css so tone-specific density tweaks can override. */

#os.theme-nebula .desktop-icons, #os.theme-nebula .desktop-widgets,
#os.theme-pulse .desktop-icons, #os.theme-pulse .desktop-widgets,
#os.theme-vector .desktop-icons, #os.theme-vector .desktop-widgets,
#os.theme-lumen .desktop-icons, #os.theme-lumen .desktop-widgets { display: none; }

/* Floating dock sits 10px above the bottom — reserve that offset too. */
#os.theme-nebula,
#os.theme-pulse,
#os.theme-vector,
#os.theme-lumen {
  --taskbar-clearance: calc(var(--taskbar-h) + 10px);
}

/* floating dock taskbar (taskbar.js adds .bs-dock) */
#os.theme-nebula .taskbar.bs-dock,
#os.theme-pulse .taskbar.bs-dock,
#os.theme-vector .taskbar.bs-dock,
#os.theme-lumen .taskbar.bs-dock {
  left: 50%;
  right: auto;
  bottom: 10px;
  translate: -50% 0;
  width: max-content;
  max-width: calc(100vw - 24px);
  height: 52px;
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 0 10px;
  border: 1px solid var(--bsx-border);
  border-radius: var(--bsx-radius-lg);
  background: var(--taskbar-bg);
  backdrop-filter: var(--bsx-blur);
  -webkit-backdrop-filter: var(--bsx-blur);
  box-shadow: var(--bsx-shadow-lg);
}
#os.theme-nebula .taskbar.bs-dock .taskbar-left, #os.theme-nebula .taskbar.bs-dock .tb-show-desktop, #os.theme-nebula .taskbar.bs-dock .tray-chevron,
#os.theme-pulse .taskbar.bs-dock .taskbar-left, #os.theme-pulse .taskbar.bs-dock .tb-show-desktop, #os.theme-pulse .taskbar.bs-dock .tray-chevron,
#os.theme-vector .taskbar.bs-dock .taskbar-left, #os.theme-vector .taskbar.bs-dock .tb-show-desktop, #os.theme-vector .taskbar.bs-dock .tray-chevron,
#os.theme-lumen .taskbar.bs-dock .taskbar-left, #os.theme-lumen .taskbar.bs-dock .tb-show-desktop, #os.theme-lumen .taskbar.bs-dock .tray-chevron { display: none; }

#os.theme-nebula .taskbar.bs-dock .taskbar-right,
#os.theme-pulse .taskbar.bs-dock .taskbar-right,
#os.theme-vector .taskbar.bs-dock .taskbar-right,
#os.theme-lumen .taskbar.bs-dock .taskbar-right {
  margin-left: 4px;
  padding-left: 11px;
  border-left: 1px solid var(--bsx-border);
}
#os.theme-nebula .taskbar.bs-dock .tb-icon-btn, #os.theme-nebula .taskbar.bs-dock .task-btn,
#os.theme-pulse .taskbar.bs-dock .tb-icon-btn, #os.theme-pulse .taskbar.bs-dock .task-btn,
#os.theme-vector .taskbar.bs-dock .tb-icon-btn, #os.theme-vector .taskbar.bs-dock .task-btn,
#os.theme-lumen .taskbar.bs-dock .tb-icon-btn, #os.theme-lumen .taskbar.bs-dock .task-btn {
  height: 40px;
  min-width: 40px;
  border-radius: calc(var(--bsx-radius) - 1px);
}
#os.theme-nebula .taskbar.bs-dock .taskbar-start,
#os.theme-pulse .taskbar.bs-dock .taskbar-start,
#os.theme-vector .taskbar.bs-dock .taskbar-start,
#os.theme-lumen .taskbar.bs-dock .taskbar-start { background: var(--bsx-accent); }
#os.theme-nebula .taskbar.bs-dock .taskbar-start .icon,
#os.theme-pulse .taskbar.bs-dock .taskbar-start .icon,
#os.theme-vector .taskbar.bs-dock .taskbar-start .icon,
#os.theme-lumen .taskbar.bs-dock .taskbar-start .icon { color: var(--bsx-accent-ink); }

#os.theme-nebula .task-btn.running .task-btn-indicator,
#os.theme-pulse .task-btn.running .task-btn-indicator,
#os.theme-vector .task-btn.running .task-btn-indicator,
#os.theme-lumen .task-btn.running .task-btn-indicator {
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--bsx-accent); opacity: 1;
}
#os.theme-nebula .task-btn.active, #os.theme-pulse .task-btn.active,
#os.theme-vector .task-btn.active, #os.theme-lumen .task-btn.active {
  background: var(--bsx-accent-soft);
  box-shadow: inset 0 0 0 1px var(--bsx-accent);
}
#os.theme-nebula .task-btn.active .task-btn-indicator,
#os.theme-pulse .task-btn.active .task-btn-indicator,
#os.theme-vector .task-btn.active .task-btn-indicator,
#os.theme-lumen .task-btn.active .task-btn-indicator {
  width: 15px; height: 3px; border-radius: 3px; background: var(--bsx-accent);
}
#os.theme-nebula .tb-desktop-pill, #os.theme-pulse .tb-desktop-pill,
#os.theme-vector .tb-desktop-pill, #os.theme-lumen .tb-desktop-pill {
  border: 1px solid var(--bsx-border);
  background: var(--bsx-surface-2);
}
#os.theme-nebula .tb-desktop-pill .tb-desktop-dot,
#os.theme-pulse .tb-desktop-pill .tb-desktop-dot,
#os.theme-vector .tb-desktop-pill .tb-desktop-dot,
#os.theme-lumen .tb-desktop-pill .tb-desktop-dot { background: var(--bsx-accent); }
#os.theme-nebula .tb-style-toggle, #os.theme-pulse .tb-style-toggle,
#os.theme-vector .tb-style-toggle, #os.theme-lumen .tb-style-toggle {
  border: 1px solid var(--bsx-border);
  border-radius: 999px;
  background: var(--bsx-accent-soft);
  color: var(--ink-soft);
}
#os.theme-nebula .tb-style-toggle:hover, #os.theme-pulse .tb-style-toggle:hover,
#os.theme-vector .tb-style-toggle:hover, #os.theme-lumen .tb-style-toggle:hover {
  color: var(--ink);
  border-color: var(--bsx-accent);
}

/* Vector: compact dock for dense HUD */
#os.theme-vector .taskbar.bs-dock {
  height: 46px;
  gap: 5px;
  padding: 0 8px;
  bottom: 8px;
}
#os.theme-vector .taskbar.bs-dock .tb-icon-btn,
#os.theme-vector .taskbar.bs-dock .task-btn {
  height: 34px;
  min-width: 34px;
}

/* windows */
#os.theme-nebula .window, #os.theme-pulse .window,
#os.theme-vector .window, #os.theme-lumen .window {
  border-radius: var(--bsx-radius-lg);
  border: 1px solid var(--bsx-border);
  box-shadow: var(--bsx-shadow-lg);
  backdrop-filter: var(--bsx-blur);
  -webkit-backdrop-filter: var(--bsx-blur);
}
#os.theme-nebula .window.focused, #os.theme-pulse .window.focused,
#os.theme-vector .window.focused, #os.theme-lumen .window.focused {
  box-shadow: var(--bsx-shadow-lg), 0 0 0 1px var(--bsx-accent);
}
#os.theme-nebula .window.maximized, #os.theme-pulse .window.maximized,
#os.theme-vector .window.maximized, #os.theme-lumen .window.maximized { border-radius: 0; }
#os.theme-nebula .win-btn:hover, #os.theme-pulse .win-btn:hover,
#os.theme-vector .win-btn:hover, #os.theme-lumen .win-btn:hover { background: var(--bsx-accent-soft); }
#os.theme-nebula .win-btn.close:hover, #os.theme-pulse .win-btn.close:hover,
#os.theme-vector .win-btn.close:hover, #os.theme-lumen .win-btn.close:hover { background: #ef4444; color: #fff; }

/* start menu + flyouts */
#os.theme-nebula .start-menu, #os.theme-nebula .flyout,
#os.theme-pulse .start-menu, #os.theme-pulse .flyout,
#os.theme-vector .start-menu, #os.theme-vector .flyout,
#os.theme-lumen .start-menu, #os.theme-lumen .flyout {
  border-radius: var(--bsx-radius-lg);
  border: 1px solid var(--bsx-border);
  background: var(--flyout-bg);
  box-shadow: var(--bsx-shadow-lg);
  backdrop-filter: var(--bsx-blur);
  -webkit-backdrop-filter: var(--bsx-blur);
}
#os.theme-nebula .start-searchbar, #os.theme-pulse .start-searchbar,
#os.theme-vector .start-searchbar, #os.theme-lumen .start-searchbar {
  border-radius: calc(var(--bsx-radius) - 2px);
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  color: var(--ink);
}
#os.theme-nebula .start-searchbar:focus-within, #os.theme-pulse .start-searchbar:focus-within,
#os.theme-vector .start-searchbar:focus-within, #os.theme-lumen .start-searchbar:focus-within { border-color: var(--bsx-accent); }
#os.theme-nebula .start-tile:hover, #os.theme-nebula .start-all-row:hover, #os.theme-nebula .start-rec:hover, #os.theme-nebula .start-best:hover,
#os.theme-pulse .start-tile:hover, #os.theme-pulse .start-all-row:hover, #os.theme-pulse .start-rec:hover, #os.theme-pulse .start-best:hover,
#os.theme-vector .start-tile:hover, #os.theme-vector .start-all-row:hover, #os.theme-vector .start-rec:hover, #os.theme-vector .start-best:hover,
#os.theme-lumen .start-tile:hover, #os.theme-lumen .start-all-row:hover, #os.theme-lumen .start-rec:hover, #os.theme-lumen .start-best:hover { background: var(--bsx-accent-soft); }
#os.theme-nebula .start-section-title, #os.theme-nebula .start-allapps, #os.theme-nebula .start-back,
#os.theme-pulse .start-section-title, #os.theme-pulse .start-allapps, #os.theme-pulse .start-back,
#os.theme-vector .start-section-title, #os.theme-vector .start-allapps, #os.theme-vector .start-back,
#os.theme-lumen .start-section-title, #os.theme-lumen .start-allapps, #os.theme-lumen .start-back { color: var(--bsx-accent-strong, var(--bsx-accent)); }
#os.theme-nebula .qs-tile.on, #os.theme-pulse .qs-tile.on,
#os.theme-vector .qs-tile.on, #os.theme-lumen .qs-tile.on { background: var(--bsx-accent); color: var(--bsx-accent-ink); }
#os.theme-nebula .cal-cell.today, #os.theme-pulse .cal-cell.today,
#os.theme-vector .cal-cell.today, #os.theme-lumen .cal-cell.today { background: var(--bsx-accent); color: var(--bsx-accent-ink); }

/* task view */
#os.theme-nebula .tv-window, #os.theme-pulse .tv-window,
#os.theme-vector .tv-window, #os.theme-lumen .tv-window {
  border-radius: var(--bsx-radius-lg);
  border: 1px solid var(--bsx-border);
  background: var(--bsx-surface);
  box-shadow: var(--bsx-shadow);
}
#os.theme-nebula .tv-window:hover, #os.theme-pulse .tv-window:hover,
#os.theme-vector .tv-window:hover, #os.theme-lumen .tv-window:hover { border-color: var(--bsx-accent); }
#os.theme-nebula .tv-desktop.active, #os.theme-pulse .tv-desktop.active,
#os.theme-vector .tv-desktop.active, #os.theme-lumen .tv-desktop.active { border-color: var(--bsx-accent); }

/* context menus, previews, snap, dialogs (rendered on <body>) */
body.theme-nebula .ctx-menu, body.theme-nebula .tb-preview-popover, body.theme-nebula .snap-flyout,
body.theme-pulse .ctx-menu, body.theme-pulse .tb-preview-popover, body.theme-pulse .snap-flyout,
body.theme-vector .ctx-menu, body.theme-vector .tb-preview-popover, body.theme-vector .snap-flyout,
body.theme-lumen .ctx-menu, body.theme-lumen .tb-preview-popover, body.theme-lumen .snap-flyout {
  --menu-bg: var(--flyout-bg);
  --menu-border: var(--bsx-border);
  --menu-hover: var(--bsx-accent-soft);
  color: var(--ink);
  border-radius: var(--bsx-radius);
  box-shadow: var(--bsx-shadow-lg);
}
body.theme-nebula .platform-dialog, body.theme-pulse .platform-dialog,
body.theme-vector .platform-dialog, body.theme-lumen .platform-dialog {
  border-radius: var(--bsx-radius-lg);
  border: 1px solid var(--bsx-border);
  background: var(--flyout-bg);
  color: var(--ink);
  box-shadow: var(--bsx-shadow-lg);
}

/* global search palette */
body.theme-nebula .bs-search-box, body.theme-pulse .bs-search-box,
body.theme-vector .bs-search-box, body.theme-lumen .bs-search-box {
  background: var(--flyout-bg);
  color: var(--ink);
  border: 1px solid var(--bsx-border);
  border-radius: var(--bsx-radius-lg);
  box-shadow: var(--bsx-shadow-lg);
  backdrop-filter: var(--bsx-blur);
  -webkit-backdrop-filter: var(--bsx-blur);
}
body.theme-nebula .bs-search-head, body.theme-pulse .bs-search-head,
body.theme-vector .bs-search-head, body.theme-lumen .bs-search-head { border-bottom-color: var(--bsx-border); }
body.theme-nebula .bs-search-row.active, body.theme-pulse .bs-search-row.active,
body.theme-vector .bs-search-row.active, body.theme-lumen .bs-search-row.active { background: var(--bsx-accent-soft); }
body.theme-nebula .bs-search-group, body.theme-pulse .bs-search-group,
body.theme-vector .bs-search-group, body.theme-lumen .bs-search-group { color: var(--bsx-accent-strong, var(--bsx-accent)); }
body.theme-nebula .bs-search-sub, body.theme-nebula .bs-search-hint,
body.theme-pulse .bs-search-sub, body.theme-pulse .bs-search-hint,
body.theme-vector .bs-search-sub, body.theme-vector .bs-search-hint,
body.theme-lumen .bs-search-sub, body.theme-lumen .bs-search-hint { color: var(--ink-soft); }

/* Legacy app aliases stay aligned with tone shell tokens */
body.theme-nebula, #os.theme-nebula,
body.theme-pulse, #os.theme-pulse,
body.theme-vector, #os.theme-vector,
body.theme-lumen, #os.theme-lumen {
  --surface: var(--bsx-surface);
  --text: var(--ink);
  --muted: var(--ink-soft);
  --border: var(--bsx-border);
  --app-bg: var(--win-body-bg);
  --app-bar: var(--titlebar-bg);
  --app-line: var(--bsx-border);
  --app-btn: var(--bsx-surface);
  --app-btn-hover: var(--bsx-accent-soft);
  --app-input: var(--input-bg);
  --accent-ink: var(--bsx-accent-ink);
  --on-primary: var(--bsx-accent-ink);
  --menu-bg: var(--flyout-bg);
  --menu-border: var(--bsx-border);
  --menu-hover: var(--bsx-accent-soft);
  --primary: var(--bsx-accent);
  --primary-soft: var(--bsx-accent-soft);
  --scrollbar-thumb: color-mix(in srgb, var(--bsx-accent) 38%, transparent);
  --scrollbar-thumb-hover: color-mix(in srgb, var(--bsx-accent) 58%, transparent);
}

/* shared app chrome basics */
#os.theme-nebula .btn.primary, body.theme-nebula .btn.primary,
#os.theme-pulse .btn.primary, body.theme-pulse .btn.primary,
#os.theme-vector .btn.primary, body.theme-vector .btn.primary,
#os.theme-lumen .btn.primary, body.theme-lumen .btn.primary {
  background: var(--bsx-accent);
  border-color: transparent;
  color: var(--bsx-accent-ink);
}
#os.theme-nebula .btn, body.theme-nebula .btn,
#os.theme-pulse .btn, body.theme-pulse .btn,
#os.theme-vector .btn, body.theme-vector .btn,
#os.theme-lumen .btn, body.theme-lumen .btn {
  border-radius: calc(var(--bsx-radius) - 2px);
  border: 1px solid var(--input-border);
  background: var(--bsx-surface);
  color: var(--ink);
}
#os.theme-nebula input:focus-visible, #os.theme-nebula textarea:focus-visible, #os.theme-nebula select:focus-visible,
#os.theme-pulse input:focus-visible, #os.theme-pulse textarea:focus-visible, #os.theme-pulse select:focus-visible,
#os.theme-vector input:focus-visible, #os.theme-vector textarea:focus-visible, #os.theme-vector select:focus-visible,
#os.theme-lumen input:focus-visible, #os.theme-lumen textarea:focus-visible, #os.theme-lumen select:focus-visible {
  outline: none;
  border-color: var(--bsx-accent);
}

/* settings cards */
#os.theme-nebula .theme-card, #os.theme-pulse .theme-card,
#os.theme-vector .theme-card, #os.theme-lumen .theme-card {
  border-radius: var(--bsx-radius);
  border-color: var(--bsx-border);
}
#os.theme-nebula .theme-card.active, #os.theme-pulse .theme-card.active,
#os.theme-vector .theme-card.active, #os.theme-lumen .theme-card.active {
  border-color: var(--bsx-accent);
  background: var(--bsx-accent-soft);
}

/* toasts + toolbars */
#os.theme-nebula .toast, #os.theme-pulse .toast,
#os.theme-vector .toast, #os.theme-lumen .toast {
  background: var(--flyout-bg);
  border-color: var(--bsx-border);
  color: var(--ink);
  border-radius: var(--bsx-radius);
  box-shadow: var(--bsx-shadow-lg);
}
#os.theme-nebula .app-toolbar, #os.theme-pulse .app-toolbar,
#os.theme-vector .app-toolbar, #os.theme-lumen .app-toolbar,
#os.theme-nebula .files-toolbar, #os.theme-pulse .files-toolbar,
#os.theme-vector .files-toolbar, #os.theme-lumen .files-toolbar {
  background: var(--titlebar-bg);
  border-bottom-color: var(--bsx-border);
}
#os.theme-nebula .app-statusbar, #os.theme-pulse .app-statusbar,
#os.theme-vector .app-statusbar, #os.theme-lumen .app-statusbar {
  background: var(--bsx-surface-2);
  border-top-color: var(--bsx-border);
}

/* Nested studios follow --bsx-* identity */
#os.theme-nebula .graph-studio-app, #os.theme-nebula .pathology-studio-root, #os.theme-nebula .pathology-studio-app, #os.theme-nebula .las-root, #os.theme-nebula .design-studio-root, #os.theme-nebula .lims-studio-app, #os.theme-nebula .spatial-studio-root, #os.theme-nebula .seahorse-studio-root, #os.theme-nebula .ms-studio-app, #os.theme-nebula .tox-studio-app, #os.theme-nebula .qms-lite-root, #os.theme-nebula .ss-studio-root, #os.theme-nebula .pkpd-studio-root, #os.theme-nebula .pcr-studio-app, #os.theme-nebula .method-validation-root, #os.theme-nebula .omics-studio-app, #os.theme-nebula .molecular-design-root,
#os.theme-pulse .graph-studio-app, #os.theme-pulse .pathology-studio-root, #os.theme-pulse .pathology-studio-app, #os.theme-pulse .las-root, #os.theme-pulse .design-studio-root, #os.theme-pulse .lims-studio-app, #os.theme-pulse .spatial-studio-root, #os.theme-pulse .seahorse-studio-root, #os.theme-pulse .ms-studio-app, #os.theme-pulse .tox-studio-app, #os.theme-pulse .qms-lite-root, #os.theme-pulse .ss-studio-root, #os.theme-pulse .pkpd-studio-root, #os.theme-pulse .pcr-studio-app, #os.theme-pulse .method-validation-root, #os.theme-pulse .omics-studio-app, #os.theme-pulse .molecular-design-root,
#os.theme-vector .graph-studio-app, #os.theme-vector .pathology-studio-root, #os.theme-vector .pathology-studio-app, #os.theme-vector .las-root, #os.theme-vector .design-studio-root, #os.theme-vector .lims-studio-app, #os.theme-vector .spatial-studio-root, #os.theme-vector .seahorse-studio-root, #os.theme-vector .ms-studio-app, #os.theme-vector .tox-studio-app, #os.theme-vector .qms-lite-root, #os.theme-vector .ss-studio-root, #os.theme-vector .pkpd-studio-root, #os.theme-vector .pcr-studio-app, #os.theme-vector .method-validation-root, #os.theme-vector .omics-studio-app, #os.theme-vector .molecular-design-root,
#os.theme-lumen .graph-studio-app, #os.theme-lumen .pathology-studio-root, #os.theme-lumen .pathology-studio-app, #os.theme-lumen .las-root, #os.theme-lumen .design-studio-root, #os.theme-lumen .lims-studio-app, #os.theme-lumen .spatial-studio-root, #os.theme-lumen .seahorse-studio-root, #os.theme-lumen .ms-studio-app, #os.theme-lumen .tox-studio-app, #os.theme-lumen .qms-lite-root, #os.theme-lumen .ss-studio-root, #os.theme-lumen .pkpd-studio-root, #os.theme-lumen .pcr-studio-app, #os.theme-lumen .method-validation-root, #os.theme-lumen .omics-studio-app, #os.theme-lumen .molecular-design-root {
  --pr-blue: var(--os-accent, var(--bsx-accent));
  --pr-blue-dk: var(--bsx-accent-strong);
  --pr-teal: var(--os-accent, var(--bsx-accent));
  --pr-bg: var(--win-body-bg);
  --pr-surface: var(--bsx-surface);
  --pr-nav-bg: var(--titlebar-bg);
  --pr-line: var(--bsx-border);
  --pr-ink: var(--ink);
  --pr-ink-soft: var(--ink-soft);
  --pr-hover: var(--bsx-accent-soft);
  --pr-active: var(--bsx-accent-soft);
}
#os.theme-nebula .eln-studio-root, #os.theme-pulse .eln-studio-root,
#os.theme-vector .eln-studio-root, #os.theme-lumen .eln-studio-root {
  --eln-canvas: var(--win-body-bg);
  --eln-surface: var(--bsx-surface);
  --eln-surface-subtle: var(--titlebar-bg);
  --eln-line: var(--bsx-border);
  --eln-text: var(--ink);
  --eln-muted: var(--ink-soft);
  --eln-blue: var(--bsx-accent);
  --eln-blue-dark: var(--bsx-accent-strong);
  --eln-blue-soft: var(--bsx-accent-soft);
  --st-accent: var(--bsx-accent);
}
#os.theme-nebula .plasmid-studio-root, #os.theme-nebula .ps-app,
#os.theme-pulse .plasmid-studio-root, #os.theme-pulse .ps-app,
#os.theme-vector .plasmid-studio-root, #os.theme-vector .ps-app,
#os.theme-lumen .plasmid-studio-root, #os.theme-lumen .ps-app {
  --ps-ink: var(--ink);
  --ps-muted: var(--ink-soft);
  --ps-line: var(--bsx-border);
  --ps-panel: var(--bsx-surface);
  --ps-soft: var(--win-body-bg);
  --ps-blue: var(--bsx-accent);
  --ps-teal: var(--bsx-accent);
}
#os.theme-nebula .clib, #os.theme-pulse .clib,
#os.theme-vector .clib, #os.theme-lumen .clib {
  --cl-accent: var(--bsx-accent);
  --cl-bg: var(--win-body-bg);
  --cl-panel: var(--bsx-surface);
  --cl-ink: var(--ink);
  --cl-soft: var(--ink-soft);
  --cl-line: var(--bsx-border);
}
#os.theme-nebula .tox-ribbon-app, #os.theme-pulse .tox-ribbon-app,
#os.theme-vector .tox-ribbon-app, #os.theme-lumen .tox-ribbon-app {
  --tox-blue: var(--bsx-accent);
  --tox-blue-deep: var(--bsx-accent-strong);
}
#os.theme-nebula .tox-ribbon-app .ss-titlebar,
#os.theme-pulse .tox-ribbon-app .ss-titlebar,
#os.theme-vector .tox-ribbon-app .ss-titlebar,
#os.theme-lumen .tox-ribbon-app .ss-titlebar {
  background: linear-gradient(105deg, var(--bsx-accent), var(--bsx-accent-strong));
}
#os.theme-nebula .office-app, #os.theme-pulse .office-app,
#os.theme-vector .office-app, #os.theme-lumen .office-app { background: var(--win-body-bg); }
#os.theme-nebula .word-app .office-titlebar, #os.theme-pulse .word-app .office-titlebar,
#os.theme-vector .word-app .office-titlebar, #os.theme-lumen .word-app .office-titlebar {
  background: var(--bsx-accent);
}
#os.theme-nebula .excel-app .office-titlebar, #os.theme-pulse .excel-app .office-titlebar,
#os.theme-vector .excel-app .office-titlebar, #os.theme-lumen .excel-app .office-titlebar {
  background: color-mix(in srgb, var(--bsx-accent) 70%, #107c41);
}
#os.theme-nebula .office-ribbon, #os.theme-pulse .office-ribbon,
#os.theme-vector .office-ribbon, #os.theme-lumen .office-ribbon,
#os.theme-nebula .excel-ribbon, #os.theme-pulse .excel-ribbon,
#os.theme-vector .excel-ribbon, #os.theme-lumen .excel-ribbon {
  background: var(--titlebar-bg);
  border-color: var(--bsx-border);
}
#os.theme-nebula .pathology-studio-root, #os.theme-nebula .pathology-studio-app,
#os.theme-pulse .pathology-studio-root, #os.theme-pulse .pathology-studio-app,
#os.theme-vector .pathology-studio-root, #os.theme-vector .pathology-studio-app,
#os.theme-lumen .pathology-studio-root, #os.theme-lumen .pathology-studio-app {
  --path-purple: var(--bsx-accent);
}
#os.theme-nebula th, #os.theme-pulse th,
#os.theme-vector th, #os.theme-lumen th {
  background: var(--bsx-surface-2);
  color: var(--ink-soft);
  border-color: var(--bsx-border);
}

#os.theme-nebula .fe-explorer-root,
#os.theme-pulse .fe-explorer-root,
#os.theme-vector .fe-explorer-root,
#os.theme-lumen .fe-explorer-root {
  --fe-accent: var(--os-accent, var(--bsx-accent));
  --fe-accent-hover: var(--bsx-accent-strong, var(--os-accent));
  --fe-accent-soft: var(--os-accent-soft, var(--bsx-accent-soft));
  --fe-accent-strong: color-mix(in srgb, var(--os-accent, var(--bsx-accent)) 22%, transparent);
  --fe-surface: var(--os-win-body, var(--win-body-bg));
  --fe-elevated: var(--os-win-bg, var(--win-bg));
  --fe-sidebar: var(--os-titlebar, var(--titlebar-bg));
  --fe-line: var(--os-border, var(--bsx-border));
  --fe-ink: var(--os-ink, var(--ink));
  --fe-ink-soft: var(--os-ink-soft, var(--ink-soft));
}

#os.theme-pulse .fe-explorer-root .fe-command-bar,
#os.theme-vector .fe-explorer-root .fe-command-bar {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
#os.theme-vector .fe-explorer-root .fe-command-bar {
  background: var(--os-titlebar);
}

body.theme-pulse .ctx-menu,
body.theme-vector .ctx-menu,
#os.theme-pulse .flyout,
#os.theme-vector .flyout,
#os.theme-pulse .start-menu,
#os.theme-vector .start-menu {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

/* Start menu surfaces: these themes ship flat, opaque panels, so the Windows
   glass sheen and mica bloom have to be blanked or they ghost over the panel
   as milky grey plates. Every start token is re-pointed at the theme's own
   surface scale instead. */
#os.theme-nebula .start-menu,
#os.theme-pulse .start-menu,
#os.theme-vector .start-menu,
#os.theme-lumen .start-menu {
  --start-mica: none;
  --start-bloom: 0;
  --start-sheen: transparent;
  --start-sheen-strong: transparent;
  --start-plate: var(--bsx-surface-2);
  --start-plate-line: var(--bsx-border);
  --start-card: var(--bsx-surface-2);
  --start-chip-bg: var(--bsx-surface-2);
  --start-chip-border: var(--bsx-border);
  --start-footer-bg: var(--bsx-surface-2);
  --start-hover: var(--bsx-accent-soft);
  --start-press: var(--bsx-accent-soft);
}
#os.theme-nebula .start-cat-head,
#os.theme-pulse .start-cat-head,
#os.theme-vector .start-cat-head,
#os.theme-lumen .start-cat-head {
  background: var(--flyout-bg);
}

/* ---------------------------------------------------------------------- */
/* App-icon shape (see --app-icon-radius in css/base.css). Nebula and Lumen */
/* run circular icons; Pulse and Vector take a macOS-style squircle. Each   */
/* bleeds the shared 40/48 artwork to the element edge so icons read big.   */
/* ---------------------------------------------------------------------- */
#os.theme-nebula, body.theme-nebula { --launchpad-plate-radius: 50%; --app-icon-radius: 50%; --app-icon-bleed: 1.2; }
#os.theme-lumen, body.theme-lumen { --launchpad-plate-radius: 50%; --app-icon-radius: 50%; --app-icon-bleed: 1.2; }
#os.theme-pulse, body.theme-pulse { --launchpad-plate-radius: 30%; --app-icon-radius: 30%; --app-icon-bleed: 1.2; }
#os.theme-vector, body.theme-vector { --launchpad-plate-radius: 26%; --app-icon-radius: 26%; --app-icon-bleed: 1.2; }

#os.theme-nebula .start-menu,
#os.theme-lumen .start-menu { --start-plate-radius: 50%; }
#os.theme-pulse .start-menu { --start-plate-radius: 30%; }
#os.theme-vector .start-menu { --start-plate-radius: 26%; }
#os.theme-nebula .start-menu,
#os.theme-pulse .start-menu,
#os.theme-vector .start-menu,
#os.theme-lumen .start-menu {
  --start-icon-size: 48px;
  --start-icon-box: 56px;
}

#os.theme-nebula .bsx-app-icon,
#os.theme-pulse .bsx-app-icon,
#os.theme-vector .bsx-app-icon,
#os.theme-lumen .bsx-app-icon {
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  filter: drop-shadow(0 8px 20px color-mix(in srgb, var(--app-c, var(--bsx-accent)) 40%, transparent));
  transition: transform 0.2s cubic-bezier(0.2, 0.9, 0.3, 1.2), filter 0.2s ease;
}
#os.theme-nebula .bsx-app-icon .icon,
#os.theme-pulse .bsx-app-icon .icon,
#os.theme-vector .bsx-app-icon .icon,
#os.theme-lumen .bsx-app-icon .icon { width: 52px; height: 52px; }
#os.theme-nebula .bsx-app:hover .bsx-app-icon,
#os.theme-pulse .bsx-app:hover .bsx-app-icon,
#os.theme-vector .bsx-app:hover .bsx-app-icon,
#os.theme-lumen .bsx-app:hover .bsx-app-icon { transform: translateY(-2px) scale(1.06); }
#os.theme-nebula .bsx-app:hover,
#os.theme-pulse .bsx-app:hover,
#os.theme-vector .bsx-app:hover,
#os.theme-lumen .bsx-app:hover {
  border-color: color-mix(in srgb, var(--app-c, var(--bsx-accent)) 55%, var(--bsx-border));
}
