/* ==========================================================================
   cursor_effects.css — глобальные интеракции (Konami canvas + scan-line
   на primary CTA). Раньше тут был кастомный ring+dot cursor — отключён
   v0.27.3 (shouldEnable() return false в cursor_effects.js) по запросу
   юзера «сделай курсор адекватнее ну что за кружок».
   v0.27.x perf cleanup: ~160 строк мёртвых правил (#pbp-cursor-ring/-dot,
   .is-hover-link/-input/-image, @keyframes pbp-cursor-click) удалены —
   `body.pbp-cursor-on` нигде не добавляется, селекторы не матчатся
   ни на одной странице. Файл подключён через _nav.html на каждой странице,
   так что любая экономия байтов = win × N. JS-файл оставлен из-за Konami
   easter-egg, который живёт в той же IIFE.
   ========================================================================== */

/* ==========================================================================
   Konami party mode (set by motion.js when secret entered).
   Tiny confetti + theme rapid cycle handled in JS; we only style the canvas.
   ========================================================================== */
#pbp-konami-canvas {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 99980;
    opacity: 0;
    transition: opacity 220ms ease-out;
}
body.pbp-konami-on #pbp-konami-canvas {
    opacity: 1;
}

/* ==========================================================================
   Scan-line sweep on primary buttons (hover effect, GPU friendly)
   Used by interaction_polish.css too — exposed here so it works even when
   only cursor_effects.css is present. Keep scoped to known primary CTAs.
   ========================================================================== */
.btn-primary,
.cta-btn,
.nav-cta,
.hero-cta,
#submit-btn,
.lk-btn-primary,
.pb-promo-submit {
    /* v0.27 polish: ensure scan-line ::after anchors to the button. Keep
       existing position values intact when set; only fill `static` cases.
       NO `overflow: hidden` here — would clip magnetic inner-translate that
       moves 1.5× the parent. The ::after `inset:0` + `border-radius:inherit`
       is enough to bound the sweep visually. */
    position: relative;
}
.btn-primary::after,
.cta-btn::after,
.nav-cta:not(#navAccount):not(#navBalanceChip)::after,
.hero-cta::after,
#submit-btn::after,
.lk-btn-primary::after,
.pb-promo-submit::after {
    /* scan-line sweep — only shows on hover */
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    background: linear-gradient(
        120deg,
        transparent 0%,
        transparent 30%,
        rgba(255, 255, 255, 0.18) 45%,
        rgba(255, 255, 255, 0.06) 60%,
        transparent 70%,
        transparent 100%
    );
    background-size: 250% 100%;
    background-position: -150% 0;
    mix-blend-mode: overlay;
    opacity: 0;
    transition: opacity 200ms ease;
    z-index: 2;
}
.btn-primary:hover::after,
.cta-btn:hover::after,
.nav-cta:not(#navAccount):not(#navBalanceChip):hover::after,
.hero-cta:hover::after,
#submit-btn:hover::after,
.lk-btn-primary:hover::after,
.pb-promo-submit:hover::after {
    opacity: 1;
    animation: pbp-scanline-sweep 1.2s ease-out;
}
@keyframes pbp-scanline-sweep {
    0% {
        background-position: -150% 0;
    }
    100% {
        background-position: 150% 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .btn-primary::after,
    .cta-btn::after,
    .nav-cta::after,
    .hero-cta::after,
    #submit-btn::after,
    .lk-btn-primary::after,
    .pb-promo-submit::after {
        display: none !important;
    }
}
/* Touch devices: hover doesn't apply, but keep the rule lightweight by
   removing the ::after entirely (saves paint cost on coarse pointers). */
@media (hover: none), (pointer: coarse) {
    .btn-primary::after,
    .cta-btn::after,
    .nav-cta::after,
    .hero-cta::after,
    #submit-btn::after,
    .lk-btn-primary::after,
    .pb-promo-submit::after {
        display: none;
    }
}

/* v0.27.9: scroll-progress-badge KILL SWITCH — JS отключён в motion.js
   initScrollProgressBadge. Защита от закэшированного SW старой версии:
   если #pbp-scroll-badge кто-то всё-таки создаст, мы его прячем.
   v0.27.x perf: ~35 строк мёртвого `#pbp-scroll-badge-DEAD` (renamed
   selector, никто не матчит) удалены. */
#pbp-scroll-badge { display: none !important; }
