:root {
  --bg: #0b0f18;
}

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
  margin: 0;
  background: var(--bg);
}

/* While loading, body is locked at 100vh and no scrolling */
body.loading {
  height: 100vh;
  overflow: hidden;
}

body.no-scroll {
  overflow: hidden;
}

body.is-hovering .cursor-outline {
  transform: translate(-12px, -12px) scale(2);
  opacity: 0.5;
  border-width: 1px;
}

.hero-background {
  background: linear-gradient(
    315deg,
    rgba(230, 0, 255, 0.2) 0%,
    rgba(5, 5, 8, 0) 40%,
    rgba(0, 168, 255, 0.2) 100%
  );
  background-size: 200% 200%;
}

.hamburger-menu.active span:nth-child(1) {
  top: 9px;
  transform: rotate(45deg);
}

.hamburger-menu.active span:nth-child(2) {
  opacity: 0;
}

.hamburger-menu.active span:nth-child(3) {
  top: 9px;
  transform: rotate(-45deg);
}

#core-canvas-container canvas {
  display: block;
  width: 100%;
  height: 100%;
}

img {
  max-width: auto 0px;
}

.shader-container {
  position: relative;
  width: 100%;
  height: 100vh; /* change to your div size if needed */
  overflow: hidden;
  background: radial-gradient(
      1200px 900px at 20% 20%,
      rgba(64, 102, 255, 0.15),
      transparent 60%
    ),
    radial-gradient(
      1000px 800px at 80% 70%,
      rgba(255, 77, 196, 0.1),
      transparent 60%
    ),
    linear-gradient(180deg, #0b0f18, #090d15);
  filter: contrast(105%) saturate(110%);
}
canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  mix-blend-mode: screen; /* color blend mode */
  image-rendering: -webkit-optimize-contrast;
}
.label {
  position: absolute;
  left: 16px;
  top: 12px;
  color: #cdd7ff;
  font: 600 14px/1.2 system-ui, -apple-system, Segoe UI, Roboto, Ubuntu,
    Cantarell, "Helvetica Neue", Arial;
  opacity: 0.75;
  letter-spacing: 0.04em;
  user-select: none;
  pointer-events: none;
}

/* Popup modal */
.popup-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(2px);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 10;
}
.popup {
  width: 360px;
  max-width: calc(100% - 32px);
  background: rgba(18, 22, 32, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  padding: 18px 18px 16px;
  color: #e8edff;
  box-shadow: 0 20px 80px rgba(0, 0, 0, 0.5);
  animation: popIn 0.18s ease-out;
}
@keyframes popIn {
  from {
    transform: translateY(6px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.popup-header {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 8px;
}
.avatar {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  font: 800 20px/1 system-ui, -apple-system, Segoe UI, Roboto;
  color: #0d1117;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08),
    0 0 24px rgba(255, 255, 255, 0.18);
  filter: saturate(120%);
}
.popup-title {
  margin: 0;
  font: 700 18px/1.2 system-ui, -apple-system, Segoe UI, Roboto;
  letter-spacing: 0.01em;
}
.popup-desc {
  margin: 6px 0 10px;
  color: #c9d3ff;
  font-size: 14px;
  opacity: 0.9;
}
.popup-list {
  margin: 0 0 12px 18px;
  color: #dbe3ff;
}
.popup-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  align-items: center;
}
.btn {
  appearance: none;
  border: 0;
  cursor: pointer;
  border-radius: 10px;
  padding: 10px 14px;
  font: 600 14px/1 system-ui, -apple-system, Segoe UI, Roboto;
}
.btn-link {
  background: linear-gradient(135deg, #4aa8ff, #3d7bff);
  color: white;
  box-shadow: 0 8px 24px rgba(61, 123, 255, 0.35);
}
.btn-close {
  background: rgba(255, 255, 255, 0.06);
  color: #d5ddff;
}
