:root {
  --neon-cyan: #00f3ff;
  --neon-green: #0aff0a;
  --neon-amber: #ffb302;
  --bg-dark: #020408;
}

body {
  font-family: 'JetBrains Mono', monospace;
  background-color: var(--bg-dark);
  color: white;
  overflow: hidden;
}

.font-display {
  font-family: sans-serif;
}

/* --- EFFECTS --- */
.scanlines {
  background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%), linear-gradient(90deg, rgba(255, 0, 0, 0.06), rgba(0, 255, 0, 0.02), rgba(0, 0, 255, 0.06));
  background-size: 100% 3px, 3px 100%;
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 50;
  opacity: 0.4;
}

/* Glitch */
.glitch-effect {
  animation: glitch-anim 0.3s infinite;
}

@keyframes glitch-anim {
  0% {
    transform: translate(0)
  }

  20% {
    transform: translate(-2px, 2px)
  }

  40% {
    transform: translate(-2px, -2px)
  }

  60% {
    transform: translate(2px, 2px)
  }

  80% {
    transform: translate(2px, -2px)
  }

  100% {
    transform: translate(0)
  }
}

/* AI Scanner */
.laser-scan {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--neon-green);
  box-shadow: 0 0 10px var(--neon-green);
  animation: scan-down 3s linear infinite;
  opacity: 0.7;
}

@keyframes scan-down {
  0% {
    top: 0%;
  }

  100% {
    top: 100%;
  }
}

/* HUD Styling */
.glass-panel {
  background: rgba(0, 10, 20, 0.85);
  backdrop-filter: blur(4px);
  border: 1px solid rgba(0, 243, 255, 0.3);
  box-shadow: 0 0 15px rgba(0, 243, 255, 0.1);
}

/* Marker Pulse */
.ping-dot {
  width: 10px;
  height: 10px;
  background: var(--neon-amber);
  border-radius: 50%;
  position: relative;
}

.ping-dot::after {
  content: '';
  position: absolute;
  inset: -10px;
  border: 1px solid var(--neon-amber);
  border-radius: 50%;
  opacity: 0;
  animation: ping 1s infinite;
}

@keyframes ping {
  0% {
    transform: scale(0.1);
    opacity: 1;
  }

  100% {
    transform: scale(1.5);
    opacity: 0;
  }
}

/* Transitions */
.hidden-ui {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s ease-in-out;
}

.visible-ui {
  opacity: 1;
  pointer-events: auto;
}

/* Bounding Box Animation */
.bbox-anim {
  animation: scale-in 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
  opacity: 0;
  transform: scale(0.8);
}

@keyframes scale-in {
  to {
    opacity: 1;
    transform: scale(1);
  }
}

#sv-bg {
  will-change: transform;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  translate: 0;             /* ép render GPU */
}

#viewer {
  width: 100%;
  height: 100%;
  position: absolute;
}