/* ============================================================
   VSET FlexLayout Theme — driven by app CSS variables
   All colors derive from :root --bg, --bg-panel, --line, --text,
   --cyan, --muted so every theme preset automatically applies.
   ============================================================ */

.flexlayout__layout {
  /* Map app palette into FlexLayout variable slots */
  --color-text: var(--text);
  --color-background: var(--bg);
  --color-base: var(--bg);

  /* Grayscale ramp derived from app variables */
  --color-1: var(--bg-panel);
  --color-2: var(--bg-activity);
  --color-3: var(--line);
  --color-4: color-mix(in srgb, var(--line) 70%, var(--text) 30%);
  --color-5: color-mix(in srgb, var(--line) 50%, var(--text) 50%);
  --color-6: color-mix(in srgb, var(--line) 30%, var(--text) 70%);

  /* Drag indicators — accent-based */
  --color-drag1: color-mix(in srgb, var(--cyan) 50%, transparent);
  --color-drag2: color-mix(in srgb, var(--cyan) 70%, transparent);
  --color-drag1-background: color-mix(in srgb, var(--cyan) 10%, transparent);
  --color-drag2-background: color-mix(in srgb, var(--cyan) 15%, transparent);

  /* Typography */
  --font-size: 11px;
  --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  /* Icons & overflow */
  --color-overflow: var(--muted);
  --color-icon: var(--muted);

  /* Tabset */
  --color-tabset-background: var(--bg-panel);
  --color-tabset-background-selected: var(--bg-panel);
  --color-tabset-background-maximized: var(--bg-activity);
  --color-tabset-divider-line: var(--line);
  --color-tabset-header-background: var(--bg-panel);
  --color-tabset-header: var(--text);

  /* Tab content area */
  --color-tab-content: var(--bg);
  --color-tab-selected: var(--text-light);
  --color-tab-selected-background: var(--bg);
  --color-tab-unselected: var(--muted);
  --color-tab-unselected-background: transparent;
  --color-tab-textbox: var(--text);
  --color-tab-textbox-background: var(--bg-input);

  /* Borders */
  --color-border-tab-content: var(--bg);
  --color-border-background: var(--bg-panel);
  --color-border-divider-line: var(--line);
  --color-border-tab-selected: var(--text-light);
  --color-border-tab-selected-background: var(--bg);
  --color-border-tab-unselected: var(--muted);
  --color-border-tab-unselected-background: var(--bg-panel);

  /* Splitters */
  --color-splitter: var(--bg-panel);
  --color-splitter-hover: var(--cyan);
  --color-splitter-drag: var(--cyan);

  /* Drag rectangle */
  --color-drag-rect-border: var(--cyan);
  --color-drag-rect-background: var(--bg-panel);
  --color-drag-rect: var(--text);

  /* Popup menus */
  --color-popup-border: var(--line);
  --color-popup-unselected: var(--text);
  --color-popup-unselected-background: var(--bg-panel);
  --color-popup-selected: var(--text-light);
  --color-popup-selected-background: var(--cyan);

  /* Edge markers */
  --color-edge-marker: var(--cyan);
  --color-edge-icon: var(--text);

  /* Mini scrollbar */
  --color-mini-scroll-indicator: color-mix(in srgb, var(--muted) 50%, transparent);
  --color-mini-scroll-indicator-hovered: color-mix(in srgb, var(--muted) 80%, transparent);
  --size-mini-scroll-indicator: 3px;

  /* Toolbar */
  --color-toolbar-button-hover: color-mix(in srgb, var(--line) 60%, var(--bg) 40%);
}

/* ==========  Base layout classes  ========== */

