/* ============================================================================
   OJUDS — Shared UI Theme  (theme.css)
   ----------------------------------------------------------------------------
   ONE file, linked by EVERY page. It does two things:

     1. Declares design tokens (CSS custom properties) for BOTH looks:
          - :root                      -> "classic" (the current look)  [DEFAULT]
          - :root[data-theme="dark"]   -> "dark" instrument look

     2. Applies the DARK skin to generic/base elements and common wrappers,
        scoped ENTIRELY under [data-theme="dark"].

   >>> KEY GUARANTEE <<<
   In "classic" mode (no data-theme, or data-theme="classic") this file adds
   NO visible rules. Linking it changes NOTHING until a user switches to dark.
   That is what makes adoption zero-risk and instantly reversible.

   Runtime switching is driven by the `data-theme` attribute on <html>,
   set by /js/theme-switch.js (and a no-flash inline snippet in <head>).
   ============================================================================ */

/* ---------------------------------------------------------------------------
   1. TOKENS
   --------------------------------------------------------------------------- */
:root {
  /* Type (kept identical to the app's current stack so classic is unchanged) */
  --uds-font-ui:   'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  --uds-font-mono: 'Consolas', 'SF Mono', 'Ubuntu Mono', Menlo, 'Courier New', monospace;

  /* Geometry (shared by both themes) */
  --uds-r:    10px;   /* card / container radius        */
  --uds-r-sm: 7px;    /* control radius                 */
  --uds-r-xs: 5px;    /* chip / small radius            */

  /* ---- CLASSIC palette = the current look (inert unless a token is used) ---- */
  --uds-bg:          #f0f0f0;
  --uds-surface-1:   #f8f9fa;
  --uds-surface-2:   #ffffff;
  --uds-surface-3:   #e9ecef;
  --uds-line:        #dee2e6;
  --uds-line-2:      #ced4da;

  --uds-text-hi:     #333333;
  --uds-text:        #495057;
  --uds-text-dim:    #6c757d;

  --uds-accent:      #007bff;
  --uds-accent-ink:  #ffffff;
  --uds-accent-soft: #e7f1ff;

  --uds-header-bg:   #2c3e50;
  --uds-header-line: #233140;
  --uds-header-text: #ffffff;
  --uds-header-dim:  #bdc3c7;

  --uds-ok:      #28a745;
  --uds-warn:    #ffc107;
  --uds-danger:  #dc3545;
  --uds-info:    #17a2b8;

  --uds-primary-bg:  #007bff;
  --uds-primary-ink: #ffffff;

  --uds-focus: rgba(0, 123, 255, .25);
  --uds-shadow: 0 2px 4px rgba(0, 0, 0, .10);
}

/* ---- DARK palette = the "instrument cluster" look ------------------------- */
:root[data-theme="dark"] {
  --uds-bg:          #0e1217;
  --uds-surface-1:   #161b22;
  --uds-surface-2:   #1c232c;
  --uds-surface-3:   #232c37;
  --uds-line:        #28313c;
  --uds-line-2:      #37424f;

  --uds-text-hi:     #eaf0f6;
  --uds-text:        #a7b4c2;
  --uds-text-dim:    #66727f;

  --uds-accent:      #e0a458;   /* warm amber / copper — the single accent    */
  --uds-accent-ink:  #20160a;   /* dark ink for text on the amber             */
  --uds-accent-soft: #2a2114;

  --uds-header-bg:   #12171e;
  --uds-header-line: #28313c;
  --uds-header-text: #eaf0f6;
  --uds-header-dim:  #66727f;

  --uds-ok:      #4fbf83;
  --uds-warn:    #e6b34c;
  --uds-danger:  #e5626d;
  --uds-info:    #5aa9e6;

  --uds-primary-bg:  #e0a458;
  --uds-primary-ink: #20160a;

  --uds-focus: rgba(224, 164, 88, .30);
  --uds-shadow: 0 8px 24px -12px rgba(0, 0, 0, .70);
}

