/* O PONTEIRO DO NEXO — em todo o site, e não só no editor.
 *
 * `cursor: default` é a SETA DE NAVEGAR e `cursor: pointer` é a MÃOZINHA:
 * as duas são do Windows, não do Nexo. A seta com o sol da marca na cauda é
 * nossa — e o alvo exato importa em toda tela onde se clica em coisa pequena:
 * o clique é a PONTA. Até 14/09/2026 era o sol de 26px com o alvo no centro,
 * e o próprio desenho tapava o ponto do clique ("ruim de verificar aonde
 * estou clicando"); entre cinco modelos ficou esta seta. O desenho sai de
 * tools/gera_ponteiros.py: data URI de SVG não se escreve à mão.
 *
 * Mora num arquivo só porque é uma decisão de marca, não de página: mudar o
 * desenho aqui muda em tudo. Cada página do painel carrega este arquivo, e a
 * prévia do editor também (o `_EDIT_JS` pendura um <link> para cá). A LOJA
 * PUBLICADA não carrega, de propósito — ali a marca é a do lojista, e pôr o
 * ponteiro do Nexo na loja dele seria assinar a casa dos outros.
 *
 * POR QUE `!important`, QUE EU NORMALMENTE NÃO USO: o painel declara
 * `cursor:pointer` em 273 lugares, quase sempre por classe. Uma regra de
 * boa educação em `button,a` perde de `.card{cursor:pointer}` e o resultado é
 * o que ele viu — a mãozinha do Windows voltando debaixo do mouse a cada
 * botão. Aqui a força é o recurso: quem manda no ponteiro é a marca.
 *
 * E COMO UM COMPONENTE ESCAPA: pondo `data-cursor` em si mesmo. É o contrato
 * inteiro. As pegas de redimensionar usam isso — ali o cursor não é enfeite,
 * é a única coisa que diz "puxa para o lado" antes de a pessoa puxar. E o
 * <body> recebe `data-cursor` enquanto se arrasta, o que desliga a regra da
 * página toda enquanto o gesto dura.
 */
:root{
  /* a seta com o sol do Nexo na cauda: apontar. O clique é a PONTA (2 2), e nada a cobre */
  --nx-ponteiro:url('data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2226%22 height=%2228%22 viewBox=%220 0 26 28%22%3E%3Cpath d=%22M2.5 2.5L2.5 19.5L6.6 15.6L9.6 22.3L12.6 21L9.7 14.4L15.4 14.4Z%22 fill=%22%231b181c%22 stroke=%22%23ffffff%22 stroke-width=%221.5%22 stroke-linejoin=%22round%22/%3E%3Ccircle cx=%2219.5%22 cy=%2221.5%22 r=%225%22 fill=%22%23f08a2b%22 stroke=%22%23ffffff%22 stroke-width=%221.3%22/%3E%3Cg stroke=%22%231b181c%22 stroke-width=%221.3%22 stroke-linecap=%22round%22%3E%3Cpath d=%22M19.5 18.4V24.6 M16.4 21.5H22.6 M17.27 19.27L21.73 23.73 M21.73 19.27L17.27 23.73%22/%3E%3C/g%3E%3C/svg%3E') 2 2;
  /* a mesma seta, com o sol de alvo fechado: aqui dá para clicar */
  --nx-ponteiro-clique:url('data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2226%22 height=%2228%22 viewBox=%220 0 26 28%22%3E%3Cpath d=%22M2.5 2.5L2.5 19.5L6.6 15.6L9.6 22.3L12.6 21L9.7 14.4L15.4 14.4Z%22 fill=%22%231b181c%22 stroke=%22%23ffffff%22 stroke-width=%221.5%22 stroke-linejoin=%22round%22/%3E%3Ccircle cx=%2219.5%22 cy=%2221.5%22 r=%225%22 fill=%22%23f08a2b%22 stroke=%22%23ffffff%22 stroke-width=%221.3%22/%3E%3Ccircle cx=%2219.5%22 cy=%2221.5%22 r=%222.3%22 fill=%22none%22 stroke=%22%231b181c%22 stroke-width=%221.3%22/%3E%3Ccircle cx=%2219.5%22 cy=%2221.5%22 r=%220.9%22 fill=%22%231b181c%22/%3E%3C/svg%3E') 2 2;
}

/* 0. o <html> também: numa página mais curta que a janela, a faixa embaixo
      do conteúdo é dele, e ali voltava a seta do Windows */
html{cursor:var(--nx-ponteiro),default}

/* 1. a seta com o sol, em tudo — menos nos componentes que MANDAM no próprio cursor,
      e em tudo o que mora DENTRO deles (o desenho da pega, o texto do
      cartão: antes só a borda mostrava a mão de arrastar).
      A lista é curta de propósito e é o contrato inteiro: onde o cursor não
      é enfeite e sim a única coisa que diz o que o gesto faz antes de a
      pessoa fazer o gesto. Pega de esticar a tela, divisor do painel, pega
      de arrastar a ordem, cartão do quadro, item da semana, botão do alarme.
      Componente novo entra pela marca `data-cursor`, sem mexer aqui.
      O :where() zera a força desta regra, e é de propósito: ela é a BASE, e
      as de baixo (clique, escrita, desligado) precisam ganhar dela. */
body:not([data-cursor]),
body:not([data-cursor]) *:where(:not(:is([data-cursor],.pgs,.tpgrip,.grip,.pega,.alarm-thumb,.kanban-card,.week-item)):not(:is([data-cursor],.pgs,.tpgrip,.grip,.pega,.alarm-thumb,.kanban-card,.week-item) *))
  {cursor:var(--nx-ponteiro),default !important}

/* 2. o que se clica: a seta com o sol de alvo fechado. Lista de opções, caixa de
      marcar e controle deslizante entram aqui — antes ganhavam o cursor de
      TEXTO do Windows, que não é símbolo nosso e dizia "digite", sem ter o
      que digitar. */
body:not([data-cursor]) :is(button,a,label,summary,select,
  input:is([type=checkbox],[type=radio],[type=range],[type=color],[type=file],[type=button],[type=submit],[type=reset],[type=image]),
  [role="button"],[role="link"],[role="tab"],[role="option"]),
body:not([data-cursor]) :is(button,a,label,summary,[role="button"]) *
  {cursor:var(--nx-ponteiro-clique),pointer !important}

/* 3. onde se escreve: o cursor de texto. Vem DEPOIS do clique e com mais
      força que ele: um texto sendo reescrito DENTRO de um botão (o "Comprar"
      do banner) precisa mostrar onde entra a letra, não o alvo de clicar. */
body:not([data-cursor]) :is(textarea,
  input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file],[type=button],[type=submit],[type=reset],[type=image],[type=hidden]),
  [contenteditable]:not([contenteditable="false"]),
  [contenteditable]:not([contenteditable="false"]) *){cursor:text !important}

/* 4. desligado ou travado: a seta com o sol ABERTO. O ponto desta folha é tirar
      símbolo do Windows da tela; trocar a mãozinha pelo círculo cortado
      seria trocar um pelo outro. O sol sem o alvo fechado já diz "aqui não
      clica". Vale para `disabled` e para `aria-disabled`, que é como o
      editor marca o interruptor travado sem tirar o botão da ordem do Tab. */
body:not([data-cursor]) :is(button,input,select,textarea,a,[role="button"]):is(:disabled,[aria-disabled="true"])
  {cursor:var(--nx-ponteiro),default !important}
