:root{--bg: #f4f4f5;--card: #ffffff;--text: #0f1523;--text-muted: #6b7280;--text-soft: #9ca3af;--border: #e5e7eb;--green-bg: #ecfdf3;--green-text: #027a48;--green-border: #abefc6;--purple-bg: #f4f3ff;--purple-border: #e9e7ff;--purple-text: #5925dc;--purple-badge-bg: #f4f3ff;--purple-badge-text: #6941c6;--red-bg: #fef3f2;--red-border: #fecdca;--red-badge-bg: #fef3f2;--red-badge-text: #b42318;--shadow: 0 8px 32px rgba(15, 21, 35, .08)}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.page{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:24px 16px 32px}.header{width:100%;max-width:420px;display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.brand{display:flex;flex-direction:column;align-items:flex-start;gap:0}.brand-name{font-size:18px;font-weight:700;letter-spacing:.1em;line-height:1.1;color:var(--text)}.brand-divider{display:block;width:100%;min-width:52px;height:1px;background:var(--border);margin:5px 0 4px}.brand-verify{font-size:9px;font-weight:600;letter-spacing:.14em;line-height:1;color:var(--text-soft)}.boutique-name{font-size:13px;color:var(--text-muted);text-align:right;max-width:55%}.card{width:100%;max-width:420px;background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:20px}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--green-bg);border:1px solid var(--green-border);color:var(--green-text);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:18px}.status-badge svg{width:14px;height:14px;flex-shrink:0}.profile{display:flex;align-items:center;gap:14px;margin-bottom:20px}.avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;background:#e5e7eb;flex-shrink:0}.avatar-fallback{display:flex;align-items:center;justify-content:center;font-weight:600;font-size:18px;color:var(--text-muted)}.profile-name{margin:0 0 4px;font-size:18px;font-weight:700;line-height:1.2}.profile-meta{margin:0;font-size:13px;color:var(--text-muted)}.membership-row{display:flex;align-items:center;justify-content:space-between}.membership-label{font-size:13px;color:var(--text-muted);font-weight:500}.member-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--purple-badge-bg);color:var(--purple-badge-text);font-size:12px;font-weight:600}.member-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--purple-badge-text)}.offer-box{padding:14px;border-radius:14px;background:var(--purple-bg);border:1px solid var(--purple-border);margin-bottom:16px}.offer-box.no-membership{background:var(--red-bg);border-color:var(--red-border)}.member-badge.no-membership{background:var(--red-badge-bg);color:var(--red-badge-text)}.member-badge.no-membership .member-badge-dot{background:var(--red-badge-text)}.verify-note{padding:14px 16px;border-radius:12px;background:#f9fafb;border:1px solid var(--border);font-size:13px;line-height:1.5;color:var(--text-muted);margin-bottom:18px}.verify-note strong{color:var(--text);font-weight:600}.footer{margin-top:auto;padding-top:28px;text-align:center;font-size:11px;letter-spacing:.04em;color:var(--text-soft);text-transform:uppercase}.hidden{display:none!important}.error-state{width:100%;max-width:420px;padding:20px;border-radius:16px;background:#fef3f2;border:1px solid #fecdca;color:#b42318;font-size:14px;text-align:center}.scanner-card{width:100%;max-width:420px;background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:24px 20px;text-align:center}.scanner-title{margin:0 0 8px;font-size:20px;font-weight:700}.scanner-hint{margin:0 0 20px;font-size:14px;color:var(--text-muted);line-height:1.5}.scanner-frame{position:relative;width:100%;aspect-ratio:1 / 1;border-radius:16px;overflow:hidden;background:#111827;border:3px solid var(--border)}#qrReader{width:100%;height:100%}#qrReader video{width:100%!important;height:100%!important;object-fit:cover}#qrReader img{display:none}.scanner-error{margin-top:16px;padding:12px 14px;border-radius:12px;background:var(--red-bg);border:1px solid var(--red-border);color:var(--red-badge-text);font-size:13px;line-height:1.5}.scanner-retry{margin-top:12px;padding:10px 18px;border:none;border-radius:10px;background:var(--text);color:#fff;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
