/* One precise pointer for every page; the halo breathes, the click point stays still. */
html .cursor { display: none !important; }
html:not(.pointer-active), html:not(.pointer-active) body, html:not(.pointer-active) body * { cursor: auto !important; }
html:not(.pointer-active) :is(a[href],button,[role="button"],.hotspot,.page-corner) { cursor: pointer !important; }
html:not(.pointer-active) :is(input,textarea,[contenteditable="true"]) { cursor: text !important; }
html:not(.pointer-active) :is(.drawing-canvas,.draw-canvas) { cursor: crosshair !important; }
html:not(.pointer-active) :is(button:disabled,[aria-disabled="true"]) { cursor: default !important; }
html.pointer-active, html.pointer-active body, html.pointer-active body * { cursor: none !important; }
.portfolio-pointer {
  position: fixed; z-index: 2147483647; left: 0; top: 0; width: 30px; height: 30px;
  margin: 0; padding: 0; border: 0; border-radius: 50%; background: none; overflow: visible;
  transform: translate(-50%,-50%); pointer-events: none !important; opacity: 0;
  --pointer-color: #b2fff0;
}
.pointer-active .portfolio-pointer { opacity: 1; }
.portfolio-pointer::before {
  content: ""; position: absolute; inset: 2px; border-radius: 50%;
  background: radial-gradient(circle,#d9fff6aa 0%,#84edce44 40%,#9dfce000 72%);
  box-shadow: 0 0 11px #81f0ce55; animation: pointer-breathe 2.2s ease-in-out infinite;
}
.portfolio-pointer::after {
  content: ""; position: absolute; left: 50%; top: 50%; width: 7px; height: 7px;
  border: 1px solid #284c45; box-sizing: border-box; border-radius: 50%; background: #fffef1;
  box-shadow: 0 0 0 1px #fff9,0 0 7px var(--pointer-color);
  transform: translate(-50%,-50%); transition: background .15s,box-shadow .15s;
}
.portfolio-pointer.is-interactive::after { background: var(--pointer-color); box-shadow: 0 0 0 1px #fff,0 0 10px #7cffd3; }
.portfolio-pointer.is-pressed::after { background: #fff; box-shadow: 0 0 0 2px #b2fff0aa,0 0 12px #b2fff0; }
@keyframes pointer-breathe { 0%,100% { transform: scale(.83); opacity: .58; } 50% { transform: scale(1.1); opacity: .95; } }
@media(prefers-reduced-motion:reduce) { .portfolio-pointer::before { animation: none; opacity: .8; } }
@media(hover:none),(pointer:coarse) { .portfolio-pointer { display: none; } }
