body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box;margin:0;padding:0}.App{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh}.loading-spinner{align-items:center;color:#fff;display:flex;flex-direction:column}.spinner{border:4px solid #ffffff4d;border-top-color:#fff;margin-bottom:16px}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{animation:slideUp .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 10px 25px #0000001a;max-width:400px;padding:40px;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-header{margin-bottom:30px;text-align:center}.login-header h1{color:#333;font-size:1.8rem;margin-bottom:8px}.login-header p{color:#666;margin:0}.login-form{gap:20px}.form-group,.login-form{display:flex;flex-direction:column}.form-group{gap:6px}.form-group label{color:#333;font-size:.9rem;font-weight:600}.form-group input{border:2px solid #e1e5e9;border-radius:8px;font-size:1rem;padding:12px 16px;transition:border-color .2s ease}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.login-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;margin-top:10px;padding:14px 20px;transition:transform .2s ease,box-shadow .2s ease}.login-button:hover:not(:disabled){box-shadow:0 5px 15px #667eea4d;transform:translateY(-1px)}.login-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.alert{border-radius:6px;font-size:.9rem;font-weight:500;padding:12px 16px}.alert.error{background-color:#fee;border:1px solid #fed7d7;color:#c53030}.login-help{border-top:1px solid #e1e5e9;margin-top:30px;padding-top:20px}.demo-credentials{background:#f7fafc;border-radius:8px;padding:16px;text-align:center}.demo-credentials h4{color:#4a5568;font-size:.9rem;margin:0 0 10px}.demo-credentials p{color:#718096;font-family:Courier New,monospace;font-size:.85rem;margin:4px 0}@media (max-width:480px){.login-container{padding:10px}.login-card{padding:30px 20px}}.dashboard-container{background-color:#f8fafc;min-height:100vh}.dashboard-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;display:flex;justify-content:space-between;padding:20px 30px}.header-left h1{font-size:1.8rem;margin:0 0 5px}.header-left p{font-size:.9rem;margin:0;opacity:.9}.header-right{display:flex;gap:12px}.logout-button,.refresh-button{border:none;border-radius:6px;cursor:pointer;font-size:.9rem;padding:8px 16px;transition:all .2s ease}.refresh-button{background:#fff3;color:#fff}.refresh-button:hover{background:#ffffff4d}.logout-button{background:#ffffff1a;border:1px solid #ffffff4d;color:#fff}.logout-button:hover{background:#fff3}.dashboard-nav{background:#fff;border-bottom:1px solid #e2e8f0;display:flex;gap:2px;overflow-x:auto;padding:0 30px}.nav-button{background:none;border:none;border-bottom:3px solid #0000;color:#64748b;cursor:pointer;font-size:.9rem;padding:15px 20px;transition:all .2s ease;white-space:nowrap}.nav-button:hover{background:#f8fafc;color:#334155}.nav-button.active{background:#f8fafc;border-bottom-color:#667eea;color:#667eea}.dashboard-main{margin:0 auto;max-width:1400px;padding:30px}.error-message,.loading-spinner{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:400px;text-align:center}.spinner{animation:spin 1s linear infinite;border:4px solid #f3f4f6;border-radius:50%;border-top-color:#667eea;height:40px;width:40px}.retry-button{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;margin-top:16px;padding:10px 20px}.kpi-summary-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:30px}.kpi-card{background:#fff;border-radius:12px;box-shadow:0 2px 10px #00000014;padding:24px;transition:transform .2s ease,box-shadow .2s ease}.kpi-card:hover{box-shadow:0 4px 20px #0000001f;transform:translateY(-2px)}.kpi-card h3{color:#64748b;font-size:.9rem;font-weight:600;letter-spacing:.5px;margin:0 0 12px;text-transform:uppercase}.kpi-value{color:#1e293b;font-size:2rem;font-weight:700;margin-bottom:4px}.kpi-subtitle{color:#64748b;font-size:.85rem}.chart-section{border-radius:12px;box-shadow:0 2px 10px #00000014;margin-bottom:30px;padding:24px}.chart-section h2{color:#1e293b;font-size:1.3rem;margin:0 0 20px}.categories-content{align-items:flex-start;display:flex;gap:30px}.categories-content .chart-section{flex:1 1;margin-bottom:0}.basket-table,.categories-table,.products-table{background:#fff;border-radius:12px;box-shadow:0 2px 10px #00000014;flex:1 1;overflow-x:auto;padding:24px}.basket-table table,.categories-table table,.products-table table{border-collapse:collapse;width:100%}.basket-table td,.basket-table th,.categories-table td,.categories-table th,.products-table td,.products-table th{border-bottom:1px solid #e2e8f0;padding:12px;text-align:left}.basket-table th,.categories-table th,.products-table th{background:#f8fafc;color:#374151;font-size:.85rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.basket-table td,.categories-table td,.products-table td{color:#4b5563;font-size:.9rem}.basket-table tr:hover,.categories-table tr:hover,.products-table tr:hover{background:#f8fafc}.basket-tab,.categories-tab,.overview-tab,.products-tab,.sales-tab{animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.dashboard-header{flex-direction:column;gap:12px;padding:15px 20px;text-align:center}.dashboard-nav{padding:0 20px}.dashboard-main{padding:20px}.kpi-summary-grid{grid-template-columns:1fr}.categories-content{flex-direction:column}.nav-button{font-size:.8rem;padding:12px 16px}.basket-table,.categories-table,.chart-section,.products-table{padding:16px}}.App.loading{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}.App.loading .loading-spinner{color:#fff}.App.loading .spinner{border-color:#fff #ffffff4d #ffffff4d}.filter-loading-overlay{align-items:center;background:#f8fafc4d;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:10}.filter-loading-content{align-items:center;background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;display:flex;flex-direction:column;gap:12px;padding:20px 30px}.filter-loading-content .spinner{animation:spin 1s linear infinite;border:2px solid #f3f4f6;border-radius:50%;border-top-color:#667eea;height:24px;width:24px}.filter-loading-content span{color:#64748b;font-size:.9rem;font-weight:500}.dashboard-content{position:relative;transition:opacity .2s ease}.dashboard-content.filter-loading{opacity:.7;pointer-events:none}.filters-container{background:#fff;border-radius:12px;box-shadow:0 2px 10px #00000014;margin-bottom:24px;padding:20px}.filters-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.filters-header h3{color:#1e293b;font-size:1.1rem;margin:0}.clear-filters-btn{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;font-size:.85rem;padding:6px 12px;transition:all .2s ease}.clear-filters-btn:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.filters-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:20px}.filter-group{display:flex;flex-direction:column;gap:6px}.filter-group label{color:#374151;font-size:.9rem;font-weight:600}.date-input{border:2px solid #e2e8f0;border-radius:8px;font-size:.9rem;padding:10px 12px;transition:border-color .2s ease}.date-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.multiselect{font-size:.9rem}.active-filters{border-top:1px solid #e2e8f0;padding-top:16px}.active-filters h4{color:#4b5563;font-size:.9rem;font-weight:600;margin:0 0 12px}.filter-tags{display:flex;flex-wrap:wrap;gap:8px}.filter-tag{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;display:inline-block;font-size:.8rem;font-weight:500;padding:4px 8px}@media (max-width:768px){.filters-container{padding:16px}.filters-grid{grid-template-columns:1fr}.filters-header{align-items:flex-start;flex-direction:column;gap:12px}.filter-tags{gap:6px}.filter-tag{font-size:.75rem;padding:3px 6px}}.filter-applying{animation:pulse 1s infinite;display:inline-block;margin-left:8px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.clear-filters-btn:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed;opacity:.6}.clear-filters-btn:disabled:hover{background:#f8fafc;border-color:#e2e8f0;color:#94a3b8}.filter-error{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-bottom:1rem;padding:1rem;text-align:center}.filter-error p{color:#dc2626;margin-bottom:.5rem}.filter-error button{background:#dc2626;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:.5rem 1rem}.filter-error button:hover{background:#b91c1c}.error-boundary{align-items:center;background-color:#f8f9fa;display:flex;justify-content:center;min-height:60vh;padding:2rem}.error-boundary-content{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 20px #0000001a;max-width:600px;padding:3rem;text-align:center}.error-boundary-content h2{color:#dc2626;font-size:1.5rem;margin-bottom:1rem}.error-boundary-content p{color:#64748b;line-height:1.6;margin-bottom:2rem}.error-actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.error-button{border:none;border-radius:8px;cursor:pointer;font-size:.875rem;font-weight:500;padding:.75rem 1.5rem;transition:all .2s ease}.error-button.primary{background:#667eea;color:#fff}.error-button.primary:hover{background:#5a6fd8;transform:translateY(-1px)}.error-button.secondary{background:#f1f5f9;border:1px solid #e2e8f0;color:#475569}.error-button.secondary:hover{background:#e2e8f0;transform:translateY(-1px)}.error-button:active{transform:translateY(0)}.error-details{margin-top:2rem;text-align:left}.error-details summary{background:#f8fafc;border-radius:4px;color:#475569;cursor:pointer;font-weight:500;margin-bottom:1rem;padding:.5rem}.error-details summary:hover{background:#f1f5f9}.error-stack{background:#1e293b;border-radius:4px;color:#e2e8f0;font-size:.75rem;line-height:1.5;overflow-x:auto;padding:1rem;white-space:pre-wrap;word-break:break-word}@media (max-width:768px){.error-boundary{padding:1rem}.error-boundary-content{padding:2rem 1.5rem}.error-actions{flex-direction:column}.error-button{width:100%}}.market-basket-container{background:#f8f9fa;border-radius:8px;margin-bottom:20px;padding:20px;width:100%}.basket-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:15px}.basket-header-left h2{margin:0}.basket-header-right{align-items:center;display:flex;gap:15px}.refresh-basket-btn{background:#28a745;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.9em;font-weight:500;padding:8px 16px;transition:all .3s ease}.refresh-basket-btn:hover:not(:disabled){background:#218838}.refresh-basket-btn:disabled{background:#6c757d;cursor:not-allowed}.basket-header h2{color:#2c3e50;font-size:1.8em;margin:0}.view-selector{display:flex;gap:10px}.view-btn{background:#fff;border:1px solid #dee2e6;border-radius:6px;color:#495057;cursor:pointer;font-size:.9em;font-weight:500;padding:10px 16px;transition:all .3s ease}.view-btn:hover{background:#e9ecef;border-color:#adb5bd}.view-btn.active{background:#007bff;border-color:#007bff;color:#fff}.basket-loading{padding:40px;text-align:center}.basket-loading .spinner{animation:spin 1s linear infinite;border:4px solid #e9ecef;border-radius:50%;border-top-color:#007bff;height:40px;margin:0 auto 20px;width:40px}.basket-error{background:#f8d7da;border-radius:6px;color:#721c24;padding:20px;text-align:center}.basket-error button{background:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:10px;padding:8px 16px}.basket-rules-view{space-y:30px}.basket-controls{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.threshold-controls{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.control-group{display:flex;flex-direction:column;gap:8px}.control-group label{color:#495057;font-size:.9em;font-weight:600}.control-group input{border:1px solid #ced4da;border-radius:4px;font-size:.9em;padding:8px 12px}.control-group small{color:#6c757d;font-size:.8em}.basket-summary{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.summary-stats{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.stat-card{background:#f8f9fa;border-radius:6px;padding:15px;text-align:center}.stat-card h4{color:#6c757d;font-size:.9em;letter-spacing:.5px;margin:0 0 10px;text-transform:uppercase}.stat-value{color:#007bff;font-size:1.8em;font-weight:700}.charts-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:30px}.chart-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.chart-section h3{color:#2c3e50;font-size:1.1em;margin:0 0 20px}.rules-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.rules-table-container h3{border-bottom:1px solid #e9ecef;color:#2c3e50;margin:0;padding:20px 20px 10px}.table-wrapper{max-height:600px;overflow-x:auto;overflow-y:auto}.rules-table{border-collapse:collapse;font-size:.9em;width:100%}.rules-table td,.rules-table th{border-bottom:1px solid #e9ecef;padding:12px 8px;text-align:left}.rules-table th{background:#f8f9fa;color:#495057;font-weight:600;position:sticky;top:0;z-index:10}.rank-cell{color:#007bff;width:60px}.arrow-cell,.rank-cell{font-weight:700;text-align:center}.arrow-cell{color:#28a745;font-size:1.2em;width:30px}.product-list{display:flex;flex-wrap:wrap;gap:4px}.product-tag{background:#e3f2fd;border-radius:12px;color:#1565c0;display:inline-block;font-size:.8em;font-weight:500;padding:4px 8px}.product-tag.consequent{background:#e8f5e8;color:#2e7d32}.antecedent-cell,.consequent-cell{max-width:250px;min-width:200px}.metric-cell{font-weight:600;text-align:center;width:80px}.metric-cell.lift{color:#dc3545}.metric-cell.confidence{color:#28a745}.metric-cell.support{color:#ffc107}.metric-cell.conviction{color:#6f42c1}.basket-product-view{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.product-selector{margin-bottom:30px}.product-selector label{color:#495057;display:block;font-weight:600;margin-bottom:10px}.product-associations h3{color:#2c3e50;margin-bottom:10px}.associations-table-container{margin-top:20px;overflow-x:auto}.associations-table{border-collapse:collapse;width:100%}.associations-table td,.associations-table th{border-bottom:1px solid #e9ecef;padding:12px;text-align:left}.associations-table th{background:#f8f9fa;color:#495057;font-weight:600}.rule-cell{min-width:300px}.rule-display{align-items:center;display:flex;gap:10px}.rule-display .antecedent{background:#e3f2fd;border-radius:16px;color:#1565c0;font-weight:500;padding:6px 12px}.rule-display .consequent{background:#e8f5e8;border-radius:16px;color:#2e7d32;font-weight:500;padding:6px 12px}.rule-display .arrow{color:#28a745;font-size:1.2em;font-weight:700}.basket-cart-view{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.cart-builder{border-bottom:1px solid #e9ecef;margin-bottom:30px;padding-bottom:20px}.cart-builder h3{color:#2c3e50;margin-bottom:15px}.cart-input{display:flex;gap:10px;margin-bottom:20px}.cart-input>div{flex:1 1}.cart-input button{background:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 16px}.cart-input button:disabled{background:#6c757d;cursor:not-allowed}.current-cart h4{color:#495057;margin-bottom:10px}.cart-items{display:flex;flex-wrap:wrap;gap:8px}.cart-item{background:#fff3cd;border:1px solid #ffeaa7;border-radius:16px;font-weight:500;gap:8px;padding:6px 12px}.cart-item,.cart-item button{align-items:center;color:#856404;display:flex}.cart-item button{background:none;border:none;border-radius:50%;cursor:pointer;font-weight:700;height:20px;justify-content:center;padding:0 4px;width:20px}.cart-item button:hover{background:#e8ac26;color:#fff}.cart-recommendations h3{color:#2c3e50;margin-bottom:20px}.recommendations-list{grid-gap:15px;display:grid;gap:15px}.recommendation-card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:15px}.rec-product{color:#2c3e50;font-size:1.1em;margin-bottom:8px}.rec-metrics{display:flex;gap:20px;margin-bottom:8px}.rec-metrics .confidence{color:#28a745;font-weight:600}.rec-metrics .lift{color:#dc3545;font-weight:600}.rec-based-on{color:#6c757d;font-size:.9em;margin-bottom:10px}.add-recommendation{background:#28a745;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.9em;padding:6px 12px}.add-recommendation:disabled{background:#6c757d;cursor:not-allowed}@media (max-width:768px){.basket-header{align-items:stretch;flex-direction:column;gap:15px}.view-selector{justify-content:space-between}.view-btn{flex:1 1;font-size:.8em;padding:8px 12px}.charts-grid,.threshold-controls{grid-template-columns:1fr}.summary-stats{grid-template-columns:repeat(2,1fr)}.cart-input,.rec-metrics{flex-direction:column}.rec-metrics{gap:5px}}.no-data-message{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-top:20px;padding:40px;text-align:center}.no-data-message h3,.no-data-message p{color:#6c757d;margin-bottom:10px}.no-data-message small{color:#adb5bd;font-size:.8em}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}