@font-face{font-family:'Barlow';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/Barlow-400.woff2) format('woff2');}
@font-face{font-family:'Barlow';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/Barlow-500.woff2) format('woff2');}
@font-face{font-family:'Barlow';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/Barlow-600.woff2) format('woff2');}
@font-face{font-family:'Barlow';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/Barlow-700.woff2) format('woff2');}
@font-face{font-family:'Barlow';font-style:normal;font-weight:800;font-display:swap;src:url(fonts/Barlow-800.woff2) format('woff2');}
@font-face{font-family:'Bebas Neue';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/BebasNeue.woff2) format('woff2');}

/* ============================================================================================
   TianLu Members additions on top of the original TianLu app design (style.css)
   ============================================================================================ */
:root{--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px)}
html{-webkit-text-size-adjust:100%}
body{overscroll-behavior-y:contain}
.bottom-nav{bottom:calc(18px + var(--sab))}
.toast{top:calc(20px + var(--sat))}
.page{padding-bottom:calc(92px + var(--sab))}
button{font-family:inherit}
.topbar{padding-top:calc(14px + var(--sat))}
.home-hero{padding-top:calc(20px + var(--sat))}
.profile-hero{padding-top:calc(28px + var(--sat))}
.auth-page{padding-top:calc(40px + var(--sat))}
.inp{font-size:16px}               /* stops iOS zooming into fields */
select.inp{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,#999 50%),linear-gradient(135deg,#999 50%,transparent 50%);background-position:calc(100% - 20px) 52%,calc(100% - 14px) 52%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:36px}
.err-box{background:rgba(229,72,77,.12);color:#c0272c;padding:11px 14px;margin-bottom:14px;font-size:13px;font-weight:600;clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%)}
.check-row{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;font-weight:500;color:rgba(10,14,23,.6);margin:2px 0 16px;line-height:1.4}
.check-row input{width:18px;height:18px;margin-top:1px;accent-color:var(--blue);flex:none}
.check-row a{color:var(--blue);font-weight:700;text-decoration:none}
.skip-intro{position:absolute;top:calc(14px + var(--sat));right:14px;z-index:5;background:rgba(0,0,0,.45);color:#fff;border:1px solid rgba(255,255,255,.4);padding:7px 14px;font-weight:700;font-size:12px;letter-spacing:1.5px}
.offline-bar{background:var(--navy);color:#fff;text-align:center;font-size:12px;font-weight:700;padding:6px 10px;letter-spacing:.5px}

/* member card */
.mcard2{margin:16px 18px 4px;color:#fff;padding:18px 18px 14px;position:relative;overflow:hidden;cursor:pointer;background:linear-gradient(135deg,#c64a36 0%,#8e332a 62%,#6a1d12 100%);clip-path:polygon(0 0,100% 0,100% calc(100% - 24px),calc(100% - 24px) 100%,0 100%);box-shadow:0 14px 30px rgba(142,51,42,.3)}
.mcard2::before{content:'';position:absolute;top:-50px;right:-50px;width:190px;height:190px;border-radius:50%;background:rgba(255,255,255,.08)}
.mcard2::after{content:'';position:absolute;left:-40px;bottom:-70px;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,.05)}
.mcard2-row{display:flex;justify-content:space-between;align-items:center;gap:12px;position:relative;z-index:1}
.mcard2-brand{font-family:'Bebas Neue',sans-serif;font-size:15px;letter-spacing:4px;opacity:.85}
.mcard2-name{font-family:'Bebas Neue',sans-serif;font-size:32px;letter-spacing:3px;line-height:1;margin-top:12px;word-break:break-word}
.mcard2-code{font-weight:700;font-size:12px;letter-spacing:3px;opacity:.8;margin-top:6px}
.mcard2-qr{background:#fff;width:108px;height:108px;padding:8px;flex:none;clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%)}
.mcard2-qr svg{width:100%;height:100%;display:block}
.mcard2-foot{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-size:11.5px;font-weight:600;opacity:.9}
.mcard2-foot b{background:rgba(255,255,255,.18);padding:5px 10px;font-weight:700;letter-spacing:.5px}

/* progress inside reward cards, voucher cards */
.rbar{height:5px;background:var(--bg3);margin:2px 0 6px;overflow:hidden}
.rbar i{display:block;height:100%;background:var(--gold)}
.rmore{font-size:11.5px;font-weight:700;color:rgba(10,14,23,.45);margin-bottom:2px}
.voucher-card{background:var(--navy);color:#fff;padding:14px 16px;margin-bottom:2px;display:flex;align-items:center;justify-content:space-between;gap:12px;clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%);border-left:3px solid var(--gold)}
.voucher-card b{display:block;font-size:14px}
.voucher-card span{font-size:11.5px;opacity:.6}
.voucher-card code{font-family:'Bebas Neue',sans-serif;font-size:26px;letter-spacing:4px;color:var(--gold-light)}
.big-qr{background:#fff;padding:14px;width:min(74vw,300px);margin:6px auto 12px;clip-path:polygon(0 0,100% 0,100% calc(100% - 18px),calc(100% - 18px) 100%,0 100%)}
.big-qr svg{width:100%;height:auto;display:block}
.sub-text{font-size:13.5px;color:rgba(10,14,23,.55);font-weight:500;margin-bottom:16px;line-height:1.45}
.steps{margin:0 0 18px;padding:0;list-style:none;counter-reset:s}
.steps li{counter-increment:s;display:flex;gap:12px;align-items:flex-start;font-size:14px;font-weight:600;padding:9px 0;border-bottom:1px solid var(--bg3)}
.steps li::before{content:counter(s);flex:none;width:24px;height:24px;background:var(--blue);color:#fff;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center}
.menu-note{background:rgba(186,67,50,.1);border-bottom:1.5px solid var(--bg3);padding:11px 18px;font-size:12.5px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;line-height:1.35}
.food-card{cursor:default}
.empty-box{text-align:center;color:rgba(10,14,23,.4);font-size:13px;font-weight:600;padding:36px 18px}
.skel{height:64px;background:linear-gradient(90deg,var(--bg2) 25%,var(--bg) 37%,var(--bg2) 63%);background-size:400% 100%;animation:sh 1.3s infinite;margin-bottom:2px}
@keyframes sh{0%{background-position:100% 50%}100%{background-position:0 50%}}
.app-version{text-align:center;font-size:11px;color:rgba(10,14,23,.3);font-weight:600;padding:6px 0 20px}
.menu-item.danger .menu-item-title{color:#c0272c}
.menu-section a.menu-item{text-decoration:none;color:inherit}
.hist-note{font-size:14px;font-weight:700;color:var(--ink)}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}.ticker-inner{animation:none}}

.intro-overlay.pending{opacity:0;pointer-events:none}
.intro-overlay video{background:#000}
.intro-overlay video::-webkit-media-controls-start-playback-button{display:none!important}
.intro-overlay video::-webkit-media-controls{display:none!important}

/* ---- Add to Home Screen ---- */
.a2hs-full{position:fixed;inset:0;z-index:600;background:rgba(10,10,10,.92);display:flex;align-items:center;justify-content:center;padding:calc(18px + var(--sat)) 18px calc(18px + var(--sab));overflow-y:auto}
.a2hs-card{background:var(--bg);width:100%;max-width:380px;padding:26px 22px 18px;text-align:center;clip-path:polygon(0 0,100% 0,100% calc(100% - 22px),calc(100% - 22px) 100%,0 100%)}
.a2hs-logo{height:46px;width:auto;margin:0 auto 12px;display:block}
.a2hs-card h2{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:32px;letter-spacing:2px;line-height:1.05;margin:0 0 10px;color:var(--ink)}
.a2hs-card p{font-size:13.5px;color:rgba(10,14,23,.6);font-weight:500;line-height:1.45;margin:0 0 16px}
.a2hs-steps{list-style:none;margin:0 0 16px;padding:0;text-align:left}
.a2hs-steps li{display:flex;gap:12px;align-items:flex-start;font-size:14px;font-weight:600;color:var(--ink);padding:10px 0;border-bottom:1px solid var(--bg3);line-height:1.35}
.a2hs-steps li span{flex:none;width:34px;height:34px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;clip-path:polygon(0 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%)}
.a2hs-steps li small{display:block;font-size:11.5px;color:rgba(10,14,23,.45);font-weight:500;margin-top:2px}
.a2hs-skip{background:none;border:0;color:rgba(10,14,23,.45);font-weight:600;font-size:12.5px;padding:10px;text-decoration:underline}
.a2hs-arrow{position:fixed;left:50%;transform:translateX(-50%);font-size:44px;color:#fff;font-weight:800;z-index:601;animation:a2bounce 1.1s ease-in-out infinite;pointer-events:none;text-shadow:0 2px 10px rgba(0,0,0,.5)}
.a2hs-arrow.down{bottom:calc(14px + var(--sab))}
.a2hs-arrow.up{top:calc(10px + var(--sat));left:auto;right:30px;transform:none;animation-name:a2bounce2}
@keyframes a2bounce{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,10px)}}
@keyframes a2bounce2{0%,100%{transform:translate(0,0)}50%{transform:translate(6px,-6px)}}
.a2hs-bar{background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 14px;font-size:12.5px;font-weight:700;letter-spacing:.3px}
.a2hs-bar button{background:#fff;color:var(--blue);border:0;font-weight:800;font-size:11.5px;letter-spacing:1.5px;padding:6px 14px;clip-path:polygon(0 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%)}

.push-card{display:flex;align-items:center;gap:14px;margin:14px 18px;background:var(--navy);color:#fff;padding:14px 16px;cursor:pointer;clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%);border-left:3px solid var(--gold)}
.push-card .push-ic{flex:none;color:var(--gold-light)}
.push-card b{display:block;font-size:14px}
.push-card span{font-size:12px;opacity:.65}
.push-card em{margin-left:auto;font-style:normal;font-family:'Bebas Neue',sans-serif;letter-spacing:2px;background:var(--blue);padding:5px 12px;font-size:15px}
