/**
 * ValleyTori Flow - Brand Theme Overlay
 * ============================================================================
 * Comprehensive theme for both light and dark mode.
 * Ensures ALL text is readable against its background.
 *
 * Brand Colors:
 *   Coral (Primary):      #FF7B71
 *   Medium Teal:          #5ABFBA
 *   Deep Teal:            #005F5B
 *   Pale Mint:            #E0EDEB
 *   White (Surface):      #FFFFFF
 *   Text Dark:            #1A1A1A
 * ============================================================================
 */

/* ===========================================================================
   LIGHT MODE (default)
   =========================================================================== */
:root {
  --vt-coral: #FF7B71;
  --vt-coral-hover: #f06b60;
  --vt-coral-light: rgba(255, 123, 113, 0.15);
  --vt-teal: #5ABFBA;
  --vt-teal-hover: #4dada8;
  --vt-teal-light: rgba(90, 191, 186, 0.15);
  --vt-deep-teal: #005F5B;
  --vt-mint: #E0EDEB;
  --vt-white: #FFFFFF;
  --vt-text: #1A1A1A;
  --vt-text-muted: #5a5a5a;
  --vt-border: #d1ddd9;
  --vt-panel-bg: #f7faf9;
  --vt-surface: #FFFFFF;
  --vt-canvas: #f2f7f6;
}

/* ===========================================================================
   DARK MODE - Complete override so nothing is unreadable
   =========================================================================== */
body.geDarkMode {
  --vt-text: #e8efed;
  --vt-text-muted: #a0b5b0;
  --vt-border: #2e4a46;
  --vt-panel-bg: #1a2e2c;
  --vt-surface: #1e3331;
  --vt-canvas: #162624;
  --vt-mint: #0f2321;
  --vt-white: #1e3331;
}

/* --- Dark mode: Override Draw.io's built-in dark CSS vars --- */
body.geDarkMode {
  --ge-panel-color: var(--vt-panel-bg) !important;
  --ge-dark-panel-color: var(--vt-panel-bg) !important;
  --dark-text-color: var(--vt-text) !important;
  --dark-accent-color: #0a3634 !important;
  --dark-accent-text-color: #5ABFBA !important;
  --toolbar-color: var(--vt-panel-bg) !important;
}

/* ===========================================================================
   TYPOGRAPHY
   =========================================================================== */
