:root{--k-purple:#534AB7;--k-purple-deep:#3D3490;--k-purple-vivid:#6D5EE0;--k-purple-light:#7B74D4;--k-purple-pale:#EDE9FF;--k-purple-pale2:#F5F3FF;--k-gradient:linear-gradient(135deg,#534AB7,#6D5EE0);--k-gradient-deep:linear-gradient(135deg,#3D3490,#534AB7);--k-gradient-soft:linear-gradient(135deg,#EDE9FF,#F5F3FF);--k-gradient-hero:linear-gradient(150deg,#534AB7,#7C3AED 80%,#6D5EE0);--k-success:#19E68C;--k-success-deep:#0BBF6F;--k-success-pale:#DCFCE7;--k-error:#EF4444;--k-error-pale:#FEF2F2;--k-warning:#F8B319;--k-warning-pale:#FFFBEB;--k-info:#3B82F6;--k-info-pale:#EFF6FF;--k-bg:#F8F7FE;--k-bg-card:#FFFFFF;--k-bg-muted:#F1F0F9;--k-text:#1A1035;--k-text-2:#4B5563;--k-text-3:#6B7280;--k-text-4:#9CA3AF;--k-border:#E4E2F2;--k-border-2:#EDE9FF;--shadow-xs:0 1px 3px rgba(83,74,183,.06);--shadow-sm:0 2px 10px rgba(83,74,183,.10),0 1px 2px rgba(0,0,0,.04);--shadow-md:0 4px 20px rgba(83,74,183,.14),0 2px 6px rgba(0,0,0,.04);--shadow-lg:0 8px 40px rgba(83,74,183,.18),0 4px 10px rgba(0,0,0,.06);--shadow-btn:0 4px 20px rgba(83,74,183,.45);--shadow-btn-success:0 4px 20px rgba(25,230,140,.40);--shadow-hover:0 8px 32px rgba(83,74,183,.22);--r-xs:6px;--r-sm:10px;--r-md:14px;--r-lg:20px;--r-xl:28px;--r-pill:9999px;--ease-enter:cubic-bezier(0.22,1,0.36,1);--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-bounce:cubic-bezier(0.34,1.56,0.64,1);--ease-standard:cubic-bezier(0.4,0,0.2,1);--dur-instant:60ms;--dur-fast:150ms;--dur-base:280ms;--dur-slow:420ms;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,16px)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{text-size-adjust:100%}[role=button],a,button,label,select{touch-action:manipulation;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--k-bg);color:var(--k-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;-webkit-backface-visibility:hidden}.tabular-nums{font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum" 1,"tnum" 1,lining-nums tabular-nums;letter-spacing:-.5px}@keyframes spin{to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes drawRing{0%{stroke-dashoffset:283}to{stroke-dashoffset:0}}@keyframes drawCheck{0%{stroke-dashoffset:62}to{stroke-dashoffset:0}}@keyframes bounceIn{0%{transform:scale(0);opacity:0}55%{transform:scale(1.18);opacity:1}75%{transform:scale(.92)}90%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes pulseRing{0%{transform:scale(1);opacity:.5}to{transform:scale(1.2);opacity:0}}@keyframes blobFloat{0%,to{transform:translate(0) scale(1)}33%{transform:translate(12px,-18px) scale(1.04)}66%{transform:translate(-8px,10px) scale(.97)}}@keyframes scanMove{0%{top:20%}50%{top:78%}to{top:20%}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes successFlash{0%{background:var(--k-success)}80%{background:var(--k-success)}to{background:var(--k-bg)}}.transaction-success{animation:successFlash 2s ease-out forwards}.fade-in-up{animation:fadeInUp var(--dur-base) var(--ease-enter) both}.stagger-1{animation:fadeInUp var(--dur-base) var(--ease-enter) 60ms both}.stagger-2{animation:fadeInUp var(--dur-base) var(--ease-enter) .12s both}.stagger-3{animation:fadeInUp var(--dur-base) var(--ease-enter) .18s both}.stagger-4{animation:fadeInUp var(--dur-base) var(--ease-enter) .24s both}.stagger-5{animation:fadeInUp var(--dur-base) var(--ease-enter) .3s both}.stagger-6{animation:fadeInUp var(--dur-base) var(--ease-enter) .36s both}.stagger-7{animation:fadeInUp var(--dur-base) var(--ease-enter) .42s both}.stagger-8{animation:fadeInUp var(--dur-base) var(--ease-enter) .48s both}.scale-in{animation:scaleIn .25s var(--ease-enter) both}.bounce-in{animation:bounceIn .55s var(--ease-bounce) both}.pulse{animation:pulse 1.6s var(--ease-standard) infinite}.skeleton{background:linear-gradient(100deg,var(--k-bg-muted) 30%,var(--k-border) 50%,var(--k-bg-muted) 70%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:var(--r-md)}.voucher-card{transition:transform .2s var(--ease-enter),box-shadow .2s var(--ease-enter);will-change:transform;transform:translateZ(0)}.voucher-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover)!important}.voucher-card:active{transform:translateY(-1px) scale(.99);transition-duration:var(--dur-instant)}.btn-tap{transition:transform var(--dur-instant) ease-out;will-change:transform}.btn-tap:active{transform:scale(.97)}.pad-key{transition:transform var(--dur-instant) ease-out,background var(--dur-instant) ease-out;will-change:transform}.pad-key:active{transform:scale(.92);background:var(--k-purple-pale)!important}.input-group:focus-within{border-color:var(--k-purple)!important;box-shadow:0 0 0 3px rgba(83,74,183,.18)!important;transition:border-color .15s ease,box-shadow .15s ease}.otp-box:focus{border-color:var(--k-purple)!important;box-shadow:0 0 0 3px rgba(83,74,183,.18)!important;transform:scale(1.08);z-index:1;transition:border-color .15s ease,box-shadow .15s ease,transform .15s var(--ease-bounce)}.pulse-ring{position:relative}.pulse-ring:before{content:"";position:absolute;inset:-14px;border-radius:inherit;border:2px solid rgba(83,74,183,.5);animation:pulseRing 2.4s var(--ease-out) infinite;pointer-events:none}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (max-width:480px){input[type=number],input[type=tel],input[type=text]{font-size:16px!important}}