/*! LoveByPDF - motion plus (Round 79): more animation across the whole site.
 * Copyright (c) 2026 LoveByPDF. All rights reserved.
 * Decorative only; everything is inside prefers-reduced-motion: no-preference.
 * Rule: NEVER a transform / filter / fill-mode animation on <body>, <main> or any wrapper of a position:fixed popup. */
@media (prefers-reduced-motion: no-preference) {
  /* ---- scroll reveal (JS adds .mp-r then .mp-in) ---- */
  .mp-r { opacity: 0; transform: translateY(22px); }
  .mp-r.mp-from-left { transform: translateX(-26px); }
  .mp-r.mp-from-right { transform: translateX(26px); }
  .mp-r.mp-zoom { transform: scale(.94); }
  .mp-r.mp-in { opacity: 1; transform: none; transition: opacity .6s ease, transform .6s cubic-bezier(.2,.8,.2,1); transition-delay: var(--mp-d, 0ms); }
  .mp-fade { opacity: 0; }
  .mp-fade.mp-in { opacity: 1; transition: opacity .8s ease; }

  /* ---- hero: slow drifting colour glow behind the headline (opacity/transform on a decorative layer only) ---- */
  .hero-band { position: relative; isolation: isolate; }
  .hero-band::before, .hero-band::after { content: ""; position: absolute; z-index: -1; border-radius: 50%; filter: blur(46px); opacity: .34; pointer-events: none; }
  .hero-band::before { width: 280px; height: 280px; left: 6%; top: -40px; background: radial-gradient(circle, #2e5bff, transparent 70%); animation: mpDrift1 14s ease-in-out infinite; }
  .hero-band::after { width: 240px; height: 240px; right: 8%; bottom: -30px; background: radial-gradient(circle, #ff7a45, transparent 70%); animation: mpDrift2 17s ease-in-out infinite; }
  @keyframes mpDrift1 { 0%,100% { transform: translate(0,0) scale(1); } 50% { transform: translate(60px,26px) scale(1.15); } }
  @keyframes mpDrift2 { 0%,100% { transform: translate(0,0) scale(1); } 50% { transform: translate(-54px,-22px) scale(1.2); } }
  .hero h2, .hero-copy h2 { animation: mpRise .7s cubic-bezier(.2,.8,.2,1) both; }
  .hero-eyebrow { animation: mpRise .55s cubic-bezier(.2,.8,.2,1) both; }
  @keyframes mpRise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
  .hero-doc-card { animation: mpFloatDoc 6s ease-in-out infinite; }
  @keyframes mpFloatDoc { 0%,100% { translate: 0 0; } 50% { translate: 0 -8px; } }

  /* ---- top bar: soft shadow once the page scrolls (class set by JS) ---- */
  .topbar { transition: box-shadow .3s ease; }
  .topbar.mp-scrolled { box-shadow: 0 8px 26px rgba(31,56,100,.14); }

  /* ---- dropdown menus: slide + fade in, items cascade ---- */
  .nav-dd-col { animation: mpMenuIn .28s ease both; }
  .nav-dd-col:nth-child(2) { animation-delay: .04s; } .nav-dd-col:nth-child(3) { animation-delay: .08s; } .nav-dd-col:nth-child(4) { animation-delay: .12s; }
  @keyframes mpMenuIn { from { opacity: 0; translate: 0 -6px; } to { opacity: 1; translate: 0 0; } }
  .nav-dd-link { transition: background .2s ease, padding-left .2s ease, color .2s ease; }
  .nav-dd-link:hover { padding-left: 16px; }
  .nav-dd-link:hover .nav-dd-icon { animation: mvBounce .55s ease; }

  /* ---- buttons: press, ripple, glow ---- */
  .btn, button.btn-primary, .nav-cta, .hero-cta { transition: transform .15s ease, box-shadow .25s ease, background-color .2s ease, border-color .2s ease; }
  .btn:hover, .nav-cta:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(31,56,100,.18); }
  .btn:active, .nav-cta:active, .hero-cta:active { transform: translateY(0) scale(.97); box-shadow: none; }
  .mp-ripple-host { position: relative; overflow: hidden; }
  .mp-ripple { position: absolute; border-radius: 50%; width: 12px; height: 12px; margin: -6px 0 0 -6px; background: rgba(255,255,255,.55); pointer-events: none; animation: mpRipple .65s ease-out forwards; }
  @keyframes mpRipple { to { transform: scale(26); opacity: 0; } }

  /* ---- cards everywhere lift a little ---- */
  .feature, .step, .testimonial-card, .wallet-card, .dts-faq, .blog-card, .help-card, .plan-card { transition: transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease, border-color .3s ease; }
  .feature:hover, .step:hover, .testimonial-card:hover, .wallet-card:hover, .help-card:hover, .plan-card:hover { transform: translateY(-5px); box-shadow: 0 16px 34px rgba(31,56,100,.14); border-color: var(--accent, #2e5395); }
  .feature .feature-icon, .step .step-num, .step .step-icon { transition: transform .35s cubic-bezier(.2,1.4,.4,1); }
  .feature:hover .feature-icon, .step:hover .step-num, .step:hover .step-icon { transform: scale(1.14) rotate(-6deg); }

  /* ---- inputs: focus glow ---- */
  input[type=text], input[type=email], input[type=password], input[type=number], input[type=search], input[type=url], input[type=tel], select, textarea { transition: box-shadow .25s ease, border-color .25s ease; }
  input:focus, select:focus, textarea:focus { box-shadow: 0 0 0 4px rgba(46,91,255,.15); }

  /* ---- links in running text: underline grows in ---- */
  .footer-links a, .footer a { position: relative; transition: color .2s ease, transform .2s ease; }
  .footer-links a:hover { transform: translateY(-2px); }

  /* ---- progress bars: moving shine ---- */
  .progress-bar > span, .progress-fill, .progress-box .bar > span, #progressBar { position: relative; overflow: hidden; }
  .progress-bar > span::after, .progress-fill::after, #progressBar::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, transparent 20%, rgba(255,255,255,.45) 50%, transparent 80%); transform: translateX(-100%); animation: mpShine 1.6s ease-in-out infinite; }
  @keyframes mpShine { to { transform: translateX(100%); } }

  /* ---- popups / modal cards: pop in (animation sits on the inner card, never on the fixed overlay) ---- */
  .site-popup-overlay:not([hidden]) { animation: mpFadeOnly .22s ease; }
  .site-popup-overlay:not([hidden]) > * { animation: mpPopIn .32s cubic-bezier(.2,1.2,.4,1) both; }
  @keyframes mpFadeOnly { from { opacity: 0; } to { opacity: 1; } }
  @keyframes mpPopIn { from { opacity: 0; scale: .92; } to { opacity: 1; scale: 1; } }

  /* ---- result / success states ---- */
  .result-box:not(.hidden), .error-box:not(.hidden), .progress-box:not(.hidden) { animation: mpRise .4s cubic-bezier(.2,.8,.2,1) both; }

  /* ---- tables and lists: rows fade in one by one ---- */
  table.mp-rows tbody tr { animation: mpRise .4s ease both; animation-delay: calc(var(--mp-i, 0) * 35ms); }

  /* ---- numbers count up (JS sets text); chips and badges pulse softly ---- */
  .badge-new, .tool-badge, .new-badge, [data-pulse] { animation: mvPulse 2.6s ease-in-out infinite; }

  /* ---- headings: soft gradient sweep on the page title ---- */
  .page-title, .dt-h1, .rf-h1 { background-size: 220% 100%; }

  /* ---- icons wiggle on hover ---- */
  .tool-icon svg, .qt-icon svg, .nav-dd-icon svg { transition: transform .3s ease; }
  a:hover > .qt-icon svg, .tool-card:hover .tool-icon svg { transform: rotate(-8deg) scale(1.12); }

  /* ---- scroll-to-top-like floating buttons gently bob ---- */
  .lbp-tour-btn, .help-bot-btn, #helpBotBtn { animation: mpBob 4s ease-in-out infinite; }
  @keyframes mpBob { 0%,100% { translate: 0 0; } 50% { translate: 0 -4px; } }
}
@media (prefers-reduced-motion: reduce) {
  .mp-r, .mp-fade { opacity: 1 !important; transform: none !important; }
}
