*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#f2f2f5;color:#1a1a1a}.screen{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;box-sizing:border-box}.centered-message{text-align:center;color:#555}.form-card,.loyalty-card,.reward-ticket{width:340px;max-width:92vw;background:#fff;border-radius:20px;box-shadow:0 8px 30px #00000014;padding:28px 24px}.tenant-logo{width:64px;height:64px;border-radius:16px;object-fit:cover;margin-bottom:12px}.form-card h1{font-size:1.4rem;margin:0 0 4px}.form-card p{color:#666;margin:0 0 20px;font-size:.95rem}.field{margin-bottom:16px}.field-hint{font-size:.78rem;color:#888;margin:6px 0 0}.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:6px;color:#333}.field input{width:100%;padding:12px 14px;border-radius:12px;border:1px solid #ddd;font-size:1rem}.submit-btn{width:100%;padding:14px;border:none;border-radius:12px;font-size:1rem;font-weight:600;color:#fff;cursor:pointer;margin-top:8px;box-shadow:0 4px 14px #00000026;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.submit-btn:hover:not(:disabled){filter:brightness(1.06);box-shadow:0 6px 18px #0003}.submit-btn:active:not(:disabled){transform:scale(.98);box-shadow:0 2px 8px #00000026}.submit-btn:disabled{opacity:.6;cursor:default}.mode-toggle-link{display:block;width:100%;margin-top:16px;padding:0;border:none;background:none;color:#666;font-size:.85rem;text-decoration:underline;cursor:pointer;text-align:center}.find-card-message{color:#2a7a4a;font-size:.85rem;margin-top:8px;text-align:center}.error-text{color:#d33;font-size:.85rem;margin-top:8px}.error-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f102080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:200}.error-dialog-card{width:100%;max-width:360px;background:#fff;border-radius:16px;box-shadow:0 20px 50px #00000040;padding:24px 22px;text-align:center}.error-dialog-card h2{margin:0 0 10px;font-size:1.05rem;font-weight:700;color:#1a1a1a}.error-dialog-card p{margin:0 0 20px;font-size:.9rem;color:#555;line-height:1.5}.error-dialog-close-btn{width:100%;padding:12px;border:none;border-radius:12px;font-size:.95rem;font-weight:600;color:#fff;background:#2a231c;cursor:pointer}.card-page{background:#f3ede4;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.loyalty-card{color:var(--card-on, #fff8f0);position:relative;overflow:hidden;border-radius:26px;padding:20px;box-sizing:border-box;min-height:620px;min-height:min(620px,calc(100dvh - 48px));box-shadow:0 20px 44px -16px #00000052;display:flex;flex-direction:column}.loyalty-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 88% 10%,rgba(255,255,255,.22),transparent 46%);pointer-events:none}.loyalty-card-content{position:relative;z-index:1;flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:16px;overflow:hidden}.loyalty-card-header{display:flex;align-items:center;gap:14px}.loyalty-card-header.pos-center{flex-direction:column;text-align:center}.loyalty-card-header.pos-right{flex-direction:row-reverse}.card-avatar{width:64px;height:64px;border-radius:50%;flex:none;overflow:hidden;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(45deg,#ffffff59 0,#ffffff59 4px,#ffffff1f 4px,#ffffff1f 8px)}.card-avatar-img{width:100%;height:100%;object-fit:cover}.card-avatar-fallback{font-family:Bricolage Grotesque,sans-serif;font-weight:800;font-size:20px;color:var(--card-on, #fff8f0)}.card-avatar-sm{width:36px;height:36px}.card-avatar-sm .card-avatar-fallback{font-size:14px}.loyalty-card-header h2{margin:0;font-family:Bricolage Grotesque,sans-serif;font-weight:800;font-size:16px}.loyalty-card-header p{margin:3px 0 0;font-size:12px;color:var(--card-on-muted, rgba(255, 248, 240, .72))}.tier-status-block{display:flex;flex-direction:column;gap:10px}.tier-status-row{display:flex;align-items:center;gap:10px}.tier-badge{display:inline-block;background:var(--card-overlay, rgba(255, 255, 255, .16));color:var(--card-on, #fff8f0);font-size:11px;font-weight:700;padding:4px 11px;border-radius:100px}.tier-points{font-family:Bricolage Grotesque,sans-serif;font-weight:800;font-size:26px;color:var(--card-on, #fff8f0)}.tier-progress-track{height:7px;border-radius:100px;background:var(--card-overlay, rgba(255, 255, 255, .16));overflow:hidden}.tier-progress-fill{height:100%;background:var(--card-on, #fff8f0);border-radius:100px;transition:width .3s ease}.tier-progress-label{margin:0;font-size:12px;color:var(--card-on-muted, rgba(255, 248, 240, .72))}.tier-benefits-box{background:var(--card-overlay, rgba(255, 255, 255, .16));border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.tier-benefits-box strong{font-size:11px;font-weight:700;color:var(--card-on, #fff8f0);text-transform:uppercase;letter-spacing:.3px}.tier-benefits-box p{margin:0;font-size:12px;color:var(--card-on-muted, rgba(255, 248, 240, .72));line-height:1.4}.tier-ladder{position:relative;display:flex;align-items:center;justify-content:space-between}.tier-ladder:before{content:"";position:absolute;top:15px;left:36px;right:36px;height:2px;background:var(--card-overlay, rgba(255, 255, 255, .16));z-index:0}.tier-dot-wrap{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;align-items:center;gap:7px}.tier-dot{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--card-overlay, rgba(255, 255, 255, .16));background:transparent;color:var(--card-on-muted, rgba(255, 248, 240, .72));font-family:Bricolage Grotesque,sans-serif;font-weight:800;font-size:13px}.tier-dot.is-filled{background:var(--card-on, #fff8f0);border-color:var(--card-on, #fff8f0);color:var(--card-dot-text, #3a2409)}.tier-dot.is-current{box-shadow:0 0 0 4px var(--card-overlay, rgba(255, 255, 255, .16))}.tier-dot-label{font-size:11px;font-weight:400;opacity:.6;color:var(--card-on, #fff8f0)}.tier-dot-label.is-current{font-weight:700;opacity:1}.stamps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:4px}.stamps-grid>*{min-width:0;min-height:0}.stamp{aspect-ratio:1;border-radius:50%;display:flex;align-items:center;justify-content:center}.stamp.empty{border:1.5px dashed rgba(255,255,255,.55)}.stamp.filled{background:#fff;box-shadow:0 4px 8px #0000001f}.stamp-star{width:14px;height:14px;background:var(--brand-color, #a8451e);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.stamp-cup{aspect-ratio:1;display:flex;align-items:center;justify-content:center;padding:1px;box-sizing:border-box}.stamp-cup img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}.stamp-cup.filled img{filter:drop-shadow(0 3px 4px rgba(0,0,0,.18))}.stamp-icon{font-size:1.1rem;color:#333}.qr-wrapper{background:#fff;border-radius:16px;padding:16px;display:flex;justify-content:center;margin-top:16px}.qr-wrapper-card{width:160px;height:160px;background:#fff;border-radius:16px;display:flex;align-items:center;justify-content:center;margin:0 auto;flex:none}.ios-hint{margin-top:16px;background:#ffffff26;border-radius:12px;padding:12px;font-size:.85rem;text-align:center}.ios-hint p{margin:0}.ios-hint-safari-link{display:inline-block;margin-top:8px;padding:0;background:none;border:none;font-family:inherit;font-size:.8rem;font-weight:600;color:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.card-page .ios-hint{background:var(--card-overlay, rgba(255, 255, 255, .16));color:var(--card-on-muted, rgba(255, 248, 240, .72))}.reward-cta{display:flex;align-items:center;gap:12px;background:#fff8f0;border-radius:14px;padding:13px 14px;text-decoration:none;color:inherit;box-shadow:0 8px 20px #00000038,0 0 0 3px color-mix(in oklch,var(--brand-color, #fff) 35%,transparent);animation:reward-cta-pulse 2.2s ease-in-out infinite}.reward-cta:hover{filter:brightness(.98)}.reward-cta-icon{font-size:24px;line-height:1}.reward-cta-text{display:flex;flex-direction:column;gap:2px;flex:1;text-align:left}.reward-cta-text strong{font-size:14px;font-weight:800;color:var(--brand-color, #2a231c)}.reward-cta-text span{font-size:11px;color:#7a7166}.reward-cta-arrow{font-size:18px;font-weight:700;color:var(--brand-color, #2a231c)}@keyframes reward-cta-pulse{0%,to{box-shadow:0 8px 20px #00000038,0 0 0 3px color-mix(in oklch,var(--brand-color, #fff) 35%,transparent)}50%{box-shadow:0 8px 24px #00000042,0 0 0 7px color-mix(in oklch,var(--brand-color, #fff) 18%,transparent)}}.invite-friend-box{background:var(--card-overlay, rgba(255, 255, 255, .16));border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}.invite-friend-box strong{font-size:11px;font-weight:700;color:var(--card-on, #fff8f0);text-transform:uppercase;letter-spacing:.3px}.invite-friend-box p{margin:0;font-size:12px;color:var(--card-on-muted, rgba(255, 248, 240, .72));line-height:1.4}.invite-friend-link-row{display:flex;gap:8px}.invite-friend-link-row input{flex:1;min-width:0;border:none;border-radius:8px;padding:8px 10px;font-size:11px;background:#fff8f0;color:#3a2409}.invite-friend-copy-btn{border:none;border-radius:8px;padding:8px 14px;font-size:11px;font-weight:700;background:#fff8f0;color:var(--brand-color, #2a231c);cursor:pointer;white-space:nowrap}.invite-friend-copy-btn:hover{filter:brightness(.98)}.back-link{display:inline-flex;align-items:center;gap:6px;color:#555;text-decoration:none;font-size:.88rem;font-weight:600;margin-bottom:16px;align-self:flex-start}.back-link:hover{color:#1a1a1a}.card-page .back-link{color:#a8451e}.card-page .back-link:hover{color:#c8632f}.page-nav-row{width:100%;max-width:420px;display:flex}.reward-ticket{padding:0;overflow:hidden;margin-bottom:20px;border-radius:26px;box-shadow:0 16px 34px -16px #2a231c38}.reward-ticket-ready{min-height:620px;display:flex;flex-direction:column}.reward-ticket-header{flex:none;display:flex;align-items:center;gap:12px;padding:16px 22px;color:var(--card-on, #fff8f0);font-family:Bricolage Grotesque,sans-serif;font-weight:800;font-size:14px}.reward-ticket-body{flex:1;padding:30px 24px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;font-family:DM Sans,sans-serif}.reward-ticket-body-empty{padding:36px 24px}.reward-ticket-body-qr{padding:0 24px 8px;gap:12px}.reward-ticket-icon{font-size:2.75rem;line-height:1}.reward-ticket-icon-bubble{width:64px;height:64px;border-radius:50%;background:#f3ede4;display:flex;align-items:center;justify-content:center;font-size:28px}.reward-ticket-eyebrow{text-transform:uppercase;letter-spacing:.6px;font-size:11px;color:#a8451e;font-weight:700;margin:0}.reward-ticket-label{font-family:Bricolage Grotesque,sans-serif;font-size:20px;font-weight:800;margin:0;color:#2a231c;line-height:1.3}.reward-ticket-body-empty .reward-ticket-label{font-size:18px}.reward-ticket-divider{position:relative;flex:none;height:0;border-top:2px dashed #e4dccd;margin:0 24px}.reward-ticket-divider:before,.reward-ticket-divider:after{content:"";position:absolute;top:-11px;width:22px;height:22px;border-radius:50%;background:#f3ede4}.reward-ticket-divider:before{left:-11px}.reward-ticket-divider:after{right:-11px}.reward-ticket-instructions{margin:0;color:#8a8073;font-size:12px;line-height:1.4}.qr-wrapper-ticket{border:1px solid #eee5d6}.reward-ticket-review{margin:4px 24px 20px;padding-top:16px;border-top:1px dashed #e4dccd;text-align:center}.reward-ticket-review-message{margin:0 0 10px;color:#8a8073;font-size:12px;line-height:1.4}.reward-ticket-review-btn{display:inline-block;padding:10px 18px;border-radius:12px;border:1px solid #e4dccd;color:#2a231c;font-size:.85rem;font-weight:600;text-decoration:none}.wheel-frame{padding:28px 24px;text-align:center}.wheel-content{align-items:center}.wheel-heading{display:flex;flex-direction:column;gap:2px}.wheel-title{font-family:Bricolage Grotesque,sans-serif;font-weight:800;font-size:19px;color:var(--card-on, #fff8f0)}.wheel-subtitle{font-family:DM Sans,sans-serif;font-size:12px;color:var(--card-on-muted, rgba(255, 248, 240, .72))}.wheel-outer{position:relative;width:250px;height:250px}.wheel-outer.is-done{opacity:.55}.wheel-pointer{position:absolute;top:-14px;left:50%;transform:translate(-50%);width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-top:20px solid #fff8f0;z-index:2;filter:drop-shadow(0 2px 3px rgba(0,0,0,.25))}.wheel-svg{width:100%;height:100%;border-radius:50%;transition:transform 4s cubic-bezier(.17,.67,.16,.99);box-shadow:0 0 0 8px #fff,0 18px 34px -12px #00000059}.wheel-hub{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0003;z-index:2}.pill-btn{display:block;width:100%;border:none;cursor:pointer;padding:15px 20px;border-radius:100px;font-family:DM Sans,sans-serif;font-size:15px;font-weight:700;color:var(--brand-color, #a8451e);background:#fff;text-align:center;text-decoration:none;box-sizing:border-box;box-shadow:0 10px 20px -8px #0000004d;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.pill-btn:hover:not(:disabled){filter:brightness(.97);box-shadow:0 12px 24px -8px #00000059}.pill-btn:active:not(:disabled){transform:scale(.98)}.pill-btn:disabled{opacity:.6;cursor:default;box-shadow:none}.wheel-result-block{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%}.wheel-result-box{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;background:var(--card-overlay, rgba(255, 255, 255, .14));border-radius:18px;padding:16px 18px;width:100%;box-sizing:border-box}.wheel-result-emoji{font-size:30px;line-height:1}.wheel-result-eyebrow{font-family:DM Sans,sans-serif;font-size:11px;font-weight:700;letter-spacing:.6px;color:var(--card-on-muted, rgba(255, 248, 240, .8));text-transform:uppercase}.wheel-result-label{font-family:Bricolage Grotesque,sans-serif;font-size:21px;font-weight:800;color:var(--card-on, #fff8f0);line-height:1.25}
