:root{--pink:#e4006d;--berry:#7a1749;--ink:#171216;--paper:#fcfafb;--rose:#fceaf2;--success:#16794a;--success-soft:#eaf7f0;--muted:#756970;--border:#ede7ea;--soft:#f6f2f4;--danger:#b42318;--reward:#fff4d6;--brand:#7a1749;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;min-width:0;background:var(--paper)}button,input,a{font:inherit}:focus-visible{outline:3px solid #315cba;outline-offset:3px}.shell{width:min(100%,720px);margin:auto;padding:22px}.scanner-shell{width:min(100%,420px);min-height:100vh}.brand-lockup,.merchant-brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:800;text-decoration:none}.brand-logo{display:block;width:128px;max-width:100%;height:auto}.scanner-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.scanner-top small{max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.card{min-width:0;padding:22px;background:#fff;border:1px solid var(--border);border-radius:22px}.scanner-card{padding:0;border:0;background:transparent}.button,.secondary{display:inline-flex;align-items:center;justify-content:center;min-height:46px;border-radius:12px;padding:0 18px;font-size:14px;font-weight:800;text-decoration:none}.button{border:1px solid var(--pink);background:var(--pink);color:#fff}.secondary{border:1px solid var(--border);background:#fff;color:var(--ink)}.button:disabled,.secondary:disabled{opacity:.5}.muted{color:var(--muted)}.success{color:var(--success)}.error{color:var(--danger)}input{width:100%;min-width:0;min-height:46px;padding:0 14px;border:1px solid var(--border);border-radius:12px;background:#fff}.manual-entry{display:grid;gap:8px;margin-top:18px}.manual-entry label{font-size:12px;font-weight:700;color:var(--muted)}.manual-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.camera{display:grid;place-items:center;min-height:330px;overflow:hidden;border-radius:20px;background:var(--ink);color:#fff}.camera #reader{width:100%;min-width:0}.camera:has(#reader:empty)::after{content:"Buscando QR…";color:#d9d1d5;font-size:13px}.scanner-state{display:grid;gap:16px;margin-top:20px}.scanner-state h1,.scanner-state h2,.scanner-state p{margin:0}.scanner-state h2{font-size:30px;letter-spacing:-.04em}.scanner-state[data-view$="PENDING"]{opacity:.82}.scanner-progress-card{display:grid;gap:13px;padding:20px;border-radius:18px;background:#fff}.scanner-progress{font-size:17px;font-weight:800}.scanner-actions{display:grid;gap:12px}.stamps{display:flex;gap:7px;flex-wrap:wrap}.stamp{width:30px;height:30px;border-radius:50%;background:#f8e5ee}.stamp.filled{background:var(--pink)}.state-pill{display:inline-flex;align-items:center;gap:7px;width:max-content;max-width:100%;padding:7px 11px;border-radius:99px;background:var(--success-soft);color:var(--success);font-size:12px;font-weight:800}.state-pill::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.reward{display:grid;gap:9px;padding:20px;border:0;border-radius:18px;background:var(--reward)}.reward p,.reward h3{margin:0}.reward-label{font-size:18px;font-weight:800;overflow-wrap:anywhere}.reward-burst{display:grid;place-items:center;width:84px;height:84px;border-radius:50%;background:var(--rose);color:var(--pink);font-size:34px}.controlled-error{padding:18px;border-radius:16px;background:#fdecec}.scanner-success{display:grid;gap:16px}.scanner-success.reward-earned h2{color:var(--berry)}
.scanner-product{padding-left:9px;border-left:1px solid var(--border);color:var(--muted);font-size:12px;font-weight:700}:focus-visible{outline-color:var(--pink)}.manual-entry{gap:7px;padding-top:18px;border-top:1px solid var(--border)}.manual-entry label{font-size:13px;font-weight:800;color:var(--ink)}.manual-help{margin:0 0 3px;color:var(--muted);font-size:12px;line-height:1.45}
.reader-context{margin:-12px 0 18px;color:var(--berry);font-size:12px;font-weight:750}.pairing-shell{width:min(100%,460px);padding-top:34px}.pairing-card{display:grid;gap:16px;margin-top:28px}.pairing-card h1{margin:0;font-size:28px;line-height:1.12}.pair-summary{display:grid;gap:10px;margin:0;padding:16px;border-radius:16px;background:var(--rose)}.pair-summary div{display:flex;justify-content:space-between;gap:12px}.pair-summary dt{color:var(--muted)}.pair-summary dd{margin:0;font-weight:800;text-align:right}.install-reader{width:100%;margin-top:20px}.ios-install{text-align:center;color:var(--muted);font-size:12px}.customer-code{margin:12px 0 0;text-align:center;color:var(--muted);font-size:13px}.customer-code strong{display:block;margin-top:4px;color:var(--berry);font-size:20px;letter-spacing:.08em}.motion-stamp .state-pill{animation:stamp-pulse .55s ease-out}.reward-earned .reward-burst{animation:reward-pop .9s ease-out}
@keyframes stamp-pulse{50%{transform:scale(1.06)}}@keyframes reward-pop{0%{transform:scale(.75) rotate(-12deg);opacity:.3}55%{transform:scale(1.1) rotate(8deg)}100%{transform:none;opacity:1}}
.consumer-shell{width:min(100%,440px);min-height:100vh;padding-top:20px}.merchant-brand{margin-bottom:18px}.merchant-emblem{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:50%;background:var(--brand);color:#fff;font-weight:800}.merchant-brand div{min-width:0}.merchant-brand strong,.merchant-brand small{display:block;overflow-wrap:anywhere}.merchant-brand small{color:var(--muted);font-size:11px;margin-top:2px}.consumer-title{font-size:28px;line-height:1.1;letter-spacing:-.04em;margin:0 0 12px}.consumer-lede{color:var(--berry);font-size:16px;font-weight:700}.loyalty-card{display:grid;gap:15px;margin-top:18px}.kicker{margin:0;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase}.consumer-progress{font-size:20px;font-weight:800}.reward-preview{display:grid;gap:5px;padding:16px;margin-top:16px;border-radius:15px;background:var(--rose)}.reward-preview strong{overflow-wrap:anywhere}.consumer-reward{display:grid;gap:16px}.consumer-reward h1{color:var(--berry)}.consumer-qr{display:grid;justify-items:center;margin-top:18px}.consumer-qr svg{display:block;width:min(100%,260px);height:auto}.powered{display:flex;align-items:center;gap:7px;margin-top:18px;color:var(--muted);font-size:10px}.powered-logo{display:block;width:94px;max-width:100%;height:auto}.join-card h1{margin:0 0 8px;font-size:28px;letter-spacing:-.04em}.join-card form,.join-card{display:grid;gap:14px}.join-card label{display:grid;gap:6px;font-size:13px;font-weight:700}.join-card input{margin:0}.join-or{text-align:center;color:var(--muted);font-size:12px;margin:0}.loading{min-height:18px}.notice{padding:16px;border-radius:14px;background:var(--soft)}.notice.success{background:var(--success-soft)}
@media(max-width:430px){.shell{padding:20px}.scanner-shell{padding-inline:16px}.card{padding:20px}.camera{min-height:310px}.consumer-shell{padding-inline:20px}.manual-actions{grid-template-columns:1fr}.manual-actions>*{width:100%}.button,.secondary{width:100%}.scanner-state h2{font-size:28px}.stamp{width:29px;height:29px}}
@media(max-width:375px){.shell{padding-inline:16px}.consumer-shell{padding-inline:16px}.scanner-top .brand-logo{width:108px}.scanner-top small{font-size:10px}.camera{min-height:280px}.stamps{gap:6px}.stamp{width:27px;height:27px}.consumer-title{font-size:26px}}
.notice.error{background:#fdecec;color:var(--danger)}
.activation-code{width:max-content;max-width:100%;margin:14px 0;padding:11px 14px;border:1px dashed var(--pink);border-radius:12px;background:#fff;color:var(--berry);font-size:17px;font-weight:850;letter-spacing:.08em;overflow-wrap:anywhere}.reader-activation{display:grid;gap:10px;padding:18px;border:1px solid var(--border);border-radius:18px;background:#fff}.reader-activation h2,.reader-activation p{margin:0}.reader-activation label{font-size:13px;font-weight:800}.reader-activation input{text-transform:uppercase;letter-spacing:.05em}.reader-activation .activation-error:empty{display:none}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important}}

.reward-burst-brand{position:relative;overflow:visible}.reward-burst-brand img{display:block;width:44px;height:44px;object-fit:contain}.reward-burst-brand::before,.reward-burst-brand::after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:var(--pink)}.reward-burst-brand::before{right:-7px;top:10px;box-shadow:-2px -13px 0 -2px var(--berry)}.reward-burst-brand::after{left:-5px;bottom:12px;box-shadow:7px 13px 0 -2px var(--berry)}
/* HF018.2 consumer recovery visual parity */
.consumer-shell .loyalty-card{background:linear-gradient(135deg,#fff 0%,var(--rose) 100%);border-color:#f7cada;padding:20px}
.consumer-shell .access-kicker{color:var(--pink);font-size:11px}
.consumer-shell .access-stamps{flex-wrap:nowrap;justify-content:space-between;gap:8px}
.consumer-shell .access-stamps .stamp{width:34px;height:34px;flex:0 1 34px;background:transparent;border:2px solid #f39abd}
.consumer-shell .access-stamps .stamp.filled{background:var(--pink);border-color:var(--pink)}
.consumer-shell .access-remaining{margin:0}
.consumer-shell .access-reward{grid-template-columns:56px minmax(0,1fr);align-items:center;gap:14px;border:1px solid #f7cada;padding:14px 16px}
.consumer-shell .access-reward-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:#f9d9e7;font-size:25px}
.consumer-shell .access-reward strong{font-size:17px;line-height:1.25}
.consumer-shell .customer-code strong{display:inline-block;margin-top:6px;padding:6px 14px;border-radius:10px;background:var(--rose)}
@media(max-width:375px){.consumer-shell .access-stamps{gap:5px}.consumer-shell .access-stamps .stamp{width:30px;height:30px;flex-basis:30px}}
/* HF018.2 recovery visual parity */
.consumer-shell .loyalty-card{background:linear-gradient(135deg,#fff 0%,var(--rose) 100%);border-color:#f7cada;padding:20px}
.consumer-shell .access-kicker{color:var(--pink);font-size:11px}
.consumer-shell .access-stamps{flex-wrap:nowrap;justify-content:space-between;gap:8px}
.consumer-shell .access-stamps .stamp{width:34px;height:34px;flex:0 1 34px;background:transparent;border:2px solid #f39abd}
.consumer-shell .access-stamps .stamp.filled{background:var(--pink);border-color:var(--pink)}
.consumer-shell .access-remaining{margin:0}
.consumer-shell .access-reward{grid-template-columns:56px minmax(0,1fr);align-items:center;gap:14px;border:1px solid #f7cada;padding:14px 16px}
.consumer-shell .access-reward-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:#f9d9e7;font-size:25px}
.consumer-shell .access-reward strong{font-size:17px;line-height:1.25}
.consumer-shell .customer-code strong{display:inline-block;margin-top:6px;padding:6px 14px;border-radius:10px;background:var(--rose)}
@media(max-width:375px){.consumer-shell .access-stamps{gap:5px}.consumer-shell .access-stamps .stamp{width:30px;height:30px;flex-basis:30px}}

.merchant-emblem{position:relative;overflow:hidden}.merchant-emblem .business-logo-card{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--brand,#D41473)}

/* WALLET-002 staging visual hotfix */
.consumer-shell .access-reward{display:block;grid-template-columns:none}
.consumer-shell .access-reward-copy{min-width:0;width:100%}
.consumer-shell .access-reward strong{display:block;overflow-wrap:normal;word-break:normal;hyphens:none;max-width:100%}
.apple-wallet-link{display:block;width:min(100%,240px);margin:14px auto 0;text-decoration:none}
.apple-wallet-link img{display:block;width:100%;height:auto}

/* WALLET-002 wallet actions above progress */
.wallet-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:16px 0 20px;align-items:center}
.wallet-badge{display:block;min-width:0;text-decoration:none}
.wallet-badge img{display:block;width:100%;height:auto}
.wallet-badge-disabled{opacity:.55;cursor:default}
@media(max-width:390px){.wallet-actions{gap:6px}}

/* Consumer logo: remove imposed circular container while preserving existing image/fallback logic. */
.consumer-merchant-logo-frame{width:132px;height:58px;flex:0 0 auto;border-radius:0;background:transparent;color:transparent;overflow:visible}
.consumer-merchant-logo-frame .business-logo-card{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:transparent;border-radius:0}
@media(max-width:430px){.consumer-merchant-logo-frame{width:118px;height:52px}}
.consumer-logo-direct{display:grid;place-items:center;width:118px;height:52px;flex:0 0 118px;color:transparent}
.consumer-logo-direct .business-logo-card{position:static;display:block;width:100%;height:100%;object-fit:contain;background:transparent;border-radius:0}

.consumer-logo-direct{display:flex!important;align-items:center!important;justify-content:flex-start!important;width:112px!important;height:46px!important;flex:0 0 112px!important;border-radius:0!important;background:transparent!important;color:transparent!important;overflow:hidden!important}
.consumer-logo-direct .business-logo-card{position:static!important;display:block!important;width:100%!important;height:100%!important;max-width:112px!important;max-height:46px!important;object-fit:contain!important;object-position:left center!important;background:transparent!important;border:0!important;border-radius:0!important;padding:0!important}
@media(max-width:430px){.consumer-logo-direct{width:104px!important;height:42px!important;flex-basis:104px!important}.consumer-logo-direct .business-logo-card{max-width:104px!important;max-height:42px!important}}

/* Consumer mobile brand cleanup */
@media(max-width:430px){.consumer-merchant-brand{min-height:54px!important}.consumer-logo-direct{width:132px!important;height:52px!important;flex-basis:132px!important}.consumer-logo-direct .business-logo-card{max-width:132px!important;max-height:52px!important}}

/* Consumer progress final: icon itself is the stamp; no circle/container. */
.consumer-shell .access-stamps.access-icon-stamps{display:flex;align-items:center;justify-content:flex-start;gap:14px;flex-wrap:nowrap}
.consumer-shell .access-stamps .stamp.access-icon-stamp,.consumer-shell .access-stamps .stamp.access-icon-stamp.filled{display:inline-block!important;width:auto!important;height:auto!important;flex:0 0 auto!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:inherit!important;font-size:28px!important;line-height:1!important;filter:none!important}
.consumer-shell .access-stamps .stamp.access-icon-stamp{opacity:.22!important}
.consumer-shell .access-stamps .stamp.access-icon-stamp.filled{opacity:1!important}
@media(max-width:420px){.consumer-shell .access-stamps.access-icon-stamps{gap:12px}.consumer-shell .access-stamps .stamp.access-icon-stamp,.consumer-shell .access-stamps .stamp.access-icon-stamp.filled{font-size:27px!important}}
