/* Shared: custom star cursor + sparkle trail + mobile base (all pages). */
@media (pointer: fine) {
  body { cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'><path d='M14 2l2.6 7.4L24 12l-7.4 2.6L14 22l-2.6-7.4L4 12l7.4-2.6z' fill='%23f5c65d' stroke='%23241a05' stroke-width='1.2'/></svg>") 14 14, auto; }
  a, button, input, select, textarea, [onclick] {
    cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path d='M15 2l3 8 8 3-8 3-3 8-3-8-8-3 8-3z' fill='%238f7bff' stroke='%23fff' stroke-width='1.2'/></svg>") 15 15, pointer; }
}
.spark { position: fixed; pointer-events: none; z-index: 999; font-size: 13px;
  animation: sparkfall .9s ease-out forwards; will-change: transform, opacity; }
@keyframes sparkfall {
  0%   { opacity: 1; transform: translate(0, 0) scale(1) rotate(0deg); }
  100% { opacity: 0; transform: translate(var(--dx), var(--dy)) scale(.2) rotate(120deg); }
}
@media (prefers-reduced-motion: reduce) { .spark { display: none; } }
