:root {
  /* Backgrounds */
  --bg: #090d11;
  --panel: rgba(18, 25, 35, 0.60);
  --panel-2: rgba(18, 25, 35, 0.38);

  /* Borders */
  --border: rgba(255, 255, 255, 0.10);
  --border-2: rgba(255, 255, 255, 0.07);

  /* Text */
  --text: rgba(255, 255, 255, 0.92);
  --muted: rgba(255, 255, 255, 0.52);

  /* Brand */
  --green: #18c08f;
  --green-2: rgba(24, 192, 143, 0.16);
  --green-3: rgba(24, 192, 143, 0.08);
  --danger: #ff5a5f;
  --danger-2: rgba(255, 90, 95, 0.14);
  --warn: #f59e0b;
  --warn-2: rgba(245, 158, 11, 0.14);

  /* Surfaces (tooltip, context menu, floating panels) */
  --surface: rgba(20, 28, 38, 0.96);
  --surface-border: rgba(255, 255, 255, 0.14);
  --surface-shadow: 0 8px 32px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.05);

  /* Elevation */
  --shadow: 0 8px 28px rgba(0, 0, 0, 0.38);
  --shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.25);

  /* Shape */
  --radius: 16px;
  --radius-sm: 12px;
  --radius-xs: 8px;
  --gap: 14px;

  /* Typography */
  --font: "SF Pro Display", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;

  /* Flow canvas */
  --flow-wire: rgba(255, 255, 255, 0.35);
  --flow-x-fill: rgba(12, 16, 20, 0.96);
  --flow-x-stroke: rgba(255, 255, 255, 0.18);
  --node-border: rgba(255, 255, 255, 0.12);
  --node-border-active: rgba(255, 255, 255, 0.35);

  --nav-h: 58px;
}

/* ═══ TEMA CLARO ═══ */
html[data-theme="light"] {
  --bg: #eef2f6;
  --panel: #ffffff;
  --panel-2: #f8fafc;

  --border: #dde3ec;
  --border-2: #c8d0db;

  --text: rgba(15, 23, 42, 0.92);
  --muted: rgba(100, 116, 139, 0.92);

  --green: #16a34a;
  --green-2: rgba(22, 163, 74, 0.16);
  --green-3: rgba(22, 163, 74, 0.08);
  --danger: #dc2626;
  --danger-2: rgba(220, 38, 38, 0.12);
  --warn: #d97706;
  --warn-2: rgba(217, 119, 6, 0.12);

  --surface: #ffffff;
  --surface-border: #dde3ec;
  --surface-shadow: 0 8px 32px rgba(15, 23, 42, 0.14), 0 0 0 1px rgba(15, 23, 42, 0.05);

  --shadow: 0 4px 20px rgba(15, 23, 42, 0.10);
  --shadow-sm: 0 1px 6px rgba(15, 23, 42, 0.08);
  --shadow-soft: 0 8px 22px rgba(15, 23, 42, 0.08);

  --flow-wire: rgba(15, 23, 42, 0.28);
  --flow-x-fill: rgba(255, 255, 255, 0.97);
  --flow-x-stroke: rgba(15, 23, 42, 0.22);
  --node-border: rgba(15, 23, 42, 0.14);
  --node-border-active: rgba(15, 23, 42, 0.32);
}

/* ═══ RESET & BASE ═══ */
*, *::before, *::after { box-sizing: border-box; }
html, body { height: 100%; }

body {
  margin: 0;
  font-family: var(--font);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  background:
    radial-gradient(1100px 650px at 8% 12%, rgba(24, 192, 143, 0.14), transparent 60%),
    radial-gradient(850px 480px at 82% 18%, rgba(80, 140, 255, 0.09), transparent 55%),
    var(--bg);
}

html[data-theme="light"] body {
  background:
    radial-gradient(1100px 650px at 10% 10%, rgba(22, 163, 74, 0.09), transparent 60%),
    radial-gradient(850px 480px at 84% 12%, rgba(80, 140, 255, 0.05), transparent 56%),
    linear-gradient(180deg, rgba(255,255,255,0.70), rgba(255,255,255,0.40)),
    var(--bg);
}

a { color: inherit; text-decoration: none; }
button { font-family: inherit; }
input, select, textarea { font-family: inherit; }

.muted { color: var(--muted); }
.mono { font-family: var(--font-mono); font-size: 12px; color: var(--muted); }

/* ═══ SCROLLBAR ═══ */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.09);
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.16); background-clip: padding-box; }
::-webkit-scrollbar-track { background: transparent; }

html[data-theme="light"] ::-webkit-scrollbar-thumb { background: rgba(15,23,42,0.12); background-clip: padding-box; }
html[data-theme="light"] ::-webkit-scrollbar-thumb:hover { background: rgba(15,23,42,0.20); background-clip: padding-box; }
