/* 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-search, #os.theme-pulse .start-search,
#os.theme-vector .start-search, #os.theme-lumen .start-search {
  border-radius: calc(var(--bsx-radius) - 2px);
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  color: var(--ink);
}
#os.theme-nebula .start-search:focus, #os.theme-pulse .start-search:focus,
#os.theme-vector .start-search:focus, #os.theme-lumen .start-search:focus { 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-pulse .start-tile:hover, #os.theme-pulse .start-all-row:hover, #os.theme-pulse .start-rec:hover,
#os.theme-vector .start-tile:hover, #os.theme-vector .start-all-row:hover, #os.theme-vector .start-rec:hover,
#os.theme-lumen .start-tile:hover, #os.theme-lumen .start-all-row:hover, #os.theme-lumen .start-rec: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);
}

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