.flexlayout__layout {
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  position: absolute;
  display: flex;
  overflow: hidden;
  background-color: var(--color-background);
}
.flexlayout__layout_overlay {
  left: 0; top: 0; right: 0; bottom: 0;
  position: absolute;
  z-index: 1000;
}
.flexlayout__layout_tab_stamps {
  position: absolute;
  top: -10000px;
  z-index: 100;
  display: flex;
  flex-direction: column;
  align-items: start;
}
.flexlayout__layout_moveables {
  visibility: hidden;
  position: absolute;
  width: 100px; height: 100px;
  top: -20000px;
}
.flexlayout__layout_main {
  display: flex;
  flex-basis: 0px;
  min-width: 0; min-height: 0;
  flex-grow: 1;
  position: relative;
}
.flexlayout__layout_border_container,
.flexlayout__layout_border_container_inner {
  display: flex;
  flex-basis: 0px;
  min-width: 0; min-height: 0;
  flex-grow: 1;
}

/* ==========  Splitters  ========== */

.flexlayout__splitter {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--color-splitter);
  touch-action: none;
  z-index: 10;
  transition: background-color 0.15s ease;
}
@media (hover: hover) {
  .flexlayout__splitter:hover {
    background-color: var(--color-splitter-hover);
    border-radius: 3px;
  }
}
.flexlayout__splitter_drag {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  border-radius: 3px;
  background-color: var(--color-splitter-drag);
}
.flexlayout__splitter_handle {
  background-color: var(--muted);
  border-radius: 2px;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.flexlayout__splitter:hover .flexlayout__splitter_handle {
  opacity: 1;
}
.flexlayout__splitter_handle_horz {
  width: 2px; height: 20px;
}
.flexlayout__splitter_handle_vert {
  width: 20px; height: 2px;
}
.flexlayout__splitter_extra {
  touch-action: none;
  background-color: transparent;
}

/* ==========  Drag / drop outlines  ========== */

.flexlayout__outline_rect {
  position: absolute;
  pointer-events: none;
  box-sizing: border-box;
  border: 2px solid var(--color-drag1);
  background: var(--color-drag1-background);
  border-radius: 4px;
  z-index: 1000;
}
.flexlayout__outline_rect_edge {
  pointer-events: none;
  border: 2px solid var(--color-drag2);
  background: var(--color-drag2-background);
  border-radius: 4px;
  z-index: 1000;
  box-sizing: border-box;
}
.flexlayout__edge_rect {
  position: absolute;
  z-index: 1000;
  background-color: var(--color-edge-marker);
  pointer-events: none;
  display: flex;
  align-items: center;
  justify-content: center;
}
.flexlayout__drag_rect {
  color: var(--color-drag-rect);
  background-color: var(--color-drag-rect-background);
  border: 2px solid var(--color-drag-rect-border);
  border-radius: 4px;
  box-sizing: border-box;
  display: flex;
  justify-content: center;
  flex-direction: column;
  overflow: hidden;
  padding: 0.3em 0.8em;
  word-wrap: break-word;
  font-size: var(--font-size);
  font-family: var(--font-family);
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}

/* ==========  Rows  ========== */

.flexlayout__row {
  display: flex;
  flex-basis: 0px;
  min-width: 0; min-height: 0;
  position: relative;
  box-sizing: border-box;
  overflow: hidden;
}

/* ==========  Tabsets  ========== */

.flexlayout__tabset {
  display: flex;
  flex-direction: column;
  position: relative;
  background-color: var(--color-tabset-background);
  box-sizing: border-box;
  font-family: var(--font-family);
  overflow: hidden;
  flex-grow: 1;
  border-radius: 2px;
}
.flexlayout__tabset_container {
  display: flex;
  flex-basis: 0px;
  min-width: 0; min-height: 0;
  flex-direction: column;
  overflow: hidden;
  flex-grow: 1;
}
.flexlayout__tabset_tab_divider {
  width: 4px;
}
.flexlayout__tabset_content {
  display: flex;
  flex-basis: 0px;
  min-width: 0; min-height: 0;
  flex-grow: 1;
  box-sizing: border-box;
  position: relative;
}
.flexlayout__tabset_leading {
  display: flex;
}
.flexlayout__tabset_header {
  display: flex;
  align-items: center;
  padding: 3px 3px 3px 5px;
  box-sizing: border-box;
  border-bottom: 1px solid var(--color-tabset-divider-line);
  color: var(--color-tabset-header);
  background-color: var(--color-tabset-header-background);
  font-size: var(--font-size);
}
.flexlayout__tabset_header_content {
  flex-grow: 1;
}

/* Tabbar — the strip where tab buttons live */
.flexlayout__tabset_tabbar_outer {
  box-sizing: border-box;
  background-color: var(--bg-activity);
  overflow: hidden;
  display: flex;
  font-size: var(--font-size);
}
.flexlayout__tabset_tabbar_outer_top {
  padding: 0px 2px;
  border-bottom: 1px solid var(--color-tabset-divider-line);
}
.flexlayout__tabset_tabbar_outer_bottom {
  padding: 0px 2px;
  border-top: 1px solid var(--color-tabset-divider-line);
}
.flexlayout__tabset_tabbar_inner {
  position: relative;
  box-sizing: border-box;
  display: flex;
  flex-grow: 1;
  scrollbar-width: none;
}
.flexlayout__tabset_tabbar_inner::-webkit-scrollbar {
  display: none;
}
.flexlayout__tabset_tabbar_inner_tab_container {
  position: relative;
  display: flex;
  padding-left: 4px;
  padding-right: 4px;
  box-sizing: border-box;
  white-space: nowrap;
}
.flexlayout__tabset_tabbar_inner_tab_container_top {
  border-top: 2px solid transparent;
}
.flexlayout__tabset_tabbar_inner_tab_container_bottom {
  border-bottom: 2px solid transparent;
}
.flexlayout__tabset-selected {
  background-color: var(--color-tabset-background-selected);
}
.flexlayout__tabset-maximized {
  background-color: var(--color-tabset-background-maximized);
}

/* ==========  Tab buttons  ========== */

.flexlayout__tab_button_stamp {
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  white-space: nowrap;
  box-sizing: border-box;
}
.flexlayout__tab {
  overflow: hidden;
  box-sizing: border-box;
  background-color: var(--color-tab-content);
  color: var(--color-text);
  position: relative;
}
.flexlayout__tab_moveable {
  position: relative;
  height: 100%;
  min-width: 1px; min-height: 1px;
  overflow: auto;
  box-sizing: border-box;
}
.flexlayout__tab_overlay {
  z-index: 20;
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background-color: rgba(0, 0, 0, 0.24);
}
.flexlayout__tab_button {
  display: flex;
  gap: 0.3em;
  align-items: center;
  box-sizing: border-box;
  padding: 3px 0.5em;
  cursor: pointer;
  border-radius: 2px;
  transition: background-color 0.1s ease;
}
.flexlayout__tab_button_stretch {
  background-color: transparent;
  color: var(--color-tab-selected);
  width: 100%;
  padding: 3px 0em;
  text-wrap: nowrap;
  display: flex;
  gap: 0.3em;
  align-items: center;
  box-sizing: border-box;
  cursor: pointer;
}
@media (hover: hover) {
  .flexlayout__tab_button_stretch:hover {
    color: var(--color-tab-selected);
  }
}
.flexlayout__tab_button--selected {
  background-color: var(--color-tab-selected-background);
  color: var(--color-tab-selected);
}
@media (hover: hover) {
  .flexlayout__tab_button:hover {
    color: var(--color-tab-selected);
    background-color: color-mix(in srgb, var(--line) 40%, transparent);
  }
}
.flexlayout__tab_button--unselected {
  background-color: var(--color-tab-unselected-background);
  color: var(--color-tab-unselected);
}
.flexlayout__tab_button_leading {
  display: flex;
}
.flexlayout__tab_button_content {
  display: flex;
  text-wrap: nowrap;
}
.flexlayout__tab_button_textbox {
  border: none;
  font-family: var(--font-family);
  font-size: var(--font-size);
  color: var(--color-tab-textbox);
  background-color: var(--color-tab-textbox-background);
  border: 1px solid var(--line);
  border-radius: 3px;
  width: 10em;
}
.flexlayout__tab_button_textbox:focus {
  outline: none;
  border-color: var(--cyan);
}
.flexlayout__tab_button_trailing {
  display: flex;
  visibility: hidden;
  border-radius: 4px;
}
.flexlayout__tab_button_trailing:hover {
  background-color: var(--color-toolbar-button-hover);
}
@media (hover: hover) {
  .flexlayout__tab_button:hover .flexlayout__tab_button_trailing {
    visibility: visible;
  }
}
.flexlayout__tab_button--selected .flexlayout__tab_button_trailing {
  visibility: visible;
}
.flexlayout__tab_button_overflow {
  display: flex;
  align-items: center;
  border: none;
  color: var(--color-overflow);
  font-size: inherit;
  background-color: transparent;
  width: 2em;
  overflow: hidden;
}

/* ==========  Tab toolbar (sticky buttons area)  ========== */

.flexlayout__tab_toolbar {
  display: flex;
  align-items: center;
  gap: 0.3em;
  padding-left: 0.5em;
  padding-right: 0.3em;
}
.flexlayout__tab_toolbar_icon {
  border: none;
  outline: none;
  font-size: inherit;
  margin: 0;
  background-color: transparent;
  padding: 1px;
}
.flexlayout__tab_toolbar_button {
  border: none;
  outline: none;
  font-size: inherit;
  margin: 0;
  background-color: transparent;
  border-radius: 4px;
  padding: 1px;
  transition: background-color 0.1s ease;
}
@media (hover: hover) {
  .flexlayout__tab_toolbar_button:hover {
    background-color: var(--color-toolbar-button-hover);
  }
}
.flexlayout__tab_toolbar_sticky_buttons_container {
  display: flex;
  gap: 0.3em;
  padding-left: 5px;
  align-items: center;
}

/* ==========  Borders  ========== */

.flexlayout__border {
  box-sizing: border-box;
  overflow: hidden;
  display: flex;
  font-size: var(--font-size);
  font-family: var(--font-family);
  color: var(--color-border);
  background-color: var(--color-border-background);
}
.flexlayout__border_tab_contents {
  box-sizing: border-box;
  overflow: hidden;
  background-color: var(--color-border-tab-content);
}
.flexlayout__border_leading {
  display: flex;
}
.flexlayout__border_top {
  border-bottom: 1px solid var(--color-border-divider-line);
  align-items: center;
}
.flexlayout__border_bottom {
  border-top: 1px solid var(--color-border-divider-line);
  align-items: center;
}
.flexlayout__border_left {
  border-right: 1px solid var(--color-border-divider-line);
  align-content: center;
  flex-direction: column;
}
.flexlayout__border_right {
  border-left: 1px solid var(--color-border-divider-line);
  align-content: center;
  flex-direction: column;
}
.flexlayout__border_inner {
  position: relative;
  box-sizing: border-box;
  align-items: center;
  display: flex;
  flex-grow: 1;
  scrollbar-width: none;
}
.flexlayout__border_inner::-webkit-scrollbar {
  display: none;
}
.flexlayout__border_inner_tab_container {
  white-space: nowrap;
  display: flex;
  padding-left: 2px;
  padding-right: 2px;
  box-sizing: border-box;
  position: absolute;
}
.flexlayout__border_inner_tab_container_right {
  transform-origin: top left;
  transform: rotate(90deg);
}
.flexlayout__border_inner_tab_container_left {
  flex-direction: row-reverse;
  transform-origin: top right;
  transform: rotate(-90deg);
}
.flexlayout__border_tab_divider {
  width: 4px;
}
.flexlayout__border_button {
  display: flex;
  gap: 0.3em;
  align-items: center;
  cursor: pointer;
  padding: 3px 0.5em;
  margin: 2px 0px;
  box-sizing: border-box;
  white-space: nowrap;
  border-radius: 2px;
  transition: background-color 0.1s ease;
}
.flexlayout__border_button--selected {
  background-color: var(--color-border-tab-selected-background);
  color: var(--color-border-tab-selected);
}
@media (hover: hover) {
  .flexlayout__border_button:hover {
    color: var(--color-border-tab-selected);
  }
}
.flexlayout__border_button--unselected {
  background-color: var(--color-border-tab-unselected-background);
  color: var(--color-border-tab-unselected);
}
.flexlayout__border_button_leading {
  display: flex;
}
.flexlayout__border_button_content {
  display: flex;
}
.flexlayout__border_button_trailing {
  display: flex;
  border-radius: 4px;
  visibility: hidden;
}
@media (hover: hover) {
  .flexlayout__border_button:hover .flexlayout__border_button_trailing {
    visibility: visible;
  }
}
.flexlayout__border_button--selected .flexlayout__border_button_trailing {
  visibility: visible;
}
.flexlayout__border_toolbar {
  display: flex;
  gap: 0.3em;
  align-items: center;
}
.flexlayout__border_toolbar_left,
.flexlayout__border_toolbar_right {
  flex-direction: column;
  padding-top: 0.5em;
  padding-bottom: 0.3em;
}
.flexlayout__border_toolbar_top,
.flexlayout__border_toolbar_bottom {
  padding-left: 0.5em;
  padding-right: 0.3em;
}
.flexlayout__border_toolbar_button {
  border: none;
  outline: none;
  font-size: inherit;
  background-color: transparent;
  border-radius: 4px;
  padding: 1px;
}
@media (hover: hover) {
  .flexlayout__border_toolbar_button:hover {
    background-color: var(--color-toolbar-button-hover);
  }
}
.flexlayout__border_toolbar_button_overflow {
  display: flex;
  align-items: center;
  border: none;
  color: var(--color-overflow);
  font-size: inherit;
  background-color: transparent;
  width: 1.5em;
}

/* ==========  Popup menus  ========== */

.flexlayout__popup_menu {
  font-size: var(--font-size);
  font-family: var(--font-family);
}
.flexlayout__popup_menu_item {
  padding: 4px 10px;
  white-space: nowrap;
  cursor: pointer;
  border-radius: 3px;
  transition: background-color 0.1s ease;
}
.flexlayout__popup_menu_item--selected {
  font-weight: 500;
  background-color: var(--color-tab-selected-background);
  color: var(--color-tab-selected);
}
@media (hover: hover) {
  .flexlayout__popup_menu_item:hover {
    background-color: var(--cyan);
    color: var(--text-light);
  }
}
.flexlayout__popup_menu_container {
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  border: 1px solid var(--color-popup-border);
  color: var(--color-popup-unselected);
  background: var(--color-popup-unselected-background);
  border-radius: 4px;
  position: absolute;
  z-index: 1000;
  max-height: 50%;
  min-width: 120px;
  overflow: auto;
  padding: 4px;
}

/* ==========  Floating windows  ========== */

.flexlayout__floating_window_body {
  height: 100%;
}
.flexlayout__floating_window_content {
  left: 0; top: 0; right: 0; bottom: 0;
  position: absolute;
}

/* ==========  Error boundary  ========== */

.flexlayout__error_boundary_container {
  left: 0; top: 0; right: 0; bottom: 0;
  position: absolute;
  display: flex;
  justify-content: center;
}
.flexlayout__error_boundary_content {
  display: flex;
  align-items: center;
}

/* ==========  Misc helpers  ========== */

.flexlayout__border_sizer {
  position: absolute;
  top: -30000px;
  padding-top: 6px;
  padding-bottom: 5px;
  font-size: var(--font-size);
  font-family: var(--font-family);
}
.flexlayout__mini_scrollbar {
  position: absolute;
  background-color: var(--color-mini-scroll-indicator);
  border-radius: 5px;
  width: var(--size-mini-scroll-indicator);
  height: var(--size-mini-scroll-indicator);
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
}
.flexlayout__mini_scrollbar:hover {
  background-color: var(--color-mini-scroll-indicator-hovered);
}
.flexlayout__mini_scrollbar_container {
  position: relative;
  display: flex;
  flex-grow: 1;
  overflow: hidden;
}
@media (hover: hover) {
  .flexlayout__mini_scrollbar_container:hover .flexlayout__mini_scrollbar {
    opacity: 1;
    visibility: visible;
  }
}
