body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;width:100%;max-width:420px;padding:40px;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:32px}.login-header h1{font-size:28px;font-weight:700;color:#1a202c;margin:0 0 8px}.login-header p{font-size:14px;color:#718096;margin:0}.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:#2d3748}.form-group input{padding:12px 16px;border:2px solid #e2e8f0;border-radius:8px;font-size:15px;transition:all .2s;outline:none}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input::placeholder{color:#a0aec0}.error-message{padding:12px 16px;background:#fed7d7;border:1px solid #fc8181;border-radius:8px;color:#c53030;font-size:14px;text-align:center;animation:shake .3s}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.login-button{padding:14px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;margin-top:8px}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-footer{margin-top:24px;text-align:center}.text-muted{font-size:13px;color:#a0aec0;margin:0}@media(max-width:480px){.login-card{padding:24px}.login-header h1{font-size:24px}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#f5f5f5}.app{min-height:100vh;display:flex;flex-direction:column}.header{background:#fff;border-bottom:1px solid #e5e7eb;padding:1.5rem 2rem}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.header-left{display:flex;align-items:center;gap:1rem}.header-icon{width:48px;height:48px;color:#3b82f6}.header h1{font-size:1.75rem;color:#111827;margin-bottom:.25rem}.header p{font-size:.875rem;color:#6b7280}.main{flex:1;max-width:1400px;margin:0 auto;padding:2rem;width:100%}.alert{display:flex;align-items:center;gap:.75rem;padding:1rem;border-radius:.5rem;margin-bottom:1rem}.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.alert span{flex:1}.alert-close{background:none;border:none;cursor:pointer;padding:.25rem;border-radius:.25rem}.alert-close:hover{background:#0000000d}.toolbar{background:#fff;border-radius:.5rem;padding:1rem;margin-bottom:1.5rem;display:flex;gap:1rem;align-items:center;box-shadow:0 1px 3px #0000001a}.search-box{flex:1;position:relative}.search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:#9ca3af;width:20px;height:20px}.search-box input{width:100%;padding:.625rem .75rem .625rem 2.75rem;border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem}.search-box input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f680}.filter-box{min-width:200px;position:relative}.filter-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:#9ca3af;width:20px;height:20px;pointer-events:none}.filter-box select{width:100%;padding:.625rem .75rem .625rem 2.75rem;border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem;background:#fff}.filter-box select:focus{outline:none;border-color:#3b82f6}.btn{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem;border:none;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#3b82f6;color:#fff}.btn-primary:hover:not(:disabled){background:#2563eb}.btn-secondary{background:#fff;color:#374151;border:1px solid #d1d5db}.btn-secondary:hover:not(:disabled){background:#f9fafb}.btn-success{background:#10b981;color:#fff}.btn-success:hover:not(:disabled){background:#059669}.btn-icon{padding:.5rem;border:none;background:transparent;cursor:pointer;border-radius:.375rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-icon:hover{background:#f3f4f6}.btn-icon.btn-success{color:#059669}.btn-icon.btn-danger{color:#dc2626}.table-container{background:#fff;border-radius:.5rem;overflow:hidden;box-shadow:0 1px 3px #0000001a}.table-container.excel-mode{overflow:auto;max-height:calc(100vh - 250px);position:relative;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#cbd5e1 #f1f5f9}.table-container.excel-mode::-webkit-scrollbar{width:12px;height:12px}.table-container.excel-mode::-webkit-scrollbar-track{background:#f1f5f9;border-radius:6px}.table-container.excel-mode::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:6px}.table-container.excel-mode::-webkit-scrollbar-thumb:hover{background:#94a3b8}.table{width:100%;border-collapse:collapse;table-layout:fixed;min-width:100%}.table thead{background:#f9fafb;position:sticky;top:0;z-index:20;box-shadow:0 2px 4px #0000001a}.table th{padding:.5rem .75rem;text-align:left;font-size:.75rem;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid #d1d5db;border-right:1px solid #e5e7eb;height:36px;white-space:nowrap;position:relative;overflow:hidden;text-overflow:ellipsis;background:#f9fafb;z-index:15}.table th .resize-handle{position:absolute;right:0;top:0;width:5px;height:100%;cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:1;background:transparent}.table th .resize-handle:hover{background:#3b82f6;opacity:.5}.table th .resize-handle.resizing{background:#3b82f6;opacity:.8}body.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize!important}body.resizing *{cursor:col-resize!important}.table td{padding:0;border-bottom:1px solid #e5e7eb;border-right:1px solid #e5e7eb;font-size:.875rem;color:#111827;overflow:hidden;vertical-align:top;position:relative;height:inherit;max-height:inherit}.table td>button{margin:0}.table tbody tr:last-child td{border-bottom:none}.product-row:hover{background:#f9fafb}.row-number-header{background:#f3f4f6!important;font-weight:700;color:#374151;text-align:center!important;border-right:2px solid #d1d5db!important;position:sticky!important;left:0!important;z-index:100!important;box-shadow:2px 0 4px #0000001a}.row-number-cell{background:#f9fafb!important;font-weight:600;color:#6b7280;text-align:center!important;padding:.5rem!important;border-right:2px solid #d1d5db!important;-webkit-user-select:none;user-select:none;font-size:.8125rem;position:sticky!important;left:0!important;z-index:50!important;box-shadow:2px 0 4px #0000000d}.product-row:hover .row-number-cell{background:#f3f4f6!important;color:#374151;box-shadow:2px 0 4px #0000001a}.row-resize-handle{position:absolute;bottom:0;left:0;width:100%;height:5px;cursor:row-resize;-webkit-user-select:none;user-select:none;z-index:1;background:transparent}.row-resize-handle:hover{background:#3b82f6;opacity:.5}.row-resize-handle.resizing{background:#3b82f6;opacity:.8}body.resizing-row{-webkit-user-select:none;user-select:none;cursor:row-resize!important}body.resizing-row *{cursor:row-resize!important}.badge{display:inline-flex;align-items:center;padding:.25rem .75rem;background:#dbeafe;color:#1e40af;border-radius:9999px;font-size:.75rem;font-weight:500;min-height:24px;height:auto;white-space:normal;word-wrap:break-word;text-align:center}.actions-cell{text-align:right;padding:.5rem!important;vertical-align:top}.actions{display:flex;gap:.5rem;justify-content:flex-end;align-items:flex-start;height:100%;min-height:30px;padding-top:.25rem}.input-inline{width:100%;padding:.375rem .5rem;border:2px solid #3b82f6;border-radius:0;font-size:.875rem;background:#fff;box-shadow:0 2px 8px #00000026;position:absolute;left:0;top:0;z-index:10;min-height:32px}.input-inline:focus{outline:none;border-color:#2563eb;box-shadow:0 4px 12px #2563eb33}.text-cell{display:flex;align-items:flex-start;width:100%;overflow:hidden;line-height:1.5;padding:.5rem .75rem;height:100%;max-height:100%}.cell-content{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;width:100%;word-wrap:break-word;overflow-wrap:break-word;word-break:break-word}.text-cell.always-editable:focus .cell-content{display:block;-webkit-line-clamp:unset;line-clamp:unset;overflow:visible;text-overflow:clip}.input-select{width:100%;padding:.375rem .5rem;border:1px solid #d1d5db;border-radius:.25rem;font-size:.875rem;background:#fff;cursor:pointer;transition:border-color .15s}.input-select:hover{border-color:#9ca3af}.input-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.input-select:disabled{background:#f3f4f6;cursor:not-allowed}tr[data-max-lines="1"] .cell-content{-webkit-line-clamp:1;line-clamp:1}tr[data-max-lines="2"] .cell-content{-webkit-line-clamp:2;line-clamp:2}tr[data-max-lines="3"] .cell-content{-webkit-line-clamp:3;line-clamp:3}tr[data-max-lines="4"] .cell-content{-webkit-line-clamp:4;line-clamp:4}tr[data-max-lines="5"] .cell-content{-webkit-line-clamp:5;line-clamp:5}tr[data-max-lines="6"] .cell-content{-webkit-line-clamp:6;line-clamp:6}tr[data-max-lines="7"] .cell-content{-webkit-line-clamp:7;line-clamp:7}tr[data-max-lines="8"] .cell-content{-webkit-line-clamp:8;line-clamp:8}tr[data-max-lines="9"] .cell-content{-webkit-line-clamp:9;line-clamp:9}tr[data-max-lines="10"] .cell-content{-webkit-line-clamp:10;line-clamp:10}tr[data-max-lines="11"] .cell-content{-webkit-line-clamp:11;line-clamp:11}tr[data-max-lines="12"] .cell-content{-webkit-line-clamp:12;line-clamp:12}tr[data-max-lines="13"] .cell-content{-webkit-line-clamp:13;line-clamp:13}tr[data-max-lines="14"] .cell-content{-webkit-line-clamp:14;line-clamp:14}tr[data-max-lines="15"] .cell-content{-webkit-line-clamp:15;line-clamp:15}tr[data-max-lines="16"] .cell-content{-webkit-line-clamp:16;line-clamp:16}tr[data-max-lines="17"] .cell-content{-webkit-line-clamp:17;line-clamp:17}tr[data-max-lines="18"] .cell-content{-webkit-line-clamp:18;line-clamp:18}tr[data-max-lines="19"] .cell-content{-webkit-line-clamp:19;line-clamp:19}tr[data-max-lines="20"] .cell-content{-webkit-line-clamp:20;line-clamp:20}tr[data-max-lines="21"] .cell-content{-webkit-line-clamp:21;line-clamp:21}tr[data-max-lines="22"] .cell-content{-webkit-line-clamp:22;line-clamp:22}tr[data-max-lines="23"] .cell-content{-webkit-line-clamp:23;line-clamp:23}tr[data-max-lines="24"] .cell-content{-webkit-line-clamp:24;line-clamp:24}tr[data-max-lines="25"] .cell-content{-webkit-line-clamp:25;line-clamp:25}tr[data-max-lines="26"] .cell-content{-webkit-line-clamp:26;line-clamp:26}tr[data-max-lines="27"] .cell-content{-webkit-line-clamp:27;line-clamp:27}tr[data-max-lines="28"] .cell-content{-webkit-line-clamp:28;line-clamp:28}tr[data-max-lines="29"] .cell-content{-webkit-line-clamp:29;line-clamp:29}tr[data-max-lines="30"] .cell-content{-webkit-line-clamp:30;line-clamp:30}tr[data-max-lines="31"] .cell-content{-webkit-line-clamp:31;line-clamp:31}tr[data-max-lines="32"] .cell-content{-webkit-line-clamp:32;line-clamp:32}tr[data-max-lines="33"] .cell-content{-webkit-line-clamp:33;line-clamp:33}tr[data-max-lines="34"] .cell-content{-webkit-line-clamp:34;line-clamp:34}tr[data-max-lines="35"] .cell-content{-webkit-line-clamp:35;line-clamp:35}tr[data-max-lines="36"] .cell-content{-webkit-line-clamp:36;line-clamp:36}tr[data-max-lines="37"] .cell-content{-webkit-line-clamp:37;line-clamp:37}tr[data-max-lines="38"] .cell-content{-webkit-line-clamp:38;line-clamp:38}tr[data-max-lines="39"] .cell-content{-webkit-line-clamp:39;line-clamp:39}tr[data-max-lines="40"] .cell-content{-webkit-line-clamp:40;line-clamp:40}tr[data-max-lines="41"] .cell-content{-webkit-line-clamp:41;line-clamp:41}tr[data-max-lines="42"] .cell-content{-webkit-line-clamp:42;line-clamp:42}tr[data-max-lines="43"] .cell-content{-webkit-line-clamp:43;line-clamp:43}tr[data-max-lines="44"] .cell-content{-webkit-line-clamp:44;line-clamp:44}tr[data-max-lines="45"] .cell-content{-webkit-line-clamp:45;line-clamp:45}tr[data-max-lines="46"] .cell-content{-webkit-line-clamp:46;line-clamp:46}tr[data-max-lines="47"] .cell-content{-webkit-line-clamp:47;line-clamp:47}tr[data-max-lines="48"] .cell-content{-webkit-line-clamp:48;line-clamp:48}tr[data-max-lines="49"] .cell-content{-webkit-line-clamp:49;line-clamp:49}tr[data-max-lines="50"] .cell-content{-webkit-line-clamp:50;line-clamp:50}.text-cell.always-editable{cursor:text;position:relative;border-radius:0;transition:background .1s;min-height:100%}.text-cell.always-editable:hover:not(.saving){background:#f9fafb}.text-cell.always-editable:focus{background:#fff!important;outline:2px solid #3b82f6!important;outline-offset:-2px;z-index:5;box-shadow:0 0 0 3px #3b82f61a}.text-cell.saving{background:#fef3c7!important;color:#92400e;pointer-events:none}.badge.editable{cursor:pointer;transition:all .15s;margin:.5rem .75rem}.badge.editable:hover{background:#bfdbfe;transform:scale(1.05)}.input-inline.editing{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}textarea.input-inline{min-height:80px;max-height:200px;resize:vertical;white-space:pre-wrap;overflow-y:auto}input.input-inline{height:32px;min-height:32px;max-height:32px}select.input-inline{height:32px;min-height:32px;cursor:pointer}.loading-cell,.empty-cell{text-align:center;padding:3rem 1.5rem;color:#6b7280;position:relative;left:0}.loading-cell{display:flex;flex-direction:column;align-items:center;gap:1rem}.expanded-row{background:#f9fafb}.expanded-content{padding:1.5rem;display:grid;gap:1.5rem}.field-group label{display:block;font-size:.75rem;font-weight:600;color:#374151;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.05em}.field-group p{color:#6b7280;font-size:.875rem;line-height:1.5}.field-group textarea,.field-group input{width:100%;padding:.625rem .75rem;border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem;font-family:inherit;resize:vertical}.field-group textarea:focus,.field-group input:focus{outline:none;border-color:#3b82f6}.product-count{background:#fff;border-radius:.5rem;padding:1rem 1.5rem;margin-top:1rem;text-align:center;box-shadow:0 1px 3px #0000001a;font-size:.875rem;color:#374151}.product-count strong{color:#111827;font-weight:600}.product-count span{color:#6b7280;font-size:.8125rem}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000}.modal{background:#fff;border-radius:.75rem;max-width:42rem;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a}.modal-header{padding:1.5rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.modal-header h2{font-size:1.5rem;color:#111827}.modal-content{background:#fff;border-radius:12px;padding:0;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-body{padding:1.5rem;max-height:60vh;overflow-y:auto}.import-section h3{font-size:1.125rem;font-weight:600;color:#111827;margin-bottom:.5rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:500;color:#374151;margin-bottom:.5rem}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.625rem .75rem;border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f680}.form-group textarea{resize:vertical}.modal-footer{padding:1.5rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:.75rem}.schematic-modal{max-width:900px!important;animation:modalSlideIn .3s ease}.schematic-section{animation:fadeIn .4s ease}.port-item{animation:slideInUp .3s ease}.port-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.empty-state{animation:pulse 2s ease infinite}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.95}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}@media(max-width:768px){.header-content{flex-direction:column;gap:1rem;align-items:flex-start}.toolbar{flex-direction:column;align-items:stretch}.form-row{grid-template-columns:1fr}}.schematic-cell{cursor:pointer;transition:all .2s ease}.schematic-cell:hover{background-color:#eff6ff!important;box-shadow:inset 0 0 0 2px #3b82f6}.new-row{animation:slideIn .3s ease-out}.new-row-input{font-size:.875rem;font-family:inherit}.new-row-input:focus{outline:none;border-color:#f59e0b!important;box-shadow:0 0 0 3px #fbbf241a}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}
