:root{--bg: #faf8f4;--surface: #ffffff;--surface-tint: #f2f7f6;--border: #e7e2d8;--text: #241f18;--text-muted: #7c7364;--text-faint: #a89f8e;--primary: #0d9488;--primary-hover: #0b7a70;--primary-soft: #e3f4f1;--success: #1e8e5a;--danger: #c8433a;--radius: 14px;--radius-lg: 20px;--font-heading: "Manrope", ui-sans-serif, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:15px;line-height:1.5}#root{max-width:480px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}h1,h2,h3{font-family:var(--font-heading);font-weight:800;margin:0;letter-spacing:-.01em}.screen{flex:1;padding:20px 18px 90px}.center-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;color:var(--text-muted)}.hero-card{background:linear-gradient(135deg,var(--primary),#0a5c54);color:#fff;border-radius:var(--radius-lg);padding:24px 22px;margin-bottom:18px}.hero-card .shop-name{font-size:12.5px;font-weight:600;opacity:.8;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.hero-card .member-name{font-family:var(--font-heading);font-size:20px;font-weight:800;margin-bottom:16px}.hero-card .qr-wrap{background:#fff;border-radius:14px;padding:14px;display:flex;justify-content:center}.punch-row{display:flex;justify-content:space-between;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}.punch-row .name{font-weight:600}.punch-row .count{font-family:var(--font-heading);font-weight:800;font-size:18px;color:var(--primary)}.reward-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:10px}.reward-card .name{font-weight:700}.reward-card .desc{font-size:12.5px;color:var(--text-muted)}.reward-card .cost{font-size:12px;color:var(--text-faint);margin-top:2px}.activity-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border);font-size:13.5px}.activity-row:last-child{border-bottom:none}button{font:inherit;background:var(--primary);color:#fff;border:none;border-radius:var(--radius);padding:12px 18px;font-weight:700;cursor:pointer;width:100%}button:hover{background:var(--primary-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--surface-tint);color:var(--text);border:1px solid var(--border)}button.small{width:auto;padding:8px 14px;font-size:13px}button.preset{width:auto;background:var(--primary-soft);color:var(--primary-hover);padding:10px 14px;font-size:13.5px}input,select,textarea{font:inherit;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:11px 14px;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)}.field{margin-bottom:12px}.field label{display:block;font-size:12px;font-weight:700;color:var(--text-muted);margin-bottom:6px}.tab-bar{position:sticky;bottom:0;display:flex;background:var(--surface);border-top:1px solid var(--border);max-width:480px;width:100%}.tab-bar button{flex:1;background:none;color:var(--text-faint);border-radius:0;padding:12px 0 calc(12px + env(safe-area-inset-bottom));font-weight:600;font-size:12.5px;display:flex;flex-direction:column;align-items:center;gap:3px}.tab-bar button.active{color:var(--primary)}.error-banner{background:#c8433a14;border:1px solid rgba(200,67,58,.25);color:#a5352d;border-radius:var(--radius);padding:10px 14px;font-size:13px;margin-bottom:14px}.success-banner{background:#1e8e5a1a;border:1px solid rgba(30,142,90,.3);color:var(--success);border-radius:var(--radius);padding:10px 14px;font-size:13px;margin-bottom:14px}.hint{color:var(--text-muted);font-size:13px;margin:6px 0 16px}.group-heading{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);margin:18px 0 8px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat-tile .value{font-family:var(--font-heading);font-size:20px;font-weight:800}.stat-tile .label{font-size:12px;color:var(--text-muted);font-weight:600}
