*{box-sizing:border-box;padding:0}*,body{margin:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f7fafc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root,.app-layout{min-height:100vh}.app-layout,.sidebar{display:flex}.sidebar{background:linear-gradient(180deg,#312e81,#4338ca 50%,#6366f1);bottom:0;color:#fff;flex-direction:column;left:0;position:fixed;top:0;transition:width .25s ease;width:240px;z-index:100}.sidebar.collapsed{width:68px}.sidebar-header{border-bottom:1px solid #ffffff1f;justify-content:space-between;padding:20px 16px}.sidebar-header,.sidebar-logo{align-items:center;display:flex}.sidebar-logo{gap:10px;overflow:hidden;white-space:nowrap}.logo-text{letter-spacing:.5px}.logo-text,.logo-text-mini{font-size:1.15rem;font-weight:700}.sidebar-toggle{align-items:center;background:#ffffff1f;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:.85rem;height:28px;justify-content:center;transition:background .2s;width:28px}.sidebar-toggle:hover{background:#ffffff38}.sidebar-nav{display:flex;flex:1 1;flex-direction:column;gap:4px;padding:16px 12px}.nav-item{align-items:center;border-radius:10px;color:#ffffffb8;display:flex;font-size:.92rem;font-weight:500;gap:12px;overflow:hidden;padding:12px 14px;text-decoration:none;transition:all .2s;white-space:nowrap}.nav-item:hover{background:#ffffff1a;color:#fff}.nav-item.active{background:#ffffff2e;color:#fff;font-weight:600}.nav-icon{flex-shrink:0;font-size:1.2rem;text-align:center;width:24px}.nav-label{overflow:hidden;text-overflow:ellipsis}.sidebar-footer{border-top:1px solid #ffffff1f;padding:16px}.footer-text{color:#ffffff73;font-size:.75rem}.main-content{background:#f5f3ff;flex:1 1;margin-left:240px;min-height:100vh;padding:32px;transition:margin-left .25s ease}.sidebar.collapsed~.main-content{margin-left:68px}.page-header{margin-bottom:28px}.page-header h1{color:#1e1b4b;font-size:1.65rem;font-weight:700;margin:0 0 4px}.page-header p{color:#6b7280;font-size:.92rem;margin:0}.card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}.btn{align-items:center;border:none;border-radius:10px;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:8px;justify-content:center;padding:10px 20px;transition:all .2s}.btn-primary{background:#6366f1;color:#fff}.btn-primary:hover{background:#4f46e5;box-shadow:0 4px 12px #6366f159;transform:translateY(-1px)}.btn-primary:disabled{background:#a5b4fc;box-shadow:none;cursor:not-allowed;transform:none}.btn-secondary{background:#f3f4f6;color:#374151}.btn-secondary:hover{background:#e5e7eb}.btn-danger{background:#fee2e2;color:#dc2626}.btn-danger:hover{background:#fecaca}.btn-sm{font-size:.82rem;padding:6px 14px}.modal-overlay{align-items:center;animation:fadeIn .2s ease;background:#00000073;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.modal-content{animation:slideUp .25s ease;background:#fff;border-radius:16px;box-shadow:0 20px 60px #0003;display:flex;flex-direction:column;max-height:85vh;max-width:94vw;width:560px}.modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:20px 24px}.modal-header h2{color:#1e1b4b;font-size:1.15rem;font-weight:700;margin:0}.modal-close{background:none;border:none;border-radius:6px;color:#9ca3af;cursor:pointer;font-size:1.5rem;line-height:1;padding:4px;transition:all .15s}.modal-close:hover{background:#f3f4f6;color:#374151}.modal-body{flex:1 1;overflow-y:auto;padding:24px}.modal-footer{align-items:center;border-top:1px solid #e5e7eb;display:flex;gap:10px;justify-content:flex-end;padding:16px 24px}.table-wrapper{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th{border-bottom:1px solid #e5e7eb;color:#6b7280;font-size:.78rem;font-weight:600;letter-spacing:.05em;padding:12px 16px;text-align:left;text-transform:uppercase;white-space:nowrap}.data-table td{border-bottom:1px solid #f3f4f6;color:#374151;font-size:.88rem;padding:12px 16px}.data-table tbody tr:hover{background:#faf5ff}.badge{align-items:center;border-radius:20px;display:inline-flex;font-size:.78rem;font-weight:600;gap:4px;padding:3px 10px}.badge-token{background:#ede9fe;color:#6d28d9}.badge-voucher{background:#dbeafe;color:#2563eb}.badge-success{background:#dcfce7;color:#16a34a}.badge-warning{background:#fef9c3;color:#a16207}.toggle-switch{flex-shrink:0;height:26px;position:relative;width:48px}.toggle-switch input{height:0;opacity:0;width:0}.toggle-slider{background:#d1d5db;border-radius:26px;cursor:pointer;inset:0;position:absolute;transition:.3s}.toggle-slider:before{background:#fff;border-radius:50%;bottom:3px;box-shadow:0 1px 3px #00000026;content:"";height:20px;left:3px;position:absolute;transition:.3s;width:20px}.toggle-switch input:checked+.toggle-slider{background:#6366f1}.toggle-switch input:checked+.toggle-slider:before{transform:translateX(22px)}.form-group{margin-bottom:20px}.form-label{color:#374151;display:block;font-size:.85rem;font-weight:600;margin-bottom:6px}.form-input,.form-textarea{background:#fff;border:1.5px solid #d1d5db;border-radius:10px;color:#1f2937;font-size:.9rem;padding:10px 14px;transition:border-color .2s,box-shadow .2s;width:100%}.form-input:focus,.form-textarea:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11f;outline:none}.form-textarea{font-family:inherit;min-height:100px;resize:vertical}.form-hint{color:#9ca3af;font-size:.78rem;margin-top:4px}.loading-container{align-items:center;color:#6b7280;display:flex;font-size:.95rem;justify-content:center;padding:60px 20px}.spinner{animation:spin .7s linear infinite;border:3px solid #e5e7eb;border-radius:50%;border-top-color:#6366f1;height:32px;margin-right:12px;width:32px}@keyframes spin{to{transform:rotate(1turn)}}.empty-state{color:#9ca3af;padding:40px 20px;text-align:center}.empty-state p{font-size:.9rem;margin:8px 0 0}.toast{animation:slideIn .3s ease;border-radius:10px;box-shadow:0 8px 24px #0000001f;font-size:.9rem;font-weight:500;padding:14px 22px;position:fixed;right:24px;top:24px;z-index:2000}.toast-success{background:#22c55e;color:#fff}.toast-error{background:#ef4444;color:#fff}@keyframes slideIn{0%{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}@media (max-width:768px){.sidebar{width:68px}.sidebar .footer-text,.sidebar .logo-text,.sidebar .nav-label{display:none}.sidebar .logo-text-mini{display:inline}.main-content{margin-left:68px;padding:20px 16px}}.dashboard{max-width:1200px}.kpi-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(3,1fr);margin-bottom:28px}.recent-section{overflow:hidden;padding:0}.recent-header{align-items:center;border-bottom:1px solid #f3f4f6;display:flex;justify-content:space-between;padding:20px 24px}.recent-header h2{color:#1e1b4b;font-size:1.1rem;font-weight:700;margin:0}.user-cell{color:#1e1b4b;font-weight:500}.day-badge{background:#f3f4f6;color:#4b5563;font-weight:600;padding:3px 10px}.day-badge,.streak-badge{border-radius:6px;font-size:.82rem}.streak-badge{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;font-weight:700;padding:2px 8px}.badge-sent{background:#dcfce7;color:#166534}.badge-pending,.badge-sent{border-radius:6px;font-size:.78rem;font-weight:600;padding:2px 8px}.badge-pending{background:#fef3c7;color:#92400e}.time-cell{color:#9ca3af;font-size:.84rem}.dash-error{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:60px 20px;text-align:center}.dash-error p{color:#ef4444;font-size:.95rem;margin:0 0 16px}@media (max-width:960px){.kpi-grid{grid-template-columns:1fr}}@media (max-width:640px){.recent-header{align-items:flex-start;flex-direction:column;gap:12px}}.settings-page{max-width:1200px}.settings-tabs{background:#fff;border:1px solid #e5e7eb;border-bottom:none;border-radius:14px 14px 0 0;display:flex;gap:4px;margin-bottom:0;padding:6px 6px 0}.settings-tab{background:#0000;border:none;border-radius:10px 10px 0 0;color:#6b7280;cursor:pointer;font-size:.9rem;font-weight:600;padding:12px 24px;position:relative;transition:all .2s}.settings-tab:hover{background:#f5f3ff;color:#4f46e5}.settings-tab.active{background:#eef2ff;color:#4f46e5}.settings-tab.active:after{background:#6366f1;border-radius:2px 2px 0 0;bottom:0;content:"";height:2.5px;left:12px;position:absolute;right:12px}.settings-body{border-radius:0 0 14px 14px;border-top:1px solid #e5e7eb;padding:28px}.settings-error{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:60px 20px;text-align:center}.settings-error p{color:#ef4444;font-size:.95rem;margin:0 0 16px}@media (max-width:900px){.settings-body{padding:20px 16px}}.auth-modal-overlay{align-items:center;animation:fadeIn .2s ease-in;background-color:#0009;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.auth-modal-content{animation:slideUp .3s ease-out;background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:450px;padding:2.5rem;text-align:center;width:90%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.auth-modal-icon{animation:bounce .6s ease-in-out;font-size:4rem;margin-bottom:1rem}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.auth-modal-title{color:#2d3748;font-size:1.5rem;font-weight:700;margin-bottom:1rem}.auth-modal-message{color:#4a5568;font-size:1rem;line-height:1.6;margin-bottom:2rem}.auth-modal-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;max-width:250px;padding:.875rem 2rem;transition:all .2s;width:100%}.auth-modal-button:hover{box-shadow:0 5px 15px #667eea66;transform:translateY(-2px)}.auth-modal-button:active{transform:translateY(0)}@media (max-width:480px){.auth-modal-content{padding:2rem 1.5rem}.auth-modal-icon{font-size:3rem}.auth-modal-title{font-size:1.25rem}.auth-modal-message{font-size:.95rem}}
/*# sourceMappingURL=main.0b1fd2a6.css.map*/