/* cursor custom: dot + anel + arco de progresso de scroll (difference) */
html.has-cursor, html.has-cursor a, html.has-cursor button { cursor: none; }
/* a camada com a mistura (difference) tem tamanho zero e deixa o cursor vazar: a região que o
   compositor mistura a cada frame é só o cursor, e não a viewport inteira (era um custo fixo em
   todas as páginas). Dentro de uma camada de viewport inteira o blend viraria grupo isolado e o
   cursor sumiria sobre fundo claro, por isso a mistura fica na própria camada. */
.cursor-layer{
  position:fixed; left:0; top:0; width:0; height:0; z-index:9999;
  overflow:visible; pointer-events:none;
  mix-blend-mode:difference;
}
.cursor{
  position:absolute; left:0; top:0;
  width:calc(52 * var(--u)); height:calc(52 * var(--u));
  margin-left:calc(-26 * var(--u)); margin-top:calc(-26 * var(--u));
  transition:opacity .15s ease;
  will-change:transform;
}
.cursor.is-hidden{opacity:0}
.cursor svg{width:100%;height:100%;display:block}
.is-shot .cursor-layer{display:none}
