/* ═════════════  Nova theme layer for the dashboard  ═════════════ */
:root{--nova-blue:#3b82f6;--nova-indigo:#6366f1;--nova-cyan:#38d6ff}

/* space nebula at the top of every page */
.panel::before{height:420px;background:
  radial-gradient(42% 70% at 18% 0%,#3b82f61f,transparent 70%),
  radial-gradient(38% 60% at 72% 0%,#6366f11a,transparent 70%),
  radial-gradient(30% 50% at 50% -10%,#38d6ff12,transparent 70%)}
/* tiny stars, fading out as you go down */
.panel>.stars{position:absolute;inset:0 0 auto 0;height:360px;pointer-events:none;z-index:0;opacity:.55;
  background-image:
    radial-gradient(1px 1px at 12% 18%,#ffffffcc 50%,transparent 51%),
    radial-gradient(1px 1px at 28% 62%,#ffffff99 50%,transparent 51%),
    radial-gradient(1.5px 1.5px at 41% 30%,#bfe8ff 50%,transparent 51%),
    radial-gradient(1px 1px at 57% 12%,#ffffffaa 50%,transparent 51%),
    radial-gradient(1px 1px at 66% 48%,#ffffff88 50%,transparent 51%),
    radial-gradient(1.5px 1.5px at 79% 22%,#c7d2fe 50%,transparent 51%),
    radial-gradient(1px 1px at 88% 58%,#ffffff99 50%,transparent 51%),
    radial-gradient(1px 1px at 94% 9%,#ffffffbb 50%,transparent 51%),
    radial-gradient(1px 1px at 6% 44%,#ffffff77 50%,transparent 51%),
    radial-gradient(1px 1px at 35% 8%,#ffffff99 50%,transparent 51%);
  -webkit-mask-image:linear-gradient(180deg,#000,transparent);mask-image:linear-gradient(180deg,#000,transparent);
  animation:twinkle 6s ease-in-out infinite alternate}
@keyframes twinkle{from{opacity:.35}to{opacity:.65}}

/* big Nova watermark, bottom right of the work area */
.panel>.nova-wm{position:fixed;right:-70px;bottom:-90px;width:min(560px,48vw);aspect-ratio:1;pointer-events:none;z-index:0;
  background:url(/brand/nova-mark.png) center/contain no-repeat;opacity:.11;filter:saturate(1.2);
  animation:drift 18s ease-in-out infinite alternate}
.panel>.nova-wm::before{content:'';position:absolute;inset:18%;border-radius:50%;background:radial-gradient(closest-side,#3b82f655,transparent);filter:blur(30px);z-index:-1}
@keyframes drift{from{transform:translate(0,0) rotate(-4deg)}to{transform:translate(-18px,-14px) rotate(2deg)}}
.panel>.bar,.panel>.content{position:relative;z-index:1}

/* sidebar header */
.sb-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 12px;margin-bottom:6px;border-bottom:1px solid var(--border)}
.sb-brand img{width:30px;height:30px;object-fit:contain;filter:drop-shadow(0 4px 12px #3b82f660)}
.sb-brand b{font:700 16px Geist,sans-serif;letter-spacing:-.02em;background:linear-gradient(90deg,#e8f1ff,#a5c8ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.sb-brand small{margin-left:auto;font:500 10px "Geist Mono",monospace;color:var(--text4);border:1px solid var(--border2);border-radius:4px;padding:1px 5px}

/* module header icons in Nova colours */
.mh .mi{background:linear-gradient(160deg,#3b82f633,#6366f11f);border-color:#6366f159;color:#8fc4ff;box-shadow:0 10px 28px -10px #3b82f6a0}
.nav a.on{background:linear-gradient(90deg,#3b82f61f,#6366f10d)}
.nav a.on svg{color:#8fc4ff}

/* overview hero without a server banner: Nova sky */
.hero .bg:not([style]){background:
  radial-gradient(60% 120% at 15% 0%,#3b82f655,transparent 60%),
  radial-gradient(50% 120% at 85% 10%,#6366f144,transparent 60%),
  url(/brand/nova-mark.png) right 30px top -40px/220px no-repeat,
  linear-gradient(180deg,#0f1630,#141518)}

/* empty states get a little Nova */
.empty .ei{background:linear-gradient(160deg,#3b82f61a,#6366f10f);border-color:#6366f140;color:#8fc4ff}

@media (max-width:860px){.panel>.nova-wm{display:none}}
@media (prefers-reduced-motion:reduce){.panel>.stars,.panel>.nova-wm{animation:none}}