body.geEditor {
  font-family: 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.geTitle, .geMenubar, .geToolbar .geLabel,
.geDialog h2, .geDialog h3,
.geSidebarContainer .geTitle,
.mxWindow .geTitle {
  font-family: 'Nunito', sans-serif;
  font-weight: 600;
}

.geDialog, .geDialog input, .geDialog select, .geDialog textarea,
.geFormatSection, .geSidebarContainer, .mxCellEditor {
  font-family: 'Source Sans 3', sans-serif;
}

/* ===========================================================================
   MENU BAR (top) - Deep teal with white text - ALWAYS
   =========================================================================== */
.geMenubar {
  background: var(--vt-deep-teal) !important;
  color: #fff !important;
}

.geMenubar .geItem,
.geMenubar .geStatus,
.geMenubar a {
  color: #fff !important;
  font-family: 'Nunito', sans-serif;
  font-weight: 600;
}

.geMenubar .geItem:hover {
  background: rgba(255,255,255,0.12) !important;
}

/* Title text "Untitled Diagram" */
.geMenubar + div a,
.geMenubar ~ a {
  color: #c8e0de !important;
}

/* ===========================================================================
   TOOLBAR
   =========================================================================== */
.geToolbar {
  background: var(--vt-panel-bg) !important;
  border-bottom: 1px solid var(--vt-border) !important;
}

body.geDarkMode .geToolbar {
  background: var(--vt-panel-bg) !important;
}

/* Toolbar icon brightness in dark mode */
body.geDarkMode .geToolbar img,
body.geDarkMode .geToolbar svg {
  filter: invert(0.85);
}

/* ===========================================================================
   POPUP MENUS / DROPDOWNS - Must be readable!
   =========================================================================== */
.mxPopupMenu {
  background: var(--vt-surface) !important;
  border: 1px solid var(--vt-border) !important;
  border-radius: 10px !important;
  box-shadow: 0 4px 16px rgba(0,0,0,0.15) !important;
  overflow: hidden;
}

.mxPopupMenu td {
  color: var(--vt-text) !important;
}

.mxPopupMenu td.mxPopupMenuItem {
  color: var(--vt-text) !important;
  padding: 6px 12px !important;
}

.mxPopupMenu td.mxPopupMenuItem:hover {
  background: rgba(90,191,186,0.15) !important;
}

/* Menu separator */
.mxPopupMenu hr {
  border-color: var(--vt-border) !important;
}

/* Submenu arrows */
body.geDarkMode .mxPopupMenu img {
  filter: invert(0.8);
}

/* ===========================================================================
   SIDEBAR (left panel) - full height, scrollable
   =========================================================================== */
.geSidebarContainer {
  background: var(--vt-panel-bg) !important;
  border-right: 1px solid var(--vt-border) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* Ensure sidebar content fills available space */
.geSidebarContainer > div {
  min-height: 0 !important;
}

/* Section headers: General, Misc, etc. */
.geSidebarContainer .geTitle {
  background: var(--vt-deep-teal) !important;
  color: #ffffff !important;
  border-bottom: 1px solid rgba(0,0,0,0.15);
  padding: 8px 12px;
  font-size: 14px;
}

.geSidebarContainer .geTitle:hover {
  background: #00716c !important;
}

/* Sidebar section icons - make visible in dark mode */
body.geDarkMode .geSidebarContainer .geTitle img {
  filter: invert(0.9);
}

/* Search input in sidebar */
.geSidebarContainer input[type="text"],
.geSidebarContainer input[type="search"] {
  background: var(--vt-surface) !important;
  color: var(--vt-text) !important;
  border: 1px solid var(--vt-border) !important;
  border-radius: 8px !important;
  padding: 8px 12px !important;
  font-family: 'Source Sans 3', sans-serif;
}

.geSidebarContainer input:focus {
  border-color: var(--vt-teal) !important;
  box-shadow: 0 0 0 3px rgba(90,191,186,0.2);
}

/* Shape palette items in sidebar - lighten in dark mode */
body.geDarkMode .geSidebarContainer .geItem img {
  filter: invert(0.8) hue-rotate(180deg);
  opacity: 0.9;
}

/* "+ More Shapes" button */
.geSidebarContainer .geBtn {
  background: var(--vt-coral) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 8px !important;
}

/* Scratchpad text */
.geSidebarContainer .geTitle span,
.geSidebarContainer .geTitle a {
  color: #fff !important;
}

/* ===========================================================================
   FORMAT PANEL (right panel)
   IMPORTANT: Do NOT add border-radius or border to inputs/buttons here.
   Draw.io uses position:absolute for steppers, color pickers, etc.
   Adding borders/radius shifts layout and breaks those controls.
   =========================================================================== */
.geFormatContainer {
  background: var(--vt-panel-bg) !important;
  border-left: 1px solid var(--vt-border) !important;
  color: var(--vt-text) !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
}

/* Text readability in format panel */
body.geDarkMode .geFormatContainer,
body.geDarkMode .geFormatContainer div,
body.geDarkMode .geFormatContainer span,
body.geDarkMode .geFormatContainer label,
body.geDarkMode .geFormatContainer a,
body.geDarkMode .geFormatContainer td {
  color: var(--vt-text) !important;
}

/* Section headers */
.geFormatSectionTitle {
  color: var(--vt-text) !important;
  font-family: 'Nunito', sans-serif;
  font-weight: 600;
}

/* Dark mode: invert icons so they're visible */
body.geDarkMode .geFormatContainer img.geAdaptiveAsset {
  filter: invert(0.8);
}

/* Color picker buttons - do NOT break their layout */
.geFormatContainer .geColorBtn {
  border-radius: 4px !important;
}

/* Stepper arrows - dark mode visibility */
body.geDarkMode .geFormatContainer .geBtnStepper div {
  filter: invert(0.8);
}

/* ===========================================================================
   BUTTONS
   =========================================================================== */
/* Primary action buttons in dialogs (Create, OK, Save) */
.geDialog .geBtn:not(.geBtnCancel),
.mxWindow .geBtn:not(.geBtnCancel) {
  background: var(--vt-coral) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 8px !important;
  font-family: 'Source Sans 3', sans-serif;
  font-weight: 600;
  padding: 8px 24px;
  cursor: pointer;
}

.geDialog .geBtn:not(.geBtnCancel):hover,
.mxWindow .geBtn:not(.geBtnCancel):hover {
  background: var(--vt-coral-hover) !important;
}

/* Cancel / secondary buttons */
.geBtnCancel {
  background: transparent !important;
  color: var(--vt-teal) !important;
  border: 1px solid var(--vt-teal) !important;
  border-radius: 8px !important;
  font-weight: 600;
  padding: 8px 24px;
}

.geBtnCancel:hover {
  background: rgba(90,191,186,0.1) !important;
}

/* Utility buttons in panels (Edit Data, Clear Default Style) */
.geFormatContainer > div > div > .geBtn,
.geFormatContent > div > .geBtn {
  background: var(--vt-surface) !important;
  color: var(--vt-text) !important;
  border: 1px solid var(--vt-border) !important;
  border-radius: 8px !important;
  font-family: 'Source Sans 3', sans-serif;
  text-align: center !important;
  cursor: pointer;
}

.geFormatContainer > div > div > .geBtn:hover,
.geFormatContent > div > .geBtn:hover {
  background: rgba(90,191,186,0.08) !important;
  border-color: var(--vt-teal) !important;
}

/* ===========================================================================
   DIALOGS & WINDOWS
   =========================================================================== */
.geDialog,
.mxWindow {
  border-radius: 10px !important;
  border: 1px solid var(--vt-border) !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.18) !important;
  background: var(--vt-surface) !important;
  color: var(--vt-text) !important;
}

/* Dialog text must be readable */
.geDialog div,
.geDialog span,
.geDialog label,
.geDialog p,
.geDialog td,
.geDialog th {
  color: var(--vt-text) !important;
}

.geDialog input[type="text"],
.geDialog input[type="number"],
.geDialog input[type="url"],
.geDialog select,
.geDialog textarea {
  background: var(--vt-surface) !important;
  color: var(--vt-text) !important;
  border: 1px solid var(--vt-border) !important;
  border-radius: 8px !important;
  padding: 8px 12px !important;
}

.geDialog input:focus,
.geDialog select:focus,
.geDialog textarea:focus {
  border-color: var(--vt-teal) !important;
  box-shadow: 0 0 0 3px rgba(90,191,186,0.2) !important;
}

.mxWindow .mxWindowTitle {
  background: var(--vt-deep-teal) !important;
  color: #fff !important;
  font-family: 'Nunito', sans-serif;
  font-weight: 600;
  padding: 10px 14px;
}

/* Dialog backdrop */
.mxWindow + div[style*="background"],
div.geBackground {
  background: rgba(0,0,0,0.4) !important;
}

/* ===========================================================================
   TABS (page tabs at bottom)
   =========================================================================== */
.geTabContainer,
div[class*="geTab"] {
  background: var(--vt-panel-bg) !important;
}

/* Page tab text */
.geTabContainer span,
.geTabContainer div {
  color: var(--vt-text) !important;
}

/* Bottom bar icons */
body.geDarkMode .geTabContainer img {
  filter: invert(0.8);
}

/* ===========================================================================
   CANVAS / WORKSPACE
   =========================================================================== */
body.geEditor:not(.geDarkMode) .mxGraphContainer {
  background: var(--vt-canvas) !important;
}

/* ===========================================================================
   SCROLLBARS
   =========================================================================== */
.geSidebarContainer::-webkit-scrollbar,
.geFormatContainer::-webkit-scrollbar { width: 6px; }

.geSidebarContainer::-webkit-scrollbar-track,
.geFormatContainer::-webkit-scrollbar-track { background: transparent; }

.geSidebarContainer::-webkit-scrollbar-thumb,
.geFormatContainer::-webkit-scrollbar-thumb {
  background: var(--vt-teal); border-radius: 3px;
}

/* ===========================================================================
   STATUS BAR / BOTTOM AREA
   =========================================================================== */
.geFooterContainer, .geStatusbar {
  background: var(--vt-panel-bg) !important;
  border-top: 1px solid var(--vt-border) !important;
  color: var(--vt-text-muted) !important;
}

/* ===========================================================================
   SHARE BUTTON - Hidden (no sharing feature yet)
   =========================================================================== */
.geMenubar .geBtn[style*="background-color"],
.geMenubar button:has(> .geButton:last-child),
.geMenubar .geButton[style*="Share"],
div.geButton:has(> span:empty) + button,
.geMenubar div[style*="float: right"] > button {
  display: none !important;
}

/* Target the Share button specifically by its coral background and position */
.geMenubar ~ button[style*="background"],
button.geBtn[style*="background-color: rgb(255"] {
  display: none !important;
}

/* ===========================================================================
   TOOLTIP
   =========================================================================== */
.mxTooltip {
  background: var(--vt-surface) !important;
  color: var(--vt-text) !important;
  border: 1px solid var(--vt-border) !important;
  border-radius: 8px !important;
  box-shadow: 0 2px 8px rgba(0,0,0,0.12) !important;
}

/* ===========================================================================
   COLOR PICKER
   =========================================================================== */
.geColorDialog {
  background: var(--vt-surface) !important;
}

.geColorDialog div,
.geColorDialog span {
  color: var(--vt-text) !important;
}

/* ===========================================================================
   LOADING / SPLASH
   =========================================================================== */
#geInfo .geBlock h1 {
  font-family: 'Nunito', sans-serif;
  font-weight: 700;
  color: #5ABFBA;
  font-size: 28px;
}

