/* =============================================================
   GLOBAL CUSTOM CURSOR  ·  SVG pointer
   Normal  = cream fill / black stroke pointer
   Hover   = same pointer, stroke swaps to mint green
   Press   = layered multicolour burst (yellow + green + black)
   Loaded last so it wins every `cursor:` declaration elsewhere.
   ============================================================= */

/* hide the native cursor everywhere — the SVG is the only pointer */
* { cursor: none !important; }

/* retire the old projects-section disc — one cursor everywhere now */
.pw-cursor { display: none !important; }

.site-cursor {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  pointer-events: none;
  z-index: 100000;                 /* above the detail panel + every overlay */
  opacity: 0;
  transition: opacity 200ms ease;
  will-change: transform;
}
.site-cursor.is-on { opacity: 1; }

/* every state layer stacks at the cursor origin */
.site-cursor .cur {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  transition: opacity 110ms ease, transform 110ms cubic-bezier(.2,.7,.2,1);
}
.site-cursor .cur svg { display: block; }

/* tip of the pointer sits at the actual cursor position */
.cur-normal { transform: translate(-4.5px, -4.5px); }
/* hover green copy peeks out down-right behind the normal pointer */
.cur-hover  { transform: translate(-2px, -2px); }

/* press: bigger, layered, tip aligned to the same point */
.cur-click {
  width: 56px;
  height: 53px;
  transform: translate(-20px, -20px) scale(0.92);
}
.cur-click .cur-burst {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
}
.cur-burst-g { transform: translate(2.5px, 2.5px); }   /* mint trails down-right */
.cur-burst-y { transform: translate(5px, 5px); }       /* yellow trails further  */

/* ── state visibility ─────────────────────────────────────── */
.site-cursor .cur-normal { opacity: 1; }

/* hover: keep the normal pointer, reveal the green copy behind it */
.site-cursor.is-hover .cur-normal { opacity: 1; }
.site-cursor.is-hover .cur-hover  { opacity: 1; }

.site-cursor.is-press .cur-normal,
.site-cursor.is-press .cur-hover  { opacity: 0; }
.site-cursor.is-press .cur-click  {
  opacity: 1;
  transform: translate(-20px, -20px) scale(1);
}

/* touch / no-hover devices: restore the native cursor, hide the SVG */
@media (hover: none), (pointer: coarse) {
  * { cursor: auto !important; }
  .site-cursor { display: none !important; }
}
