/* LinkSight v4.14 | Premium motion layer. CSS-first, accessible and non-blocking. */
:root{--ls-motion-ease:cubic-bezier(.2,.8,.2,1);--ls-motion-fast:180ms;--ls-motion-mid:300ms}
@keyframes ls14-arrive{from{opacity:0;transform:translate3d(0,13px,0)}to{opacity:1;transform:translateZ(0)}}
@keyframes ls14-success{0%{transform:scale(.985);box-shadow:0 0 0 0 rgba(10,180,130,.0)}55%{transform:scale(1.012);box-shadow:0 0 0 7px rgba(10,180,130,.08)}100%{transform:scale(1);box-shadow:0 0 0 0 rgba(10,180,130,0)}}
@keyframes ls14-pop{0%{opacity:0;transform:translateY(8px) scale(.95)}100%{opacity:1;transform:none}}
@keyframes ls14-aurora{0%,100%{opacity:.22;transform:translateX(-8%) rotate(-8deg)}50%{opacity:.35;transform:translateX(8%) rotate(7deg)}}
/* Avoid content flashing while JavaScript is loading. Animate only after ready. */
.ls14-ready .v6-intro,.ls14-ready .v6-workflow,.ls14-ready .v6-catalog,.ls14-ready .page-hero,.ls14-ready .payment-section,.ls14-ready .status-wrap{animation:ls14-arrive .58s var(--ls-motion-ease) both}
.ls14-ready .v6-workflow,.ls14-ready .payment-section{animation-delay:.075s}
.ls14-ready .v6-catalog{animation-delay:.12s}
/* Plan selections: never override existing disabled or pointer-events guards. */
.home-plan-card{transition:transform var(--ls-motion-mid) var(--ls-motion-ease),box-shadow var(--ls-motion-mid) var(--ls-motion-ease),border-color var(--ls-motion-fast) ease;transform:translateZ(0)}
@media(hover:hover) and (pointer:fine){.home-plan-card:not([aria-disabled="true"]):not(.is-unavailable):not([disabled]):hover{transform:translateY(-4px);box-shadow:0 16px 32px rgba(7,86,62,.12)}}
.home-plan-card:not([aria-disabled="true"]):not(.is-unavailable):not([disabled]):active{transform:translateY(-1px) scale(.992)}
/* Feedback on actions without changing any button's enabled state or event listeners. */
.btn,.v6-pass,.lumi-v47-light,.lumi-v47-controls button,.copy-voucher-btn{transition:transform var(--ls-motion-fast) ease,box-shadow var(--ls-motion-mid) ease,background-color var(--ls-motion-mid) ease,border-color var(--ls-motion-mid) ease}
.btn:not(:disabled):active,.copy-voucher-btn:not(:disabled):active,.lumi-v47-controls button:not(:disabled):active{transform:scale(.98)}
.btn:focus-visible,.home-plan-card:focus-visible,.copy-voucher-btn:focus-visible{outline:3px solid #00bc8c;outline-offset:3px}
/* Status confirmation only when a voucher is actually visible, not on a pending page. */
.ls14-voucher-celebrate{animation:ls14-success .85s var(--ls-motion-ease) both}
.ls14-voucher-celebrate .issued-voucher-code:not([hidden]){animation:ls14-pop .5s var(--ls-motion-ease) both}
/* Theme shift is a quiet background/color change, not heavy repaint effects. */
body{transition:background-color .38s ease,color .3s ease}
.lumi-v3-bubble,.lumi-v47-controls,.v6-catalog,.status-wrap,.payment-section{transition:background-color .38s ease,border-color .38s ease}
/* Retain legibility on mobile and devices with touch input. */
@media(max-width:640px){.home-plan-card{transition-duration:.16s}.ls14-ready .v6-intro,.ls14-ready .v6-workflow,.ls14-ready .v6-catalog,.ls14-ready .page-hero,.ls14-ready .payment-section,.ls14-ready .status-wrap{animation-duration:.36s}}
@media(prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto!important}.ls14-ready .v6-intro,.ls14-ready .v6-workflow,.ls14-ready .v6-catalog,.ls14-ready .page-hero,.ls14-ready .payment-section,.ls14-ready .status-wrap,.ls14-voucher-celebrate,.ls14-voucher-celebrate .issued-voucher-code:not([hidden]){animation:none!important}.home-plan-card,.btn,.v6-pass,.lumi-v47-light,.lumi-v47-controls button,.copy-voucher-btn,body,.lumi-v3-bubble,.lumi-v47-controls,.v6-catalog,.status-wrap,.payment-section{transition:none!important;transform:none!important}}
