/* Input-driven transparent lens cursor with an exact, small centre point. */
.genos-lens-cursor {
  position: fixed;
  left: 0; top: 0;
  width: 42px; height: 42px;
  z-index: 9999;
  pointer-events: none;
  user-select: none;
  opacity: 0;
  background: radial-gradient(circle at center, #e4fff0 0 2px, transparent 2.5px);
  transform: translate3d(var(--cursor-x, -100px), var(--cursor-y, -100px), 0) translate(-50%, -50%);
  transition: opacity 100ms linear;
  contain: layout style;
}
.genos-lens-cursor::before, .genos-lens-cursor::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
}
.genos-lens-cursor::before {
  border: 1px solid #dcf8e96b;
  background: radial-gradient(circle at 30% 23%, #e3fff407, transparent 58%);
  box-shadow: inset 0 0 10px #d1ffdf06, 0 0 12px #a5e4c207;
  transform: scale(1);
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}
.genos-lens-cursor::after {
  inset: 3px;
  border: 1px solid #c9ffe112;
  border-right-color: transparent;
  border-bottom-color: transparent;
  transform: rotate(-25deg);
}
.genos-lens-cursor.is-visible { opacity: 1; }
.genos-lens-cursor.is-action::before {
  transform: scale(1.28);
  border-color: #dcffedb8;
  box-shadow: inset 0 0 14px #d1ffe60b, 0 0 15px #a5e4c212;
}
body:has(dialog[open]) .genos-lens-cursor { opacity: 0; }
/* Hide the native arrow only while the replacement is actually visible.
   The existing input, keyboard and blur handlers remove is-visible; dialogs
   and motion preferences retain their normal system cursor independently. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  html:has(.genos-lens-cursor.is-visible):not(:has(dialog[open])),
  html:has(.genos-lens-cursor.is-visible):not(:has(dialog[open])) * {
    cursor: none !important;
  }
}
@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  .genos-lens-cursor { display: none; }
}
