:root{
  --bg:#0b0f17;
  --panel:#111827;
  --muted:#94a3b8;
  --text:#e5e7eb;
  --border:rgba(255,255,255,.12);
  --brand:#60a5fa;
  --danger:#ef4444;
}

*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
  background: radial-gradient(1200px 800px at 20% 0%, #18213a 0%, var(--bg) 55%);
  color:var(--text);
}

/* Subtle animated fixed background
   - pure CSS (no JS)
   - low CPU (slow transforms + gradients)
   - respects reduced-motion
*/
body::before{
  content:"";
  position:fixed;
  inset:-30vmax;
  z-index:-2;
  pointer-events:none;
  background:
    radial-gradient(62vmax 42vmax at 12% 6%, rgba(96,165,250,0.40), rgba(96,165,250,0) 66%),
    radial-gradient(58vmax 38vmax at 92% 20%, rgba(167,139,250,0.34), rgba(167,139,250,0) 68%),
    radial-gradient(58vmax 42vmax at 60% 95%, rgba(34,211,238,0.26), rgba(34,211,238,0) 68%),
    radial-gradient(80vmax 62vmax at 40% 55%, rgba(15,23,42,0.86), rgba(11,15,23,0.98) 60%);
  background-size: 220% 220%;
  background-position: 20% 15%;
  filter: saturate(1.28) contrast(1.10);
  opacity: 0.96;
  transform: translate3d(0,0,0) rotate(0.001deg);
  will-change: transform, background-position;
  animation: jdBgFloat 7.5s ease-in-out infinite;
}

/* A tiny "grain" layer to avoid banding; intentionally very subtle. */
body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-image:
    /* aurora sweep */
    linear-gradient(115deg,
      rgba(96,165,250,0) 0%,
      rgba(96,165,250,0.20) 22%,
      rgba(167,139,250,0.18) 45%,
      rgba(34,211,238,0.16) 65%,
      rgba(96,165,250,0) 100%
    ),
    /* grain */
    repeating-linear-gradient(0deg, rgba(255,255,255,0.012) 0 1px, rgba(0,0,0,0.012) 1px 2px),
    repeating-linear-gradient(90deg, rgba(255,255,255,0.010) 0 1px, rgba(0,0,0,0.010) 1px 3px);
  background-size: 240% 240%, auto, auto;
  background-position: 0% 50%, 0 0, 0 0;
  mix-blend-mode: screen;
  opacity: 0.35;
  will-change: transform, background-position;
  animation: jdAurora 6.5s ease-in-out infinite;
}

@keyframes jdBgFloat{
  0% {
    transform: translate3d(-12%, -9%, 0) scale(1.08) rotate(-4.6deg);
    background-position: 12% 8%;
  }
  50% {
    transform: translate3d(12%, 9%, 0) scale(1.16) rotate(5.2deg);
    background-position: 88% 72%;
  }
  100% {
    transform: translate3d(-12%, -9%, 0) scale(1.08) rotate(-4.6deg);
    background-position: 12% 8%;
  }
}

@keyframes jdAurora{
  0%   { background-position: 0% 45%, 0 0, 0 0; transform: translate3d(0,0,0) scale(1.02); }
  50%  { background-position: 100% 55%, 0 0, 0 0; transform: translate3d(0,0,0) scale(1.06); }
  100% { background-position: 0% 45%, 0 0, 0 0; transform: translate3d(0,0,0) scale(1.02); }
}

@media (prefers-reduced-motion: reduce){
  body::before{ animation: none; }
  body::after{ animation: none; }
}

a{ color:inherit; text-decoration:none; }
a:hover{ text-decoration:underline; }

.container{ max-width: 1100px; margin: 0 auto; padding: 18px 14px 40px; }

.row{ display:flex; }
.col{ display:flex; flex-direction:column; }

.panel{
  background: rgba(17,24,39,0.78);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 16px;
  backdrop-filter: blur(10px);
}

.nav{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap: 12px;
}
.nav a{ text-decoration:none; }
.nav a:hover{ text-decoration:none; }

.brand{ font-weight:900; letter-spacing:.4px; }
.links{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }

h2{ margin: 0 0 8px; font-size: 18px; }
h3{ margin: 0; font-size: 16px; }
p{ margin: 8px 0 0; color: var(--muted); }
.small{ font-size: 12px; color: var(--muted); }
.mono{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }

.input{
  width:100%;
  padding: 10px 12px;
  border-radius: 12px;
  border:1px solid var(--border);
  background: rgba(0,0,0,0.18);
  color: var(--text);
  outline:none;
}
.input:focus{ border-color: rgba(96,165,250,.55); box-shadow: 0 0 0 3px rgba(96,165,250,.12); }

.btn{
  border: 1px solid var(--border);
  background: rgba(0,0,0,0.18);
  color: var(--text);
  padding: 9px 12px;
  border-radius: 12px;
  cursor:pointer;
  user-select:none;
}
.btn:hover{ background: rgba(0,0,0,0.28); }
.btn.primary{ background: rgba(96,165,250,.18); border-color: rgba(96,165,250,.55); }
.btn.danger{ background: rgba(239,68,68,.14); border-color: rgba(239,68,68,.5); }

.badge{
  display:inline-flex;
  align-items:center;
  gap: 6px;
  padding: 5px 10px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: rgba(0,0,0,0.16);
  font-size: 12px;
  color: var(--muted);
}

.toast{
  border:1px solid var(--border);
  background: rgba(0,0,0,0.2);
  padding: 10px 12px;
  border-radius: 12px;
}

.split{ display:grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 920px){ .split{ grid-template-columns: 1fr; } }

.table{ width:100%; border-collapse: collapse; }
.table th, .table td{ padding: 10px 12px; border-bottom:1px solid rgba(255,255,255,.08); }
.table th{ position: sticky; top: 0; background: rgba(17,24,39,0.95); text-align:left; }

.hidden{ display:none !important; }
