/* =========================================================
   CURSOR FOLLOWER  see assets/js/cursor-follower.js for the trailing/hover
   logic; this is purely the dot's look. .fm-cursor-dot itself only ever
   carries the JS-driven translate3d() position (see that file's own
   comment for why); every visual state below  fade in, grow/lighten on
   hover  lives on the nested .fm-cursor-dot-inner so nothing here has to
   fight JS over the same `transform` property.
   ========================================================= */
.fm-cursor-dot {
  position: fixed;
  top: 0;
  left: 0;
  width: 16px;
  height: 16px;
  margin: -8px 0 0 -8px; /* centers the dot on its own translate3d() position */
  z-index: 99999;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.3s var(--fm-ease);
}
.fm-cursor-dot.is-visible { opacity: 1; }

.fm-cursor-dot-inner {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: var(--fm-radius-circle);
  background: var(--fm-gold);
  transition: transform 0.3s var(--fm-ease), background-color 0.3s var(--fm-ease), opacity 0.3s var(--fm-ease);
}
/* Grows into a soft, hollow-feeling ring rather than just scaling up solid
   over whatever it's hovering  reads as "this is clickable" instead of
   just "the dot got bigger". */
.fm-cursor-dot.is-active .fm-cursor-dot-inner {
  transform: scale(2.2);
  background: transparent;
  opacity: 0.55;
  box-shadow: inset 0 0 0 1.5px var(--fm-gold);
}
