/* cursor.css — cursor personalizado (punto + aro) */
@media (pointer:fine){
  html.has-cursor:not(.cursor-off), html.has-cursor:not(.cursor-off) *{ cursor:none !important; }
  html.cursor-off .cur-ring, html.cursor-off .cur-dot{ display:none !important; }

  .cur-ring, .cur-dot{
    position:fixed; top:0; left:0; z-index:9999; pointer-events:none;
    border-radius:50%; will-change:transform;
    transform:translateZ(0); -webkit-transform:translateZ(0);
    backface-visibility:hidden; -webkit-backface-visibility:hidden;
  }
  .cur-dot{
    width:7px; height:7px; background:var(--brand-navy);
    transition:opacity .2s, width .16s var(--ease), height .16s var(--ease);
  }
  .cur-ring{
    width:36px; height:36px; border:none; background:none;
    transition:opacity .2s, width .16s var(--ease), height .16s var(--ease),
      transform .1s cubic-bezier(.16,1,.3,1);
  }
  /* aro visible con latido sutil */
  .cur-ring::before{
    content:""; position:absolute; inset:0; border-radius:50%;
    border:1.5px solid var(--brand-slate); background:rgba(95,120,140,.06);
    transition:border-color .28s, background .28s;
    animation:curBeat 2.4s ease-in-out infinite;
  }
  /* onda expansiva que emana cada tanto */
  .cur-ring::after{
    content:""; position:absolute; inset:0; border-radius:50%;
    border:1.5px solid var(--brand-slate); opacity:0;
    animation:curWave 2.4s ease-out infinite;
  }
  @keyframes curBeat{
    0%,100%{ transform:scale(1); }
    50%{ transform:scale(1.07); }
  }
  @keyframes curWave{
    0%{ transform:scale(1); opacity:.5; }
    70%{ opacity:0; }
    100%{ transform:scale(1.9); opacity:0; }
  }

  /* tema oscuro: que se vea sobre fondos navy */
  [data-theme="oscuro"] .cur-dot{ background:#fff; }
  [data-theme="oscuro"] .cur-ring::before{ border-color:rgba(255,255,255,.6); background:rgba(255,255,255,.05); }
  [data-theme="oscuro"] .cur-ring::after{ border-color:rgba(255,255,255,.6); }

  /* sobre elementos interactivos: el aro crece y se tiñe */
  html.cur-hover .cur-ring{
    width:58px; height:58px;
  }
  html.cur-hover .cur-ring::before{
    border-color:var(--brand-navy); background:rgba(27,63,89,.07);
  }
  html.cur-hover .cur-ring::after{ border-color:var(--brand-navy); }
  [data-theme="oscuro"] html.cur-hover .cur-ring::before,
  html.cur-hover[data-theme="oscuro"] .cur-ring::before{
    border-color:#fff; background:rgba(255,255,255,.08);
  }
  html.cur-hover .cur-dot{ width:0; height:0; }

  /* click: pulso */
  html.cur-down .cur-ring{ width:30px; height:30px; }
  html.cur-down .cur-ring::before{ background:rgba(27,63,89,.12); }
  html.cur-down .cur-dot{ width:11px; height:11px; }
}

/* en táctiles no existe */
@media (pointer:coarse){
  .cur-ring, .cur-dot{ display:none !important; }
}
