/* Shared design tokens — violet glass on black (from the supplied Nuvora design). */
:root {
  color-scheme: dark;
  --bg: #000000;
  --ink: #f3effd;
  --ink-2: #c9bfe3;
  --muted: #9488b4;
  --violet: #7a2cff;
  --violet-2: #a35bff;
  --magenta: #c93cff;
  --cyan: #5fe6ff;
  --panel: rgba(74, 28, 140, 0.32);
  --panel-2: rgba(30, 10, 62, 0.55);
  --line: rgba(176, 120, 255, 0.22);
  --line-2: rgba(176, 120, 255, 0.42);
  --field: rgba(16, 6, 34, 0.62);
  --good: #7ef0c0;
  --bad: #ff8aa6;

  --display: "Clash Display", "Avenir Next", "Segoe UI", system-ui, sans-serif;
  --body: "Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --ease-out: cubic-bezier(0.2, 0.7, 0.2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; background: var(--bg); }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font: 400 15px/1.55 var(--body);
  word-spacing: 0.04em;
  -webkit-font-smoothing: antialiased;
}
img, svg, canvas, iframe { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; }
::selection { background: rgba(163, 91, 255, 0.55); color: #fff; }
:focus-visible { outline: 2px solid var(--violet-2); outline-offset: 3px; border-radius: 8px; }
.mono { font-family: var(--mono); }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border-radius: 9px; padding: 8px 14px; font-size: 13px; font-weight: 500; white-space: nowrap;
  border: 1px solid rgba(255, 255, 255, 0.22); background: #050208; color: var(--ink);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.6);
  transition: background 0.2s, border-color 0.2s, transform 0.15s var(--ease-out), box-shadow 0.2s;
}
.btn:hover { background: #140a24; border-color: rgba(200, 160, 255, 0.5); }
.btn:active { transform: scale(0.97); }
.btn[disabled] { opacity: 0.5; cursor: not-allowed; transform: none; }
.btn.glow {
  background: linear-gradient(180deg, rgba(140, 70, 255, 0.55), rgba(70, 20, 150, 0.7));
  border-color: rgba(210, 170, 255, 0.6);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 0 24px rgba(150, 70, 255, 0.45);
}
.btn.glow:hover { background: linear-gradient(180deg, rgba(160, 90, 255, 0.65), rgba(90, 30, 180, 0.8)); }
.btn.ghost { background: rgba(255, 255, 255, 0.04); border-color: rgba(255, 255, 255, 0.12); box-shadow: none; color: var(--ink-2); }
.btn.ghost:hover { color: var(--ink); border-color: var(--line-2); }
.btn.sm { padding: 6px 11px; font-size: 12.5px; }

.toast {
  position: fixed; left: 50%; bottom: 24px; z-index: 100;
  transform: translate(-50%, 12px); opacity: 0; pointer-events: none;
  padding: 10px 16px; border-radius: 10px; max-width: min(92vw, 460px); font-size: 13.5px;
  background: rgba(24, 8, 48, 0.92); border: 1px solid var(--line-2); color: var(--ink);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6), 0 0 30px rgba(120, 40, 255, 0.25);
  transition: opacity 200ms, transform 260ms var(--ease-out);
}
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.toast.error { border-color: rgba(255, 120, 160, 0.55); color: #ffd3de; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}
