:root{--blue:#0057d9;--blue-dark:#0043ab;--navy:#0b1f3a;--ink:#14213d;--muted:#5b6b85;--line:#e4e9f2;--bg:#f2f5fa;--card:#ffffff;--green:#16a34a;--green-bg:#e7f6ec;--orange:#ea8a00;--orange-bg:#fef3e2;--red:#dc2626;--red-bg:#fdeaea;--purple:#7c3aed;--purple-bg:#f1eafd;--grey-bg:#eef1f6;--gold:#b8860b;--radius-card:16px;--radius-input:12px;--radius-pill:999px;--shadow-card:0 2px 10px rgba(11,31,58,0.08);--font-head:"Poppins",system-ui,-apple-system,"Segoe UI",sans-serif;--font-body:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font-body);background:#dbe3ef;color:var(--ink);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-head);margin:0}p{margin:0}button{font-family:var(--font-head)}.stage{max-width:430px;margin:0 auto;min-height:100vh;min-height:100dvh;background:var(--bg);position:relative;box-shadow:0 0 40px rgba(11,31,58,.18);display:flex;flex-direction:column}@media (max-width:460px){.stage{box-shadow:none}body{background:var(--bg)}}.screen{display:none;flex-direction:column;flex:1 1;min-height:0}.screen.active{display:flex}.scroll{flex:1 1;overflow-y:auto;padding:16px 16px 110px}.scroll.no-nav{padding-bottom:32px}.appbar{background:var(--blue);color:#fff;padding:14px 16px 18px;border-radius:0 0 20px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.appbar.plain{background:var(--card);color:var(--ink);border-bottom:1px solid var(--line);border-radius:0}.appbar .row{display:flex;align-items:center;gap:12px}.appbar h2{font-size:19px;font-weight:600}.appbar .sub{font-size:13px;opacity:.85;margin-top:2px}.appbar .spacer{flex:1 1}.icon-btn{width:38px;height:38px;border-radius:50%;border:none;background:rgba(255,255,255,.18);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;position:relative}.appbar.plain .icon-btn{background:var(--grey-bg);color:var(--ink)}.icon-btn svg{width:20px;height:20px}.icon-btn .dot{position:absolute;top:7px;right:8px;min-width:17px;height:17px;padding:0 4px;border-radius:var(--radius-pill);background:var(--red);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.card{background:var(--card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:16px;margin-bottom:14px}.card.tight{padding:12px 14px}.card h3{font-size:15px;font-weight:600;margin-bottom:8px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:18px 2px 10px}.section-title h3{font-size:15px;font-weight:600}.section-title a{font-size:13px;color:var(--blue);text-decoration:none;font-weight:500}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--radius-pill);font-size:15px;font-weight:600;padding:13px 22px;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background .15s ease,transform .05s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover{background:var(--blue-dark)}.btn-secondary{background:#fff;color:var(--blue);border-color:var(--blue)}.btn-destructive{background:var(--red);color:#fff}.btn-quiet{background:var(--grey-bg);color:var(--ink)}.btn-block{width:100%}.btn-sm{font-size:13px;padding:8px 16px}.btn svg{width:17px;height:17px}.btn-row{display:flex;gap:10px}.btn-row .btn{flex:1 1}.field{margin-bottom:13px}.field label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--ink)}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-input);padding:12px 14px;font-size:15px;font-family:var(--font-body);background:#fff;color:var(--ink)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--blue);outline-offset:-1px;border-color:var(--blue)}.field .hint{color:var(--muted)}.field .error,.field .hint{font-size:12px;margin-top:5px}.field .error{color:var(--red);display:none}.field.invalid input,.field.invalid select{border-color:var(--red)}.field.invalid .error{display:block}.field-row{display:flex;gap:10px}.field-row .field{flex:1 1}.pill{display:inline-flex;align-items:center;font-size:12px;font-weight:600;padding:4px 11px;border-radius:var(--radius-pill);white-space:nowrap}.pill.blue{background:#e3eefe;color:var(--blue)}.pill.orange{background:var(--orange-bg);color:#b25e00}.pill.purple{background:var(--purple-bg);color:var(--purple)}.pill.green{background:var(--green-bg);color:var(--green)}.pill.red{background:var(--red-bg);color:var(--red)}.pill.grey{background:var(--grey-bg);color:var(--muted)}.pill.gold{background:#faf3dd;color:var(--gold)}.tabbar{position:absolute;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);display:flex;padding:8px 6px calc(10px + env(safe-area-inset-bottom));z-index:30}.tab{flex:1 1;border:none;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:500;color:var(--muted);cursor:pointer;padding:4px 0;text-decoration:none}.tab svg{width:22px;height:22px}.tab.active{color:var(--blue)}.tab.scan-tab{margin-top:-28px}.scan-fab{width:58px;height:58px;border-radius:50%;background:var(--blue);border:4px solid var(--bg);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px rgba(0,87,217,.35)}.scan-fab svg{width:26px;height:26px}.wallet-hero{background:var(--navy);color:#fff;border-radius:var(--radius-card);padding:18px;margin-bottom:14px;box-shadow:var(--shadow-card)}.wallet-hero .label{font-size:13px;opacity:.8}.wallet-hero .amount{font-family:var(--font-head);font-size:32px;font-weight:700;margin:4px 0 2px}.wallet-hero .meta{font-size:12px;opacity:.75}.wallet-hero .actions{display:flex;gap:10px;margin-top:14px}.wallet-hero .actions .btn{flex:1 1}.tile-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}.tile{background:#fff;border:none;border-radius:14px;box-shadow:var(--shadow-card);padding:12px 4px 10px;flex-direction:column;gap:6px;font-size:10.5px;font-weight:500;color:var(--ink);cursor:pointer;text-align:center;line-height:1.25}.tile,.tile .tile-icon{display:flex;align-items:center}.tile .tile-icon{width:40px;height:40px;border-radius:12px;justify-content:center;color:#fff}.tile .tile-icon svg{width:21px;height:21px}.service-row{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;box-shadow:var(--shadow-card);padding:12px;margin-bottom:10px}.service-row .s-icon{width:46px;height:46px;flex-shrink:0;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff}.service-row .s-icon svg{width:23px;height:23px}.service-row .s-info{flex:1 1;min-width:0}.service-row .s-info b{font-size:14px;display:block}.service-row .s-info span{font-size:12px;color:var(--muted);display:block;margin-top:1px}.service-row .s-price{font-size:13px;font-weight:600;color:var(--blue);margin-top:2px;display:block}.stepper{display:flex;align-items:center;gap:9px}.stepper button{width:29px;height:29px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--blue);font-size:17px;font-weight:700;line-height:1;cursor:pointer}.stepper button.add{background:var(--blue);border-color:var(--blue);color:#fff}.stepper span{font-size:15px;font-weight:600;min-width:16px;text-align:center}.order-card{display:block;color:inherit;text-decoration:none;cursor:pointer}.order-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.order-top b{font-size:14.5px}.order-meta{font-size:12.5px;color:var(--muted);line-height:1.6}.order-meta b{color:var(--ink)}.timeline{list-style:none;margin:6px 0 0;padding:0}.timeline li{position:relative;padding:0 0 18px 30px;font-size:13.5px}.timeline li:before{content:"";position:absolute;left:8px;top:20px;bottom:-2px;width:2px;background:var(--line)}.timeline li:last-child:before{display:none}.timeline li:after{content:"";position:absolute;left:2px;top:3px;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--line)}.timeline li.done{color:var(--ink);font-weight:500}.timeline li.done:after{background:var(--green);border-color:var(--green)}.timeline li.now{color:var(--blue);font-weight:600}.timeline li.now:after{background:var(--blue);border-color:var(--blue)}.timeline li.todo{color:var(--muted)}.timeline li .t-time{display:block;font-size:11.5px;color:var(--muted);font-weight:400}.rider-card{gap:12px}.avatar,.rider-card{display:flex;align-items:center}.avatar{width:48px;height:48px;flex-shrink:0;border-radius:50%;background:var(--blue);color:#fff;font-family:var(--font-head);font-weight:600;font-size:18px;justify-content:center}.avatar.navy{background:var(--navy)}.avatar.green{background:var(--green)}.rider-card .r-info{flex:1 1}.rider-card .r-info b{font-size:14.5px;display:block}.rider-card .r-info span{font-size:12.5px;color:var(--muted)}.rider-card .r-actions{display:flex;gap:8px}.rider-card .r-actions .icon-btn{background:var(--grey-bg);color:var(--ink);width:40px;height:40px}.notif{display:flex;gap:12px;padding:13px 2px;border-bottom:1px solid var(--line)}.notif:last-child{border-bottom:none}.notif .n-icon{width:42px;height:42px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff}.notif .n-icon svg{width:20px;height:20px}.notif .n-body{flex:1 1;min-width:0}.notif .n-body b{font-size:13.5px;display:block}.notif .n-body p{font-size:12.5px;color:var(--muted);margin-top:2px;line-height:1.5}.notif .n-time{font-size:11px;color:var(--muted);white-space:nowrap}.notif.unread .n-body b:after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--blue);margin-left:7px;vertical-align:1px}.txn{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line)}.txn:last-child{border-bottom:none}.txn .t-info{flex:1 1}.txn .t-info b{font-size:13.5px;display:block}.txn .t-info span{font-size:11.5px;color:var(--muted)}.txn .t-amt{font-size:14px;font-weight:600}.txn .t-amt.in{color:var(--green)}.txn .t-amt.out{color:var(--ink)}.sum-line{display:flex;justify-content:space-between;font-size:13.5px;padding:5px 0}.sum-line span:first-child{color:var(--muted)}.sum-line.total{font-size:16px;font-weight:700;border-top:1px solid var(--line);margin-top:8px;padding-top:12px}.sum-line.total span:first-child{color:var(--ink)}.sum-line .free{color:var(--green);font-weight:600}.splash-wrap{flex:1 1;background:var(--blue);color:#fff;flex-direction:column;text-align:center;padding:32px}.logo-mark,.splash-wrap{display:flex;align-items:center;justify-content:center}.logo-mark{width:84px;height:84px;border-radius:24px;background:#fff;margin-bottom:18px}.logo-mark svg{width:46px;height:46px}.splash-logo-card{background:#fff;border-radius:28px;padding:26px 30px;margin-bottom:26px;box-shadow:0 12px 40px rgba(0,0,0,.25)}.splash-logo-card img{width:200px;max-width:60vw;height:auto;display:block}.welcome-logo{width:148px}.auth-logo,.welcome-logo{height:auto;display:block}.auth-logo{width:104px;margin-bottom:16px}.appbar-logo{width:40px;height:40px;border-radius:12px;background:#fff;object-fit:contain;padding:2px;flex-shrink:0}.splash-wrap h1{font-size:30px;font-weight:700;letter-spacing:.5px}.splash-wrap p{opacity:.9;margin-top:8px;font-size:14px}.ripple{margin-top:26px;width:46px;height:46px;border-radius:50%;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.ripple{animation:none}*{transition:none!important}}.welcome-wrap{flex:1 1;display:flex;flex-direction:column;padding:40px 24px 28px;background:#fff}.welcome-art{background:var(--bg);border-radius:24px;padding:34px 20px;text-align:center;margin:26px 0}.welcome-art svg{width:120px;height:120px}.welcome-wrap h1{font-size:27px;font-weight:700}.welcome-wrap .lede{color:var(--muted);font-size:15px;margin-top:10px;line-height:1.55}.welcome-wrap .cta{margin-top:auto;display:flex;flex-direction:column;gap:10px;padding-top:24px}.demo-note{font-size:12px;color:var(--muted);text-align:center;margin-top:12px;line-height:1.5}.auth-wrap{flex:1 1;background:#fff;padding:28px 22px;display:flex;flex-direction:column}.auth-wrap h1{font-size:24px;font-weight:700}.auth-wrap .lede{color:var(--muted);font-size:14px;margin:8px 0 22px}.auth-wrap form{display:flex;flex-direction:column}.auth-alt{text-align:center;margin-top:16px;font-size:13.5px;color:var(--muted)}.auth-alt a{color:var(--blue);font-weight:600;text-decoration:none}.otp-box{background:var(--orange-bg);border-radius:var(--radius-input);padding:12px 14px;font-size:13px;margin-bottom:14px;line-height:1.5}.otp-box b{font-size:17px;letter-spacing:3px}.sheet-backdrop{position:absolute;inset:0;background:rgba(11,31,58,.45);display:none;align-items:flex-end;z-index:50}.sheet-backdrop.open{display:flex}.sheet{background:#fff;width:100%;border-radius:20px 20px 0 0;padding:18px 18px calc(22px + env(safe-area-inset-bottom));max-height:82%;overflow-y:auto}.sheet h3{font-size:16px;margin-bottom:4px}.sheet .sheet-sub{font-size:13px;color:var(--muted);margin-bottom:14px}.pay-option{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:14px;padding:13px 14px;margin-bottom:10px;cursor:pointer;background:#fff;width:100%;text-align:left;font-size:14px}.pay-option.selected{border-color:var(--blue);background:#f2f7ff}.pay-option .p-icon{width:40px;height:40px;flex-shrink:0;border-radius:11px;background:var(--grey-bg);display:flex;align-items:center;justify-content:center;color:var(--blue)}.pay-option .p-icon svg{width:20px;height:20px}.pay-option b{display:block;font-size:14px}.pay-option span{font-size:12px;color:var(--muted)}.chat-thread{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;max-height:300px;overflow-y:auto}.bubble{max-width:78%;padding:10px 13px;border-radius:14px;font-size:13.5px;line-height:1.5}.bubble.them{background:var(--grey-bg);align-self:flex-start;border-bottom-left-radius:4px}.bubble.me{background:var(--blue);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}.chat-input{display:flex;gap:8px}.chat-input input{flex:1 1;border:1px solid var(--line);border-radius:var(--radius-pill);padding:11px 16px;font-size:14px;font-family:var(--font-body)}.toast{position:absolute;left:16px;right:16px;bottom:96px;background:var(--navy);color:#fff;border-radius:14px;padding:13px 16px;font-size:13.5px;text-align:center;z-index:60;opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}.toast.show{opacity:1;transform:translateY(0)}.toast.error{background:var(--red)}.empty{text-align:center;padding:34px 20px;color:var(--muted)}.empty svg{width:56px;height:56px;opacity:.5;margin-bottom:10px}.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}.empty p{font-size:13px;line-height:1.55}.promo-card{background:var(--blue);color:#fff;border-radius:var(--radius-card);padding:16px;margin-bottom:14px;box-shadow:var(--shadow-card)}.promo-card b{font-size:15px;display:block}.promo-card p{font-size:12.5px;opacity:.9;margin-top:4px;line-height:1.5}.promo-card .code{display:inline-block;margin-top:10px;background:rgba(255,255,255,.2);border-radius:8px;padding:5px 12px;font-size:13px;font-weight:700;letter-spacing:1px}.list-row{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line);font-size:14px}.list-row:last-child{border-bottom:none}.list-row .grow{flex:1 1}.list-row .grow span{display:block;font-size:12px;color:var(--muted);margin-top:1px}.list-row svg.chev{width:18px;height:18px;color:var(--muted)}.addr-card{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px;cursor:pointer;background:#fff;width:100%;text-align:left;font-size:14px}.addr-card.selected{border-color:var(--blue);background:#f2f7ff}.addr-card b{display:block;font-size:13.5px}.addr-card span{font-size:12.5px;color:var(--muted)}.tag-chip{display:inline-block;background:var(--grey-bg);border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;margin:0 6px 6px 0}.profile-head{display:flex;align-items:center;gap:14px;margin-bottom:6px}.profile-head .avatar{width:60px;height:60px;font-size:22px}.profile-head b{font-size:17px;display:block}.profile-head span{font-size:13px;color:var(--muted)}.ref-box{display:flex;align-items:center;gap:10px;background:var(--grey-bg);border-radius:var(--radius-input);padding:12px 14px}.ref-box code{flex:1 1;font-size:15px;font-weight:700;letter-spacing:1px}.qr-demo{background:#fff;border:1px dashed var(--line);border-radius:var(--radius-card);padding:22px 16px;text-align:center;color:var(--muted);font-size:13px}.qr-demo svg{width:74px;height:74px;margin-bottom:8px;color:var(--ink)}.footer-note{text-align:center;font-size:11.5px;color:var(--muted);padding:14px 0 4px}.stage{max-width:480px}.page{flex:1 1;min-height:0;padding:16px 16px 32px;display:flex;flex-direction:column}.page.no-nav{padding-bottom:32px}.topbar{display:flex;gap:14px;background:var(--blue);padding:12px 18px;border-radius:0 0 20px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.topbar,.topbar .brand{align-items:center;color:#fff}.topbar .brand{display:inline-flex;gap:10px;font-family:var(--font-head);font-weight:700;font-size:17px;text-decoration:none}.topbar .brand img{width:34px;height:34px;border-radius:10px;background:#fff;object-fit:contain;padding:2px}.topbar nav{display:flex;align-items:center;margin-left:auto}.topbar nav a{color:#dce8fb;margin-left:16px;text-decoration:none;font-size:14px;font-weight:500}.topbar nav a:hover{color:#fff}.topbar nav button.linklike{background:rgba(255,255,255,.18);border:0;border-radius:var(--radius-pill);padding:8px 16px;font-family:var(--font-body);font-size:13px;font-weight:600;cursor:pointer;color:#fff;margin-left:16px}.topbar nav button.linklike:hover{background:rgba(255,255,255,.28)}.error-box{background:var(--red-bg);color:var(--red)}.error-box,.ok-box{border-radius:var(--radius-input);padding:12px 14px;font-size:13.5px;margin-bottom:14px;line-height:1.5}.ok-box{background:var(--green-bg);color:var(--green)}.page-hero{background:var(--blue);color:#fff;border-radius:var(--radius-card);padding:18px;margin-bottom:14px;box-shadow:var(--shadow-card)}.page-hero h2{font-size:19px;font-weight:600}.page-hero .sub{font-size:13px;opacity:.85;margin-top:2px}.tabbar{display:none}@media (max-width:640px){.topbar nav{display:none}.tabbar{display:flex}.page{padding:14px 14px 110px}}@media (min-width:641px){.tabbar{display:none!important}}