/* ===========================================================================
   1b. HEADER LAYOUT FIX (both themes)
   The header overflows when dev-role elements (Admin, Download Agent, user-info)
   are injected. These rules shrink/wrap items to keep it single-line on wide
   screens and wrapping gracefully on narrow ones.
   =========================================================================== */
.header-info {
  flex-wrap: wrap !important;
  gap: 8px !important;
  justify-content: flex-end;
}
.header-info .btn,
.header-nav .btn {
  padding: 4px 8px !important;
  font-size: 11px !important;
  white-space: nowrap;
}
.user-info {
  font-size: 12px !important;
  gap: 6px !important;
}
.header-title, .header h1 {
  font-size: 15px !important;
  white-space: nowrap;
}
.version-display {
  font-size: 10px !important;
}

/* ===========================================================================
   2. DARK SKIN — everything below is scoped to [data-theme="dark"] only.
      These rules give ANY page a coherent dark base. They use !important on
      color/background/border because they must override page-level inline
      styles and Bootstrap defaults. Classic mode is never touched.
   =========================================================================== */

/* ---- Ground + typography ------------------------------------------------- */
:root[data-theme="dark"] body {
  background: var(--uds-bg) !important;
  color: var(--uds-text) !important;
  font-family: var(--uds-font-ui);
}
:root[data-theme="dark"] h1,
:root[data-theme="dark"] h2,
:root[data-theme="dark"] h3,
:root[data-theme="dark"] h4,
:root[data-theme="dark"] h5,
:root[data-theme="dark"] h6 { color: var(--uds-text-hi) !important; }

:root[data-theme="dark"] a  { color: var(--uds-accent); }
:root[data-theme="dark"] hr { border-color: var(--uds-line) !important; }
:root[data-theme="dark"] ::selection { background: var(--uds-accent-soft); color: var(--uds-text-hi); }
:root[data-theme="dark"] small,
:root[data-theme="dark"] .text-muted { color: var(--uds-text-dim) !important; }

/* ---- Form controls ------------------------------------------------------- */
:root[data-theme="dark"] input,
:root[data-theme="dark"] select,
:root[data-theme="dark"] textarea,
:root[data-theme="dark"] .form-control {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-hi) !important;
  border: 1px solid var(--uds-line-2) !important;
  border-radius: var(--uds-r-sm);
}
:root[data-theme="dark"] input::placeholder,
:root[data-theme="dark"] textarea::placeholder { color: var(--uds-text-dim) !important; }

:root[data-theme="dark"] input:focus,
:root[data-theme="dark"] select:focus,
:root[data-theme="dark"] textarea:focus,
:root[data-theme="dark"] .form-control:focus {
  border-color: var(--uds-accent) !important;
  box-shadow: 0 0 0 3px var(--uds-focus) !important;
  outline: none;
}
:root[data-theme="dark"] label { color: var(--uds-text-dim) !important; }

/* Native dropdown arrow recolor for <select> */
:root[data-theme="dark"] select {
  appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%23e0a458'/></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: right 11px center !important;
  padding-right: 30px !important;
}

