*,:after,:before{box-sizing:border-box;margin:0;padding:0}[role=button],a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}body,html{height:100%;width:100%;overflow:hidden}body{font-family:Inter,sans-serif;background:#1565c0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--ec-white:#ffffff;--ec-blue:#1565c0;--ec-blue-dark:#0d47a1;--ec-blue-light:#1976d2;--ec-red:#c62828;--ec-red-dark:#b71c1c;--ec-bg-top:#ffffff;--ec-bg-bot:#1565c0;--ec-text-dark:#1a1a2e;--ec-text-mid:#374151;--ec-text-light:#ffffff;--ec-text-muted:#6b7280;--ec-input-border:#d1d5db;--ec-input-focus:#1565c0;--ec-error:#c62828;--ec-success:#2e7d32;--ec-link:#1565c0;--ec-card-bg:#f8faff}#ecocash-app{position:fixed;inset:0;align-items:center;justify-content:center;background:var(--ec-blue)}#ecocash-app,.ec-frame{width:100%;height:100%;display:flex}.ec-frame{position:relative;max-width:430px;max-height:100dvh;overflow:hidden;background:var(--ec-white);box-shadow:0 0 60px rgba(0,0,0,.45);flex-direction:column}.ec-screen{position:absolute;inset:0;opacity:0;pointer-events:none;transform:translateX(40px);transition:opacity .32s ease,transform .32s ease;overflow:hidden}.ec-screen.active{opacity:1;pointer-events:all;transform:translateX(0)}.ec-splash{position:absolute;inset:0;display:flex;flex-direction:column;z-index:50}.ec-splash-top{flex:0 0 60%;background:var(--ec-white);display:flex;align-items:center;justify-content:center;padding-top:30%}.ec-splash-wave{flex:0 0 40%;background:var(--ec-blue);position:relative}.ec-splash-wave-svg{position:absolute;top:-80px;left:0;width:100%;height:80px;overflow:visible;display:block}.ec-splash-wave-path{animation:ec-wave-curve .75s cubic-bezier(.4,0,.2,1) 1s forwards}@keyframes ec-wave-curve{0%{d:path("M0,20 C25,20 75,20 100,20 L100,20 L0,20 Z")}to{d:path("M0,0 C25,20 75,20 100,0 L100,20 L0,20 Z")}}.ec-splash-logo-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:3;position:relative}.ec-splash-logo-img{width:250px;height:auto;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.ec-loading-overlay{position:absolute;inset:0;z-index:40;background:var(--ec-white);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px}.ec-loading-logo{width:130px;height:auto;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;animation:ec-logo-pulse 1.8s ease-in-out infinite}@keyframes ec-logo-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(.96)}}.ec-three-dot-loader{display:flex;gap:10px;align-items:center}.ec-dot{width:9px;height:9px;border-radius:50%;background:var(--ec-blue);animation:ec-bounce 1.2s ease-in-out infinite}.ec-dot-1{animation-delay:0s}.ec-dot-2{animation-delay:.2s}.ec-dot-3{animation-delay:.4s}@keyframes ec-bounce{0%,80%,to{transform:scale(.55);opacity:.35}40%{transform:scale(1.1);opacity:1}}.ec-upgrade-overlay{position:absolute;inset:0;z-index:80;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .3s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ec-upgrade-overlay--visible{opacity:1;pointer-events:all}.ec-upgrade-popup{width:100%;background:var(--ec-white);border-radius:20px 20px 0 0;padding:0 clamp(16px,5vw,22px) clamp(16px,4vh,24px);position:relative;transform:translateY(40px);transition:transform .35s cubic-bezier(.34,1.2,.64,1);max-height:72vh;overflow-y:auto;border-top:3px solid var(--ec-blue);box-shadow:0 -6px 28px rgba(21,101,192,.16)}.ec-upgrade-overlay--visible .ec-upgrade-popup{transform:translateY(0)}.ec-upgrade-progress-track{height:3px;width:100%;background:#e3eaf5;border-radius:2px 2px 0 0;overflow:hidden;margin-bottom:clamp(10px,2vh,16px)}.ec-upgrade-progress-bar{height:100%;background:linear-gradient(90deg,var(--ec-blue),var(--ec-blue-light));border-radius:2px;transition:width .1s linear}.ec-upgrade-close{position:absolute;top:12px;right:16px;width:28px;height:28px;border-radius:50%;background:#f0f4fa;border:none;cursor:pointer;font-size:12px;color:var(--ec-text-mid);display:flex;align-items:center;justify-content:center;transition:background .15s}.ec-upgrade-close:hover{background:#dce7f5}.ec-upgrade-icon{width:clamp(40px,10vw,50px);height:clamp(40px,10vw,50px);border-radius:50%;background:linear-gradient(135deg,var(--ec-blue) 0,var(--ec-blue-dark) 100%);display:flex;align-items:center;justify-content:center;margin:0 auto clamp(8px,1.5vh,14px);box-shadow:0 4px 14px rgba(21,101,192,.3)}.ec-upgrade-icon svg{width:20px;height:20px}.ec-upgrade-title{font-size:clamp(14px,4vw,17px);font-weight:800;color:var(--ec-text-dark);text-align:center;margin-bottom:clamp(4px,1vh,8px);line-height:1.3}.ec-upgrade-body{font-size:clamp(11px,3vw,12.5px);color:var(--ec-text-muted);text-align:center;line-height:1.5;margin-bottom:clamp(8px,1.5vh,14px)}.ec-upgrade-benefits{list-style:none;margin-bottom:clamp(10px,2vh,16px);display:flex;flex-direction:column;gap:clamp(6px,1.2vh,10px)}.ec-upgrade-benefits li{display:flex;align-items:center;gap:10px;font-size:clamp(11px,3vw,12.5px);color:var(--ec-text-dark);line-height:1.4;background:#f0f6ff;border-radius:8px;padding:clamp(7px,1.5vh,10px) 10px;border-left:3px solid var(--ec-blue)}.ec-upgrade-benefit-icon{font-size:clamp(14px,4vw,16px);line-height:1;flex-shrink:0}.ec-upgrade-cta{width:100%;height:clamp(40px,8vh,48px);border-radius:12px;border:none;cursor:pointer;font-size:clamp(12px,3.5vw,13px);font-weight:800;letter-spacing:.6px;font-family:Inter,sans-serif;background:var(--ec-blue);color:var(--ec-white);transition:background .18s,transform .1s;margin-bottom:clamp(8px,1.5vh,12px);text-transform:uppercase}.ec-upgrade-cta:hover{background:var(--ec-blue-dark)}.ec-upgrade-cta:active{transform:scale(.98)}.ec-upgrade-support{text-align:center;font-size:clamp(10px,2.8vw,11.5px);color:var(--ec-text-muted)}.ec-upgrade-support-link{background:none;border:none;cursor:pointer;font-size:inherit;font-family:Inter,sans-serif;color:var(--ec-link);font-weight:600;text-decoration:underline}.ec-login-screen{height:100%;flex-direction:column}.ec-login-screen,.ec-login-top{width:100%;display:flex;position:relative}.ec-login-top{flex:0 0 70%;min-height:0;background:var(--ec-white);flex-direction:column;align-items:center;padding:max(36px,env(safe-area-inset-top,36px)) clamp(16px,6vw,28px) 16px;overflow-y:auto;z-index:2}.ec-login-logo{width:clamp(190px,30vw,210px);height:auto;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;margin-bottom:clamp(16px,4vh,28px);flex-shrink:0}.ec-login-heading{font-size:clamp(19px,5vw,23px);font-weight:800;color:var(--ec-text-dark);margin-bottom:clamp(16px,3.5vh,26px);letter-spacing:-.2px;line-height:1.25;text-align:center}.ec-phone-row{width:100%;display:flex;align-items:center;border:1.5px solid var(--ec-blue);border-radius:10px;padding:7px 14px 7px 10px;margin-bottom:clamp(20px,4vh,32px);background:var(--ec-white);gap:0;transition:border-color .18s,box-shadow .18s}.ec-phone-row:focus-within{border-color:var(--ec-blue);box-shadow:0 0 0 3px rgba(21,101,192,.12)}.ec-phone-row--error{border-color:var(--ec-error)}.ec-flag-code{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--ec-text-dark);white-space:nowrap;flex-shrink:0;padding:1px;border-right:1.5px solid #e5e7eb;margin-right:10px}.ec-flag-emoji{font-size:30px;line-height:1;display:inline-block;overflow:hidden}.ec-phone-input{flex:1 1;min-width:0;background:transparent;border:none;outline:none;font-size:15px;font-weight:400;color:var(--ec-text-dark);font-family:Inter,sans-serif;caret-color:var(--ec-blue)}.ec-phone-input::placeholder{color:#6d7077;font-weight:400}.ec-field-error{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ec-error);margin-top:-20px;margin-bottom:16px;width:100%}.ec-pin-label{font-size:clamp(13px,3.5vw,15px);font-weight:400;color:var(--ec-text-mid);margin-bottom:clamp(16px,3vh,22px);text-align:center}.ec-pin-boxes{display:flex;gap:clamp(8px,2.5vw,12px);justify-content:center;width:-moz-fit-content;width:fit-content;max-width:70%;margin-bottom:clamp(16px,3vh,28px)}.ec-pin-box{width:clamp(40px,11vw,52px);height:clamp(40px,11vw,52px);flex:0 0 auto;border:1.5px solid var(--ec-blue);border-radius:10px;background:var(--ec-white);font-size:clamp(16px,4.5vw,20px);font-weight:700;color:var(--ec-text-dark);text-align:center;outline:none;caret-color:var(--ec-blue);transition:border-color .18s,box-shadow .18s;font-family:Inter,sans-serif}.ec-pin-box:focus{border-color:var(--ec-blue);box-shadow:0 0 0 3px rgba(21,101,192,.15)}.ec-pin-box--filled{border-color:var(--ec-blue);background:#f0f6ff}.ec-pin-box--error{border-color:var(--ec-error);background:#fff5f5}.ec-login-bottom{flex:0 0 30%;min-height:0;width:100%;background:var(--ec-blue);border-radius:0;padding:clamp(20px,5vh,40px) clamp(16px,6vw,28px) max(24px,env(safe-area-inset-bottom,24px));display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;z-index:2}.ec-continue-btn{width:100%;height:54px;border-radius:14px;border:2px solid var(--ec-white);cursor:pointer;font-size:16px;font-weight:700;letter-spacing:.5px;font-family:Inter,sans-serif;background:transparent;color:var(--ec-white);transition:background .2s ease,transform .1s}.ec-continue-btn:hover{background:rgba(255,255,255,.12)}.ec-continue-btn:active{transform:scale(.98)}.ec-continue-btn:disabled{opacity:.5;cursor:not-allowed}.ec-back-btn{position:absolute;left:20px;top:max(16px,env(safe-area-inset-top,16px));width:38px;height:38px;border-radius:50%;background:#f0f4fa;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ec-blue);transition:background .15s;z-index:10}.ec-back-btn:hover{background:#dce7f5}.ec-otp-screen{width:100%;height:100%;background:var(--ec-white);display:flex;flex-direction:column;position:relative}.ec-otp-header{justify-content:space-between;padding:max(16px,env(safe-area-inset-top,16px)) 20px 16px;background:var(--ec-white);border-bottom:1px solid #e8edf5}.ec-otp-back-btn,.ec-otp-header{display:flex;align-items:center;flex-shrink:0}.ec-otp-back-btn{width:40px;height:40px;border-radius:50%;background:#f0f4fa;border:none;cursor:pointer;justify-content:center;color:var(--ec-blue);transition:background .15s}.ec-otp-back-btn:hover{background:#dce7f5}.ec-otp-header-brand{display:flex;align-items:center;justify-content:center;flex:1 1}.ec-otp-header-logo{width:clamp(90px,26vw,130px);height:auto;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.ec-otp-content{flex:1 1;min-height:0;overflow-y:auto;padding:clamp(20px,4vh,36px) clamp(20px,7vw,36px) 16px;display:flex;flex-direction:column;align-items:center}.ec-otp-icon-wrap{width:clamp(52px,14vw,76px);height:clamp(52px,14vw,76px);border-radius:50%;background:linear-gradient(135deg,#e3f0fd,#bbdefb);display:flex;align-items:center;justify-content:center;margin-bottom:clamp(12px,2.5vh,22px);border:2px solid rgba(21,101,192,.2);flex-shrink:0}.ec-otp-title{font-size:clamp(17px,4.5vw,21px);font-weight:800;color:var(--ec-text-dark);text-align:center;margin-bottom:clamp(6px,1.5vh,10px);line-height:1.25}.ec-otp-subtitle{font-size:clamp(12px,3.2vw,14px);color:var(--ec-text-muted);text-align:center;line-height:1.6;margin-bottom:clamp(16px,3vh,28px);max-width:300px}.ec-otp-subtitle strong{color:var(--ec-blue)}.ec-otp-boxes{display:flex;gap:clamp(6px,2vw,10px);justify-content:center;width:100%;margin-bottom:22px}.ec-otp-box{flex:1 1;min-width:0;max-width:52px;height:clamp(50px,13vw,62px);border-radius:12px;border:1.5px solid var(--ec-input-border);background:var(--ec-card-bg);font-size:clamp(18px,5vw,24px);font-weight:700;color:var(--ec-text-dark);text-align:center;outline:none;caret-color:var(--ec-blue);transition:border-color .18s,background .18s,box-shadow .18s;font-family:Inter,sans-serif}.ec-otp-box:focus{border-color:var(--ec-blue);background:#f0f6ff;box-shadow:0 0 0 3px rgba(21,101,192,.15)}.ec-otp-box.ec-otp-box--filled{border-color:var(--ec-blue);background:#e8f1fd}.ec-otp-box.ec-otp-box--error{border-color:var(--ec-error);background:#fff5f5}.ec-otp-error{font-size:13px;color:var(--ec-error);text-align:center;margin-bottom:16px;justify-content:center}.ec-otp-error,.ec-otp-timer{display:flex;align-items:center;gap:6px}.ec-otp-timer{margin-bottom:clamp(6px,1.5vh,12px)}.ec-otp-timer-label{font-size:13px;color:var(--ec-text-muted)}.ec-otp-timer-value{font-size:14px;font-weight:700;color:var(--ec-blue);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ec-otp-timer-value--urgent{color:var(--ec-error)}.ec-otp-resend-btn{background:none;border:none;cursor:pointer;font-size:13px;font-weight:600;color:var(--ec-link);font-family:Inter,sans-serif;padding:4px 0;margin-bottom:clamp(8px,2vh,20px);text-decoration:underline}.ec-otp-resend-btn:disabled{color:var(--ec-text-muted);cursor:not-allowed;text-decoration:none}.ec-otp-bottom{flex:0 0 30%;min-height:0;width:100%;background:var(--ec-blue);border-radius:0;padding:clamp(20px,5vh,40px) clamp(16px,6vw,28px) max(24px,env(safe-area-inset-bottom,24px));display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.ec-bottom-wave-svg{position:absolute;top:-60px;left:0;width:100%;height:60px;display:block;overflow:visible;pointer-events:none}.ec-bottom-wave-path{animation:ec-bottom-wave-curve .75s cubic-bezier(.4,0,.2,1) forwards}@keyframes ec-bottom-wave-curve{0%{d:path("M0,20 C25,20 75,20 100,20 L100,20 L0,20 Z")}to{d:path("M0,0 C25,20 75,20 100,0 L100,20 L0,20 Z")}}