/* Nova — dark-first, electric violet + cyan, glass surfaces, soft large radii.
   Loaded after the app bundle via SUB2API_BRAND_CSS_URL; only overrides tokens
   and a handful of component classes from frontend/src/style.css. */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600&display=swap');

:root {
  --color-primary-50: 245 243 255;
  --color-primary-100: 237 233 254;
  --color-primary-200: 221 214 254;
  --color-primary-300: 196 181 253;
  --color-primary-400: 167 139 250;
  --color-primary-500: 139 92 246;
  --color-primary-600: 124 58 237;
  --color-primary-700: 109 40 217;
  --color-primary-800: 91 33 182;
  --color-primary-900: 76 29 149;
  --color-primary-950: 46 16 101;

  --color-gray-50: 247 247 251;
  --color-gray-100: 239 239 247;
  --color-gray-200: 225 225 238;
  --color-gray-300: 201 201 220;
  --color-gray-400: 157 157 184;
  --color-gray-500: 114 114 143;
  --color-gray-600: 86 86 113;
  --color-gray-700: 63 63 87;
  --color-gray-800: 39 39 58;
  --color-gray-900: 23 23 38;
  --color-gray-950: 11 11 20;

  --color-dark-50: 244 244 250;
  --color-dark-100: 233 233 244;
  --color-dark-200: 207 207 228;
  --color-dark-300: 169 169 201;
  --color-dark-400: 123 123 163;
  --color-dark-500: 85 85 125;
  --color-dark-600: 59 59 92;
  --color-dark-700: 42 42 69;
  --color-dark-800: 27 27 48;
  --color-dark-900: 17 17 34;
  --color-dark-950: 8 8 15;

  --radius-md: 0.625rem;
  --radius-lg: 0.875rem;
  --radius-xl: 1.125rem;
  --radius-2xl: 1.5rem;
  --radius-3xl: 2rem;

  --font-sans: 'Inter';
  --nova-cyan: 34 211 238;
}

/* Signature backdrop: violet + cyan nebula glows on a near-black field. */
.dark body {
  background:
    radial-gradient(60rem 40rem at 85% -10%, rgb(var(--color-primary-600) / 0.22), transparent 60%),
    radial-gradient(50rem 35rem at -10% 110%, rgb(var(--nova-cyan) / 0.12), transparent 60%),
    rgb(var(--color-dark-950));
  background-attachment: fixed;
}
.bg-mesh-gradient { opacity: 0; }

h1, h2, h3, .page-title, .sidebar-brand-title, .stat-value, .modal-title {
  font-family: 'Space Grotesk', 'Inter', system-ui, sans-serif;
  letter-spacing: -0.02em;
}
.page-title { font-size: 1.75rem; }

.btn { border-radius: 9999px; }
.btn-primary {
  background-image: linear-gradient(110deg, rgb(var(--color-primary-500)), rgb(var(--nova-cyan)));
  box-shadow: 0 0 0 1px rgb(255 255 255 / 0.08) inset, 0 8px 28px -8px rgb(var(--color-primary-500) / 0.7);
}
.btn-primary:hover { filter: brightness(1.08); }

.dark .card,
.dark .modal-content,
.dark .dialog-container {
  background: rgb(255 255 255 / 0.035);
  border-color: rgb(255 255 255 / 0.08);
  backdrop-filter: blur(18px) saturate(140%);
  box-shadow: 0 1px 0 rgb(255 255 255 / 0.06) inset, 0 20px 60px -30px rgb(0 0 0 / 0.8);
}
.dark .stat-card:hover { border-color: rgb(var(--color-primary-400) / 0.4); }

.dark .sidebar {
  background: rgb(10 10 20 / 0.72);
  border-right-color: rgb(255 255 255 / 0.06);
  backdrop-filter: blur(20px);
}
.sidebar-link { border-radius: 9999px; }
.sidebar-link-active,
.dark .sidebar-link-active {
  background: linear-gradient(90deg, rgb(var(--color-primary-500) / 0.28), rgb(var(--nova-cyan) / 0.08));
  color: rgb(var(--color-primary-200));
  box-shadow: 0 0 0 1px rgb(var(--color-primary-400) / 0.25) inset;
}
.sidebar-link-active { color: rgb(var(--color-primary-700)); }
.dark .sidebar-link-active { color: rgb(var(--color-primary-200)); }

.dark .input { background: rgb(255 255 255 / 0.04); border-color: rgb(255 255 255 / 0.1); }
.input:focus { box-shadow: 0 0 0 3px rgb(var(--color-primary-500) / 0.35); }

.text-gradient {
  background-image: linear-gradient(110deg, rgb(var(--color-primary-300)), rgb(var(--nova-cyan)));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.badge { border-radius: 9999px; }
.dark .table th { background: rgb(255 255 255 / 0.03); }
