:root{--brand:#f25c8a;--brand-ink:#3b1f14;--bg:#fff7f2;--surface:#fff;--ink:#2a1a12;--muted:#8a7a72;--line:#eadfd8;--ok:#1f8a4c;--bad:#c62f2f;--radius:18px;--shadow:0 6px 24px #3b1f1414;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--bg);font-family:Avenir Next,Nunito,Segoe UI,system-ui,-apple-system,PingFang HK,Noto Sans HK,sans-serif}*{box-sizing:border-box}body{background:var(--bg);-webkit-tap-highlight-color:transparent;margin:0}h1,h2,h3,h4{margin:.4em 0;line-height:1.2}p{line-height:1.5}a{color:inherit}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;border:1.5px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:12px;outline:none;padding:12px 14px}input:focus,select:focus,textarea:focus{border-color:var(--brand)}textarea{resize:vertical;min-height:80px}label{color:var(--muted);flex-direction:column;gap:6px;font-size:14px;display:flex}fieldset{border:0;margin:0;padding:0}legend{color:var(--muted);margin-bottom:6px;font-size:14px}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--muted);font-weight:600}th,td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px 8px}.btn{border:1.5px solid var(--line);color:var(--ink);background:#fff;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-weight:600;text-decoration:none;display:inline-flex}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn:disabled{opacity:.55;cursor:default}.btn.grow,.grow{flex:1}.link{color:var(--brand);background:0 0;border:0;padding:4px 0;font-weight:600;text-decoration:none}.danger-link{color:var(--bad);background:0 0;border-color:#0000}.muted{color:var(--muted)}.fine{color:var(--muted);font-size:12px}.error{color:var(--bad);font-weight:600}.success{color:var(--ok);font-weight:600}.success.big{font-size:18px}.row{align-items:flex-end;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.stack{flex-direction:column;gap:10px;margin-top:12px;display:flex}.center{text-align:center;flex-direction:column;align-items:center;display:flex}.center-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100vh;padding:24px;display:flex}.spinner{border:3px solid #0000001f;border-top-color:var(--brand);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin;display:inline-block}.btn.primary .spinner{border-color:#fff #fff6 #fff6}@keyframes spin{to{transform:rotate(360deg)}}.lang{border:1.5px solid var(--line);width:44px;height:44px;color:var(--ink);z-index:2;background:#ffffffe6;border-radius:50%;font-weight:700;position:absolute;top:16px;right:16px}.form{flex-direction:column;gap:14px;display:flex}.check{color:var(--ink);flex-direction:row;align-items:center;gap:10px}.check input{width:20px;height:20px;accent-color:var(--brand);flex:none}.radios{flex-wrap:wrap;gap:16px;display:flex}.radio{color:var(--ink);flex-direction:row;align-items:center;gap:6px}.radio input{width:18px;height:18px;accent-color:var(--brand)}.chip{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-size:13px}.panel{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin:16px 0;padding:20px}.code{letter-spacing:2px;font-family:ui-monospace,Menlo,monospace;font-size:18px;font-weight:700}.qr{image-rendering:pixelated;background:#fff;border-radius:12px;padding:8px}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--line);padding:8px 0}.list.small{font-size:14px}.dim{opacity:.5}.hero{background:radial-gradient(circle at 30% 20%, #ffd1df 0, var(--brand) 60%);flex-direction:column;min-height:100vh;display:flex;position:relative}.hero-art{color:#fff;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:48px 24px 24px;display:flex}.hero-art h1{letter-spacing:-.5px;font-size:40px}.hero-art p{opacity:.95;margin:0;font-size:18px}.hero-art img{filter:drop-shadow(0 10px 20px #00000026);border-radius:28px}.sheet{background:var(--bg);padding:28px 24px calc(28px + env(safe-area-inset-bottom));border-radius:32px 32px 0 0;width:100%;max-width:560px;margin:0 auto}.divider-title{text-align:center;color:var(--muted);font-size:18px;font-weight:500}.otp{letter-spacing:10px;text-align:center;font-size:28px}.links{justify-content:space-between;display:flex}.page{padding:16px 16px 40px;position:relative}.page.narrow{max-width:520px;margin:0 auto}.topbar{justify-content:center;align-items:center;min-height:56px;display:flex;position:relative}.topbar .lang{top:6px;right:0}.back{width:44px;height:44px;box-shadow:var(--shadow);color:var(--brand);background:#fff;border:0;border-radius:50%;font-size:26px;position:absolute;top:6px;left:0}.req-note{text-align:right;color:var(--bad);margin:0;font-size:14px}.cc{flex:none;width:100px}.member-head{justify-content:center;align-items:center;min-height:64px;display:flex;position:relative}.member-head .lang{top:10px;right:0}.brand-mark{border-radius:14px}.avatar{background:var(--brand-ink);color:#fff;border:0;border-radius:50%;width:44px;height:44px;font-weight:700;position:absolute;top:10px;left:0}.card{border-radius:24px;margin:12px 0 14px;padding:20px;box-shadow:0 14px 30px #f25c8a59}.card-top{justify-content:space-between;align-items:center;font-size:18px;font-weight:600;display:flex}.qr-btn{width:52px;height:52px;color:var(--brand-ink);background:#ffffffd9;border:0;border-radius:14px;place-items:center;display:grid}.stamp-grid{justify-items:center;gap:8px;margin:18px 0 10px;display:grid}.stamp-grid .donut{width:100%;max-width:64px;height:auto}.donut.on{animation:.4s ease-out pop}@keyframes pop{0%{transform:scale(.6)}to{transform:scale(1)}}.card-bottom small{letter-spacing:1px;font-weight:600}.count{font-size:20px}.count b{font-size:40px}.ok-note{color:var(--ok);text-align:center;margin:4px 0 10px;font-weight:600}.tiles{gap:12px;margin:12px 0;display:flex}.tile-col{flex-direction:column;flex:1;gap:12px;display:flex}.tile{box-shadow:var(--shadow);text-align:left;color:var(--ink);background:#fff;border:0;border-radius:16px;flex:1;align-items:center;gap:10px;padding:16px;font-size:16px;display:flex}.tile.big{flex-direction:column;justify-content:center;align-items:flex-start}.tile small{color:var(--muted)}.tile-icon{text-align:center;width:32px;color:var(--brand-ink);font-size:22px}.section-title{align-items:center;gap:8px;margin-top:24px;display:flex}.badge{background:var(--brand);color:#fff;border-radius:999px;padding:2px 9px;font-size:13px}.vouchers{flex-direction:column;gap:14px;display:flex}.voucher{box-shadow:var(--shadow);text-align:left;border:0;border-left:8px solid var(--brand);background:#fff;border-radius:16px;padding:0;display:flex;overflow:hidden}.voucher-body{flex:1;padding:16px 18px}.voucher-body h3{color:var(--brand);margin:0 0 6px;font-size:20px}.voucher-body p{color:var(--muted);margin:2px 0}.voucher-art{border-left:2px dashed var(--line);background:#fff;place-items:center;width:110px;display:grid}.footer{text-align:center;color:var(--muted);margin-top:32px;font-size:13px}.perks{padding-left:0;list-style:none}.perks li{padding:6px 0}.wallet-buttons{flex-direction:column;gap:10px;width:100%;max-width:320px;margin:8px auto;display:flex}.wallet-buttons.compact{flex-direction:row;max-width:none}.wallet-btn{color:#fff;background:#000;border-radius:14px;flex:1;justify-content:center;align-items:center;padding:14px;font-weight:600;text-decoration:none;display:flex}.wallet-btn.google{background:#1f1f1f}.wallet-page{flex-direction:column;min-height:100vh;display:flex}.wallet-top{background:var(--brand);color:#fff;text-align:center;padding:56px 24px 0;position:relative}.wallet-top p{max-width:420px;margin:0 auto 28px}.pass-peek{width:240px;color:var(--ink);background:#fff;border-radius:18px 18px 0 0;flex-direction:column;align-items:center;gap:6px;margin:0 auto -40px;padding:18px;font-weight:700;display:flex;transform:rotate(-3deg);box-shadow:0 -6px 20px #0000001a}.wallet-bottom{flex-direction:column;flex:1;align-items:center;gap:16px;padding:64px 24px 32px;display:flex}.wallet-bottom .btn{min-width:200px}.modal-backdrop{z-index:50;background:#1e0f0a80;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--bg);width:100%;max-width:520px;padding:28px 22px calc(28px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;max-height:90vh;position:relative;overflow:auto}@media (width>=700px){.modal-backdrop{align-items:center}.modal{border-radius:24px}}.modal-x{width:40px;height:40px;color:var(--muted);background:0 0;border:0;font-size:30px;position:absolute;top:10px;right:12px}.modal-title{margin-top:0;padding-right:40px}.reward-pop{text-align:center}.reward-pop .gift{font-size:56px}.reward-pop h2{color:var(--brand)}.history{padding:0;list-style:none}.history li{border-bottom:1px solid var(--line);justify-content:space-between;gap:10px;padding:10px 0;display:flex}.history time{color:var(--muted);white-space:nowrap;font-size:13px}.staff-bg{background:linear-gradient(160deg, var(--brand), #ffb1c8)}.staff-bg .panel{text-align:left;width:100%;max-width:380px}.staff{min-height:100vh}.staff-head{background:var(--brand-ink);color:#fff;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.staff-head .muted{color:#e9d6cd}.staff-head .link{color:#ffd1df}.spacer{flex:1}.staff-grid{grid-template-columns:minmax(280px,420px) 1fr minmax(220px,300px);gap:16px;padding:16px;display:grid}@media (width<=1000px){.staff-grid{grid-template-columns:1fr}}.scanner{border-radius:var(--radius);aspect-ratio:4/3;background:#111;margin-bottom:12px;position:relative;overflow:hidden}.scanner video{object-fit:cover;width:100%;height:100%}.scanner-frame{pointer-events:none;border:3px solid #fffc;border-radius:16px;position:absolute;inset:18%}.scanner-error{color:#fff;padding:24px}.result .stamp-grid{max-width:420px}.stepper{align-items:center;gap:10px;margin:16px 0;display:flex}.stepper>span{text-align:center;width:36px;font-size:24px;font-weight:700}.voucher-check{background:#fff3f7;border-radius:12px;margin:12px 0;padding:12px 16px}.admin{grid-template-columns:230px 1fr;min-height:100vh;display:grid}.admin-nav{background:var(--brand-ink);color:#fff;flex-direction:column;gap:4px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.admin-nav a,.admin-nav .link{color:#f3e6df;text-align:left;border-radius:10px;padding:10px 12px;font-weight:500;text-decoration:none}.admin-nav a.active{color:#fff;background:#ffffff24;font-weight:700}.admin-brand{align-items:center;gap:10px;margin-bottom:18px;font-size:18px;font-weight:800;display:flex}.admin-brand img{border-radius:8px}.admin-main{max-width:1300px;padding:24px 32px 60px}.admin-main>div>.row,.admin-main form>.row{margin-bottom:12px}@media (width<=800px){.admin{grid-template-columns:1fr}.admin-nav{flex-flow:wrap;height:auto;position:static}.admin-main{padding:16px}}.kpis{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.kpi{border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;flex-direction:column;gap:4px;padding:16px 18px;display:flex}.kpi small{color:var(--muted);font-weight:600}.kpi b{font-size:30px}.kpi span{font-size:13px}.charts{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:16px;display:grid}.chart{border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:16px}.chart h3{margin-top:0;font-size:15px}.bars{align-items:flex-end;gap:2px;height:120px;display:flex}.bar{flex:1;align-items:flex-end;height:100%;display:flex}.bar>div{background:var(--brand);border-radius:3px 3px 0 0;width:100%;min-height:1px}.axis{color:var(--muted);justify-content:space-between;margin-top:4px;font-size:12px;display:flex}.two-col{grid-template-columns:1fr 1fr;align-items:start;gap:20px;display:grid}@media (width<=1000px){.two-col{grid-template-columns:1fr}}.hbar{grid-template-columns:80px 1fr 40px;align-items:center;gap:8px;margin:4px 0;font-size:13px;display:grid}.hbar>div{background:var(--line);border-radius:4px;height:12px;overflow:hidden}.hbar>div>div{background:var(--brand);height:100%}.table{border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;margin:12px 0;overflow:hidden}.auto{border-top:1px solid var(--line);padding:12px 0}.auto h4{color:var(--ink);margin:0}.dot{background:#ccc;border-radius:50%;width:10px;height:10px;display:inline-block}.dot.on{background:var(--ok)}input[type=color]{width:72px;height:44px;padding:4px}.tier-pill{background:var(--brand);color:#fff;vertical-align:middle;letter-spacing:.3px;border-radius:999px;padding:3px 12px;font-size:13px;font-weight:700;display:inline-block}.tier-box{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin:12px 0;padding:14px 16px}.tier-box p{margin:8px 0}.row.between{justify-content:space-between;align-items:center}.bar{background:var(--line);border-radius:999px;height:8px;margin:10px 0 6px;overflow:hidden}.bar span{background:var(--brand);border-radius:999px;height:100%;display:block}.inbox{margin:0;padding:0;list-style:none}.inbox li{border-bottom:1px solid var(--line);padding:12px 0}.inbox li p{margin:4px 0}.inbox time{color:var(--muted);font-size:12px}.promo-note{background:#fff4d6;border-radius:10px;padding:10px 12px;font-size:14px}.prose{white-space:pre-wrap;padding:8px 4px 40px;line-height:1.6}.pre{color:#f5f5f7;background:#1d1d1f;border-radius:10px;padding:14px;font-size:13px;overflow-x:auto}.wrap-any{word-break:break-all}.code-sm{font-family:ui-monospace,Menlo,monospace}.poster{text-align:center;width:190mm;min-height:260mm;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;align-items:center;gap:10px;margin:20px auto;padding:18mm 14mm;display:flex}.poster h2{margin:8px 0 0;font-size:44px}.poster p{max-width:140mm;margin:0;font-size:20px}.poster-qr{background:#fff;border-radius:16px;margin:14px 0;padding:16px}.poster-steps{font-weight:700}.poster-reward{font-weight:800;font-size:24px!important}@media print{.no-print{display:none!important}.admin,.admin-main{margin:0;padding:0;display:block}.poster{box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0 auto}@page{size:A4;margin:10mm}}.dot.warn{background:#e8a33d}.promo-strip{color:#3b1f14;text-align:center;background:#fff4d6;padding:10px 16px;font-weight:600}.tabs{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}.tent{width:190mm;margin:20px auto}.tent-panel{text-align:center;box-sizing:border-box;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;height:128mm;padding:8mm;display:flex}.tent-panel h2{margin:4px 0 0;font-size:30px}.tent-panel p{max-width:150mm;margin:0}.tent-panel .poster-qr{margin:6px 0;padding:10px}.tent-panel .poster-reward{font-size:18px!important}.tent-panel.flip{transform:rotate(180deg)}.tent-fold{text-align:center;color:var(--muted);border-top:1px dashed var(--muted);margin:3mm 0;padding-top:1mm;font-size:11px}.sheet-print{max-width:190mm;box-shadow:var(--shadow);background:#fff;border-radius:12px;margin:20px auto;padding:14mm;line-height:1.5}.sheet-print h2{margin-top:0}.sheet-print h3{margin:16px 0 4px}@media print{.tent,.sheet-print{box-shadow:none;margin:0 auto}.tent-panel{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.tiles.grid2{grid-template-columns:1fr 1fr;display:grid}.tiles.grid2>.tile:nth-child(3):last-child{grid-column:1/-1}.tile{min-width:0}.steps{margin:0;padding:0;list-style:none}.steps>li h3{margin-top:0}
