/* Custom cursor for phone.agencyg.de — gold-themed (matches brand
 * gradient --lp-accent #d6a321 / #f0ca64 / #8f6410). Same mechanics as
 * shop/docs: dot follows pointer, ring morphs around buttons, caret in
 * text inputs, auto-disabled on touch + reduced-motion.
 */

html.has-custom-cursor,
html.has-custom-cursor body,
html.has-custom-cursor *:not(input):not(textarea):not([contenteditable="true"]) {
  cursor: none !important;
}
html.has-custom-cursor input,
html.has-custom-cursor textarea,
html.has-custom-cursor [contenteditable="true"] {
  cursor: text !important;
}

.pp-cursor-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: radial-gradient(
    circle at 32% 28%,
    #fff3c9 0%,
    #f0ca64 25%,
    #d6a321 65%,
    #8f6410 100%
  );
  box-shadow:
    0 0 0 1.5px rgba(8, 5, 2, 0.6),
    0 0 0 2.5px rgba(240, 202, 100, 0.32),
    0 0 14px rgba(214, 163, 33, 0.85),
    0 0 3px rgba(255, 243, 201, 1);
  will-change: transform;
  transform: translate3d(0, 0, 0);
  transition: opacity 0.2s;
}

.pp-cursor-ring {
  border: 2px solid rgba(214, 163, 33, 0.88);
  background: rgba(214, 163, 33, 0);
  box-shadow:
    0 0 0 1px rgba(8, 5, 2, 0.4),
    0 0 14px -2px rgba(214, 163, 33, 0.5);
  will-change: transform, width, height, border-radius;
  transition:
    background-color 0.22s cubic-bezier(.2, 1, .3, 1),
    border-color 0.22s cubic-bezier(.2, 1, .3, 1),
    border-width 0.22s cubic-bezier(.2, 1, .3, 1),
    box-shadow 0.22s cubic-bezier(.2, 1, .3, 1),
    opacity 0.2s;
}

.pp-cursor-ring.variant-interactive,
.pp-cursor-ring.variant-wrap {
  border-color: rgba(240, 202, 100, 1);
  border-width: 2px;
  background: rgba(214, 163, 33, 0.12);
  box-shadow:
    0 0 0 1px rgba(8, 5, 2, 0.45),
    0 0 28px -4px rgba(214, 163, 33, 0.5),
    inset 0 0 22px rgba(214, 163, 33, 0.12);
}

.pp-cursor-ring.variant-text {
  border: none;
  background: rgba(240, 202, 100, 1);
  box-shadow:
    0 0 0 0.5px rgba(8, 5, 2, 0.55),
    0 0 12px rgba(214, 163, 33, 0.7);
}

.pp-cursor-ring.variant-none {
  border: 0;
  background: transparent;
  box-shadow: none;
}

.pp-cursor-ring.is-clicking {
  animation: ppCursorClickPulse 0.22s ease-out;
}
@keyframes ppCursorClickPulse {
  0%   { filter: brightness(1); }
  50%  { filter: brightness(1.4) saturate(1.3); }
  100% { filter: brightness(1); }
}

@media (pointer: coarse), (prefers-reduced-motion: reduce) {
  .pp-cursor-dot, .pp-cursor-ring { display: none !important; }
  html.has-custom-cursor,
  html.has-custom-cursor body,
  html.has-custom-cursor *:not(input):not(textarea):not([contenteditable="true"]) {
    cursor: auto !important;
  }
}

/* ── Accessibility fallbacks ──────────────────────────────────
 * Users who ask for higher contrast (OS pref "Increase Contrast"
 * on mac / "High Contrast" on Windows) or are on Windows High
 * Contrast Mode get the native system cursor back. Same for
 * prefers-contrast:more. Our brand-tinted cursor is subtle by
 * design and can vanish against a custom high-contrast palette.
 * Keyboard / screen-reader users already ignore the cursor —
 * the focus-visible ring on buttons handles their navigation.
 */
@media (forced-colors: active), (prefers-contrast: more) {
  .custom-cursor-dot, .custom-cursor-ring,
  .ag-cursor-dot, .ag-cursor-ring,
  .pp-cursor-dot, .pp-cursor-ring { display: none !important; }
  html.has-custom-cursor,
  html.has-custom-cursor body,
  html.has-custom-cursor *:not(input):not(textarea):not([contenteditable="true"]) {
    cursor: auto !important;
  }
}
