/* ═══════════════════════════════════════════════════════════════════
   TOONSHEAD — custom toon cursors (ADDITIVE).
   Two states, both drawn in the site's own sticker language: flat fill,
   heavy ink outline, hard offset shadow. No gradients, no glow.

     arrow   default. white body + ink outline so it survives BOTH the
             lime panels and the ink-dark sections. hotspot = the tip.
     bubble  anything clickable. the site already runs an ambient
             #bubbles layer because every Surf figure rides a passenger
             in a water bowl — so the click cursor is that same bubble.
             hotspot = its centre. Geometry locked by pixel measurement:
             cyan r8 + stroke 2.2 (ink outer edge 9.1) inside a white
             disc r12 = a continuous ~3px white halo on every flank, so
             the edge holds on the dark sections too.

   styles.css / app.js are NOT touched. Removal = delete this file and
   its one <link> in index.html.
   ═══════════════════════════════════════════════════════════════════ */

/* fine-pointer only: never override touch/coarse input, and skip it when
   the OS asks for reduced motion-free simplicity is not the concern here,
   but a custom cursor is decoration — respect the pointer type. */
@media (pointer: fine) {

  html, body {
    cursor: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22><path d=%22M4 3 L4 25.5 L10.6 19.4 L14.8 28 L20.2 25.4 L16 17 L25 16.2 Z%22 transform=%22translate%282,2%29%22 fill=%22%23181a12%22 opacity=%22.34%22/><path d=%22M4 3 L4 25.5 L10.6 19.4 L14.8 28 L20.2 25.4 L16 17 L25 16.2 Z%22 fill=%22%23ffffff%22 stroke=%22%23181a12%22 stroke-width=%222.6%22 stroke-linejoin=%22round%22 stroke-linecap=%22round%22/></svg>") 4 3, auto;
  }

  /* every interactive surface gets the bubble */
  a, button, summary, label[for],
  .btn, .spin, .tab, .dstep, .layer, .more, .x,
  .flinks a, .seek button, .io-skip,
  [role="button"], [onclick] {
    cursor: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22><circle cx=%2216%22 cy=%2216%22 r=%2212%22 fill=%22%23181a12%22 opacity=%22.30%22/><circle cx=%2214%22 cy=%2214%22 r=%2212%22 fill=%22%23ffffff%22/><circle cx=%2214%22 cy=%2214%22 r=%228%22 fill=%22%2312c4d6%22 stroke=%22%23181a12%22 stroke-width=%222.2%22/><path d=%22M8.2,11 C9.2,8.6 11.2,7.2 13.4,7.1 C11,8.4 9.3,9.9 8.6,12.5 Z%22 fill=%22%23ffffff%22 opacity=%22.92%22/><circle cx=%229.6%22 cy=%229.6%22 r=%222.1%22 fill=%22%23ffffff%22 opacity=%22.55%22/></svg>") 14 14, pointer;
  }

  /* text entry keeps a caret — a bubble over an input reads as broken */
  input, textarea, select {
    cursor: text;
  }
  input[type="submit"], input[type="button"], select {
    cursor: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22><circle cx=%2216%22 cy=%2216%22 r=%2212%22 fill=%22%23181a12%22 opacity=%22.30%22/><circle cx=%2214%22 cy=%2214%22 r=%2212%22 fill=%22%23ffffff%22/><circle cx=%2214%22 cy=%2214%22 r=%228%22 fill=%22%2312c4d6%22 stroke=%22%23181a12%22 stroke-width=%222.2%22/><path d=%22M8.2,11 C9.2,8.6 11.2,7.2 13.4,7.1 C11,8.4 9.3,9.9 8.6,12.5 Z%22 fill=%22%23ffffff%22 opacity=%22.92%22/><circle cx=%229.6%22 cy=%229.6%22 r=%222.1%22 fill=%22%23ffffff%22 opacity=%22.55%22/></svg>") 14 14, pointer;
  }

  /* disabled things must not promise a click */
  button:disabled, .btn[aria-disabled="true"] {
    cursor: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22><path d=%22M4 3 L4 25.5 L10.6 19.4 L14.8 28 L20.2 25.4 L16 17 L25 16.2 Z%22 transform=%22translate%282,2%29%22 fill=%22%23181a12%22 opacity=%22.34%22/><path d=%22M4 3 L4 25.5 L10.6 19.4 L14.8 28 L20.2 25.4 L16 17 L25 16.2 Z%22 fill=%22%23ffffff%22 stroke=%22%23181a12%22 stroke-width=%222.6%22 stroke-linejoin=%22round%22 stroke-linecap=%22round%22/></svg>") 4 3, not-allowed;
  }

  /* the modal scrim closes on click, so it is clickable too */
  .veil { cursor: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22><circle cx=%2216%22 cy=%2216%22 r=%2212%22 fill=%22%23181a12%22 opacity=%22.30%22/><circle cx=%2214%22 cy=%2214%22 r=%2212%22 fill=%22%23ffffff%22/><circle cx=%2214%22 cy=%2214%22 r=%228%22 fill=%22%2312c4d6%22 stroke=%22%23181a12%22 stroke-width=%222.2%22/><path d=%22M8.2,11 C9.2,8.6 11.2,7.2 13.4,7.1 C11,8.4 9.3,9.9 8.6,12.5 Z%22 fill=%22%23ffffff%22 opacity=%22.92%22/><circle cx=%229.6%22 cy=%229.6%22 r=%222.1%22 fill=%22%23ffffff%22 opacity=%22.55%22/></svg>") 14 14, pointer; }
  .veil .sheet { cursor: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22><path d=%22M4 3 L4 25.5 L10.6 19.4 L14.8 28 L20.2 25.4 L16 17 L25 16.2 Z%22 transform=%22translate%282,2%29%22 fill=%22%23181a12%22 opacity=%22.34%22/><path d=%22M4 3 L4 25.5 L10.6 19.4 L14.8 28 L20.2 25.4 L16 17 L25 16.2 Z%22 fill=%22%23ffffff%22 stroke=%22%23181a12%22 stroke-width=%222.6%22 stroke-linejoin=%22round%22 stroke-linecap=%22round%22/></svg>") 4 3, auto; }
}