#geInfo .geBlock p {
  font-family: 'Source Sans 3', sans-serif;
  color: #a0b5b0;
  font-size: 16px;
  line-height: 1.5;
}

#geInfo .geBlock h2 {
  color: var(--vt-coral);
}

/* ===========================================================================
   AI PANEL (future - shown when AI_FEATURES_ENABLED=1)
   =========================================================================== */
body[data-ai-enabled="0"] .vtf-ai-panel { display: none !important; }

.vtf-ai-panel {
  border-top: 2px solid var(--vt-coral);
  padding: 12px;
  background: var(--vt-surface);
}

.vtf-ai-panel .vtf-ai-title {
  font-family: 'Nunito', sans-serif;
  font-weight: 700;
  font-size: 14px;
  color: var(--vt-teal);
}

/* ===========================================================================
   GLOBAL CATCH-ALL: Fix any remaining unreadable text
   =========================================================================== */

/* Ensure ALL panel text in dark mode is light */
body.geDarkMode .geSidebarContainer,
body.geDarkMode .geSidebarContainer *,
body.geDarkMode .geFormatContainer,
body.geDarkMode .geFormatContainer * {
  color: var(--vt-text);
}

/* Re-apply white text on deep teal headers after catch-all */
body.geDarkMode .geSidebarContainer .geTitle,
body.geDarkMode .geSidebarContainer .geTitle * {
  color: #fff !important;
}

