:root{--accent:#7c3aed;--accent-soft:#ede9fe}
body{background:radial-gradient(1200px 600px at 20% -10%,#ede9fe,transparent),radial-gradient(900px 500px at 110% 10%,#fae8ff,transparent),#f7f6fb}
.site-top{display:flex;align-items:center;gap:12px;padding:14px 28px;max-width:1200px;margin:0 auto}
.brand-row{display:flex;align-items:center;gap:10px}
.brand-row .brand-logo{background:var(--accent)}
.brand-row b{display:block;font-size:15px}.brand-row small{display:block;font-size:12px;color:var(--ink-3)}
.stage{max-width:1200px;margin:0 auto;padding:10px 28px 100px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:56px;align-items:start}
.panel{padding-top:24px;max-width:560px;display:flex;flex-direction:column;gap:16px}
.panel h1{font-size:32px;letter-spacing:-.025em}
.panel p{color:var(--ink-2);font-size:15.5px;margin:0}
.push-btns{display:flex;flex-wrap:wrap;gap:8px}
.feats .card{display:flex;flex-direction:column;gap:2px}
.feats span{font-size:22px}.feats small{color:var(--ink-3)}
@media (max-width:900px){.stage{grid-template-columns:1fr;gap:28px;padding:0 16px 100px}.panel{padding-top:0;max-width:none}.panel h1{font-size:24px}.site-top{padding:12px 16px}}

.phone{width:370px;height:760px;border-radius:50px;background:#0e0b16;padding:12px;box-shadow:0 30px 60px -20px rgba(76,29,149,.45);position:relative;display:flex;flex-direction:column;overflow:hidden}
.phone-notch{position:absolute;top:12px;left:50%;transform:translateX(-50%);width:118px;height:28px;background:#0e0b16;border-radius:0 0 18px 18px;z-index:6}
.status-bar{position:absolute;top:12px;left:12px;right:12px;height:34px;display:flex;justify-content:space-between;align-items:center;padding:0 26px;font-size:12px;font-weight:700;z-index:5;border-radius:38px 38px 0 0;color:#141827}
.screen{flex:1;background:#faf9fd;border-radius:38px 38px 0 0;overflow-y:auto;overflow-x:hidden;padding-top:40px;position:relative}
.screen.dark{background:linear-gradient(170deg,#4c1d95,#7c3aed 55%,#c026d3)}
.tabbar{display:flex;background:#fff;border-top:1px solid #eee;border-radius:0 0 38px 38px;padding:6px 8px 18px}
.tabbar[hidden]{display:none}
.tabbar button{flex:1;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:10.5px;font-weight:600;color:#8a90a0;cursor:pointer;padding:4px 0}
.tabbar button span{font-size:19px;filter:grayscale(1);opacity:.7}
.tabbar button.on{color:var(--accent)}
.tabbar button.on span{filter:none;opacity:1}
.phone.nolog .screen{border-radius:38px}
@media (max-width:420px){.phone{width:100%;height:720px;border-radius:40px;padding:8px}.status-bar{top:8px;left:8px;right:8px}.phone-notch{top:8px}.screen{border-radius:32px 32px 0 0}.tabbar{border-radius:0 0 32px 32px}.phone.nolog .screen{border-radius:32px}}

/* push */
.push{position:absolute;top:50px;left:20px;right:20px;z-index:10;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:18px;padding:11px 13px;box-shadow:0 10px 30px rgba(0,0,0,.2);display:flex;gap:10px;transform:translateY(-140%);opacity:0;transition:transform .45s cubic-bezier(.2,1.2,.4,1),opacity .3s;cursor:pointer}
.push.show{transform:none;opacity:1}
.push .ic{width:36px;height:36px;border-radius:9px;background:var(--accent);display:grid;place-items:center;font-size:18px;flex:none}
.push .tx{flex:1;min-width:0;font-size:13px;line-height:1.35}
.push .tx .h{display:flex;justify-content:space-between;font-size:11.5px;color:#667;margin-bottom:1px}
.push .tx b{display:block}

/* login */
.login{min-height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding:24px 22px 34px;color:#fff;gap:12px}
.login .logo{font-size:44px;width:76px;height:76px;border-radius:22px;background:rgba(255,255,255,.18);display:grid;place-items:center;margin-bottom:6px}
.login h2{font-size:28px}
.login p{margin:0;opacity:.85}
.login .input{background:rgba(255,255,255,.95);border:0;padding:13px 14px;border-radius:12px}
.login .btn{padding:13px;border-radius:12px;background:#fff;color:var(--accent);border:0;font-size:15px}
.demo-note{background:rgba(0,0,0,.22);border-radius:10px;padding:8px 10px;font-size:12px}

/* app */
.pg{padding:10px 16px 20px;display:flex;flex-direction:column;gap:14px}
.pg h2{font-size:22px}
.hello{display:flex;align-items:center;gap:10px}
.hello .avatar{width:42px;height:42px;font-size:14px;background:var(--accent)}
.hello small{color:var(--ink-3);display:block}
.loyal{border-radius:20px;padding:18px;color:#fff;background:linear-gradient(135deg,#6d28d9,#a21caf);position:relative;overflow:hidden;box-shadow:0 10px 24px -10px rgba(109,40,217,.7)}
.loyal::after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.1)}
.loyal .pts{font-size:34px;font-weight:800;letter-spacing:-.02em}
.loyal .bar{height:8px;background:rgba(255,255,255,.25);border-radius:6px;overflow:hidden;margin:10px 0 6px}
.loyal .bar i{display:block;height:100%;background:#fde047;border-radius:6px;transition:width .6s}
.loyal small{opacity:.9}
.tile{background:#fff;border-radius:16px;padding:14px;box-shadow:0 1px 3px rgba(20,20,40,.06);display:flex;flex-direction:column;gap:8px}
.tile .top{display:flex;align-items:center;gap:10px}
.tile .em{width:40px;height:40px;border-radius:12px;background:var(--accent-soft);display:grid;place-items:center;font-size:19px;flex:none}
.tile b{font-size:14px}
.track{display:flex;gap:4px;margin-top:4px}
.track div{flex:1;font-size:9.5px;text-align:center;color:#8a90a0;font-weight:600}
.track div i{display:block;height:5px;border-radius:4px;background:#e9e7f0;margin-bottom:4px}
.track div.on{color:var(--accent)}.track div.on i{background:var(--accent)}
.qa{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.qa button{border:0;background:#fff;border-radius:14px;padding:10px 4px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;font-weight:600;cursor:pointer;box-shadow:0 1px 3px rgba(20,20,40,.06)}
.qa button span{font-size:20px}
.doc-row{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:12px;box-shadow:0 1px 3px rgba(20,20,40,.06)}
.doc-row .em{width:38px;height:38px;border-radius:10px;background:#fee2e2;color:#b91c1c;display:grid;place-items:center;font-size:10px;font-weight:800;flex:none}
.doc-row .t{flex:1;min-width:0}.doc-row .t b{display:block;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.doc-row .t small{color:var(--ink-3)}
.dl{border:0;background:var(--accent-soft);color:var(--accent);width:36px;height:36px;border-radius:10px;cursor:pointer;display:grid;place-items:center}
.dl svg{width:17px;height:17px}
.reward{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:12px;box-shadow:0 1px 3px rgba(20,20,40,.06)}
.reward .em{font-size:24px;width:44px;height:44px;border-radius:12px;background:#fef9c3;display:grid;place-items:center;flex:none}
.reward .t{flex:1}.reward .t b{display:block;font-size:13.5px}.reward .t small{color:var(--ink-3)}
.reward .btn{padding:6px 10px;font-size:12px}
.reward .btn[disabled]{opacity:.45;cursor:not-allowed}
.hist{display:flex;justify-content:space-between;font-size:13px;padding:8px 2px;border-bottom:1px solid #eee}
.coupon{border:2px dashed var(--accent);border-radius:14px;padding:14px;text-align:center;background:#fff}
.coupon code{font-size:22px;font-weight:800;letter-spacing:.12em;color:var(--accent)}
.setting{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:14px;padding:12px 14px;font-size:14px;box-shadow:0 1px 3px rgba(20,20,40,.06)}
.setting input{width:18px;height:18px;accent-color:var(--accent)}
.seg-tabs{display:flex;background:#efedf5;border-radius:10px;padding:3px}
.seg-tabs button{flex:1;border:0;background:transparent;padding:7px;border-radius:8px;font-weight:600;font-size:12.5px;cursor:pointer;color:#666}
.seg-tabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
