/* ============================================================
   Predictive Agent Dock — invisible at rest, then Jary appears
   beside the nearest actionable target. The native cursor stays.
   ============================================================ */
.agent-cursor {
  --agent-cursor-color: var(--hero-accent, var(--accent));
  --agent-brand-pink: #ff438f;
  --agent-brand-violet: #8845ee;
  position: fixed;
  z-index: 130;
  inset: 0;
  overflow: clip;
  contain: strict;
  opacity: 0;
  pointer-events: none;
  transition: opacity .14s ease;
}

.agent-cursor.is-visible { opacity: 1; }

.agent-dock-bracket,
.agent-dock-mark,
.agent-dock-confirm {
  position: absolute;
  top: 0;
  left: 0;
  will-change: transform;
}

.agent-dock-bracket {
  min-width: 18px;
  min-height: 18px;
  border-radius: 7px;
  background:
    linear-gradient(90deg, var(--agent-brand-pink), var(--agent-brand-pink)) left top / 9px 1px no-repeat,
    linear-gradient(var(--agent-brand-pink), var(--agent-brand-pink)) left top / 1px 9px no-repeat,
    linear-gradient(90deg, var(--agent-brand-violet), var(--agent-brand-violet)) right top / 9px 1px no-repeat,
    linear-gradient(var(--agent-brand-violet), var(--agent-brand-violet)) right top / 1px 9px no-repeat,
    linear-gradient(90deg, var(--agent-brand-pink), var(--agent-brand-pink)) left bottom / 9px 1px no-repeat,
    linear-gradient(var(--agent-brand-pink), var(--agent-brand-pink)) left bottom / 1px 9px no-repeat,
    linear-gradient(90deg, var(--agent-brand-violet), var(--agent-brand-violet)) right bottom / 9px 1px no-repeat,
    linear-gradient(var(--agent-brand-violet), var(--agent-brand-violet)) right bottom / 1px 9px no-repeat;
  opacity: 0;
  transform-origin: center;
  transition:
    width .18s var(--ease),
    height .18s var(--ease),
    opacity .14s ease,
    transform .18s var(--ease),
    filter .18s ease;
}

.agent-dock-mark {
  width: 17px;
  height: 12px;
  opacity: 0;
  transition:
    opacity .12s ease,
    transform .18s var(--ease);
}

.agent-dock-mark img,
.agent-dock-confirm img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.agent-dock-mark img {
  filter:
    drop-shadow(0 0 2px color-mix(in srgb, var(--surface) 80%, transparent))
    drop-shadow(0 2px 6px color-mix(in srgb, var(--agent-cursor-color) 24%, transparent));
  transform: scale(.84);
  transition:
    filter .16s ease,
    transform .16s var(--ease);
}

.agent-cursor[data-state="NEAR"] .agent-dock-bracket {
  opacity: .28;
}

.agent-cursor[data-state="NEAR"] .agent-dock-mark {
  opacity: .72;
}

.agent-cursor[data-state="ENGAGED"] .agent-dock-bracket {
  filter: saturate(1.08);
  opacity: .68;
}

.agent-cursor[data-state="ENGAGED"] .agent-dock-mark {
  opacity: 1;
}

.agent-cursor[data-state="ENGAGED"] .agent-dock-mark img {
  filter:
    saturate(1.08)
    drop-shadow(0 0 2px color-mix(in srgb, var(--surface) 82%, transparent))
    drop-shadow(0 3px 7px color-mix(in srgb, var(--agent-cursor-color) 30%, transparent));
  transform: scale(1);
}

.agent-dock-confirm {
  width: 17px;
  height: 12px;
  opacity: 0;
}

.agent-cursor.is-committing .agent-dock-mark {
  opacity: .4;
}

.agent-cursor.is-committing .agent-dock-mark img {
  filter:
    saturate(1.12)
    brightness(1.08)
    drop-shadow(0 2px 7px color-mix(in srgb, var(--agent-cursor-color) 34%, transparent));
  transform: scale(.56);
}

.agent-cursor.is-committing .agent-dock-bracket {
  animation: agent-dock-bracket-confirm .36s var(--ease) both;
}

.agent-cursor.is-committing .agent-dock-confirm {
  animation: agent-dock-confirm .42s var(--ease) both;
}

@keyframes agent-dock-bracket-confirm {
  0% {
    filter: brightness(1);
    opacity: .74;
  }
  45% {
    filter: brightness(1.18) saturate(1.16);
    opacity: .92;
  }
  100% {
    filter: brightness(1);
    opacity: .64;
  }
}

@keyframes agent-dock-confirm {
  0% {
    filter: blur(0);
    opacity: .66;
  }
  100% {
    filter: blur(.3px);
    opacity: 0;
  }
}

@media (pointer: coarse), (prefers-reduced-motion: reduce) {
  .agent-cursor { display: none !important; }
}

.agent-cursor,
.agent-cursor * {
  user-select: none;
}
