:root{--blue: #2563eb;--blue-d: #1d4ed8;--ink: #0f172a;--muted: #64748b;--bg: #f1f5f9;--card: #ffffff;--line: #e2e8f0;--ok: #16a34a;--warn: #d97706;--danger: #dc2626;--shadow: 0 1px 3px rgba(15,23,42,.08), 0 1px 2px rgba(15,23,42,.06)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--blue);text-decoration:none}button{font-family:inherit;cursor:pointer}.app{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg);position:relative}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top) 16px 0;height:calc(56px + env(safe-area-inset-top));background:var(--ink);color:#fff}.brand{display:flex;align-items:center;gap:9px;cursor:pointer}.brand img{width:30px;height:30px;border-radius:8px;display:block}.brand .logo{font-size:19px;font-weight:800;letter-spacing:-.5px;line-height:1}.brand .logo em{display:block;font-style:normal;font-size:9px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;opacity:.6;margin-top:2px}.bell{position:relative;background:transparent;border:0;color:#fff;padding:8px;border-radius:10px}.bell em{position:absolute;top:2px;right:2px;background:var(--danger);color:#fff;font-style:normal;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:grid;place-items:center;padding:0 3px}.content{flex:1;padding:14px 14px 96px}.countdown{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}.countdown .cd-label{font-size:12px;font-weight:700;color:#7c3aed;text-transform:uppercase;letter-spacing:.04em}.countdown .cd-boxes{display:flex;gap:6px}.countdown .cd-boxes b{background:#2d046b;color:#fff;border-radius:8px;padding:5px 8px;font-size:16px;font-weight:800;min-width:34px;text-align:center;font-variant-numeric:tabular-nums}.countdown .cd-boxes b i{display:block;font-style:normal;font-size:9px;font-weight:600;opacity:.7;margin-top:1px}.countdown.ended{color:#991b1b;font-weight:700;font-size:13px}.countdown.cd-compact{margin-top:0;display:inline-flex;align-items:center;gap:4px;background:#2d046b;color:#fff;border-radius:8px;padding:3px 9px;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.02em}.countdown.cd-compact.ended{background:#fee2e2;color:#991b1b}.offer-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.content.full{padding:0}.section-title{font-size:15px;font-weight:700;margin:6px 2px 10px;color:var(--ink)}.muted{color:var(--muted)}.center{text-align:center}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.card+.card{margin-top:12px}.card-pad{padding:14px}.offer{margin-bottom:14px}.offer .hero{position:relative;aspect-ratio:16/9;background:linear-gradient(135deg,#1e3a8a,#2563eb);color:#fff;display:flex;align-items:flex-end}.offer .hero img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.offer .badge{position:absolute;top:10px;left:10px;background:#fff;color:var(--blue-d);font-weight:800;font-size:13px;padding:5px 10px;border-radius:999px;box-shadow:var(--shadow)}.offer .fav{position:absolute;top:8px;right:8px;background:#0f172a80;border:0;color:#fff;width:34px;height:34px;border-radius:50%;display:grid;place-items:center}.offer .meta{padding:12px 14px}.offer .shop{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.offer .shop img{width:22px;height:22px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}.offer h3{margin:6px 0 4px;font-size:17px}.offer p{margin:0;color:var(--muted);font-size:14px}.offer .exp{margin-top:8px;font-size:12px;color:var(--warn);font-weight:600}.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600}.chip.on{background:var(--blue);border-color:var(--blue);color:#fff}.shop-tile{display:flex;align-items:center;gap:12px;padding:12px 14px}.shop-tile .av{width:46px;height:46px;border-radius:12px;object-fit:cover;background:#e0e7ff;display:grid;place-items:center;color:var(--blue-d);font-weight:800}.shop-tile .info{flex:1;min-width:0}.shop-tile .info b{display:block;font-size:15px}.shop-tile .info span{font-size:12px;color:var(--muted)}.row{display:flex;align-items:center;gap:12px;padding:14px;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:0}.row .grow{flex:1;min-width:0}.row .amt{font-weight:800}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;border:0;border-radius:12px;background:var(--blue);color:#fff;font-weight:700;font-size:15px;padding:14px}.btn:disabled{opacity:.6}.btn.sec{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.ghost{background:transparent;color:var(--blue);padding:10px;width:auto}.btn.sm{width:auto;padding:9px 14px;font-size:13px;border-radius:10px}.btn.danger{background:#fef2f2;color:var(--danger);border:1px solid #fecaca}.tag{display:inline-block;font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px}.tag.ok{background:#dcfce7;color:#166534}.tag.warn{background:#fef3c7;color:#92400e}.tag.info{background:#dbeafe;color:#1e40af}.tag.mut{background:#f1f5f9;color:#475569}.field{margin-bottom:12px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:#334155}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:13px;font-size:15px;background:#fff;color:var(--ink)}.field .hint{font-size:12px;color:var(--muted);margin-top:4px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.toggle{display:flex;align-items:center;justify-content:space-between;padding:14px}.switch{position:relative;width:46px;height:28px}.switch input{display:none}.switch i{position:absolute;top:0;right:0;bottom:0;left:0;background:#cbd5e1;border-radius:999px;transition:.2s}.switch i:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;background:#fff;border-radius:50%;transition:.2s}.switch input:checked+i{background:var(--blue)}.switch input:checked+i:after{transform:translate(18px)}.alert{padding:12px 14px;border-radius:12px;font-size:14px;margin-bottom:12px}.alert.err{background:#fef2f2;color:var(--danger);border:1px solid #fecaca}.alert.ok{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.auth{min-height:100dvh;background:linear-gradient(160deg,#2d046b,#4c1d95);color:#fff;padding:40px 22px calc(40px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.auth .logo{font-size:30px;font-weight:800;letter-spacing:-1px}.auth .logo b{color:#60a5fa}.auth .claim{color:#ddd6fe;margin:8px 0 26px;font-size:15px}.auth .panel{background:#fff;color:var(--ink);border-radius:20px;padding:20px}.auth .switchlink{text-align:center;margin-top:18px;color:#ddd6fe}.social{margin-top:16px}.social-sep{display:flex;align-items:center;gap:10px;color:#94a3b8;font-size:12px;margin:6px 0 12px}.social-sep:before,.social-sep:after{content:"";flex:1;height:1px;background:var(--line, #e2e8f0)}.social-google{display:flex;justify-content:center;margin-bottom:8px;min-height:40px}.social-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid var(--line, #e2e8f0);background:#fff;color:#1f2937;font-weight:600;font-size:15px;padding:11px 14px;border-radius:999px;cursor:pointer;margin-bottom:8px}.social-btn:hover{background:#f8fafc}.social-btn .social-ic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:800;font-size:12px;font-style:normal}.social-btn.facebook .social-ic{background:#1877f2}.social-btn.linkedin .social-ic{background:#0a66c2;font-size:10px}.auth .switchlink a{color:#fff;font-weight:700}.empty{text-align:center;padding:48px 20px;color:var(--muted)}.empty svg{width:54px;height:54px;opacity:.35;margin-bottom:10px}.spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:560px;z-index:30;display:flex;justify-content:space-around;align-items:flex-end;background:#fff;border-top:1px solid var(--line);padding:8px 6px calc(8px + env(safe-area-inset-bottom))}.tab{flex:1;background:transparent;border:0;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:600;padding:4px}.tab.on{color:var(--blue)}.tab-center{position:relative}.tab-center svg{background:var(--blue);color:#fff;width:54px;height:54px;padding:15px;border-radius:50%;margin-top:-22px;box-shadow:0 6px 16px #2563eb73}.tab-center.on svg{background:var(--blue-d)}.tab-center span{color:var(--blue)}.scan-wrap{position:relative;background:#000;border-radius:18px;overflow:hidden;aspect-ratio:3/4}.scan-wrap video{width:100%;height:100%;object-fit:cover}.scan-frame{position:absolute;top:16%;right:14%;bottom:16%;left:14%;border:3px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 100vmax #00000059}.install{position:fixed;left:12px;right:12px;bottom:calc(80px + env(safe-area-inset-bottom));max-width:536px;margin:0 auto;z-index:40;background:var(--ink);color:#fff;border-radius:16px;padding:14px 16px;display:flex;align-items:center;gap:12px;box-shadow:0 12px 28px #0000004d}.install .ic{width:40px;height:40px;border-radius:10px;background:var(--blue);display:grid;place-items:center;font-weight:800}.install .grow{flex:1}.install b{display:block;font-size:14px}.install span{font-size:12px;color:#cbd5e1}.install .x{background:transparent;border:0;color:#94a3b8;font-size:20px;padding:4px}.pay-amount{font-size:40px;font-weight:800;text-align:center;margin:8px 0}.detail-hero{aspect-ratio:16/9;background:linear-gradient(135deg,#1e3a8a,#2563eb);position:relative}.detail-hero img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.back{background:transparent;border:0;color:var(--blue);font-weight:600;padding:6px 0 12px;display:inline-flex;gap:6px;align-items:center}.hidden{display:none}
