:root{--color-tint:#007aff;--color-accent:#5856d6;--color-accent-glow:#007aff14;--color-text-primary:#1c1c1e;--color-text-secondary:#8e8e93;--color-text-tertiary:#aeaeb2;--color-background:#fff;--color-surface-solid:#f2f2f7;--color-surface:#ffffffb8;--color-surface-elevated:#ffffffe6;--color-border:#0000000f;--color-border-light:#0000000a;--color-success:#34c759;--color-error:#ff3b30;--color-warning:#ff9500;--color-stamp-filled:#007aff;--color-stamp-empty:#0000000a;--color-glass-background:#fff9;--color-glass-border:#ffffff4d;--color-card-glass:#ffffffb8;--color-card-glass-border:#ffffff80;--color-overlay:#0006;--color-shadow:#00000014;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:20px;--spacing-2xl:24px;--spacing-3xl:32px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-2xl:24px;--radius-full:9999px;--shadow-sm:0 2px 8px #00000014;--shadow-md:0 4px 16px #0000001f;--shadow-lg:0 8px 32px #00000029}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;background-color:var(--color-background);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:22px}.text-large-title,body{color:#1c1c1e;color:var(--color-text-primary)}.text-large-title{font-size:34px;font-weight:700;letter-spacing:-.5px}.text-title{font-size:20px;font-weight:600}.text-body,.text-title{color:#1c1c1e;color:var(--color-text-primary)}.text-body{font-size:15px;font-weight:400;line-height:22px}.text-label{letter-spacing:.5px;text-transform:uppercase}.text-label,.text-small{color:#8e8e93;color:var(--color-text-secondary);font-size:13px;font-weight:500}html{scroll-behavior:smooth}button{font-family:inherit}a{color:#007aff;color:var(--color-tint);text-decoration:none;transition:opacity .2s}a:hover{opacity:.8}::selection{background-color:#007aff14;background-color:var(--color-accent-glow);color:#1c1c1e;color:var(--color-text-primary)}:focus-visible{outline:2px solid #007aff;outline:2px solid var(--color-tint);outline-offset:2px}.login-container{align-items:center;background:linear-gradient(135deg,#007aff,#5856d6);display:flex;justify-content:center;min-height:100vh;overflow:hidden;position:relative}.login-container:before{background:#ffffff14;border-radius:50%;bottom:-250px;content:"";height:600px;left:-150px;position:absolute;width:600px}.login-container:after{background:#ffffff0d;border-radius:50%;content:"";height:400px;position:absolute;right:-100px;top:-150px;width:400px}.login-card{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);margin:1rem;max-width:420px;padding:clamp(2rem,4vw,3rem) clamp(1.5rem,3vw,2.5rem);position:relative;width:calc(100% - 2rem);z-index:1}.login-header{margin-bottom:2.5rem;text-align:center}.login-logo{align-items:center;background:linear-gradient(135deg,#007aff,#5856d6);border-radius:var(--radius-md);display:flex;font-size:2rem;height:60px;justify-content:center;margin:0 auto 1rem;width:60px}.login-title{color:var(--color-text-primary);font-size:28px;font-weight:700;margin:0 0 .25rem}.login-subtitle{color:var(--color-text-secondary);font-size:15px;font-weight:500;margin:0}.login-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.form-group input{background:var(--color-surface-solid);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:15px;padding:14px 16px;transition:all .2s ease}.form-group input:focus{background:var(--color-background);border-color:var(--color-tint);box-shadow:0 0 0 3px var(--color-accent-glow)}.form-group input::placeholder{color:var(--color-text-tertiary)}.login-button{background:var(--color-tint);border:none;border-radius:14px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-top:var(--spacing-sm);padding:16px;transition:opacity .2s ease}.login-button:hover{opacity:.8}.login-button:active{opacity:.7;transform:scale(.98)}.login-button:disabled{cursor:not-allowed;opacity:.6}.demo-account{background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-md);margin-top:var(--spacing-lg);padding:var(--spacing-lg);text-align:center}.demo-account-title{color:var(--color-text-secondary);font-size:13px;font-weight:600;letter-spacing:.5px;margin-bottom:var(--spacing-sm);text-transform:uppercase}.demo-account-button{background:none;border:none;color:var(--color-tint);cursor:pointer;font-size:14px;font-weight:600;line-height:1.6;padding:0;transition:opacity .2s}.demo-account-button:hover{opacity:.8}.login-footer{border-top:1px solid var(--color-border-light);display:flex;flex-direction:column;gap:var(--spacing-md);margin-top:var(--spacing-2xl);padding-top:var(--spacing-2xl);text-align:center}.forgot-password{background:none;border:none;color:var(--color-text-secondary);cursor:pointer;font-size:14px;padding:0;transition:color .2s}.forgot-password:hover{color:var(--color-tint)}.signup-link{color:var(--color-text-secondary);font-size:14px}.signup-link a{color:var(--color-tint);font-weight:600;text-decoration:none;transition:opacity .2s}.signup-link a:hover{opacity:.8}.error-message{background:#ff3b301a;border-left:3px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-size:14px;padding:var(--spacing-lg)}@media (max-width:768px){.login-container:before{bottom:-200px;height:400px;left:-100px;width:400px}.login-container:after{height:300px;right:-80px;top:-100px;width:300px}.login-title{font-size:24px}.login-subtitle{font-size:14px}}@media (max-width:480px){.login-card{max-width:100%;padding:1.5rem 1.25rem}.login-logo{font-size:1.75rem;height:50px;width:50px}.login-title{font-size:22px}.login-subtitle{font-size:13px}.login-button{font-size:15px;padding:14px}.demo-account h4,.demo-info{font-size:13px}}.signup-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:2rem}.signup-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:600px;overflow:hidden;width:100%}.signup-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2.5rem 2rem 2rem;text-align:center}.signup-header h1{font-size:2.2rem;font-weight:700;margin:0 0 .5rem}.signup-header p{font-size:1rem;margin:0;opacity:.9}.signup-form{padding:2rem}.form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr}.form-group{margin-bottom:1.25rem}.form-group label{font-size:.9rem;margin-bottom:.5rem}.form-group input,.form-group select{border:2px solid #e2e8f0;border-radius:8px;font-size:1rem;padding:.875rem 1rem;transition:all .3s ease;width:100%}.form-group input:focus,.form-group select:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input:disabled,.form-group select:disabled{background-color:#f7fafc;cursor:not-allowed}.signup-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;margin-top:.5rem;padding:1rem;transition:all .3s ease;width:100%}.signup-button:hover:not(:disabled){box-shadow:0 8px 20px #667eea66;transform:translateY(-2px)}.signup-button:active:not(:disabled){transform:translateY(0)}.signup-button:disabled{cursor:not-allowed;opacity:.6}.signup-footer{background-color:#f7fafc;border-top:1px solid #e2e8f0;padding:1.5rem 2rem;text-align:center}.signup-footer p{color:#718096;font-size:.95rem;margin:0}.signup-footer a{color:#667eea;font-weight:600;text-decoration:none}.signup-footer a:hover{text-decoration:underline}@media (max-width:640px){.signup-container{padding:1rem}.signup-card{border-radius:12px}.signup-header{padding:2rem 1.5rem 1.5rem}.signup-header h1{font-size:1.8rem}.signup-form{padding:1.5rem}.form-row{grid-template-columns:1fr}}.setup-container{background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;padding:2rem}.setup-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;margin:0 auto;max-width:700px;overflow:hidden}.setup-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2.5rem 2rem;position:relative;text-align:center}.setup-header h1{font-size:2.2rem;font-weight:700;margin:0 0 .5rem}.setup-header p{font-size:1.1rem;margin:0;opacity:.9}.logout-link{background:#fff3;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:.9rem;padding:.5rem 1rem;position:absolute;right:1rem;top:1rem;transition:all .3s ease}.logout-link:hover{background:#ffffff4d}.setup-content{padding:2rem}.welcome-section{background:#f7fafc;border-radius:12px;margin-bottom:2rem;padding:2rem;text-align:center}.welcome-icon{font-size:4rem;margin-bottom:1rem}.welcome-section h2{color:#2d3748;font-size:1.8rem;margin:0 0 1rem}.welcome-section p{color:#4a5568;font-size:1.05rem;line-height:1.6;margin:0}.setup-form{margin-top:2rem}.form-group{margin-bottom:2rem}.form-group label{color:#2d3748;display:block;font-size:1rem;margin-bottom:.75rem}.form-group input{border:2px solid #e2e8f0;border-radius:8px;font-size:1rem;padding:.875rem 1rem;transition:all .3s ease;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-group small{color:#718096;display:block;font-size:.875rem;margin-top:.5rem}.stamps-selector{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:.5rem}.stamp-option{background:#fff;border:2px solid #e2e8f0;border-radius:8px;cursor:pointer;flex:1 1;font-size:1rem;font-weight:600;min-width:100px;padding:.875rem;transition:all .3s ease}.stamp-option:hover:not(:disabled){border-color:#667eea;transform:translateY(-2px)}.stamp-option.active{background:#667eea;border-color:#667eea;color:#fff}.color-selector{display:flex;flex-wrap:wrap;gap:1rem}.color-option{align-items:center;border:3px solid #0000;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.5rem;height:50px;justify-content:center;transition:all .3s ease;width:50px}.color-option:hover:not(:disabled){box-shadow:0 4px 12px #0003;transform:scale(1.1)}.color-option.active{border-color:#2d3748;box-shadow:0 0 0 2px #fff,0 0 0 4px #2d3748}.preview-card{background:#fff;border-left:4px solid #667eea;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin:2rem 0;padding:1.5rem}.preview-header{gap:1rem}.preview-header,.preview-logo{align-items:center;display:flex}.preview-logo{background:#f7fafc;border-radius:50%;flex-shrink:0;font-size:2rem;height:60px;justify-content:center;width:60px}.preview-header h3{color:#2d3748;font-size:1.2rem;margin:0 0 .25rem}.preview-header p{color:#718096;font-size:.9rem;margin:0}.setup-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;margin-top:1rem;padding:1.125rem;transition:all .3s ease;width:100%}.setup-button:hover:not(:disabled){box-shadow:0 8px 20px #667eea66;transform:translateY(-2px)}.setup-button:disabled{cursor:not-allowed;opacity:.6}.error-message{background-color:#fed7d7;border:1px solid #fc8181;border-radius:8px;color:#c53030;font-size:.9rem;margin-bottom:1.5rem;padding:.875rem 1rem}@media (max-width:640px){.setup-container{padding:1rem}.setup-content{padding:1.5rem}.stamps-selector{flex-direction:column}.stamp-option{min-width:auto}}.sidebar{background:var(--color-surface-solid);border-right:1px solid var(--color-border-light);display:flex;flex-direction:column;height:100vh;left:0;position:fixed;top:0;width:240px;z-index:100}.sidebar-header{background:#fff;border-bottom:1px solid var(--color-border-light);gap:var(--spacing-md);padding:var(--spacing-2xl) var(--spacing-xl)}.sidebar-header,.sidebar-logo{align-items:center;display:flex}.sidebar-logo{background:linear-gradient(135deg,#007aff,#5856d6);border-radius:var(--radius-md);flex-shrink:0;font-size:1.5rem;height:44px;justify-content:center;width:44px}.sidebar-title h2{color:var(--color-text-primary);font-size:17px;font-weight:600;margin:0}.sidebar-title p{color:var(--color-text-secondary);font-size:13px;font-weight:500;margin:0}.sidebar-menu{flex:1 1;overflow-y:auto;padding:var(--spacing-lg) 0}.menu-section{margin-bottom:var(--spacing-2xl)}.menu-section-title{color:var(--color-text-secondary);font-size:13px;font-weight:600;letter-spacing:.5px;margin-bottom:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-xl);text-transform:uppercase}.menu-item{align-items:center;background:none;border:none;border-left:3px solid #0000;color:var(--color-text-primary);cursor:pointer;display:flex;font-size:15px;font-weight:500;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-xl);text-align:left;text-decoration:none;transition:all .2s ease;width:100%}.menu-item:hover:not(.disabled){background:#007aff0d}.menu-item.active{background:var(--color-accent-glow);border-left-color:var(--color-tint);color:var(--color-tint);font-weight:600}.menu-item.disabled{cursor:not-allowed;opacity:.4}.menu-icon{font-size:20px;text-align:center;width:24px}.sidebar-footer{background:#fff;border-top:1px solid var(--color-border-light);padding:var(--spacing-md) 0}@media (max-width:1024px){.sidebar{width:200px}.sidebar-header{padding:1.25rem 1rem}.sidebar-title h2{font-size:16px}.sidebar-title p{font-size:12px}.menu-item{font-size:14px;padding:.75rem 1rem}.menu-section-title{padding:.5rem 1rem}}@media (max-width:768px){.sidebar{transform:translateX(-100%);transition:transform .3s ease;width:240px}.sidebar.open{transform:translateX(0)}}.dashboard{background:var(--color-background);display:flex;min-height:100vh}.dashboard-content{flex:1 1;margin-left:240px;max-width:100%;padding:clamp(1rem,3vw,2.5rem) clamp(1rem,2vw,2rem);width:100%}.dashboard-header{align-items:center;background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;justify-content:space-between;margin-bottom:clamp(1rem,2vw,2rem);padding:clamp(1rem,2vw,2rem)}.header-merchant{align-items:center;display:flex;gap:var(--spacing-lg)}.merchant-avatar{align-items:center;background:var(--color-tint);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex;font-size:2rem;height:60px;justify-content:center;width:60px}.header-actions{display:flex;gap:var(--spacing-md)}.btn-refresh{align-items:center;background:var(--color-tint);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:inline-flex;font-size:15px;font-weight:600;gap:var(--spacing-sm);padding:12px 20px;text-decoration:none;transition:all .2s}.btn-refresh:hover{opacity:.85;transform:scale(1.02)}.btn-refresh:active{transform:scale(.98)}.btn-secondary{align-items:center;background:#fff;border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-tint);cursor:pointer;display:inline-flex;font-size:15px;font-weight:600;gap:var(--spacing-sm);padding:12px 20px;text-decoration:none;transition:all .2s}.btn-secondary:hover{background:var(--color-accent-glow);border-color:var(--color-tint)}.logout-button{background:var(--color-error);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 20px;transition:opacity .2s}.logout-button:hover{opacity:.8}.stats-grid{grid-gap:clamp(.75rem,1.5vw,1.5rem);display:grid;gap:clamp(.75rem,1.5vw,1.5rem);grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));margin-bottom:clamp(1rem,2vw,2rem)}.stat-card{align-items:center;background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;gap:clamp(.75rem,1.5vw,1.25rem);padding:clamp(1rem,2vw,1.5rem);transition:transform .2s,box-shadow .2s}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-icon{align-items:center;border-radius:var(--radius-md);display:flex;flex-shrink:0;font-size:24px;height:56px;justify-content:center;width:56px}.stat-icon.active{background:#007aff26;color:var(--color-tint)}.stat-icon.rewards{background:#ff950026;color:var(--color-warning)}.stat-icon.redeemed{background:#34c75926;color:var(--color-success)}.stat-icon.pending{background:#5856d626;color:var(--color-accent)}.stat-content{flex:1 1}.stat-content h3{color:var(--color-text-secondary);font-size:13px;font-weight:600;letter-spacing:.5px;margin:0 0 var(--spacing-sm) 0;text-transform:uppercase}.stat-value{font-size:28px;line-height:1;margin:0 0 var(--spacing-xs) 0}.stat-label{font-size:13px;font-weight:500;margin:0}.qr-code-section{margin:clamp(1rem,2vw,2rem) 0}.qr-code-card{background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:clamp(1rem,2vw,2rem)}.qr-code-header{align-items:center;border-bottom:1px solid var(--color-border-light);display:flex;justify-content:space-between;margin-bottom:var(--spacing-2xl);padding-bottom:var(--spacing-lg)}.qr-code-header h3{color:var(--color-text-primary);font-size:20px;font-weight:600;margin:0 0 var(--spacing-xs) 0}.qr-code-header p{color:var(--color-text-secondary);font-size:14px;margin:0}.qr-code-actions{display:flex;gap:var(--spacing-md)}.btn-download,.btn-regenerate{align-items:center;border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:flex;font-size:15px;font-weight:600;gap:var(--spacing-sm);padding:12px 20px;transition:opacity .2s}.btn-download{background:var(--color-success)}.btn-download:hover{opacity:.8}.btn-regenerate{background:var(--color-tint)}.btn-regenerate:hover:not(:disabled){opacity:.8}.btn-regenerate:disabled{cursor:not-allowed;opacity:.4}.qr-code-display{align-items:center;display:flex;flex-direction:column;gap:var(--spacing-2xl)}.qr-code-image{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);height:200px;padding:var(--spacing-xl);width:200px}.qr-code-hint{background:var(--color-accent-glow);border-radius:var(--radius-md);color:var(--color-tint);font-size:14px;font-weight:500;gap:var(--spacing-sm);margin:0;max-width:600px;padding:var(--spacing-lg)}.qr-code-hint,.qr-code-placeholder{align-items:center;display:flex;justify-content:center;text-align:center}.qr-code-placeholder{flex-direction:column;padding:4rem 2rem}.qr-placeholder-icon{font-size:3rem;margin-bottom:var(--spacing-lg);opacity:.3}.qr-code-placeholder p{color:var(--color-text-secondary);font-size:15px;margin:var(--spacing-sm) 0}.qr-placeholder-hint{color:var(--color-text-tertiary);font-size:14px;max-width:400px}.charts-container{grid-gap:clamp(1rem,2vw,1.5rem);display:grid;gap:clamp(1rem,2vw,1.5rem);grid-template-columns:repeat(auto-fit,minmax(min(100%,450px),1fr));margin-top:clamp(1rem,2vw,2rem)}.chart-card{background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);min-height:clamp(320px,40vh,450px);padding:clamp(1rem,2vw,2rem)}.chart-card h3{color:var(--color-text-primary);font-size:clamp(15px,1.2vw,17px);font-weight:600;margin:0 0 clamp(1rem,2vw,1.5rem)}.no-data{color:var(--color-text-tertiary);font-size:14px;padding:3rem 1rem;text-align:center}.notification-toast{align-items:center;animation:slideInRight .3s ease-out;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;gap:var(--spacing-lg);justify-content:space-between;max-width:500px;padding:var(--spacing-lg) var(--spacing-xl);position:fixed;right:var(--spacing-2xl);top:var(--spacing-2xl);z-index:1000}@keyframes slideInRight{0%{opacity:0;transform:translateX(400px)}to{opacity:1;transform:translateX(0)}}.notification-content{align-items:center;display:flex;gap:var(--spacing-md)}.notification-icon{align-items:center;border-radius:50%;display:flex;flex-shrink:0;font-size:16px;font-weight:700;height:28px;justify-content:center;width:28px}.notification-message{font-size:15px;font-weight:500;line-height:1.5}.notification-close{align-items:center;background:#0000001a;border:none;border-radius:50%;color:inherit;cursor:pointer;display:flex;flex-shrink:0;font-size:20px;height:28px;justify-content:center;transition:all .2s;width:28px}.notification-close:hover{background:#00000026}.notification-success{background:var(--color-success);color:#fff}.notification-success .notification-icon{background:#fff3}.notification-error{background:var(--color-error);color:#fff}.notification-error .notification-icon{background:#fff3}.notification-warning{background:var(--color-warning);color:#fff}.notification-warning .notification-icon{background:#fff3}.empty-state p{margin:0 0 var(--spacing-2xl) 0}.primary-button{background:var(--color-tint);border:none;border-radius:14px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:16px 32px;transition:opacity .2s}.primary-button:hover{opacity:.8}.primary-button:active{opacity:.7;transform:scale(.98)}@media (max-width:1200px){.stats-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}}@media (max-width:1024px){.charts-container{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.dashboard-content{margin-left:0;padding:clamp(.75rem,3vw,1.5rem)}.charts-container,.stats-grid{gap:1rem;grid-template-columns:1fr}.chart-card{min-height:300px}.dashboard-header{align-items:flex-start;flex-direction:column;gap:1rem;padding:1rem}.header-actions{display:flex;gap:.75rem;width:100%}.btn-refresh,.btn-secondary,.logout-button{flex:1 1;font-size:14px;justify-content:center;padding:10px 16px}.notification-toast{left:1rem;max-width:none;right:1rem}.qr-code-header{align-items:flex-start;flex-direction:column;gap:1rem}.qr-code-actions{flex-direction:column;width:100%}.btn-download,.btn-regenerate{justify-content:center;width:100%}}@media (max-width:480px){.stat-card{gap:1rem;padding:1rem}.stat-icon{font-size:20px;height:48px;width:48px}.stat-value{font-size:24px}.stat-content h3{font-size:11px}.stat-label{font-size:12px}.merchant-avatar{font-size:1.5rem;height:48px;width:48px}.merchant-info h2{font-size:18px}.merchant-info p{font-size:12px}}.my-cards-container{background:var(--color-background);display:flex;min-height:100vh}.my-cards-content{flex:1 1;margin-left:240px;max-width:100%;padding:clamp(1rem,3vw,2.5rem) clamp(1rem,2vw,2rem);width:100%}.my-cards-header{align-items:center;background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;justify-content:space-between;margin-bottom:clamp(1rem,2vw,2rem);padding:clamp(1rem,2vw,2rem)}.my-cards-header-info h1{color:var(--color-text-primary);font-size:28px;font-weight:700;margin:0 0 var(--spacing-xs) 0}.my-cards-header-info p{color:var(--color-text-secondary);font-size:15px;margin:0}.my-cards-header-actions{display:flex;gap:var(--spacing-md)}.btn-logout{background:var(--color-error);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 20px;transition:opacity .2s}.btn-logout:hover{opacity:.8}.create-card-button{align-items:center;background:var(--color-tint);border:none;border-radius:14px;color:#fff;cursor:pointer;display:inline-flex;font-size:16px;font-weight:600;gap:var(--spacing-sm);margin-bottom:var(--spacing-2xl);padding:16px 24px;transition:opacity .2s}.create-card-button:hover{opacity:.8}.cards-grid{grid-gap:var(--spacing-lg);display:grid;gap:var(--spacing-lg);grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.loyalty-card{background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;padding:var(--spacing-xl);position:relative;transition:all .2s ease}.loyalty-card:before{background:var(--color-tint);content:"";height:4px;left:0;position:absolute;right:0;top:0}.loyalty-card:hover{box-shadow:var(--shadow-md);transform:translateY(-4px)}.loyalty-card.active{border:2px solid var(--color-tint);box-shadow:0 4px 16px #007aff33}.loyalty-card.active:before{height:4px}.card-header{gap:var(--spacing-lg);margin-bottom:var(--spacing-lg);padding-top:var(--spacing-xs)}.card-header,.card-logo{align-items:center;display:flex}.card-logo{background:var(--color-tint);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-shrink:0;font-size:2rem;height:56px;justify-content:center;width:56px}.card-info{flex:1 1}.card-info h3{color:var(--color-text-primary);font-size:17px;font-weight:600;margin:0 0 var(--spacing-xs) 0}.card-category{color:var(--color-text-secondary);font-size:13px;font-weight:500;letter-spacing:.5px;margin:0;text-transform:uppercase}.card-details{align-items:center;background:#fff;border-radius:var(--radius-sm);display:flex;gap:var(--spacing-xl);margin-bottom:var(--spacing-lg);padding:var(--spacing-md)}.card-reward,.card-stamps{align-items:center;color:var(--color-text-primary);display:flex;font-size:14px;font-weight:500;gap:var(--spacing-sm)}.card-reward svg,.card-stamps svg{color:var(--color-tint);height:16px;width:16px}.active-badge{background:var(--color-success);border-radius:6px;box-shadow:var(--shadow-sm);color:#fff;font-size:13px;font-weight:600;letter-spacing:.5px;padding:6px 12px;position:absolute;right:var(--spacing-lg);text-transform:uppercase;top:var(--spacing-lg)}.card-actions{display:flex;gap:var(--spacing-md)}.btn-view-dashboard{align-items:center;background:var(--color-tint);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:flex;flex:1 1;font-size:15px;font-weight:600;gap:var(--spacing-sm);justify-content:center;padding:12px 16px;transition:opacity .2s}.btn-view-dashboard:hover{opacity:.8}.btn-delete{align-items:center;background:var(--color-error);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:flex;font-weight:600;justify-content:center;padding:12px;transition:opacity .2s}.btn-delete:hover{opacity:.8}.btn-delete:disabled{cursor:not-allowed;opacity:.4}.create-form{background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-2xl);padding:var(--spacing-2xl)}.create-form h3{color:var(--color-text-primary);font-size:20px;font-weight:600;margin:0 0 var(--spacing-2xl) 0}.form-grid{grid-gap:var(--spacing-lg);display:grid;gap:var(--spacing-lg);grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:var(--spacing-xl)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-sm)}.form-group label{color:var(--color-text-primary);font-size:13px;font-weight:600}.form-group input,.form-group select{background:#fff;border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:15px;padding:14px 16px;transition:all .2s ease}.form-group input:focus,.form-group select:focus{border-color:var(--color-tint);box-shadow:0 0 0 3px var(--color-accent-glow);outline:none}.form-actions{display:flex;gap:var(--spacing-md);justify-content:flex-end}.btn-cancel{background:var(--color-surface-solid);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);cursor:pointer;font-size:15px;font-weight:600;padding:12px 24px;transition:all .2s}.btn-cancel:hover{background:var(--color-border)}.btn-submit{background:var(--color-tint);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 24px;transition:opacity .2s}.btn-submit:hover{opacity:.8}.btn-submit:disabled{cursor:not-allowed;opacity:.4}.error-notification,.success-notification{align-items:center;animation:slideIn .3s ease-out;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;font-size:15px;font-weight:600;gap:var(--spacing-md);padding:var(--spacing-lg) var(--spacing-xl);position:fixed;right:var(--spacing-2xl);top:var(--spacing-2xl);z-index:1000}@keyframes slideIn{0%{opacity:0;transform:translateX(400px)}to{opacity:1;transform:translateX(0)}}.success-notification{background:var(--color-success);color:#fff}.error-notification{background:var(--color-error);color:#fff}.error-icon,.success-icon{background:#fff3;border-radius:50%;font-size:14px;font-weight:700;height:24px;width:24px}.error-icon,.loading-container,.success-icon{align-items:center;display:flex;justify-content:center}.loading-container{flex-direction:column;min-height:400px}.loading-container p{color:var(--color-text-secondary);font-size:15px;margin-top:var(--spacing-lg)}.no-cards{margin:0 auto;max-width:500px;padding:4rem 2rem;text-align:center}.no-cards-icon{font-size:4rem;margin-bottom:var(--spacing-2xl);opacity:.3}.no-cards h3{color:var(--color-text-primary);font-size:24px;font-weight:700;margin:0 0 var(--spacing-lg) 0}.no-cards p{color:var(--color-text-secondary);font-size:15px;line-height:22px;margin:0}@media (max-width:1024px){.my-cards-content{margin-left:200px}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}}@media (max-width:768px){.my-cards-content{margin-left:0;padding:clamp(.75rem,3vw,1.5rem)}.my-cards-header{align-items:flex-start;flex-direction:column;gap:1rem;padding:1rem}.my-cards-header-info h1{font-size:24px}.my-cards-header-info p{font-size:14px}.my-cards-header-actions{display:flex;gap:.75rem;width:100%}.btn-dashboard,.btn-logout{flex:1 1;font-size:14px;justify-content:center;padding:10px 16px}.cards-grid{gap:1rem}.cards-grid,.form-grid{grid-template-columns:1fr}.error-notification,.success-notification{left:1rem;right:1rem}.create-card-button{justify-content:center;width:100%}}@media (max-width:480px){.loyalty-card{padding:1rem}.card-logo{font-size:1.5rem;height:48px;width:48px}.card-info h3{font-size:18px}.card-info p{font-size:12px}}.customers-container{background:var(--color-background);display:flex;min-height:100vh}.customers-content{flex:1 1;margin-left:240px;max-width:100%;padding:clamp(1rem,3vw,2.5rem) clamp(1rem,2vw,2rem);width:100%}.customers-header{align-items:center;background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;justify-content:space-between;margin-bottom:clamp(1rem,2vw,2rem);padding:clamp(1rem,2vw,2rem)}.customers-header-info h1{color:var(--color-text-primary);font-size:28px;font-weight:700;margin:0 0 var(--spacing-xs) 0}.customers-header-info p{color:var(--color-text-secondary);font-size:15px;margin:0}.customers-header-actions{display:flex;gap:var(--spacing-md)}.btn-dashboard{align-items:center;background:#fff;border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-tint);cursor:pointer;display:inline-flex;font-size:15px;font-weight:600;gap:var(--spacing-sm);padding:12px 20px;text-decoration:none;transition:all .2s}.btn-dashboard:hover{background:var(--color-accent-glow);border-color:var(--color-tint)}.search-section{margin-bottom:var(--spacing-2xl)}.search-input-wrapper{max-width:500px;position:relative}.search-icon{font-size:18px;left:16px;opacity:.5;position:absolute;top:50%;transform:translateY(-50%)}.search-input{background:var(--color-surface-solid);border:1.5px solid var(--color-border-light);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:15px;font-weight:500;padding:14px 16px 14px 48px;transition:all .2s;width:100%}.search-input:focus{border-color:var(--color-tint);box-shadow:0 0 0 3px #007aff1a;outline:none}.search-input::placeholder{color:var(--color-text-tertiary)}.merchants-grid{display:flex;flex-direction:column;gap:var(--spacing-2xl)}.merchant-section{background:var(--color-surface-solid);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--spacing-2xl)}.merchant-header{align-items:center;border-bottom:1px solid var(--color-border-light);display:flex;gap:var(--spacing-lg);margin-bottom:var(--spacing-xl);padding-bottom:var(--spacing-xl)}.merchant-logo{align-items:center;background:var(--color-tint);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex;flex-shrink:0;font-size:2rem;height:56px;justify-content:center;width:56px}.merchant-info{flex:1 1}.merchant-info h2{color:var(--color-text-primary);font-size:20px;font-weight:600;margin:0 0 var(--spacing-xs) 0}.merchant-info p{color:var(--color-text-secondary);font-size:13px;font-weight:500;letter-spacing:.5px;margin:0;text-transform:uppercase}.customer-count{align-items:center;background:var(--color-accent-glow);border-radius:var(--radius-md);display:flex;flex-direction:column;padding:var(--spacing-md) var(--spacing-lg)}.customer-count .count{color:var(--color-tint);font-size:28px;font-weight:700;line-height:1}.customer-count .label{color:var(--color-text-secondary);font-size:12px;font-weight:600;letter-spacing:.5px;margin-top:var(--spacing-xs);text-transform:uppercase}.customers-list{grid-gap:var(--spacing-lg);display:grid;gap:var(--spacing-lg);grid-template-columns:repeat(auto-fill,minmax(min(100%,400px),1fr))}.customer-card{background:#fff;border:1px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--spacing-xl);transition:all .2s}.customer-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.customer-main{border-bottom:1px solid var(--color-border-light);display:flex;gap:var(--spacing-lg);margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg)}.customer-avatar{align-items:center;background:linear-gradient(135deg,#007aff,#5856d6);border-radius:50%;display:flex;flex-shrink:0;height:56px;justify-content:center;overflow:hidden;width:56px}.customer-avatar img{height:100%;object-fit:cover;width:100%}.customer-avatar span{color:#fff;font-size:24px;font-weight:600}.customer-details{flex:1 1}.customer-details h3{color:var(--color-text-primary);font-size:17px;font-weight:600;margin:0 0 var(--spacing-xs) 0}.customer-email{color:var(--color-text-secondary);font-size:14px;margin:0 0 var(--spacing-xs) 0}.customer-phone{color:var(--color-text-tertiary);font-size:13px;margin:0}.customer-stats{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:repeat(2,1fr);margin-bottom:var(--spacing-lg)}.stat-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.stat-label{color:var(--color-text-secondary);font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.stat-value{color:var(--color-text-primary);font-size:20px;font-weight:700}.stat-value.highlight{color:var(--color-tint)}.progress-section{margin-bottom:var(--spacing-lg)}.progress-bar{background:var(--color-border-light);height:8px;margin-bottom:var(--spacing-sm);overflow:hidden;width:100%}.progress-bar,.progress-fill{border-radius:var(--radius-full)}.progress-fill{background:linear-gradient(90deg,var(--color-tint) 0,var(--color-accent) 100%);height:100%;transition:width .3s ease}.progress-text{color:var(--color-text-secondary);font-size:12px;font-weight:600}.customer-footer{align-items:center;border-top:1px solid var(--color-border-light);display:flex;justify-content:space-between;padding-top:var(--spacing-md)}.joined-date,.last-activity{color:var(--color-text-tertiary);font-size:12px}.no-customers{color:var(--color-text-tertiary);padding:3rem 1rem;text-align:center}.no-customers p{font-size:15px;margin:0}.empty-state{margin:0 auto;max-width:600px;padding:4rem 2rem;text-align:center}.empty-state-icon{font-size:4rem;margin-bottom:var(--spacing-2xl);opacity:.5}.empty-state h2{color:var(--color-text-primary);font-size:28px;font-weight:700;margin:0 0 var(--spacing-lg) 0}.empty-state p{color:var(--color-text-secondary);font-size:15px;line-height:22px;margin:0}.error-container,.loading-container{align-items:center;background:var(--color-background);display:flex;flex-direction:column;justify-content:center;min-height:100vh}.error-container p,.loading-container p{color:var(--color-text-secondary);font-size:15px;margin-top:var(--spacing-lg)}.loading-spinner{animation:spin .8s linear infinite;border:4px solid var(--color-border);border-radius:50%;border-top-color:var(--color-tint);height:48px;width:48px}@keyframes spin{to{transform:rotate(1turn)}}.error-container .error{background:#ff3b301a;border-left:3px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);margin-bottom:var(--spacing-lg);padding:var(--spacing-lg) var(--spacing-xl)}.retry-button{background:var(--color-tint);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-weight:600;padding:12px 24px;transition:opacity .2s}.retry-button:hover{opacity:.8}@media (max-width:1024px){.customers-content{margin-left:200px}.customers-list{grid-template-columns:1fr}}@media (max-width:768px){.customers-content{margin-left:0;padding:clamp(.75rem,3vw,1.5rem)}.customers-header{align-items:flex-start;flex-direction:column;gap:1rem;padding:1rem}.customers-header-info h1{font-size:24px}.customers-header-info p{font-size:14px}.customers-header-actions{width:100%}.btn-dashboard{font-size:14px;justify-content:center;padding:10px 16px;width:100%}.search-input-wrapper{max-width:100%}.merchant-header{flex-wrap:wrap}.customer-count{flex-direction:row;gap:var(--spacing-md);justify-content:center;width:100%}.customer-count .count{font-size:24px}.customer-stats,.customers-list{grid-template-columns:1fr}.customer-footer{align-items:flex-start;flex-direction:column;gap:var(--spacing-xs)}}@media (max-width:480px){.merchant-logo{font-size:1.75rem;height:48px;width:48px}.merchant-info h2{font-size:18px}.customer-avatar{height:48px;width:48px}.customer-avatar span{font-size:20px}.customer-details h3{font-size:16px}}.App{min-height:100vh}.app-header{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;padding:2rem}.app-header h1{font-size:2rem;font-weight:700;margin:0}.app-main{margin:0 auto;max-width:1400px;padding:2rem}@media (max-width:768px){.app-header{padding:1.5rem}.app-header h1{font-size:1.5rem}.app-main{padding:1rem}}
/*# sourceMappingURL=main.67004341.css.map*/