:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.navigation{display:flex;align-items:center}.nav-list{display:flex;list-style:none;margin:0;padding:0;gap:.5rem}.nav-item{margin:0}.nav-link{display:flex;align-items:center;padding:.75rem 1.25rem;color:#fff;text-decoration:none;border-radius:8px;font-weight:500;transition:all .3s ease;background-color:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.nav-link:hover{background-color:#fff3;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.nav-link.active{background-color:#ffffff40;box-shadow:0 2px 8px #00000026;border-color:#fff6}.nav-user{margin-left:auto;display:flex;align-items:center;gap:1rem}.user-info{color:#fff;font-weight:500;padding:.5rem}.logout-button{padding:.5rem 1rem;background:#ff3b30e6;color:#fff;border:none;border-radius:6px;font-weight:500;cursor:pointer;transition:all .2s}.logout-button:hover{background:#ff3b30;transform:translateY(-1px);box-shadow:0 2px 8px #ff3b304d}@media(max-width:768px){.nav-list{flex-wrap:wrap;justify-content:center;gap:.25rem}.nav-link{padding:.5rem 1rem;font-size:.9rem}}@media(max-width:480px){.nav-list{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;width:100%}.nav-link{text-align:center;justify-content:center}}.layout{min-height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.layout-header{background:linear-gradient(135deg,#212529,#343a40);color:#fff;box-shadow:0 2px 10px #0003;position:sticky;top:0;z-index:100}.header-content{margin:0;padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;width:100%}.logo{font-size:2rem;font-weight:700;margin:0;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.layout-main{flex:1;display:flex;flex-direction:column}.main-content{margin:0;padding:0;width:100%;flex:1}.layout-footer{background-color:#212529;color:#f8f9fa;text-align:center;padding:1rem;margin-top:auto}.layout-footer p{margin:0;font-size:.9rem}@media(max-width:768px){.header-content{flex-direction:column;text-align:center;padding:1rem}.logo{font-size:1.5rem}.main-content{padding:0}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-container{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;width:100%;max-width:420px;padding:40px}.login-header{text-align:center;margin-bottom:32px}.login-header h1{margin:0 0 8px;font-size:32px;color:#333;font-weight:600}.login-header p{margin:0;color:#666;font-size:14px}.login-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-size:14px;font-weight:500;color:#333}.form-group input{padding:12px 16px;border:1px solid #ddd;border-radius:6px;font-size:15px;transition:all .2s}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.error-message{background:#fee;color:#c33;padding:12px 16px;border-radius:6px;font-size:14px;border-left:3px solid #c33}.login-button{padding:14px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:500;cursor:pointer;transition:all .2s;margin-top:8px}.login-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-footer{margin-top:24px;text-align:center;font-size:13px;color:#666}.login-footer p{margin:0}.home-page{max-width:1000px;margin:0 auto}.hero-section{text-align:center;padding:3rem 0;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:12px;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.hero-section h1{font-size:2.5rem;color:#2c3e50;margin-bottom:1rem;font-weight:700}.hero-section p{font-size:1.2rem;color:#555;margin:0}.status-section{margin-bottom:3rem}.status-section h2{color:#2c3e50;margin-bottom:1.5rem;font-size:1.8rem}.status-card{background:#fff;border-radius:8px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 2px 4px #0000001a;border-left:4px solid #ddd}.status-card h3{margin:0 0 1rem;font-size:1.2rem}.status-card.connected{border-left-color:#27ae60;background:linear-gradient(135deg,#27ae600d,#27ae6005)}.status-card.app-info{border-left-color:#3498db;background:linear-gradient(135deg,#3498db0d,#3498db05)}.status-card.health-status{border-left-color:#2ecc71;background:linear-gradient(135deg,#2ecc710d,#2ecc7105)}.status-content{display:flex;flex-direction:column;gap:.5rem}.status-indicator{font-weight:600;font-size:1.1rem}.status-detail{font-size:.9rem;color:#666;margin:0}.info-grid{display:grid;gap:.75rem}.info-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid #eee}.info-item:last-child{border-bottom:none}.info-value{color:#666;font-family:Courier New,monospace}.quick-actions{margin-bottom:2rem}.quick-actions h2{color:#2c3e50;margin-bottom:1.5rem;font-size:1.8rem}.action-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.action-card{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 6px #0000001a;transition:transform .3s ease,box-shadow .3s ease;text-align:center}.action-card:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026}.action-card h3{color:#2c3e50;margin-bottom:1rem;font-size:1.4rem}.action-card p{color:#666;margin-bottom:1.5rem;line-height:1.6}.action-button{display:inline-block;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;text-decoration:none;padding:.75rem 2rem;border-radius:8px;font-weight:600;transition:all .3s ease;box-shadow:0 2px 4px #0000001a}.action-button:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003;color:#fff;text-decoration:none}@media(max-width:768px){.hero-section{padding:2rem 1rem}.hero-section h1{font-size:2rem}.action-cards{grid-template-columns:1fr}.info-item{flex-direction:column;align-items:flex-start;gap:.25rem}}.product-context-menu{background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:220px;padding:8px 0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.context-menu-header{padding:12px 16px;border-bottom:1px solid #eee;margin-bottom:4px}.context-menu-header h4{margin:0 0 4px;font-size:14px;font-weight:600;color:#333}.context-menu-header p{margin:0 0 2px;font-size:12px;color:#666;line-height:1.3}.context-menu-header .supplier{color:#888;font-style:italic}.context-menu-actions{padding:4px 0}.context-menu-item{display:flex;align-items:center;width:100%;padding:10px 16px;border:none;background:none;text-align:left;font-size:14px;color:#333;cursor:pointer;transition:background-color .2s}.context-menu-item:hover{background-color:#f5f5f5}.context-menu-item:active{background-color:#e0e0e0}.context-menu-item .icon{margin-right:10px;font-size:16px}.context-menu-item:first-child{color:#06c;font-weight:500}.context-menu-item:first-child:hover{background-color:#e6f2ff}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;animation:fadeIn .2s ease-out}.modal-content{background:#fff;border-radius:8px;box-shadow:0 10px 25px #0000004d;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;animation:slideIn .3s ease-out}.installation-modal{max-width:600px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #eee}.modal-header h2{margin:0;font-size:20px;color:#333}.modal-close{background:none;border:none;font-size:20px;color:#999;cursor:pointer;padding:4px;line-height:1;transition:color .2s}.modal-close:hover{color:#666}.modal-body{padding:20px 24px}.product-info{background:#f8f9fa;border-radius:6px;padding:16px;margin-bottom:24px}.product-info h3{margin:0 0 8px;font-size:16px;color:#06c;font-weight:600}.product-info p{margin:0 0 4px;font-size:14px;color:#666}.product-info .supplier{color:#888;font-style:italic}.form-group label{display:block;margin-bottom:6px;font-weight:500;color:#333;font-size:14px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#06c;box-shadow:0 0 0 3px #0066cc1a}.form-group textarea{resize:vertical;min-height:80px}.help-text{display:block;margin-top:4px;font-size:12px;color:#666;font-style:italic}.error-message{background:#fee;color:#c33;padding:10px 12px;border-radius:4px;margin-bottom:16px;font-size:14px;border:1px solid #fcc}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px 20px;border-top:1px solid #eee;background:#f8f9fa;border-radius:0 0 8px 8px}.btn{padding:10px 20px;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.btn-secondary:hover{background:#5a6268}.btn-primary{background:#06c;color:#fff}.btn-primary:hover:not(:disabled){background:#0052a3}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.package-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.package-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;width:90%;max-width:600px;max-height:90vh;overflow-y:auto;animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.package-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,gold,#ffed4e);border-radius:12px 12px 0 0}.package-modal-header h3{margin:0;color:#333;font-size:1.25rem;font-weight:600}.close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.close-btn:hover{background:#0000001a;color:#333}.package-modal-body{padding:2rem}.product-info{background:#f8f9fa;padding:1rem;border-radius:8px;margin-bottom:1.5rem;border-left:4px solid #ffd700}.product-info h4{margin:0 0 .5rem;color:#333;font-size:1rem;font-weight:600}.product-info p{margin:.25rem 0;color:#666;font-size:.9rem}.package-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column}.form-group label{margin-bottom:.5rem;font-weight:500;color:#333;font-size:.9rem}.form-control{padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;transition:border-color .2s ease,box-shadow .2s ease}.form-control:focus{outline:none;border-color:gold;box-shadow:0 0 0 3px #ffd7001a}.form-control::placeholder{color:#999}textarea.form-control{resize:vertical;min-height:80px;font-family:inherit}.form-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid #e9ecef}.btn{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn-primary{background:linear-gradient(135deg,gold,#ffed4e);color:#333;font-weight:600}.btn-primary:hover{background:linear-gradient(135deg,#ffed4e,gold);transform:translateY(-1px);box-shadow:0 4px 12px #ffd7004d}@media(max-width:640px){.package-modal{width:95%;margin:1rem}.package-modal-header,.package-modal-body{padding:1rem}.form-actions{flex-direction:column}.btn{width:100%}}.replace-product-modal{max-width:700px;width:90%}.replace-product-modal .modal-body{padding:1.5rem;max-height:70vh;overflow-y:auto}.current-product-info{background-color:#f8f9fa;border-radius:8px;padding:1rem;margin-bottom:1rem}.current-product-info h3{margin-top:0;margin-bottom:.75rem;font-size:1rem;color:#495057}.product-details p{margin:.5rem 0;font-size:.95rem}.arrow-divider{text-align:center;font-size:2rem;margin:1rem 0}.new-product-section{background-color:#e7f5ff;border-radius:8px;padding:1rem;margin-bottom:1rem}.new-product-section h3{margin-top:0;margin-bottom:1rem;font-size:1rem;color:#495057}.search-box{position:relative;margin-bottom:1rem}.search-box label{display:block;margin-bottom:.5rem;font-weight:500;font-size:.9rem}.search-input{width:100%;padding:.75rem;border:1px solid #ced4da;border-radius:4px;font-size:1rem;transition:border-color .15s ease-in-out}.search-input:focus{border-color:#4caf50;outline:none;box-shadow:0 0 0 .2rem #4caf5040}.search-spinner{text-align:center;padding:.5rem;color:#6c757d;font-size:.9rem}.search-results-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ced4da;border-radius:4px;max-height:300px;overflow-y:auto;z-index:1000;box-shadow:0 4px 6px #0000001a;margin-top:.25rem}.search-result-item{padding:.75rem;cursor:pointer;border-bottom:1px solid #e9ecef;transition:background-color .15s ease-in-out}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background-color:#f8f9fa}.result-code{font-weight:600;color:#212529;margin-bottom:.25rem;font-size:.95rem}.result-name{color:#495057;font-size:.9rem;margin-bottom:.25rem}.result-supplier{color:#6c757d;font-size:.85rem}.selected-product{background-color:#fff;border:2px solid #4CAF50;border-radius:4px;padding:.75rem;margin-top:1rem}.selected-product p{margin:.25rem 0;font-size:.95rem}.error-message{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:.75rem;margin-top:1rem;font-size:.9rem}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid #dee2e6}.btn{padding:.5rem 1.25rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:all .15s ease-in-out}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background-color:#6c757d;color:#fff}.btn-secondary:hover:not(:disabled){background-color:#5a6268}.btn-primary{background-color:#4caf50;color:#fff}.btn-primary:hover:not(:disabled){background-color:#45a049}.products-page{width:100%;min-height:100vh;background:linear-gradient(135deg,#f8f9fa,#e9ecef);padding:var(--spacing-lg) 0}.search-section{margin-bottom:2rem}.search-card-compact{background:var(--white);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-lg);border:1px solid var(--bs-gray-300)}.search-card{background:var(--white);border-radius:var(--radius-lg);padding:var(--spacing-xl);box-shadow:var(--shadow-lg);border:1px solid var(--bs-gray-300)}.search-header{text-align:center;margin-bottom:var(--spacing-xl);padding-bottom:var(--spacing-lg);border-bottom:2px solid var(--primary-color)}.search-title{font-size:var(--font-size-2xl);color:var(--dark-color);margin-bottom:var(--spacing-sm);font-weight:700}.search-subtitle{font-size:var(--font-size-lg);color:var(--bs-gray-600);margin:0;font-weight:500}.search-form{display:flex;flex-direction:column;gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}.filters-section{border-top:1px solid var(--bs-gray-300);padding-top:var(--spacing-xl);margin-top:var(--spacing-xl)}.filters-section h3{margin:0 0 var(--spacing-lg) 0;color:var(--dark-color);font-size:var(--font-size-lg);font-weight:600;text-align:center}.filters-row{display:flex;gap:var(--spacing-md);align-items:center;margin-top:var(--spacing-md);flex-wrap:wrap}.filter-compact{flex:0 0 auto;min-width:270px}.dropdown-toggle-compact{padding:.6rem 1.2rem;font-size:1rem;background:var(--white);border:1px solid var(--bs-gray-400);border-radius:var(--radius-md);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:space-between;color:var(--dark-color);font-weight:500;white-space:nowrap;width:100%}.dropdown-toggle-compact .dropdown-arrow{color:#333;font-size:.8rem;margin-left:auto}.dropdown-toggle-compact:hover{background:var(--bs-gray-100);border-color:var(--primary-color)}.select-compact{padding:.6rem 2.5rem .6rem 1.2rem;font-size:1rem;border:1px solid var(--bs-gray-400);border-radius:var(--radius-md);background:var(--white);cursor:pointer;transition:all .2s;color:var(--dark-color);width:100%;font-weight:500;appearance:none;position:relative;background-image:none}.filter-compact{position:relative}.filter-compact:after{content:"▼";position:absolute;right:1rem;top:50%;transform:translateY(-50%);color:#333;font-size:.8rem;pointer-events:none;z-index:1}.filter-compact:has(.dropdown-filter):after{display:none}.select-compact:hover{border-color:var(--primary-color);background:var(--bs-gray-100)}.results-count-compact{margin-left:auto;padding:.6rem 1.2rem;font-size:1rem;color:var(--bs-gray-600);font-weight:500;white-space:nowrap}.loading-text{font-size:.95rem;color:var(--bs-gray-500);margin:0;padding:.6rem 1.2rem}.search-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.search-input-group{display:flex;gap:var(--spacing-md);align-items:stretch}.search-input-container{position:relative;flex:1;display:flex;align-items:center;gap:var(--spacing-sm)}.search-input-with-clear{flex:1;padding:var(--spacing-md) 50px var(--spacing-md) var(--spacing-lg);border:2px solid var(--bs-gray-400);border-radius:var(--radius-md);font-size:var(--font-size-lg);background:var(--white);color:var(--bs-gray-900);transition:all .2s ease-in-out;box-shadow:inset 0 1px 3px #0000001a}.search-input-with-clear:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffc10733,inset 0 1px 3px #0000001a}.search-input-with-clear::placeholder{color:var(--bs-gray-500);font-style:italic}.search-clear-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--bs-gray-500);font-size:18px;font-weight:700;cursor:pointer;padding:4px;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;transition:all .2s ease-in-out;z-index:1}.search-clear-btn:hover:not(.disabled){background:var(--bs-gray-200);color:var(--bs-gray-700)}.search-clear-btn:active:not(.disabled){background:var(--bs-gray-300)}.search-clear-btn.disabled{color:var(--bs-gray-300);cursor:default}.search-active-filter{min-width:180px;padding:var(--spacing-md);border:2px solid var(--bs-gray-400);border-radius:var(--radius-md);font-size:var(--font-size-base);background:var(--white);color:var(--bs-gray-900);transition:all .2s ease-in-out;cursor:pointer}.search-active-filter:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffc10733}.search-active-filter:hover{border-color:var(--bs-gray-500)}.search-input{flex:1;padding:var(--spacing-md) var(--spacing-lg);border:2px solid var(--bs-gray-400);border-radius:var(--radius-md);font-size:var(--font-size-lg);background:var(--white);color:var(--bs-gray-900);transition:all .2s ease-in-out;box-shadow:inset 0 1px 3px #0000001a}.search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffc10733,inset 0 1px 3px #0000001a}.search-input::placeholder{color:var(--bs-gray-500);font-style:italic}.controls{display:flex;flex-wrap:wrap;gap:var(--spacing-lg);align-items:center;justify-content:space-between;background:var(--white);padding:var(--spacing-xl);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-xl);border:1px solid var(--gray-200)}.filters,.sorting{display:flex;align-items:center;gap:var(--spacing-md);flex-wrap:wrap}.filters label,.sorting label{font-weight:600;color:var(--gray-700);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px}.filter-select,.sort-select{padding:var(--spacing-sm) var(--spacing-md);border:2px solid var(--gray-300);border-radius:var(--radius-md);background:var(--white);font-size:var(--font-size-base);color:var(--gray-700);transition:all .2s ease-in-out;min-width:150px}.filter-select:focus,.sort-select:focus{outline:none;border-color:var(--primary-green);box-shadow:0 0 0 3px #69be281a}.refresh-button{background:linear-gradient(135deg,var(--primary-green) 0%,var(--dark-green) 100%);color:var(--white);border:none;padding:.75rem 1.5rem;border-radius:6px;font-weight:600;cursor:pointer;transition:all .3s ease}.refresh-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px #0003}.refresh-button:disabled{opacity:.6;cursor:not-allowed}.connection-error,.error-message,.loading,.no-products{text-align:center;padding:var(--spacing-2xl);background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-xl);border:1px solid var(--gray-200)}.error-message{border-left:4px solid var(--error);background:linear-gradient(135deg,#dc35450d,#dc354505);color:var(--error)}.loading{border-left:4px solid var(--primary-green);background:linear-gradient(135deg,#69be280d,#69be2805);color:var(--primary-green)}.no-products{border-left:4px solid var(--secondary-green);background:linear-gradient(135deg,#2b7f5c0d,#2b7f5c05);color:var(--secondary-green)}.products-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:var(--spacing-xl);margin-bottom:var(--spacing-2xl);padding:var(--spacing-md)}.product-card{background:var(--white);border-radius:var(--radius-lg);padding:var(--spacing-xl);box-shadow:var(--shadow-md);transition:all .3s ease;border:1px solid var(--gray-200);cursor:pointer;position:relative;overflow:hidden}.product-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--primary-green) 0%,var(--secondary-green) 100%);transform:scaleX(0);transition:transform .3s ease}.product-card:hover:before{transform:scaleX(1)}.product-card:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026}.product-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;gap:1rem}.product-name{font-size:1.3rem;color:#2c3e50;margin:0;font-weight:600;flex:1;line-height:1.3}.product-code{background:#f8f9fa;color:#666;padding:.25rem .75rem;border-radius:20px;font-size:.85rem;font-family:Courier New,monospace;font-weight:600;white-space:nowrap}.product-details{margin-bottom:1rem}.product-category{color:#666;margin-bottom:.5rem;font-size:.95rem}.product-description{color:#555;line-height:1.5;margin-bottom:.75rem;font-size:.95rem}.product-price{color:#27ae60;font-weight:600;font-size:1.1rem;margin:0}.product-footer{display:flex;justify-content:flex-end;align-items:center;padding-top:1rem;border-top:1px solid #eee}.stock-status{padding:.5rem 1rem;border-radius:20px;font-size:.85rem;font-weight:600}.stock-status.in-stock{background:#27ae601a;color:#27ae60}.stock-status.out-of-stock{background:#e74c3c1a;color:#e74c3c}.page-footer{text-align:center;padding:1.5rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;color:#666}@media(max-width:768px){.controls{flex-direction:column;align-items:stretch;gap:1rem}.filters,.sorting{justify-content:space-between}.products-grid{grid-template-columns:1fr}.product-header{flex-direction:column;align-items:flex-start;gap:.5rem}.product-code{align-self:flex-start}}.products-table-container{background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--bs-gray-300);overflow:hidden;height:600px;display:flex;flex-direction:column;margin-bottom:2rem;margin-top:1.5rem}.table-header{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);color:var(--dark-color);font-weight:600;border-bottom:2px solid var(--bs-gray-300);position:sticky;top:0;z-index:10;transition:padding-right .2s ease}.header-row{display:grid;grid-template-columns:200px 1fr 1fr 150px 150px 100px 120px;gap:1px;min-height:50px}.header-cell{padding:var(--spacing-md);display:flex;align-items:center;font-weight:700;text-align:left;border-right:1px solid rgba(0,0,0,.1);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px;background:#ffffff1a;color:var(--dark-color)}.header-cell:last-child{border-right:none}.header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s ease;position:relative}.header-cell.sortable:hover{background:#ffd7004d;color:var(--dark-color);transform:translateY(-1px)}.header-cell.sortable.active{background:#ffd70080;color:var(--dark-color);font-weight:800}.header-cell.sortable:active{transform:translateY(0)}.table-body{flex:1;overflow-y:auto;overflow-x:hidden;background:var(--white)}.table-body::-webkit-scrollbar{width:17px;background-color:transparent}.table-body::-webkit-scrollbar-track{background-color:var(--bs-gray-100);border-radius:0}.table-body::-webkit-scrollbar-thumb{background-color:var(--bs-gray-400);border-radius:8px;border:3px solid var(--bs-gray-100)}.table-body::-webkit-scrollbar-thumb:hover{background-color:var(--bs-gray-500)}.table-body{scrollbar-width:thin;scrollbar-color:var(--bs-gray-400) var(--bs-gray-100)}.product-row{display:grid;grid-template-columns:200px 1fr 1fr 150px 150px 100px 120px;gap:1px;min-height:48px;border-bottom:1px solid var(--bs-gray-200);transition:background-color .2s ease}.product-row:hover{background-color:var(--bs-primary-bg-subtle)}.product-cell{padding:.5rem .75rem;display:flex;align-items:center;border-right:1px solid var(--bs-gray-200);word-break:break-word;overflow:hidden;font-size:13px;background:var(--white);color:var(--bs-gray-900)}.product-cell:last-child{border-right:none}.product-row.has-package .product-cell{color:#06c!important;font-weight:500}.product-row.has-package:hover .product-cell{color:#049!important}.product-number-col .product-line{display:block;font-weight:600;color:var(--primary-color);font-family:Courier New,monospace}.product-number-col .product-code{display:block;font-size:var(--font-size-sm);color:var(--bs-gray-600);font-family:Courier New,monospace}.status-badge{padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;margin-right:.25rem}.status-badge.active{background:var(--bs-success-bg-subtle);color:var(--bs-success);border:1px solid var(--bs-success-border-subtle)}.status-badge.inactive{background:var(--bs-danger-bg-subtle);color:var(--bs-danger);border:1px solid var(--bs-danger-border-subtle)}.status-badge.replaced{background:#fff3cd;color:#856404;border:1px solid #ffeaa7}.status-badge.discontinued{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.loading-more{display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);color:var(--bs-gray-600);gap:var(--spacing-sm)}.spinner-small{width:16px;height:16px;border:2px solid var(--bs-gray-300);border-top:2px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}.product-number{font-family:Courier New,monospace;font-weight:500}.product-line{color:#007bff;font-weight:700;margin-right:6px;font-size:16px;text-transform:uppercase}.product-code{color:#495057}.product-name{font-weight:500;color:#212529;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.technical-name{color:#6c757d;font-style:italic;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.supplier,.manufacturer{color:#495057;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unit{text-align:center;font-weight:500;color:#495057}.status{text-align:center}.status-badge{padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}@media(max-width:1200px){.products-table th,.products-table td{padding:10px 8px;font-size:13px}.product-line{font-size:14px}.product-name,.technical-name{max-width:150px}.supplier,.manufacturer{max-width:120px}}@media(max-width:992px){.products-table-container{overflow-x:auto}.products-table{min-width:800px}}@media(max-width:768px){.products-table th,.products-table td{padding:8px 6px;font-size:12px}.product-line{font-size:13px;margin-right:4px}.status-badge{padding:2px 6px;font-size:11px}.product-name,.technical-name{max-width:100px}.supplier,.manufacturer{max-width:80px}}.supplier-checkboxes{max-height:300px;overflow-y:auto;border:1px solid #e9ecef;border-radius:4px;padding:8px;background:#fff}.checkbox-label{display:flex;align-items:center;padding:6px 8px;cursor:pointer;border-radius:4px;margin-bottom:4px;transition:background-color .2s ease}.checkbox-label:hover{background:#f8f9fa}.checkbox{margin-right:8px;cursor:pointer}.checkbox-text{flex:1;font-weight:500;color:#495057}.supplier-count{font-size:12px;color:#6c757d;margin-left:8px;font-weight:400}.filters-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-lg)}@media(max-width:768px){.filters-grid{grid-template-columns:1fr}}.product-number-col{display:flex;align-items:center;gap:8px}.product-number-content{display:flex;flex-direction:row;align-items:center;gap:8px}.expand-btn-container{position:relative;display:flex;align-items:center}.installations-count{position:absolute;top:-2px;right:-2px;background-color:#4caf50;color:#fff;border-radius:50%;width:16px;height:16px;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;border:2px solid white;box-shadow:0 1px 2px #0003}.expand-btn{background:none;border:none;font-size:14px;cursor:pointer;padding:6px;border-radius:4px;color:#666;transition:all .2s ease;min-width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.expand-btn:hover{background-color:#f5f5f5;color:#333}.expand-btn.expanded{color:#4caf50}.expand-btn.has-installations{color:#4caf50!important;font-weight:700}.expand-btn.has-installations:hover{background-color:#e8f5e8;color:#2e7d32!important}.status-col{display:flex;align-items:center;flex-wrap:wrap;gap:.25rem}.product-installations-row{grid-column:1 / -1;background-color:#f9f9f9;border-left:3px solid #4CAF50;padding:15px 20px;margin:0 10px 5px;border-radius:0 5px 5px 0}.installations-content h4{margin:0 0 10px;color:#333;font-size:14px;font-weight:500}.installations-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.installations-header h4{margin:0}.add-installation-btn{background-color:#4caf50;color:#fff;border:none;padding:6px 12px;border-radius:4px;font-size:12px;cursor:pointer;transition:background-color .2s ease}.add-installation-btn:hover{background-color:#45a049}.remove-installation-btn{background:none;border:none;cursor:pointer;padding:4px;border-radius:3px;font-size:14px;margin-left:auto;transition:background-color .2s ease}.remove-installation-btn:hover{background-color:#ffebee}.no-installations-wrapper{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px}.add-first-installation-btn{background-color:#2196f3;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .2s ease}.add-first-installation-btn:hover{background-color:#1976d2}.installations-list{display:flex;flex-direction:column;gap:8px}.installation-item{display:flex;align-items:center;gap:15px;padding:8px 12px;background-color:#fff;border-radius:4px;border:1px solid #e0e0e0}.installation-method{font-weight:500;color:#333;min-width:200px}.installation-time{color:#666;font-family:monospace;background-color:#f5f5f5;padding:2px 6px;border-radius:3px;font-size:12px}.installation-notes{color:#888;font-style:italic;font-size:13px}.no-installations{color:#999;font-style:italic;margin:0;padding:10px;text-align:center}.empty-state{text-align:center;padding:3rem 2rem;margin-top:2rem;background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--bs-gray-200)}.empty-state h3{color:var(--bs-gray-700);margin-bottom:1rem;font-size:1.5rem}.empty-state p{color:var(--bs-gray-600);margin-bottom:1.5rem;font-size:1.1rem}.empty-state ul{text-align:left;display:inline-block;color:var(--bs-gray-600)}.dropdown-filter{position:relative;width:100%}.dropdown-toggle{width:100%;padding:var(--spacing-md) var(--spacing-lg);background:var(--white);border:2px solid var(--bs-gray-400);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--bs-gray-900);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:all .2s ease-in-out}.dropdown-toggle:hover{border-color:var(--primary-color);background:var(--bs-gray-50)}.dropdown-toggle:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffc10733}.dropdown-menu{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--white);border:2px solid var(--bs-gray-400);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);max-height:300px;overflow-y:auto;z-index:1000}.dropdown-item{display:flex;align-items:center;padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background-color .15s ease-in-out;border-bottom:1px solid var(--bs-gray-200)}.dropdown-item:last-child{border-bottom:none}.dropdown-item:hover{background-color:var(--bs-gray-100)}.dropdown-item .checkbox{margin-right:var(--spacing-sm);cursor:pointer}.dropdown-item .checkbox-text{flex:1;color:var(--bs-gray-900)}.dropdown-item .supplier-count{color:var(--bs-gray-600);font-size:.875rem;margin-left:var(--spacing-sm)}.dropdown-menu::-webkit-scrollbar{width:8px}.dropdown-menu::-webkit-scrollbar-track{background:var(--bs-gray-100);border-radius:var(--radius-md)}.dropdown-menu::-webkit-scrollbar-thumb{background:var(--bs-gray-400);border-radius:var(--radius-md)}.dropdown-menu::-webkit-scrollbar-thumb:hover{background:var(--bs-gray-500)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:#fff;border-radius:12px;width:90%;max-width:900px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d;animation:modalSlideIn .3s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:2px solid var(--primary-color);background:linear-gradient(135deg,#f8f9fa,#e9ecef)}.modal-header h2{margin:0;font-size:1.5rem;color:var(--dark-color);font-weight:700}.modal-close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s ease}.modal-close-btn:hover{background:#f0f0f0;color:#333}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.search-input-container{margin-bottom:1rem}.modal-search-input{width:100%;padding:.75rem 1rem;font-size:1rem;border:2px solid #ddd;border-radius:8px;transition:all .2s ease}.modal-search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffc10733}.modal-loading{text-align:center;padding:3rem;color:#666}.modal-loading .spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}.modal-empty{text-align:center;padding:3rem;color:#666;font-style:italic}.modal-results{max-height:500px;overflow-y:auto}.modal-results-table{width:100%;border-collapse:collapse}.modal-results-table thead{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);position:sticky;top:0;z-index:1}.modal-results-table th{padding:.75rem;text-align:left;font-weight:600;font-size:.9rem;color:var(--dark-color);border-bottom:2px solid #e9ecef}.modal-results-table td{padding:.75rem;font-size:.9rem;color:#333;border-bottom:1px solid #e9ecef}.modal-result-row{cursor:pointer;transition:background-color .2s ease}.modal-result-row:hover{background-color:#f8f9fa}.modal-result-row:active{background-color:#e9ecef}.status-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.8rem;font-weight:600}.status-badge.active{background:#d4edda;color:#155724}.status-badge.inactive{background:#f8d7da;color:#721c24}.installation-method-modal{max-width:500px;width:90%}.method-selection-list{display:flex;flex-direction:column;gap:10px;margin:20px 0}.method-selection-item{display:flex;justify-content:space-between;align-items:center;padding:15px;border:2px solid #ddd;border-radius:8px;cursor:pointer;transition:all .2s ease;background:#fff}.method-selection-item:hover{border-color:var(--primary-color, #ffc107);background:#fff9e6}.method-selection-item.selected{border-color:var(--primary-color, #ffc107);background:#fff9e6;box-shadow:0 0 0 2px #ffc10733}.method-info{display:flex;flex-direction:column;gap:5px}.method-info strong{font-size:16px;color:#333}.method-details{font-size:13px;color:#666}.method-radio input[type=radio]{width:20px;height:20px;cursor:pointer;accent-color:var(--primary-color, #ffc107)}.modal-actions .btn-primary:disabled{background:#ccc;cursor:not-allowed;opacity:.6}.add-installation-method-modal{max-width:500px;width:90%}.add-installation-method-modal form{display:flex;flex-direction:column}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:600;color:#333;font-size:14px}.form-group .required{color:#dc3545}.form-control{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .2s ease;box-sizing:border-box}.form-control:focus{outline:none;border-color:var(--primary-color, #ffc107);box-shadow:0 0 0 3px #ffc1071a}.form-text{display:block;margin-top:5px;font-size:12px;color:#666}.checkbox-group{margin-top:10px}.checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:400}.checkbox-label input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--primary-color, #ffc107)}.checkbox-label span{font-size:14px;color:#333}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:20px;border-top:1px solid #eee}.modal-actions .btn{padding:10px 20px;border-radius:5px;font-size:14px;font-weight:500;cursor:pointer;border:none;transition:all .2s ease}.modal-actions .btn-secondary{background:#6c757d;color:#fff}.modal-actions .btn-secondary:hover{background:#5a6268}.modal-actions .btn-primary{background:var(--primary-color, #ffc107);color:#212529}.modal-actions .btn-primary:hover{background:var(--primary-dark, #e0a800)}.packages-page{width:100%;min-height:100vh;background:linear-gradient(135deg,#f8f9fa,#e9ecef);padding:var(--spacing-lg);display:flex;flex-direction:column}.packages-page .page-header{text-align:center;margin-bottom:var(--spacing-xl);padding-bottom:var(--spacing-lg);border-bottom:2px solid var(--primary-color)}.packages-page .page-header h1{font-size:var(--font-size-2xl);color:var(--dark-color);margin-bottom:var(--spacing-sm);font-weight:700}.packages-page .page-subtitle{font-size:var(--font-size-lg);color:var(--bs-gray-600);margin:0;font-weight:500}.packages-layout{display:flex;gap:2rem;flex:1;overflow:hidden;max-width:1800px;margin:0 auto;width:100%}.packages-left-panel{flex:0 0 40%;display:flex;flex-direction:column;overflow:hidden}.packages-right-panel{flex:1;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem;overflow:auto}.packages-controls{display:flex;gap:1rem;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;padding:1rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.search-group{flex:2;min-width:250px}.search-input{width:100%}.control-group{display:flex;flex-direction:column;gap:.5rem;min-width:120px}.control-group label{font-weight:600;color:#333;font-size:.9rem}.refresh-btn{margin-left:auto}.packages-list{flex:1;overflow:hidden;display:flex;flex-direction:column}.packages-table-container{display:flex;flex-direction:column;flex:1;margin-bottom:2rem;margin-top:1.5rem}.packages-page .table-header{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);color:var(--dark-color);font-weight:600;border-bottom:2px solid var(--bs-gray-300);position:sticky;top:0;z-index:10;transition:padding-right .2s ease}.packages-page .header-row{display:grid;grid-template-columns:200px 1fr 100px;gap:1px;min-height:50px}.packages-page .header-cell{padding:var(--spacing-md);display:flex;align-items:center;font-weight:700;text-align:left;border-right:1px solid rgba(0,0,0,.1);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px;background:#ffffff1a;color:var(--dark-color)}.packages-page .header-cell:last-child{border-right:none}.packages-page .header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s ease;position:relative}.packages-page .header-cell.sortable:hover{background:#ffd7004d;color:var(--dark-color);transform:translateY(-1px)}.packages-page .header-cell.sortable.active{background:#ffd70080;color:var(--dark-color);font-weight:800}.packages-page .header-cell.sortable:active{transform:translateY(0)}.packages-page .table-body{flex:1;overflow-y:auto;overflow-x:hidden;background:#fff}.package-row{display:grid;grid-template-columns:200px 1fr 100px;gap:1px;min-height:60px;border-bottom:1px solid #e9ecef;transition:background-color .2s ease;cursor:pointer}.package-row:hover{background-color:#f8f9fa}.package-row.selected{background-color:#e3f2fd;border-left:4px solid #667eea}.package-cell{padding:1rem;display:flex;align-items:center;border-right:1px solid #e9ecef;word-break:break-word;overflow:hidden;font-size:14px;background:#fff;color:#333}.package-cell:last-child{border-right:none}.package-actions-col{display:flex;justify-content:center;align-items:center;gap:.5rem}.package-actions-col .btn{padding:.4rem .8rem;font-size:1rem;min-width:auto}.package-name-edit{width:100%;padding:.4rem .8rem;font-size:.95rem;border:2px solid var(--primary-color);border-radius:4px;outline:none;font-family:inherit}.package-name-edit:focus{border-color:var(--success-color);box-shadow:0 0 0 2px #28a7451a}.package-number-content{display:flex;flex-direction:row;gap:.5rem;align-items:center}.package-line{display:inline-block;font-weight:600;color:var(--primary-color);font-family:Courier New,monospace;font-size:.85rem}.package-separator{display:inline-block;color:var(--bs-gray-500);font-weight:400;font-family:Courier New,monospace}.package-code{display:inline-block;font-weight:700;color:var(--dark-color);font-family:Courier New,monospace;font-size:.95rem}.item-info.default-method{color:#28a745!important;font-weight:600}.packages-summary{text-align:center;color:#666;font-style:italic;margin-top:1rem;padding:1rem;background:#f8f9fa;border-radius:8px}.loading-spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-message{text-align:center;padding:3rem 2rem}.error-message h3{color:#dc3545;margin-bottom:1rem}.empty-state{text-align:center;padding:4rem 2rem;color:#666}.empty-state h3{color:#999;margin-bottom:1rem}.alert{margin-bottom:1rem}.no-selection{text-align:center;padding:4rem 2rem;color:#666}.package-details-panel{height:100%;display:flex;flex-direction:column}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid var(--primary-color)}.panel-header h2{margin:0;color:var(--dark-color);font-weight:700}.package-number{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);color:var(--dark-color);padding:.5rem 1rem;border-radius:6px;font-weight:600}.details-vertical{display:flex;flex-direction:column;gap:1.5rem;flex:1}.detail-section{background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef;overflow:hidden}.detail-section-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);color:var(--dark-color);border-bottom:1px solid #e9ecef}.detail-section-header h3{margin:0;font-size:1.1rem;font-weight:600;color:var(--dark-color)}.detail-content{padding:0;max-height:400px;overflow-y:auto}.empty-message{margin:0;color:#6c757d;font-style:italic;text-align:center;padding:2rem}.detail-table{width:100%;border-collapse:collapse}.detail-table thead{background:#f8f9fa;position:sticky;top:0;z-index:1}.detail-table th{padding:.5rem .75rem;text-align:left;font-weight:600;font-size:.85rem;color:var(--dark-color);border-bottom:2px solid #e9ecef;white-space:nowrap}.detail-table td{padding:.5rem .75rem;font-size:.9rem;color:#333;border-bottom:1px solid #e9ecef;vertical-align:middle}.detail-table tbody tr:hover{background-color:#f1f3f4}.detail-table tbody tr:last-child td{border-bottom:none}.editable-input{width:60px;padding:.25rem .5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;text-align:center}.editable-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #ffc10733}.product-number-cell{font-family:Courier New,monospace;font-weight:600;color:var(--primary-color)}.detail-table .btn-danger{padding:.25rem .5rem;font-size:.8rem}.btn{padding:.5rem 1rem;border:none;border-radius:4px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);color:var(--dark-color);border:1px solid var(--primary-color)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 8px #ffc1074d;background:var(--primary-color)}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover{background:#c82333;transform:translateY(-1px)}.btn-sm{padding:.375rem .75rem;font-size:.8rem}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#5a6268;transform:translateY(-1px)}@media(max-width:1200px){.packages-layout{flex-direction:column}.packages-left-panel{flex:none;max-height:400px}.header-row,.package-row{grid-template-columns:180px 1fr}}@media(max-width:768px){.packages-page{padding:1rem}.packages-controls{flex-direction:column;align-items:stretch}.control-group{min-width:unset}.refresh-btn{margin-left:unset;margin-top:1rem}.header-row,.package-row{grid-template-columns:150px 1fr}.detail-item{flex-direction:column;align-items:flex-start;gap:.5rem}.detail-section-header{flex-direction:column;align-items:flex-start;gap:1rem}}.settings-page{padding:2rem;max-width:1800px;margin:0 auto}.page-header{margin-bottom:2rem;text-align:center}.page-header h1{font-size:2.5rem;margin-bottom:.5rem;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-subtitle{color:#666;font-size:1.1rem;margin:0}.methods-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:2rem}.methods-section{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px #0000001a;border:1px solid #e1e5e9}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #f0f0f0}.section-header h2{font-size:1.5rem;color:#333;margin:0;display:flex;align-items:center;gap:.5rem}.badge{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:.3rem .8rem;border-radius:20px;font-size:.85rem;font-weight:600}.btn-add{background:linear-gradient(135deg,#28a745,#20c997);color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-weight:600;transition:transform .2s}.btn-add:hover{transform:translateY(-2px);box-shadow:0 4px 8px #28a7454d}.methods-list{overflow-x:auto}.methods-table{width:100%;border-collapse:collapse}.methods-table thead{background:#f8f9fa}.methods-table th{text-align:left;padding:.8rem;font-weight:600;color:#555;font-size:.9rem;border-bottom:2px solid #dee2e6}.methods-table td{padding:.8rem;border-bottom:1px solid #e9ecef;font-size:.95rem}.methods-table tbody tr:hover{background-color:#f8f9fa;cursor:pointer}.legacy-link{color:#667eea;font-weight:600}.no-link{color:#ccc}.btn-edit,.btn-delete{background:none;border:none;cursor:pointer;font-size:1.2rem;padding:.3rem .5rem;transition:transform .2s}.btn-edit:hover,.btn-delete:hover{transform:scale(1.2)}.empty-message{text-align:center;color:#999;padding:2rem;font-style:italic}.alert{margin-bottom:2rem;padding:1rem 1.5rem;border-radius:8px;font-weight:500}.alert-success{background:linear-gradient(135deg,#28a7451a,#28a7450d);border-left:4px solid #28a745;color:#155724}.alert-danger{background:linear-gradient(135deg,#dc35451a,#dc35450d);border-left:4px solid #dc3545;color:#721c24}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;padding:2rem;border-radius:12px;box-shadow:0 10px 40px #0000004d;max-width:500px;width:90%}.modal-content h3{margin-top:0;margin-bottom:1.5rem;color:#333}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:#555}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:6px;font-size:1rem}.form-group textarea{min-height:80px;resize:vertical}.modal-buttons{display:flex;gap:1rem;margin-top:1.5rem}.btn-save,.btn-cancel{flex:1;padding:.8rem;border:none;border-radius:6px;cursor:pointer;font-weight:600;font-size:1rem;transition:transform .2s}.btn-save{background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.btn-save:hover{transform:translateY(-2px);box-shadow:0 4px 8px #28a7454d}.btn-cancel{background:#6c757d;color:#fff}.btn-cancel:hover{background:#5a6268}.context-menu{position:fixed;background:#fff;border-radius:8px;box-shadow:0 4px 12px #0003;padding:.5rem 0;z-index:1001;min-width:250px}.context-menu-header{padding:.8rem 1rem;font-weight:600;color:#333;border-bottom:1px solid #eee;font-size:.9rem}.context-menu-item{padding:.8rem 1rem;cursor:pointer;transition:background .2s}.context-menu-item:hover{background:#f8f9fa}.context-menu-item.remove{color:#dc3545;border-top:1px solid #eee}@media(max-width:1200px){.methods-grid{grid-template-columns:1fr}}@media(max-width:768px){.settings-page,.methods-section{padding:1rem}.section-header{flex-direction:column;align-items:flex-start;gap:.5rem}.methods-table th,.methods-table td{padding:.5rem;font-size:.85rem}}.status-page{max-width:1000px;margin:0 auto}.status-card{background:#fff;border-radius:12px;padding:2rem;margin-bottom:1.5rem;box-shadow:0 4px 6px #0000001a;border-left:4px solid #ddd;transition:transform .3s ease,box-shadow .3s ease}.status-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #00000026}.status-card h2{margin:0 0 1.5rem;font-size:1.4rem;color:#2c3e50}.status-card.connected{border-left-color:#27ae60;background:linear-gradient(135deg,#27ae6005,#27ae6003)}.status-card.disconnected{border-left-color:#e74c3c;background:linear-gradient(135deg,#e74c3c0d,#e74c3c05)}.status-card.loading{border-left-color:#f39c12;background:linear-gradient(135deg,#f39c120d,#f39c1205)}.status-card.error{border-left-color:#e74c3c;background:linear-gradient(135deg,#e74c3c14,#e74c3c08)}.status-card.app-info{border-left-color:#3498db;background:linear-gradient(135deg,#3498db05,#3498db03)}.status-card.health-status{border-left-color:#2ecc71;background:linear-gradient(135deg,#2ecc7105,#2ecc7103)}.status-card.actions{border-left-color:#9b59b6;background:linear-gradient(135deg,#9b59b605,#9b59b603)}.status-card.info{border-left-color:#667eea;background:linear-gradient(135deg,#667eea05,#667eea03)}.status-content{display:flex;flex-direction:column;gap:.75rem}.status-indicator{font-weight:600;font-size:1.2rem}.status-detail{font-size:.95rem;color:#666;margin:0;font-family:Courier New,monospace}.error-help{font-size:.9rem;color:#888;font-style:italic;margin-top:.5rem}.info-grid{display:grid;gap:1rem}.info-row{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:#00000005;border-radius:8px;border:1px solid rgba(0,0,0,.05)}.info-label{font-weight:600;color:#333}.info-value{color:#666;font-family:Courier New,monospace;font-weight:500}.action-buttons{display:flex;flex-wrap:wrap;gap:1rem}.action-btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.95rem;display:flex;align-items:center;gap:.5rem}.action-btn.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 2px 4px #0000001a}.action-btn.primary:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003}.action-btn.secondary{background:#f8f9fa;color:#495057;border:1px solid #dee2e6}.action-btn.secondary:hover{background:#e9ecef;transform:translateY(-2px);box-shadow:0 2px 4px #0000001a}.tech-info{display:flex;flex-direction:column;gap:.75rem}.tech-info p{margin:0;color:#555;line-height:1.6;font-size:.95rem}@media(max-width:768px){.status-card{padding:1.5rem}.info-row{flex-direction:column;align-items:flex-start;gap:.5rem}.action-buttons{flex-direction:column}.action-btn{justify-content:center;text-align:center}}:root{--primary-color: #ffc107;--primary-dark: #f0b90b;--secondary-color: #6c757d;--accent-color: #fd7e14;--dark-color: #212529;--light-color: #f8f9fa;--bs-primary: #ffc107;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary-bg-subtle: #fff3cd;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #ffe69c;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--white: #ffffff;--black: #000000;--success: var(--bs-success);--warning: var(--bs-warning);--error: var(--bs-danger);--info: var(--bs-info);--bs-body-font-family: "Open Sans", sans-serif, -apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", sans-serif;--bs-body-color: #565656;--bs-body-bg: #fff;--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--shadow-sm: var(--bs-box-shadow-sm);--shadow-md: var(--bs-box-shadow);--shadow-lg: var(--bs-box-shadow-lg);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04)}*{box-sizing:border-box}body{margin:0;font-family:var(--bs-body-font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#f8f9fa,#e9ecef);color:var(--bs-body-color);line-height:1.6;min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}.container{width:100%;max-width:100%;margin:0;padding:0 var(--spacing-lg)}.container-fluid{width:100%;padding:0 var(--spacing-md)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-primary{color:var(--primary-color)}.text-secondary{color:var(--bs-secondary)}.text-muted{color:var(--bs-gray-600)}.text-white{color:var(--white)}.text-success{color:var(--bs-success)}.text-danger{color:var(--bs-danger)}.text-warning{color:var(--bs-warning)}.text-info{color:var(--bs-info)}.bg-primary{background-color:var(--primary-color)}.bg-secondary{background-color:var(--bs-secondary)}.bg-light{background-color:var(--bs-light)}.bg-white{background-color:var(--white)}.bg-gray{background-color:var(--bs-gray-100)}.bg-success{background-color:var(--bs-success)}.bg-danger{background-color:var(--bs-danger)}.bg-warning{background-color:var(--bs-warning)}.bg-info{background-color:var(--bs-info)}.bg-dark{background-color:var(--bs-dark)}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)}.mb-1{margin-bottom:var(--spacing-xs)}.mb-2{margin-bottom:var(--spacing-sm)}.mb-3{margin-bottom:var(--spacing-md)}.mb-4{margin-bottom:var(--spacing-lg)}.mb-5{margin-bottom:var(--spacing-xl)}.mt-1{margin-top:var(--spacing-xs)}.mt-2{margin-top:var(--spacing-sm)}.mt-3{margin-top:var(--spacing-md)}.mt-4{margin-top:var(--spacing-lg)}.mt-5{margin-top:var(--spacing-xl)}.p-1{padding:var(--spacing-xs)}.p-2{padding:var(--spacing-sm)}.p-3{padding:var(--spacing-md)}.p-4{padding:var(--spacing-lg)}.p-5{padding:var(--spacing-xl)}.px-2{padding-left:var(--spacing-sm);padding-right:var(--spacing-sm)}.px-3{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.px-4{padding-left:var(--spacing-lg);padding-right:var(--spacing-lg)}.py-2{padding-top:var(--spacing-sm);padding-bottom:var(--spacing-sm)}.py-3{padding-top:var(--spacing-md);padding-bottom:var(--spacing-md)}.py-4{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-lg)}.alert{padding:var(--spacing-md) var(--spacing-lg);margin-bottom:var(--spacing-md);border:1px solid transparent;border-radius:var(--bs-border-radius);position:relative}.alert-success{color:var(--bs-success);background-color:var(--bs-success-bg-subtle);border-color:var(--bs-success-border-subtle)}.alert-danger{color:var(--bs-danger);background-color:var(--bs-danger-bg-subtle);border-color:var(--bs-danger-border-subtle)}.alert-warning{color:#664d03;background-color:var(--bs-warning-bg-subtle);border-color:var(--bs-warning-border-subtle)}.alert-info{color:var(--bs-info);background-color:var(--bs-info-bg-subtle);border-color:var(--bs-info-border-subtle)}.card{position:relative;display:flex;flex-direction:column;min-width:0;background-color:var(--white);background-clip:border-box;border:1px solid var(--bs-gray-300);border-radius:var(--bs-border-radius);box-shadow:var(--shadow-sm)}.card-header{padding:var(--spacing-md) var(--spacing-lg);margin-bottom:0;background-color:var(--bs-gray-100);border-bottom:1px solid var(--bs-gray-300);border-radius:var(--bs-border-radius) var(--bs-border-radius) 0 0}.card-body{flex:1 1 auto;padding:var(--spacing-lg)}.card-footer{padding:var(--spacing-md) var(--spacing-lg);background-color:var(--bs-gray-100);border-top:1px solid var(--bs-gray-300);border-radius:0 0 var(--bs-border-radius) var(--bs-border-radius)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-lg);border:none;border-radius:var(--radius-md);text-decoration:none;font-weight:600;transition:all .3s ease;font-size:var(--font-size-base);font-weight:500;text-align:center;cursor:pointer;transition:all .2s ease-in-out;box-shadow:var(--shadow-sm);min-height:44px}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);color:var(--dark-color);font-weight:600}.btn-primary:hover{background:linear-gradient(135deg,var(--primary-dark) 0%,#e0a800 100%);color:var(--dark-color);text-decoration:none}.btn-secondary{background:linear-gradient(135deg,var(--bs-secondary) 0%,#5a6268 100%);color:var(--white)}.btn-secondary:hover{background:linear-gradient(135deg,#5a6268 0%,var(--bs-secondary) 100%);color:var(--white)}.btn-success{background:var(--bs-success);color:var(--white)}.btn-success:hover{background:#157347;color:var(--white)}.btn-danger{background:var(--error);color:var(--white)}.btn-danger:hover{background:#c82333;color:var(--white)}.btn-outline{background:transparent;border:2px solid var(--primary-color);color:var(--primary-color)}.btn-outline:hover{background:var(--primary-color);color:var(--dark-color)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.form-control{width:100%;padding:.75rem;border:2px solid var(--bs-gray-400);border-radius:6px;font-size:1rem;transition:border-color .3s ease,box-shadow .3s ease;box-shadow:inset 0 1px 3px #0000001a}.form-control:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffc10733,inset 0 1px 3px #0000001a}.form-group{margin-bottom:var(--spacing-lg)}.form-label{display:block;font-weight:600;margin-bottom:var(--spacing-sm);color:var(--gray-700);font-size:var(--font-size-sm)}.form-control{width:100%;padding:var(--spacing-sm) var(--spacing-md);border:2px solid var(--bs-gray-400);border-radius:var(--radius-md);font-size:var(--font-size-base);transition:all .2s ease-in-out;background:var(--white);color:var(--bs-gray-900);box-shadow:inset 0 1px 3px #0000001a}.form-control:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffc1071a,inset 0 1px 3px #0000001a}.form-control::placeholder{color:var(--bs-gray-500);opacity:1}.form-control::-webkit-input-placeholder{color:var(--bs-gray-500)}.form-control::-moz-placeholder{color:var(--bs-gray-500);opacity:1}.card{background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;border:1px solid var(--gray-200)}.card-header{padding:var(--spacing-lg) var(--spacing-xl);background:linear-gradient(135deg,#fff3cd,#f8f9fa);border-bottom:1px solid var(--gray-200);font-weight:600;color:var(--gray-800);font-size:var(--font-size-lg)}.card-body{padding:var(--spacing-xl)}.card-footer{padding:var(--spacing-lg) var(--spacing-xl);background:var(--gray-100);border-top:1px solid var(--gray-200)}.alert{padding:1rem;border-radius:6px;margin-bottom:1rem;border-left:4px solid}.alert-success{background:linear-gradient(135deg,#28a7451a,#28a7450d);border-left-color:#28a745;color:#155724}.alert-danger{background:linear-gradient(135deg,#dc35451a,#dc35450d);border-left-color:#dc3545;color:#721c24}.alert-warning{background:linear-gradient(135deg,#ffc1071a,#ffc1070d);border-left-color:#ffc107;color:#856404}.alert-info{background:linear-gradient(135deg,#17a2b81a,#17a2b80d);border-left-color:#17a2b8;color:#0c5460}@media(max-width:768px){.d-md-none{display:none!important}.d-md-block{display:block!important}}@media(max-width:576px){.d-sm-none{display:none!important}.d-sm-block{display:block!important}}