/* ---- Buttons (base + Bootstrap-style variants) --------------------------- */
:root[data-theme="dark"] .btn { border-radius: var(--uds-r-sm); }
:root[data-theme="dark"] .btn-primary,
:root[data-theme="dark"] .btn.btn-primary {
  background: var(--uds-primary-bg) !important;
  color: var(--uds-primary-ink) !important;
  border-color: transparent !important;
}
:root[data-theme="dark"] .btn-secondary {
  background: var(--uds-surface-3) !important;
  color: var(--uds-text-hi) !important;
  border: 1px solid var(--uds-line-2) !important;
}
:root[data-theme="dark"] .btn-success { background: var(--uds-ok) !important;     color: #05210f !important; border-color: transparent !important; }
:root[data-theme="dark"] .btn-danger  { background: var(--uds-danger) !important; color: #2a0b0f !important; border-color: transparent !important; }
:root[data-theme="dark"] .btn-warning { background: var(--uds-warn) !important;   color: #241a05 !important; border-color: transparent !important; }
:root[data-theme="dark"] .btn-info    { background: var(--uds-info) !important;   color: #04141f !important; border-color: transparent !important; }

/* ---- Tables -------------------------------------------------------------- */
:root[data-theme="dark"] table,
:root[data-theme="dark"] .table { color: var(--uds-text) !important; border-color: var(--uds-line) !important; }
:root[data-theme="dark"] th,
:root[data-theme="dark"] td { border-color: var(--uds-line) !important; }
:root[data-theme="dark"] thead th,
:root[data-theme="dark"] .table thead th {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-dim) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .table-striped tbody tr:nth-of-type(odd) { background: rgba(255,255,255,.02) !important; }
:root[data-theme="dark"] .table-hover tbody tr:hover { background: rgba(224,164,88,.06) !important; }

/* ---- Code / logs / pre --------------------------------------------------- */
:root[data-theme="dark"] pre,
:root[data-theme="dark"] code,
:root[data-theme="dark"] kbd {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-hi) !important;
  border-color: var(--uds-line) !important;
  font-family: var(--uds-font-mono);
}

/* ---- Bootstrap surfaces (cards, modals, dropdowns, nav) ------------------ */
:root[data-theme="dark"] .card,
:root[data-theme="dark"] .modal-content,
:root[data-theme="dark"] .dropdown-menu,
:root[data-theme="dark"] .list-group-item,
:root[data-theme="dark"] .popover {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .modal-header,
:root[data-theme="dark"] .modal-footer,
:root[data-theme="dark"] .card-header,
:root[data-theme="dark"] .card-footer { border-color: var(--uds-line) !important; }
:root[data-theme="dark"] .modal-backdrop { background: #05070a !important; }
:root[data-theme="dark"] .dropdown-item { color: var(--uds-text) !important; }
:root[data-theme="dark"] .dropdown-item:hover { background: var(--uds-surface-3) !important; color: var(--uds-text-hi) !important; }
:root[data-theme="dark"] .nav-tabs { border-color: var(--uds-line) !important; }
:root[data-theme="dark"] .nav-tabs .nav-link { color: var(--uds-text-dim) !important; border-color: transparent !important; }
:root[data-theme="dark"] .nav-tabs .nav-link.active {
  color: var(--uds-accent) !important;
  background: transparent !important;
  border-bottom: 2px solid var(--uds-accent) !important;
}
:root[data-theme="dark"] .badge { color: #fff; }

/* ---- Scrollbars ---------------------------------------------------------- */
:root[data-theme="dark"] ::-webkit-scrollbar { width: 10px; height: 10px; }
:root[data-theme="dark"] ::-webkit-scrollbar-thumb { background: var(--uds-line-2); border-radius: 5px; }
:root[data-theme="dark"] ::-webkit-scrollbar-track { background: transparent; }
:root[data-theme="dark"] * { scrollbar-color: var(--uds-line-2) transparent; }

/* ===========================================================================
   3. KNOWN PAGE SHELLS
      A curated set of bespoke wrappers used by the self-styled pages
      (login, editors, policy pages). Add more blocks here using the same
      pattern when a page keeps a light card in dark mode.
      -- WORKED EXAMPLE: login.html --
   =========================================================================== */
:root[data-theme="dark"] .login-container,
:root[data-theme="dark"] .form-container,
:root[data-theme="dark"] .editor-panel,
:root[data-theme="dark"] .content-card {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border: 1px solid var(--uds-line) !important;
  box-shadow: var(--uds-shadow) !important;
}
/* login.html uses a full-page gradient on <body>; neutralise it in dark */
:root[data-theme="dark"] body.login-page,
:root[data-theme="dark"] .login-bg {
  background: radial-gradient(1200px 600px at 50% -10%, #1a222c, var(--uds-bg)) !important;
}
:root[data-theme="dark"] .login-header h1 { color: var(--uds-text-hi) !important; }
:root[data-theme="dark"] .login-header p  { color: var(--uds-text-dim) !important; }

/* ---- Admin pages -------------------------------------------------------- */
:root[data-theme="dark"] .admin-container,
:root[data-theme="dark"] .admin-content,
:root[data-theme="dark"] .stats-container,
:root[data-theme="dark"] .commands-panel {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .admin-container .sidebar,
:root[data-theme="dark"] .admin-container nav {
  background: var(--uds-surface-1) !important;
  border-color: var(--uds-line) !important;
}

/* ---- Policy/legal pages (cookie, privacy, terms, license, manual, pricing) */
:root[data-theme="dark"] .container,
:root[data-theme="dark"] .content {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
  box-shadow: var(--uds-shadow) !important;
}
:root[data-theme="dark"] .warning-box {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line-2) !important;
}
:root[data-theme="dark"] .warning-box.danger {
  border-left-color: var(--uds-danger) !important;
}
:root[data-theme="dark"] .warning-box.info {
  border-left-color: var(--uds-info) !important;
}
:root[data-theme="dark"] .step-box {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .role-card {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}

/* ---- Terms page --------------------------------------------------------- */
:root[data-theme="dark"] .terms-container,
:root[data-theme="dark"] .terms-content {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .checkbox-wrapper label { color: var(--uds-text) !important; }

/* ---- Issues page -------------------------------------------------------- */
:root[data-theme="dark"] .issues-container {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}

/* ---- Messages page ------------------------------------------------------ */
:root[data-theme="dark"] .msg-container,
:root[data-theme="dark"] .msg-content {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .msg-header {
  background: var(--uds-surface-1) !important;
  border-color: var(--uds-line) !important;
}

/* ---- CCF editor / comparison -------------------------------------------- */
:root[data-theme="dark"] .ccf-editor-container,
:root[data-theme="dark"] .ccf-editor-header,
:root[data-theme="dark"] .data-grid-container,
:root[data-theme="dark"] .editor-group {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .editor-input,
:root[data-theme="dark"] .editor-label { color: var(--uds-text) !important; }

/* ---- VID / legacy-config editor toolbar + grid -------------------------- */
:root[data-theme="dark"] .toolbar {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-hi) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .toolbar button {
  background: var(--uds-surface-3) !important;
  color: var(--uds-text-hi) !important;
  border-color: var(--uds-line-2) !important;
}
:root[data-theme="dark"] .toolbar button:hover { background: var(--uds-accent-soft) !important; }
:root[data-theme="dark"] .toolbar button.write-btn { background: var(--uds-danger) !important; }
:root[data-theme="dark"] .header-panel {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .grid-container {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
}

/* ---- VAPS editor -------------------------------------------------------- */
:root[data-theme="dark"] .vaps-header {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text-hi) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .chart-card,
:root[data-theme="dark"] .chart-container {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .chart-card canvas,
:root[data-theme="dark"] .chart-container canvas {
  background: var(--uds-surface-1) !important;
}
:root[data-theme="dark"] .vaps-tabs .tab,
:root[data-theme="dark"] .vaps-tab { color: var(--uds-text-dim) !important; border-bottom-color: transparent !important; }
:root[data-theme="dark"] .vaps-tabs .tab.active,
:root[data-theme="dark"] .vaps-tab.active { color: var(--uds-accent) !important; border-bottom-color: var(--uds-accent) !important; }
:root[data-theme="dark"] .vaps-status { color: var(--uds-text-dim) !important; }

/* ---- CCF editor (ccf-editor.html) --------------------------------------- */
:root[data-theme="dark"] .ccf-editor-container { background: var(--uds-bg) !important; color: var(--uds-text) !important; }
:root[data-theme="dark"] .search-section {
  background: var(--uds-surface-1) !important;
  border: 1px solid var(--uds-line) !important;
  box-shadow: none !important;
}
:root[data-theme="dark"] .data-grid-container {
  background: var(--uds-surface-1) !important;
  border: 1px solid var(--uds-line) !important;
  box-shadow: none !important;
}
:root[data-theme="dark"] .ccf-table thead { background: var(--uds-surface-2) !important; }
:root[data-theme="dark"] .ccf-table th {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-dim) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .ccf-table td { border-color: var(--uds-line) !important; color: var(--uds-text) !important; }
:root[data-theme="dark"] .ccf-table tbody tr:hover { background: var(--uds-surface-2) !important; }
:root[data-theme="dark"] .ccf-table tbody tr.selected { background: rgba(90, 169, 230, .12) !important; }
:root[data-theme="dark"] .ccf-table tbody tr.modified { background: rgba(79, 191, 131, .12) !important; }
:root[data-theme="dark"] .ccf-table tbody tr.section-header-row { background: var(--uds-surface-2) !important; color: var(--uds-accent) !important; }
:root[data-theme="dark"] .edit-controls {
  background: var(--uds-surface-1) !important;
  border: 1px solid var(--uds-line) !important;
  box-shadow: none !important;
}
:root[data-theme="dark"] .edit-controls label { color: var(--uds-text) !important; }
/* CCF editor modal (confirmation popup) */
:root[data-theme="dark"] .ccf-editor-container .modal-content,
:root[data-theme="dark"] .ccf-editor-container .modal {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border: 1px solid var(--uds-line) !important;
}

/* ---- VBF browser -------------------------------------------------------- */
:root[data-theme="dark"] .vbf-file-item {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .vbf-file-item:hover { background: var(--uds-surface-2) !important; }
:root[data-theme="dark"] .search-box {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-hi) !important;
  border-color: var(--uds-line-2) !important;
}

/* ---- Log browser / log viewer ------------------------------------------- */
:root[data-theme="dark"] .log-container {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .log-content {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text) !important;
}
:root[data-theme="dark"] .tab-content {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
}

/* ---- Datalog ------------------------------------------------------------ */
:root[data-theme="dark"] .did-grid-container,
:root[data-theme="dark"] .live-values-container {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}

/* ---- Script help -------------------------------------------------------- */
:root[data-theme="dark"] .command-box,
:root[data-theme="dark"] .v1-content {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}

/* ---- PSCM shell --------------------------------------------------------- */
:root[data-theme="dark"] .config-panel,
:root[data-theme="dark"] .memory-panel {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}
:root[data-theme="dark"] .code-gate-box,
:root[data-theme="dark"] .modal-box {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}

/* ---- Chat popup --------------------------------------------------------- */
:root[data-theme="dark"] .chat-header {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-hi) !important;
}
:root[data-theme="dark"] .chat-input-container {
  background: var(--uds-surface-1) !important;
  border-color: var(--uds-line) !important;
}

/* ---- Console popup ------------------------------------------------------ */
:root[data-theme="dark"] .console-header {
  background: var(--uds-surface-2) !important;
  color: var(--uds-text-hi) !important;
}
:root[data-theme="dark"] .console-input-container {
  background: var(--uds-surface-1) !important;
  border-color: var(--uds-line) !important;
}

/* ---- admin-version.html purple gradient → dark -------------------------- */
:root[data-theme="dark"] body[style*="667eea"],
:root[data-theme="dark"] body {
  background: var(--uds-bg) !important;
}

/* ---- CCF scripts container (admin) -------------------------------------- */
:root[data-theme="dark"] .ccf-scripts-container {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}

/* ---- Switch container (admin-ccf-stats) --------------------------------- */
:root[data-theme="dark"] .switch-container,
:root[data-theme="dark"] .table-wrapper {
  background: var(--uds-surface-1) !important;
  color: var(--uds-text) !important;
  border-color: var(--uds-line) !important;
}

/* ===========================================================================
   4. FLOATING THEME TOGGLE (injected by theme-switch.js if not already present)
   =========================================================================== */
.uds-theme-toggle {
  position: fixed; right: 16px; bottom: 16px; z-index: 99999;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 14px; border-radius: 22px; cursor: pointer;
  font-family: var(--uds-font-ui); font-size: 13px; font-weight: 600;
  border: 1px solid var(--uds-line-2);
  background: var(--uds-surface-1); color: var(--uds-text-hi);
  box-shadow: 0 6px 18px -6px rgba(0,0,0,.35);
}
.uds-theme-toggle:hover { border-color: var(--uds-accent); }
.uds-theme-toggle .uds-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--uds-accent); }
