/* ✨ Красота покупки (только /kursy): объёмный QR, галочка «оплачено». QR рисует /assets/fx/qr.js. */
.pin-check { position: relative; display: flex; gap: 14px; align-items: flex-start; background: var(--bg); border: 1px solid var(--border); padding: 12px 14px; border-radius: 12px; margin-bottom: 10px; font-size: .9rem; line-height: 1.45; color: var(--text-muted); cursor: pointer; transition: border-color .25s, box-shadow .25s; }
.pin-check:has(input:checked) { border-color: rgba(212, 175, 55, .7); box-shadow: 0 0 14px rgba(212, 175, 55, .15); }
.pin-check a { color: var(--accent); }

/* --- QR: объёмная карточка --- */
.k-qr-stage { perspective: 900px; margin: 6px auto 12px; width: min(280px, 100%); }
.k-qr-card {
    position: relative; border-radius: 22px; padding: 12px; background: linear-gradient(145deg, #2a2208, #0f0d06);
    border: 1px solid rgba(212,175,55,.6);
    box-shadow: 0 22px 40px rgba(0,0,0,.6), 0 0 28px rgba(212,175,55,.28), inset 0 1px 0 rgba(255,240,190,.25);
    transform-style: preserve-3d; transition: transform .15s ease-out; animation: qr-float 6s ease-in-out infinite;
    --sx: 30%; --sy: 20%;
}
.k-qr-card svg { display: block; width: 100%; height: auto; border-radius: 14px; transform: translateZ(18px); box-shadow: 0 6px 18px rgba(0,0,0,.45); }
.k-qr-card .qg { fill: url(#qf); }
.k-qr-card .qh { fill: none; stroke: #c9a84a; stroke-width: 1; stroke-linecap: round; opacity: .8; }
.k-qr-card .qc { fill: url(#qb); }
.k-qr-card .qs { fill: #e8d48a; opacity: .7; }
.k-qr-shine { position: absolute; inset: 0; border-radius: 22px; pointer-events: none; mix-blend-mode: screen;
    background: radial-gradient(circle at var(--sx) var(--sy), rgba(255,236,170,.35), transparent 45%); }
.k-qr-card::after { content: ''; position: absolute; inset: 0; border-radius: 22px; pointer-events: none;
    background: linear-gradient(115deg, transparent 35%, rgba(255,245,210,.22) 48%, transparent 60%) 0 0 / 250% 100%; animation: qr-gleam 4.5s ease-in-out infinite; }
@keyframes qr-float { 0%, 100% { translate: 0 0; } 50% { translate: 0 -6px; } }
@keyframes qr-gleam { 0% { background-position: 150% 0; } 55%, 100% { background-position: -100% 0; } }
.k-qr-wait { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 12px 0; color: var(--accent); font-size: .95rem; }
@media (prefers-reduced-motion: reduce) { .k-qr-card, .k-qr-card::after { animation: none; } }
.pin-sub { display: block; margin-top: 6px; }
.k-qr-card { cursor: pointer; }
.k-paid-ok svg { width: 64px; height: 64px; fill: none; stroke: #d4af37; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.k-paid-ok circle { stroke-dasharray: 151; stroke-dashoffset: 151; animation: k-paid-draw .7s ease forwards; }
.k-paid-ok path { stroke-dasharray: 40; stroke-dashoffset: 40; animation: k-paid-draw .45s ease .55s forwards; }
@keyframes k-paid-draw { to { stroke-dashoffset: 0; } }
@media (prefers-reduced-motion: reduce) { .k-paid-ok circle, .k-paid-ok path { animation: none; stroke-dashoffset: 0; } }

/* QR прямо в окне покупки, под кнопкой оплаты (и на телефоне: показать другому или нажать — оплата) */
.k-qr-inline { margin-top: 14px; }
.k-qr-inline .k-qr-stage { width: min(220px, 70%); margin: 8px auto 10px; }
.k-qr-inline.is-loading .k-qr-card { opacity: .35; filter: blur(2px); }
.k-qr-inline.is-loading .k-qr-wait span:last-child { visibility: hidden; }
.k-qr-or { display: flex; align-items: center; gap: 10px; color: var(--text-muted); font-size: .85rem; }
.k-qr-or::before, .k-qr-or::after { content: ''; flex: 1; height: 1px; background: var(--border); }
