/* =====================================================================
   Водопада — custom cursor (built by js/cursor.js)
   A champagne dot and a trailing hairline ring. Only active for a mouse /
   trackpad; never intercepts the pointer.
   ===================================================================== */
:root {
  --cursor-gold: #c9a464;
  --cursor-gold-soft: rgba(212, 178, 120, 0.55);
  --cursor-glow: rgba(222, 190, 130, 0.32);
}

/* Hide the native arrow only while our cursor is actually on screen */
html.cursor-visible,
html.cursor-visible * { cursor: none !important; }
html.cursor-visible :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="button"]), textarea, [contenteditable="true"]) { cursor: text !important; }
html.cursor-visible iframe { cursor: auto !important; }

.cursor-dot,
.cursor-ring {
  position: fixed; left: 0; top: 0; z-index: 2147483000;
  pointer-events: none; user-select: none;
  border-radius: 50%;
  opacity: 0;
  will-change: transform;
  contain: layout style;
}
.cursor-dot {
  width: 6px; height: 6px; margin: -3px 0 0 -3px;
  background: var(--cursor-gold);
  /* hairline edge keeps it legible on ivory as well as on forest green */
  box-shadow: 0 0 0 0.5px rgba(70, 52, 24, 0.35), 0 0 6px rgba(222, 190, 130, 0.35);
  transition: opacity 300ms ease;
}
.cursor-ring {
  width: 34px; height: 34px; margin: -17px 0 0 -17px;
  transition: opacity 400ms ease;
}
/* The ring's look lives on a pseudo-element so it can scale without
   fighting the transform that positions it */
.cursor-ring::before {
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  border: 1px solid var(--cursor-gold-soft);
  background: rgba(212, 178, 120, 0);
  transition:
    transform 520ms cubic-bezier(0.22, 1, 0.36, 1),
    border-color 400ms ease, background-color 400ms ease, box-shadow 520ms ease;
}

html.cursor-visible .cursor-dot { opacity: 1; }
html.cursor-visible .cursor-ring { opacity: 1; }

/* Links, buttons, gallery items…: the ring opens and warms */
html.cursor-hover .cursor-ring::before {
  transform: scale(1.55);
  border-color: rgba(214, 182, 126, 0.75);
  background: rgba(212, 178, 120, 0.07);
  box-shadow: 0 0 22px 2px var(--cursor-glow);
}
html.cursor-hover .cursor-dot { opacity: 0.85; }

/* Draggable controls: a gentle horizontal stretch hints at the gesture */
html.cursor-drag .cursor-ring::before { transform: scale(1.35, 0.9); border-color: rgba(214, 182, 126, 0.8); }

/* Pressing: everything settles inward a touch */
html.cursor-press .cursor-ring::before { transform: scale(0.82); }
html.cursor-hover.cursor-press .cursor-ring::before { transform: scale(1.3); }

/* Over text fields and the map the native cursor takes over */
html.cursor-native .cursor-dot,
html.cursor-native .cursor-ring { opacity: 0 !important; }

@media (prefers-reduced-motion: reduce) {
  .cursor-ring::before { transition: border-color 150ms linear, background-color 150ms linear; }
  html.cursor-hover .cursor-ring::before,
  html.cursor-drag .cursor-ring::before,
  html.cursor-press .cursor-ring::before { transform: none; }
}

/* Safety net: never on touch-first devices or when printing */
@media (hover: none), (pointer: coarse), print {
  .cursor-dot, .cursor-ring { display: none !important; }
  html.cursor-visible, html.cursor-visible * { cursor: auto; }
}
