/* ── CURSOR «PORTAL» (2026-10-20) · lógica en sc59.js ──
   Punto + anillo. Se abre al acercarse a una tarjeta, se cierra al salir; en botones se vuelve
   indicador de clic (pulso al presionar). Solo en equipos con mouse (pointer:fine). */
html.pc-on, html.pc-on *{cursor:none !important;}
html.pc-on input:not([type=button]):not([type=submit]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
html.pc-on textarea, html.pc-on [contenteditable="true"], html.pc-on [contenteditable=""]{cursor:text !important;}
.pc-dot,.pc-ring{position:fixed;left:0;top:0;pointer-events:none;z-index:2147483646;border-radius:50%;opacity:0;will-change:transform;}
.pc-dot{width:6px;height:6px;margin:-3px 0 0 -3px;background:#fff;box-shadow:0 0 0 2px #1432c8,0 0 6px rgba(20,50,200,.35);transition:opacity .2s,width .25s,height .25s,margin .25s;}
.pc-ring{width:30px;height:30px;margin:-15px 0 0 -15px;border:1.5px solid #4f6fff;box-shadow:0 0 0 1px rgba(255,255,255,.55),inset 0 0 0 1px rgba(255,255,255,.35);
  transition:opacity .25s,width .35s cubic-bezier(.2,.9,.3,1.3),height .35s cubic-bezier(.2,.9,.3,1.3),margin .35s cubic-bezier(.2,.9,.3,1.3),border-color .25s,border-width .25s,background .25s;}
.pc-on-vis .pc-dot,.pc-on-vis .pc-ring{opacity:1;}
/* tarjeta: el portal se abre */
.pc-card .pc-ring{width:64px;height:64px;margin:-32px 0 0 -32px;border-width:1px;border-color:rgba(79,111,255,.75);background:rgba(79,111,255,.06);}
.pc-card .pc-ring::after{content:"";position:absolute;inset:7px;border-radius:50%;border:1px solid rgba(79,111,255,.35);animation:pcBreath 2.4s ease-in-out infinite;}
@keyframes pcBreath{0%,100%{transform:scale(.92);opacity:.5}50%{transform:scale(1);opacity:1}}
/* botón: indicador de clic */
.pc-btn .pc-ring{width:40px;height:40px;margin:-20px 0 0 -20px;border-width:2px;border-color:#2246e5;background:rgba(34,70,229,.12);}
.pc-btn .pc-dot{width:8px;height:8px;margin:-4px 0 0 -4px;}
.pc-down .pc-ring{width:26px;height:26px;margin:-13px 0 0 -13px;background:rgba(34,70,229,.22);transition-duration:.12s;}
.pc-wave{position:fixed;left:0;top:0;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;border:2px solid #4f6fff;pointer-events:none;z-index:2147483645;animation:pcWave .5s ease-out forwards;}
@keyframes pcWave{from{transform:var(--pcp) scale(.6);opacity:.9}to{transform:var(--pcp) scale(1.9);opacity:0}}
/* campos de texto: se oculta y queda el cursor de texto nativo */
.pc-text .pc-dot,.pc-text .pc-ring{opacity:0 !important;}
@media (prefers-reduced-motion:reduce){.pc-card .pc-ring::after{animation:none;}.pc-wave{display:none;}}
/* fondo oscuro (p. ej. tarjetas de precios): anillo y punto en blanco */
.pc-dark .pc-ring{border-color:rgba(255,255,255,.9);box-shadow:0 0 0 1px rgba(20,50,200,.35);}
.pc-dark.pc-card .pc-ring{border-color:rgba(255,255,255,.85);background:rgba(255,255,255,.07);}
.pc-dark.pc-card .pc-ring::after{border-color:rgba(255,255,255,.4);}
.pc-dark.pc-btn .pc-ring{border-color:#fff;background:rgba(255,255,255,.16);}
.pc-dark .pc-dot{box-shadow:0 0 0 2px rgba(255,255,255,.5),0 0 8px rgba(255,255,255,.5);}
.pc-dark .pc-wave{border-color:#fff;}
/* desintegrar al salir de la ventana / regenerar al volver (sc59: .pc-gone, .pc-regen, partículas .pc-px) */
.pc-px{position:fixed;left:0;top:0;border-radius:50%;pointer-events:none;z-index:2147483646;will-change:transform,opacity;}
.pc-gone .pc-dot,.pc-gone .pc-ring{opacity:0 !important;scale:1.5;transition:opacity .12s,scale .2s ease-out;}
.pc-regen .pc-dot,.pc-regen .pc-ring{animation:pcRegen .42s cubic-bezier(.2,1.5,.4,1) both;}
@keyframes pcRegen{from{scale:0;opacity:0}to{scale:1;opacity:1}}
@media (prefers-reduced-motion:reduce){.pc-regen .pc-dot,.pc-regen .pc-ring{animation:none;}}
