:root{--navy:#042b56;--blue:#086bc0;--cyan:#16c7e8;--ink:#102235;--muted:#607187;--line:#dbe6f0;--paper:#fff;--bg:#edf4f9;--green:#087443;--shadow:0 20px 42px rgba(7,43,82,.14)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 90% 0,#c9eff9 0,transparent 29%),var(--bg);color:var(--ink);font:16px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.app-shell{max-width:680px;margin:auto;min-height:100vh;padding:0 15px 36px}.hero{position:relative;overflow:hidden;margin:0 -15px 19px;padding:16px 20px 22px;color:#fff;background:linear-gradient(135deg,#031b38,#075eaf 72%,#08a6d2);box-shadow:0 5px 20px rgba(3,35,69,.22)}.hero:after{content:"";position:absolute;inset:auto -80px -105px auto;width:300px;height:300px;border:1px solid rgba(255,255,255,.18);border-radius:50%;box-shadow:0 0 0 30px rgba(255,255,255,.035),0 0 0 60px rgba(255,255,255,.025)}.logo{display:block;width:min(310px,80vw);height:62px;object-fit:contain;object-position:left center;position:relative;z-index:1}.hero-copy{position:relative;z-index:1;margin-top:13px}.hero h1{margin:0;font-size:34px;line-height:1;font-weight:900;letter-spacing:-.055em}.hero p{margin:5px 0 0;font-size:14px;opacity:.88}.coin-mark{position:absolute;right:25px;bottom:24px;width:58px;height:58px;border-radius:50%;border:2px solid rgba(255,255,255,.76);display:grid;place-items:center;font-size:31px;font-weight:900;color:#d7f9ff;box-shadow:0 0 0 7px rgba(22,199,232,.13);z-index:1}.eyebrow{display:block;color:#0b75bc;font-size:10px;font-weight:900;letter-spacing:.13em}.hero .eyebrow{color:#7ceefd}.empty-state,.scan-card,.update-card,.history,.member-strip{background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:18px;box-shadow:0 7px 20px rgba(24,58,89,.05)}.empty-state{padding:34px 25px;text-align:center}.piggy-icon{width:70px;height:70px;margin:0 auto 13px;border-radius:22px;display:grid;place-items:center;background:linear-gradient(145deg,#effcff,#d3f4fa);font-size:38px}.empty-state h2,.history h2,.update-card h2{margin:0;color:var(--navy);letter-spacing:-.035em}.empty-state p{color:var(--muted);font-size:14px}.primary,.small-button,.icon-button,.text-button{font:inherit;font-weight:850;cursor:pointer}.primary{border:0;border-radius:10px;background:linear-gradient(115deg,#0765b5,#0792c6);color:#fff;padding:12px 17px;box-shadow:0 6px 13px rgba(5,98,180,.22)}.install-note{font-size:12px!important;margin:15px 0 0!important}.member-strip{padding:13px 15px;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:9px}.member-strip strong{display:block;margin-top:2px;font-size:18px;color:var(--navy)}.small-button{border:1px solid #bfd5e8;background:#f3faff;color:#075a9b;border-radius:8px;padding:7px 9px;font-size:12px;white-space:nowrap}.balance-card{position:relative;overflow:hidden;border-radius:19px;padding:22px 20px;margin-bottom:12px;color:#fff;background:linear-gradient(120deg,#06366a,#0874be 72%,#0ba6cd);box-shadow:var(--shadow)}.balance-card:after{content:"";position:absolute;right:-58px;top:-70px;width:195px;height:195px;border:1px solid rgba(255,255,255,.26);border-radius:50%;box-shadow:0 0 0 25px rgba(255,255,255,.045)}.balance-card span{position:relative;z-index:1;font-size:11px;font-weight:900;letter-spacing:.095em}.balance-card strong{position:relative;z-index:1;display:block;font-size:47px;line-height:1.1;letter-spacing:-.07em;margin:5px 0}.balance-card p{position:relative;z-index:1;margin:0;font-size:12px;opacity:.83}.scan-card{padding:16px;margin-bottom:12px}.scan-card strong{display:block;color:var(--navy);font-size:21px;letter-spacing:.045em;margin:3px 0}.scan-card p{margin:0 0 10px;color:var(--muted);font-size:13px}.scan-card canvas{display:block;width:100%;height:auto;max-height:96px;border-radius:8px;background:#fff}.update-card{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:17px;margin-bottom:12px;background:linear-gradient(130deg,#fff,#f0fbff)}.update-card h2{font-size:19px}.update-card p{margin:3px 0 0;color:var(--muted);font-size:12px;max-width:310px}.update-card .primary{flex:0 0 auto}.history{padding:17px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:9px;margin-bottom:9px}.history h2{font-size:21px}.history-total{font-size:12px;font-weight:850;color:var(--green);white-space:nowrap}.history-list{border-top:1px solid var(--line)}.history-row{display:grid;grid-template-columns:1fr auto;gap:9px;padding:12px 0;border-bottom:1px solid var(--line)}.history-row:last-child{border-bottom:0}.history-row strong{display:block;color:#163a5c;font-size:14px}.history-row small{display:block;color:var(--muted);font-size:12px;margin-top:1px}.history-amount{font-weight:900;align-self:center}.history-amount.credit{color:var(--green)}.history-amount.redeem{color:#a1261c}.empty-history{padding:18px 0;color:var(--muted);font-size:14px}.text-button{display:block;margin:17px auto 0;border:0;background:transparent;color:#58708a;text-decoration:underline;font-size:12px}.scan-dialog,.info-dialog{width:min(94vw,530px);border:0;border-radius:18px;padding:0;box-shadow:0 25px 72px rgba(0,0,0,.34)}.scan-dialog::backdrop,.info-dialog::backdrop{background:rgba(2,25,47,.62)}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:18px 19px 12px;background:linear-gradient(120deg,#042d59,#0766b3);color:#fff}.dialog-head .eyebrow{color:#79e9ff}.dialog-head h2{margin:2px 0 0;font-size:22px;letter-spacing:-.035em}.icon-button{border:1px solid rgba(255,255,255,.55);border-radius:8px;background:transparent;color:#fff;width:35px;height:35px;font-size:25px;line-height:1}.scan-dialog>p,.info-dialog>p,.info-dialog ol{margin:15px 19px;color:#435c73;font-size:14px}.info-dialog ol{padding-left:20px}.reader{margin:12px 19px 10px;min-height:120px;border-radius:12px;overflow:hidden;background:#edf5fa}.reader video{width:100%!important;border-radius:12px}.scan-fallback{margin:12px 19px 5px}.scan-fallback label{display:block;border:1px dashed #9bbbd5;border-radius:9px;padding:11px;text-align:center;color:#145985;font-size:13px;font-weight:800;cursor:pointer}.scan-fallback input{position:absolute;width:1px;height:1px;opacity:0}.scan-status{min-height:19px;color:#0b6841!important;font-weight:750}.scan-status.error{color:#a1261c!important}@media(max-width:420px){.balance-card strong{font-size:39px}.update-card{align-items:flex-end;flex-direction:column}.update-card .primary{width:100%}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