body.geDarkMode .geMenubar,
body.geDarkMode .geMenubar * {
  color: #fff !important;
}

/* Fix dark-on-dark for any inline-styled elements */
body.geDarkMode [style*="color: rgb(0, 0, 0)"],
body.geDarkMode [style*="color:rgb(0, 0, 0)"],
body.geDarkMode [style*="color: rgb(64, 64, 64)"],
body.geDarkMode [style*="color: #000"],
body.geDarkMode [style*="color:#000"],
body.geDarkMode [style*="color: black"] {
  color: var(--vt-text) !important;
}

/* --- Button text centering --- */
.geDialog .geBtn,
.geDialog .geBtnCancel,
.mxWindow .geBtn {
  text-align: center !important;
}

/* ===========================================================================
   MORE SHAPES DIALOG - Rounded window
   =========================================================================== */
.geDialog[style*="width: 600"],
.geDialog[style*="width: 80"],
div[class="geDialog"] {
  border-radius: 14px !important;
  overflow: hidden !important;
}

/* More Shapes inner content area */
.geDialog .geSprite,
.geDialog div[style*="overflow: auto"] {
  border-radius: 8px;
}

/* ===========================================================================
   SIDEBAR CATEGORY TABS (Custom / Business / Hardware Engineer)
   =========================================================================== */
