/* Presentation layer only; earning, auth and redemption stay in app.html. */
:root{--green:var(--vr-white);--green-dark:var(--vr-ink);--green-mid:var(--vr-muted);--beige:var(--vr-ink);--beige-dim:var(--vr-mint);--accent:var(--vr-ink);--danger:var(--vr-error);--serif:var(--vr-font);--sans:var(--vr-font)}
html,body{background:var(--vr-white);color:var(--vr-ink);font-weight:400}
.screen{display:none;opacity:1;transform:none;background:white;max-width:640px;margin:auto;scroll-padding-top:20px}
.screen.active{display:flex}.screen>*{flex-shrink:0}
.bar{border-color:var(--vr-border);gap:12px;flex-wrap:wrap;padding:18px 24px}
.bar .logo{font-size:22px;font-weight:900;letter-spacing:-.8px}.bar .logo::after{content:' ✦';color:var(--vr-ink);background:var(--vr-butter);border-radius:50%;padding:3px 6px;margin-left:5px}
.bar .back-btn{font-size:14px;font-weight:800;letter-spacing:0;text-transform:none;opacity:1;min-height:48px}.bar .sub{color:var(--vr-muted);opacity:1;font-size:12px;letter-spacing:.06em}
.display,.display-sm,.pts-num,.success-pts,.redeem-title,.preview-pts{font-weight:900;letter-spacing:-1.3px}.display{font-size:clamp(48px,10vw,68px);line-height:1.04}
.body{padding:28px 24px}.field{background:white;border:1px solid #98aaa0;border-radius:16px;color:var(--vr-ink);font-weight:400;min-height:50px}.field::placeholder{opacity:1;color:var(--vr-muted)}.field:focus{border-color:var(--vr-ink);outline:2px solid var(--vr-ink);outline-offset:2px}
.btn,.locate-btn,.sni-btn{border-radius:16px;font-size:16px;letter-spacing:0;text-transform:none;font-weight:800;min-height:48px}.btn-primary,.locate-btn{background:var(--vr-ink);color:white}.btn-outline{background:white;border:1px solid #98aaa0;color:var(--vr-ink)}.btn-accent,.btn-checkin,.sni-btn{background:var(--vr-butter);border:0;color:var(--vr-ink)}.btn-danger{background:var(--vr-error);color:white}
#s-welcome .body{min-height:0;gap:32px;padding-top:50px}#s-welcome .top{background:var(--vr-butter);padding:32px 24px;border-radius:32px;min-height:320px}#s-welcome .village{opacity:1;font-size:12px;letter-spacing:.08em;font-weight:800}#s-welcome .tagline{opacity:1;font-size:17px;color:var(--vr-ink);font-weight:400;max-width:340px}#s-welcome .role-hint{opacity:1;color:var(--vr-muted);font-size:13px;letter-spacing:0}
.hint,.label,.field-label,.intro,.qr-label,.code-hint,.history-title,.badges-title,.tx-meta,.tx-empty,.preview-label,.preview-sub,.lookup-pts,.section-label,.tier-empty,.redeem-hint,.redeem-shop,.locate-status,.no-shops-msg,.sni-dist,.success-label,.success-detail,.tp-title,.tp-status{opacity:1!important;color:var(--vr-muted);font-size:14px;letter-spacing:0;text-transform:none;font-weight:400}
.field-label,.history-title,.badges-title,.section-label,.tp-title{font-weight:800;margin-bottom:10px}.points-hero{background:var(--vr-mint);border:0;border-radius:24px;margin:22px 24px 0;text-align:left;padding:24px}.points-hero .greeting,.points-hero .pts-lbl,.points-hero .pts-val{opacity:1;color:var(--vr-ink);font-size:14px;letter-spacing:0;text-transform:none}.points-hero .pts-num{font-size:72px;color:var(--vr-ink);margin:8px 0}
.customer-actions{padding:18px 24px 0;display:grid;grid-template-columns:1fr 1fr;gap:10px}.customer-menu{padding:16px 24px;background:var(--vr-sky);display:grid;grid-template-columns:1fr 1fr;gap:10px}.customer-menu[hidden]{display:none}.customer-menu button,.customer-menu a{padding:12px;border:0;border-radius:12px;background:white;color:var(--vr-ink);font:700 14px var(--vr-font);text-align:left;min-height:48px;text-decoration:none;cursor:pointer}.demo-notice{margin:16px 24px 0;background:var(--vr-butter);padding:14px;border-radius:16px;font-size:13px;line-height:1.5}
.qr-section{margin:24px;background:var(--vr-pink);border:0;border-radius:24px}.qr-label{font-weight:800}#qr-canvas,.redeem-qr{background:white;border-radius:12px}.customer-code{font-weight:800}.checkin-cta,.rewards-cta{background:var(--vr-sky);border:0;border-radius:24px}.rewards-cta{background:var(--vr-peach)}.checkin-cta .cta-text strong,.rewards-cta .cta-text strong{font-size:17px;letter-spacing:0;text-transform:none;font-weight:900}.checkin-cta .cta-text,.rewards-cta .cta-text{opacity:1;font-size:14px}.history-section,.badges-section{border:0}.tx-item{border-color:var(--vr-border)}.tx-shop{opacity:1}.badge-item{border:1px solid var(--vr-border);border-radius:16px}.badge-item.earned{background:var(--vr-butter);border:0}.badge-item.locked{opacity:.7}.bi-name,.bi-earned-lbl{font-size:12px;letter-spacing:0;text-transform:none;opacity:1}.bi-earned-lbl{font-weight:800}.reward-card,.stamp-card{border:1px solid var(--vr-border);border-radius:24px;padding:22px;background:var(--vr-pink)}.reward-card:nth-child(even){background:var(--vr-peach)}.stamp-card{background:var(--vr-sky)}.stamp-card.ready{background:var(--vr-mint)}.reward-card .rc-title,.sc-title{font-weight:900;font-size:22px}.reward-card .rc-shop,.reward-card .rc-desc,.reward-card .rc-val,.sc-shop,.sc-count{opacity:1;font-size:14px;color:var(--vr-muted);letter-spacing:0;text-transform:none}.tier-block.locked{opacity:1}.tier-head{border-color:var(--vr-border)}.tier-head .tl{font-weight:900}.tier-head .ts{opacity:1;font-size:13px;letter-spacing:0}.sc-bar,.tp-bar{background:#cadbd1;border-radius:8px;height:9px}.sc-fill,.tp-fill{background:var(--vr-ink);border-radius:8px}.tiers-progress{border:0}.tp-row{padding:14px 0}.tp-lvl{opacity:1;font-weight:800;font-size:15px}
.shop-badge,.spend-preview,.lookup-box,.checkin-info,.val-result{border-radius:20px;border-color:var(--vr-border);background:var(--vr-mint)}.lookup-box.error,.val-result.err{background:#fff0f0;color:var(--vr-error)}.tab-btn{padding:14px 6px;font-size:13px;letter-spacing:0;text-transform:none;opacity:1;color:var(--vr-muted);min-height:48px}.tab-btn.active{color:var(--vr-ink);background:var(--vr-butter);border-radius:14px;border-color:transparent}.tabs{gap:5px;border:0;flex-wrap:wrap}.sni-name{opacity:1}.shop-nearby-item{border-color:var(--vr-border);gap:10px}.shop-nearby-item.too-far,.shop-nearby-item.checked{opacity:.65}.toast{background:var(--vr-ink);color:white;border-radius:16px;border:0}.toast.error{background:var(--vr-error)}.loading-overlay{background:#ffffffe0}.spinner{border-color:#cadbd1;border-top-color:var(--vr-ink)}#install-banner{background:var(--vr-butter);color:var(--vr-ink);border:0;border-radius:20px}#install-banner p{opacity:1;font-size:14px}#install-banner .ib-btn{background:var(--vr-ink);color:white;border-radius:12px;font-size:14px;letter-spacing:0;text-transform:none;min-height:48px}#install-banner .ib-x{opacity:1;min-width:40px;min-height:48px}#s-success .body{background:var(--vr-butter);border-radius:24px;margin:24px;min-height:70dvh}.success-pts{color:var(--vr-ink)}
@media(max-width:380px){.bar .logo{font-size:18px}.customer-actions{grid-template-columns:1fr}.body{padding:24px 18px}.bar{padding:14px 18px}#s-welcome .top{padding:28px 20px}.customer-menu{grid-template-columns:1fr}.badge-item{padding:12px 5px}}

.scan-code-btn{margin:8px 0 12px;background:var(--vr-sky)}
#qr-scanner{margin:auto;width:min(440px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:0;border-radius:24px;padding:24px;color:var(--vr-ink);font-family:var(--vr-font)}
#qr-scanner::backdrop{background:#29332faa}#qr-scanner h2{font-weight:900;margin-bottom:12px}#qr-status{font-size:15px;line-height:1.5;margin-bottom:14px}#qr-video{display:block;width:100%;aspect-ratio:1;object-fit:contain;background:var(--vr-ink);border-radius:16px;margin-bottom:16px}#qr-scanner .hint{margin-bottom:18px}

/* Score and badges belong together; the latest activity sits immediately below. */
.points-hero .badges-section{padding:20px 0 0;margin-top:20px;border-top:1px solid #aacbbb}
.points-hero .badges-grid{gap:8px}.points-hero .badge-item{background:#ffffff80;border:1px solid #adc5b8;opacity:1;padding:12px 6px}.points-hero .badge-item.earned{background:var(--vr-butter);border-color:transparent}.points-hero .badge-item.locked .bi-icon{color:var(--vr-muted)}
.points-hero .bi-name{font-weight:700;font-size:12px}.points-hero .bi-icon{font-size:22px}.points-hero .badges-title{font-size:14px;color:var(--vr-ink)}
.activity-notice{margin:16px 24px 0;padding:18px;display:flex;align-items:flex-start;gap:12px;background:var(--vr-butter);border-radius:20px}.activity-spark{font-size:26px;line-height:1}.activity-notice h2{font-size:17px;font-weight:900;line-height:1.35;overflow-wrap:anywhere}.activity-notice p{font-size:14px;line-height:1.5;margin-top:5px}.activity-time{font-size:12px;color:var(--vr-muted);margin-bottom:5px}.activity-time:empty{display:none}
@media(max-width:360px){.points-hero{margin-left:18px;margin-right:18px;padding:20px 16px}.points-hero .bi-name{font-size:11px}.activity-notice{margin-left:18px;margin-right:18px}}
/* Keep the check-in footer below an independently scrolling content area. */
#s-checkin{overflow:hidden;padding-bottom:0}
#s-checkin>.body{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior:contain}
#s-checkin>.vr-footer{flex:0 0 auto;background:var(--vr-white);border-top:1px solid var(--vr-border);padding:12px 24px calc(12px + var(--safe-bot))}
#s-checkin>.vr-footer a{display:inline-flex;align-items:center;min-height:44px}

.trader-more{margin:0 0 22px;border:1px solid var(--vr-border);border-radius:16px;padding:0 14px}.trader-more summary{cursor:pointer;min-height:48px;align-content:center;font-weight:800}.trader-more button{width:100%;text-align:left;margin-bottom:10px}.trader-more summary:focus-visible{outline:3px solid var(--vr-ink);outline-offset:3px}

/* Profile progress tabs keep the greeting and stamp total in view. */
.profile-tabs{display:flex;gap:8px;border-top:1px solid #aacbbb;margin-top:20px;padding-top:16px;margin-bottom:18px}
.profile-tabs [role=tab]{flex:1;min-height:48px;border:1px solid #aacbbb;border-radius:16px;background:transparent;color:var(--vr-ink);font-size:14px;font-weight:800;cursor:pointer}
.profile-tabs [aria-selected=true]{background:var(--vr-butter);border-color:transparent}
.points-hero .badges-section{padding:0;margin:0;border:0}
.points-hero .passport-widget{padding:0;border:0}
.points-hero .pp-sub{opacity:1;color:var(--vr-muted)}
.points-hero .pp-tile.dim{background:#ffffff80}
.points-hero .pp-cta{color:var(--vr-ink);opacity:1;line-height:1.5}
.passport-empty{font-size:14px;color:var(--vr-muted);line-height:1.6}
