/* Inline cursor and motion layer. Everything here only applies when fx.js adds .has-fx
   (mouse or trackpad, motion allowed). */

/* custom pointer: a black arrow with a thin white edge (visible on any ground), a matching
   black hand over anything clickable, and the normal text caret in fields */
.has-fx, .has-fx body, .has-fx * {
	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='M3 2.5v19.2l5.1-5 3.3 7.8 3.4-1.5-3.3-7.6h7.3z' fill='%230b0b0f' stroke='%23ffffff' stroke-width='1.6' stroke-linejoin='round'/></svg>") 3 2, auto;
}
.has-fx :is(a, button, [role="button"], summary, label, select, .team__card, .ask__chip, .ticket__tab, .ip-toc__title, .wp-block-button__link, .wp-block-navigation-item__content),
.has-fx :is(a, button, [role="button"], summary, label, .wp-block-button__link) * {
	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='M10.2 2.6c-1 0-1.8.8-1.8 1.8v10.1l-1.6-1.6c-.9-.9-2.3-.9-3.1 0-.8.8-.8 2 0 2.9l5.6 6.1c1.1 1.2 2.6 1.8 4.2 1.8h3.2c3 0 5.4-2.4 5.4-5.4v-5.7c0-1-.8-1.8-1.8-1.8-.5 0-1 .2-1.3.6-.2-.9-1-1.5-1.9-1.5-.6 0-1.1.3-1.5.7-.3-.8-1-1.3-1.9-1.3-.4 0-.8.1-1.1.4V4.4c0-1-.8-1.8-1.8-1.8z' fill='%230b0b0f' stroke='%23ffffff' stroke-width='1.5' stroke-linejoin='round'/></svg>") 10 3, pointer;
}
.has-fx :is(input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]), textarea, [contenteditable="true"]) { cursor: text; }
/* on the dark GEO page the pointer flips to white with a dark edge */
.fx-dark.has-fx, .fx-dark.has-fx body, .fx-dark.has-fx * {
	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='M3 2.5v19.2l5.1-5 3.3 7.8 3.4-1.5-3.3-7.6h7.3z' fill='%23ffffff' stroke='%230b1440' stroke-width='1.6' stroke-linejoin='round'/></svg>") 3 2, auto;
}
.fx-dark.has-fx :is(a, button, [role="button"], summary, label, select, .team__card, .ask__chip, .ticket__tab, .wp-block-button__link, .wp-block-navigation-item__content),
.fx-dark.has-fx :is(a, button, [role="button"], summary, label, .wp-block-button__link) * {
	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='M10.2 2.6c-1 0-1.8.8-1.8 1.8v10.1l-1.6-1.6c-.9-.9-2.3-.9-3.1 0-.8.8-.8 2 0 2.9l5.6 6.1c1.1 1.2 2.6 1.8 4.2 1.8h3.2c3 0 5.4-2.4 5.4-5.4v-5.7c0-1-.8-1.8-1.8-1.8-.5 0-1 .2-1.3.6-.2-.9-1-1.5-1.9-1.5-.6 0-1.1.3-1.5.7-.3-.8-1-1.3-1.9-1.3-.4 0-.8.1-1.1.4V4.4c0-1-.8-1.8-1.8-1.8z' fill='%23ffffff' stroke='%230b1440' stroke-width='1.5' stroke-linejoin='round'/></svg>") 10 3, pointer;
}
.fx-dark.has-fx :is(input:not([type="submit"]):not([type="button"]), textarea) { cursor: text; }

/* star trail */
.fx-trail { position: fixed; inset: 0; z-index: 9998; width: 100vw; height: 100vh; pointer-events: none; }

/* magnetic buttons ease back when released */
.has-fx :is(.wp-block-button__link, .audit__go, .team__arrow) { transition: transform .45s cubic-bezier(.2, .8, .2, 1), background-color .2s, color .2s, border-color .2s, box-shadow .2s; will-change: transform; }

/* torch on the dark GEO page: a hidden field of stars appears around the pointer */
.fx-torch { position: fixed; inset: 0; z-index: 0; pointer-events: none; opacity: 0; transition: opacity .6s;
	background: radial-gradient(circle 440px at var(--mx, -500px) var(--my, -500px), rgba(138, 63, 252, .32), transparent 72%), var(--stars, none) 0 0 / 480px 480px;
	-webkit-mask-image: radial-gradient(circle 420px at var(--mx, -500px) var(--my, -500px), #000 0%, #000 30%, rgba(0, 0, 0, .6) 60%, transparent 100%);
	mask-image: radial-gradient(circle 420px at var(--mx, -500px) var(--my, -500px), #000 0%, #000 30%, rgba(0, 0, 0, .6) 60%, transparent 100%);
}
.fx-moving .fx-torch { opacity: 1; }
body:has(.ip-geo) .wp-site-blocks { position: relative; z-index: 1; }

@media (prefers-reduced-motion: reduce) {
	.fx-trail, .fx-torch { display: none; }
}
@media print { .fx-trail, .fx-torch { display: none; } }