.vtf-category-tabs {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px 6px;
  border-top: 1px solid var(--vt-border);
}

.vtf-category-tab {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 8px;
  cursor: pointer;
  font-family: 'Nunito', sans-serif;
  font-weight: 600;
  font-size: 12px;
  color: var(--vt-text);
  background: var(--vt-surface);
  border: 1px solid var(--vt-border);
  transition: all 0.15s ease;
  user-select: none;
  -webkit-user-select: none;
}

.vtf-category-tab:hover {
  border-color: var(--vt-teal);
  background: rgba(90, 191, 186, 0.08);
}

.vtf-category-tab.vtf-active {
  border-color: var(--vt-teal);
  background: rgba(90, 191, 186, 0.12);
  color: var(--vt-teal);
}

.vtf-category-tab .vtf-cat-icon {
  width: 16px;
  height: 16px;
  border-radius: 4px;
  flex-shrink: 0;
}

.vtf-category-tab .vtf-cat-label {
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.vtf-category-tab .vtf-cat-count {
  font-size: 10px;
  color: var(--vt-text-muted);
  font-weight: 400;
}

/* Transitions */
.geBtn, .geBtnCancel, .geTab,
.geSidebarContainer .geTitle,
.mxPopupMenu td.mxPopupMenuItem,
input, select, textarea {
  transition: all 0.15s ease;
}

/* ===========================================================================
   VALLEYTORI UI DIFFERENTIATION
   More rounded, spacious, and branded compared to Draw.io's flat look.
   =========================================================================== */

/* --- Sidebar section headers: pill-shaped with brand accent --- */
.geSidebarContainer .geTitle {
  margin: 4px 6px !important;
  border-radius: 8px !important;
  padding: 9px 14px !important;
  font-size: 13px !important;
  letter-spacing: 0.3px;
  border: none !important;
}

/* --- Sidebar shape palette: add breathing room --- */
.geSidebarContainer > div > div {
  padding: 2px 4px;
}

/* --- Sidebar search: more rounded, icon-styled --- */
.geSidebarContainer input[type="text"],
.geSidebarContainer input[type="search"] {
  border-radius: 20px !important;
  padding: 8px 16px 8px 14px !important;
  font-size: 13px !important;
  margin: 6px !important;
}

/* --- Scratchpad area: softer container --- */
.geSidebarContainer div[style*="border-style: dashed"] {
  border-radius: 10px !important;
  border-color: var(--vt-border) !important;
}

/* --- "+ More Shapes" button: centered coral pill --- */
.geSidebarContainer .geBtn.gePrimaryBtn,
.geSidebarContainer button[title="More Shapes"],
.geSidebarContainer > div > button,
.geSidebarContainer > button {
  background: var(--vt-coral) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 20px !important;
  padding: 8px 24px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  margin: 10px auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  max-width: 160px !important;
  cursor: pointer;
  text-align: center !important;
}

.geSidebarContainer .geBtn.gePrimaryBtn:hover,
.geSidebarContainer button[title="More Shapes"]:hover,
.geSidebarContainer > div > button:hover,
.geSidebarContainer > button:hover {
  background: var(--vt-coral-hover) !important;
}

/* The footer container holding More Shapes */
.geSidebarFooter {
  display: flex !important;
  justify-content: center !important;
  padding: 8px 0 !important;
}

/* --- Format panel sections: card-like with rounded corners --- */
.geFormatContainer > div > div {
  border-radius: 0 !important;
}

.geFormatContainer .geFormatSection {
  margin: 0 !important;
  padding: 10px 12px !important;
  border-bottom: 1px solid var(--vt-border) !important;
}

/* --- Format panel tabs (Diagram/Style) --- */
.geFormatTitleContainer {
  display: flex !important;
  border-bottom: 1px solid var(--vt-border);
}

.geFormatTitle {
  background: var(--vt-panel-bg) !important;
  padding: 8px 16px !important;
  text-align: center !important;
  cursor: pointer;
  color: var(--vt-text) !important;
  font-family: 'Nunito', sans-serif !important;
  font-weight: 600 !important;
  font-size: 13px !important;
  flex: 1;
}

.geFormatTitle:hover {
  background: rgba(90,191,186,0.08) !important;
}

.geActiveFormatTitle {
  border-bottom: 2px solid var(--vt-teal) !important;
  color: var(--vt-teal) !important;
}

/* --- Toolbar: subtle separator between icon groups --- */
.geToolbar {
  padding: 2px 4px !important;
  gap: 1px;
}

.geToolbar .geButton {
  border-radius: 6px !important;
  padding: 4px !important;
  margin: 0 1px !important;
}

.geToolbar .geButton:hover {
  background: rgba(90, 191, 186, 0.12) !important;
  border-radius: 6px !important;
}

/* --- Page tabs: rounded pill-style at bottom --- */
.geTabContainer div[style*="border"] {
  border-radius: 6px 6px 0 0 !important;
}

/* --- Bottom bar: cleaner with branded spacing --- */
.geTabContainer {
  padding: 4px 8px 0 !important;
  border-top: 1px solid var(--vt-border) !important;
}

/* --- Dialogs: more rounded, branded header --- */
.geDialog {
  border-radius: 14px !important;
  overflow: hidden !important;
}

.mxWindow {
  border-radius: 12px !important;
  overflow: hidden !important;
}

/* --- Menu items: more padding, rounded hover --- */
.mxPopupMenu td.mxPopupMenuItem {
  padding: 8px 16px !important;
  border-radius: 0 !important;
}

.mxPopupMenu {
  padding: 4px 0 !important;
  border-radius: 12px !important;
}

/* --- App icon (top-left logo): high-res brand PNG, no link behavior --- */
.geAppIcon {
  border-radius: 8px !important;
  background-image: url('../images/vtf-icon-80.png?v=3') !important;
  background-size: 30px 30px !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  width: 34px !important;
  height: 34px !important;
  image-rendering: -webkit-optimize-contrast;
  image-rendering: crisp-edges;
  pointer-events: none !important;
  cursor: default !important;
}

/* --- Title bar: branded file name styling --- */
.geMenubar ~ a,
.geMenubar + div > a {
  font-family: 'Nunito', sans-serif !important;
  font-weight: 600 !important;
  font-size: 15px !important;
}

/* --- Color picker: rounder --- */
.geColorDialog,
.geDialog table {
  border-radius: 10px !important;
}

/* --- Zoom control: pill style --- */
.geToolbar select {
  border-radius: 6px !important;
  padding: 2px 6px !important;
  background: var(--vt-surface) !important;
  color: var(--vt-text) !important;
  border: 1px solid var(--vt-border) !important;
}

/* --- Shape palette hover: subtle teal glow --- */
.geSidebarContainer .geItem:hover,
.geSidebarContainer a:hover {
  background: rgba(90, 191, 186, 0.08) !important;
  border-radius: 6px;
}

/* --- Subtle brand accent bar on top of editor --- */
.geMenubar::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--vt-coral), var(--vt-teal));
}

/* --- Unsaved changes banner: brand colors --- */
.geMenubar .geStatus[style*="background-color"] {
  border-radius: 6px !important;
  font-family: 'Source Sans 3', sans-serif !important;
  font-size: 12px !important;
  padding: 4px 12px !important;
}

/* --- Loading splash: centered brand feel --- */
#geInfo {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
}

#geInfo .geBlock {
  max-width: 500px;
}
