.selector-group,.operations-group,.settings-group,.action-group,.test-group{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.selector-label,.operations-label,.settings-label,.action-label,.test-label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary);white-space:nowrap}.selector-controls{display:flex;align-items:center;gap:var(--spacing-xs)}.selector-select{min-width:150px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-sm)}.selector-button{padding:var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-secondary);transition:all .2s ease}.selector-button:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary);border-color:var(--color-accent)}.operations-buttons,.settings-buttons,.action-buttons,.test-buttons{display:flex;align-items:center;gap:var(--spacing-xs)}.operation-button,.settings-button,.test-button{padding:var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-secondary);transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:32px;height:32px}.action-button{padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-secondary);transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:40px;height:40px}.operation-button:hover,.settings-button:hover,.action-button:hover,.test-button:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary);border-color:var(--color-accent)}.operation-button.active,.settings-button.active,.action-button.active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.operation-button.danger,.settings-button.danger,.action-button.danger{color:var(--color-error);border-color:var(--color-error)}.operation-button.danger:hover,.settings-button.danger:hover,.action-button.danger:hover{background:var(--color-error);color:#fff}.action-button.primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent);font-weight:600}.action-button.primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.action-button.calculate{color:#e8920b;border-color:#e8920b}.action-button.calculate:hover{background:#e8920b;color:#fff;border-color:#e8920b}.toolbar-button{padding:var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-secondary);transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;font-size:16px}.toolbar-button:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary);border-color:var(--color-accent)}@media (max-width: 1200px){.selector-select{min-width:120px}.operation-button,.settings-button{min-width:28px;height:28px}.action-button{min-width:36px;height:36px}}@media (max-width: 768px){.selector-group,.operations-group,.settings-group,.action-group{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.selector-controls,.operations-buttons,.settings-buttons,.action-buttons{width:100%;justify-content:flex-start}.selector-select{min-width:100px;flex:1}}.magic-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#00000080;z-index:9999;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}.magic-overlay-content{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 48px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);min-width:320px}.magic-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:50%;animation:magic-spin .8s linear infinite}@keyframes magic-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.magic-text{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.magic-progress-text{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center}.magic-progress-bar{width:100%;height:6px;background:var(--color-border);border-radius:3px;overflow:hidden;position:relative}.magic-progress-bar-fill{position:absolute;top:0;left:0;height:100%;width:40%;background:var(--color-primary);border-radius:3px;animation:magic-bar-slide 1.2s ease-in-out infinite}@keyframes magic-bar-slide{0%{left:-40%}to{left:100%}}.magic-progress-bar-fill.determinate{animation:none;left:0;width:0%;background:#22c55e;transition:width .2s ease}.main-toolbar{display:flex;flex-direction:column;min-height:120px;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);gap:var(--spacing-sm)}.toolbar-row{display:flex;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap;min-height:32px}.toolbar-section{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0;min-width:0}.toolbar-row .toolbar-section{margin-left:0}.toolbar-row .toolbar-section:not(:first-child){margin-left:var(--spacing-lg)}.toolbar-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0;white-space:nowrap}.toolbar-actions{margin-left:0}.toolbar-status-row{border-top:1px solid var(--color-border);padding-top:var(--spacing-xs);margin-top:var(--spacing-xs)}.toolbar-status{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-lg);font-size:var(--font-size-sm);width:100%;justify-content:center}.status-item{display:flex;align-items:center;gap:var(--spacing-xs)}.status-label{color:var(--color-text-muted);font-weight:500}.status-value{color:var(--color-text-primary);font-weight:600}@media (max-width: 1200px){.toolbar-row{gap:var(--spacing-md)}.toolbar-section{gap:var(--spacing-xs)}.toolbar-title{font-size:var(--font-size-md)}}@media (max-width: 768px){.main-toolbar{min-height:100px;padding:var(--spacing-xs)}.toolbar-row{gap:var(--spacing-sm);flex-wrap:wrap}.toolbar-section{flex-wrap:wrap}.toolbar-status{flex-direction:column;align-items:center;gap:var(--spacing-xs)}.toolbar-actions{margin-left:0}}.part-item{display:flex;flex-direction:column;padding:var(--spacing-sm);margin-bottom:var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);cursor:pointer;transition:all .2s ease;overflow:hidden}.part-item:hover{background:var(--color-bg-tertiary);border-color:var(--color-accent)}.part-item.active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.part-item.out-of-bounds{border-color:var(--color-error);background:#f443361a}.part-item.out-of-bounds.active{background:var(--color-error);color:#fff}.part-item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-xs);min-width:0;overflow:hidden}.part-item-info{display:flex;align-items:center;gap:var(--spacing-sm);flex:1;min-width:0;overflow:hidden}.part-item-number{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--color-bg-tertiary);color:var(--color-text-primary);border-radius:50%;font-size:var(--font-size-xs);font-weight:600;flex-shrink:0}.part-item.active .part-item-number{background:#fff3;color:#fff}.part-item-name{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.part-item.active .part-item-name{color:#fff}.part-item-actions{display:flex;align-items:center;gap:var(--spacing-xs)}.part-item-action{padding:var(--spacing-xs);border:none;border-radius:var(--border-radius);background:transparent;color:var(--color-text-muted);transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:24px;height:24px}.part-item-action:hover{background:var(--color-bg-tertiary);color:var(--color-error)}.part-item.active .part-item-action{color:#ffffffb3}.part-item.active .part-item-action:hover{background:#fff3;color:#fff}.part-item-details{display:flex;flex-direction:column;gap:var(--spacing-xs)}.part-item-detail{display:flex;align-items:center;justify-content:space-between;font-size:var(--font-size-xs)}.detail-label{color:var(--color-text-muted);font-weight:500}.detail-value{color:var(--color-text-primary);font-weight:600}.part-item.active .detail-label,.part-item.active .detail-value{color:#fffc}.part-item-warning{font-size:var(--font-size-xs);color:var(--color-error);font-weight:600;text-align:center;padding:var(--spacing-xs);background:#f443361a;border-radius:var(--border-radius);margin-top:var(--spacing-xs)}.part-item.active .part-item-warning{background:#fff3;color:#fff}@media (max-width: 768px){.part-item{padding:var(--spacing-xs)}.part-item-header{margin-bottom:var(--spacing-xs)}.part-item-number{width:20px;height:20px;font-size:10px}.part-item-action{width:20px;height:20px}}.parts-tree{display:flex;flex-direction:column;height:100%;background:var(--color-bg-secondary)}.parts-tree-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);border-bottom:1px solid var(--color-border);background:var(--color-bg-tertiary)}.parts-tree-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0}.parts-tree-add-button{padding:var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-accent);color:#fff;transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:32px;height:32px}.parts-tree-add-button:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.parts-tree-content{flex:1;overflow-y:auto;overflow-x:hidden}.parts-tree-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:var(--color-text-muted);text-align:center;padding:var(--spacing-lg)}.parts-tree-empty p{margin-top:var(--spacing-md);font-size:var(--font-size-sm)}.empty-hint{font-size:var(--font-size-xs)!important;color:var(--color-text-muted)!important;margin-top:var(--spacing-sm)!important}.parts-tree-progress{padding:var(--spacing-sm) var(--spacing-md);display:flex;align-items:center;gap:var(--spacing-sm);border-bottom:1px solid var(--color-border);background:var(--color-bg-tertiary)}.progress-bar{flex:1;height:6px;background:var(--color-border);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:#22c55e;border-radius:3px;transition:width .2s ease}.progress-text{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;min-width:80px;text-align:right}.parts-tree-list{padding:var(--spacing-sm)}@media (max-width: 768px){.parts-tree-header{padding:var(--spacing-sm)}.parts-tree-title{font-size:var(--font-size-md)}.parts-tree-empty{height:150px;padding:var(--spacing-md)}}.results-panel{position:fixed;top:50%;right:20px;width:580px;max-height:90vh;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);z-index:1000;display:flex;flex-direction:column;transform:translateY(-50%);animation:slideInRight .3s ease-out;overflow:hidden}.resize-handle{position:absolute;z-index:10}.resize-e{top:0;right:0;width:5px;height:100%;cursor:ew-resize}.resize-w{top:0;left:0;width:5px;height:100%;cursor:ew-resize}.resize-s{bottom:0;left:0;width:100%;height:5px;cursor:ns-resize}.resize-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize}.results-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);border-bottom:1px solid var(--color-border);background:var(--color-bg-tertiary);user-select:none}.results-panel-title{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.results-panel-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.results-panel-calculate{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-primary);border-radius:var(--border-radius);background:var(--color-primary);color:#fff;font-size:var(--font-size-sm);font-weight:500;transition:all .2s ease;cursor:pointer}.results-panel-calculate:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.results-panel-calculate:disabled{opacity:.5;cursor:not-allowed}.results-panel-close{padding:var(--spacing-xs);border:none;border-radius:var(--border-radius);background:transparent;color:var(--color-text-muted);transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:32px;height:32px;cursor:pointer}.results-panel-close:hover{background:var(--color-bg-primary);color:var(--color-text-primary)}.results-panel-content{flex:1;overflow-y:auto;padding:var(--spacing-md)}.results-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:var(--color-text-muted);text-align:center}.loading-spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-md)}.results-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:var(--color-text-muted);text-align:center}.results-empty p{margin:var(--spacing-xs) 0}.results-summary{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.summary-card{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--border-radius);transition:all .2s ease}.summary-card:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #0000001a}.summary-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--color-primary-light);border-radius:var(--border-radius);color:var(--color-primary)}.summary-content{flex:1}.summary-label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--spacing-xs)}.summary-value{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.summary-breakdown{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-top:var(--spacing-xs)}.breakdown-item{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500}.results-details{margin-bottom:var(--spacing-lg)}.results-details h3{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-md)}.parts-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.part-result{padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--border-radius);transition:all .2s ease}.part-result:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #0000001a}.part-info{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xs)}.part-name{font-weight:500;color:var(--color-text-primary);margin-bottom:var(--spacing-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.part-metrics{display:flex;gap:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-muted)}.part-metrics span{white-space:nowrap}.part-supports{font-size:var(--font-size-sm);color:var(--color-primary);font-weight:500}.results-cost-breakdown{margin-bottom:var(--spacing-lg);padding:var(--spacing-md);background:linear-gradient(135deg,#4a90e214,#4a90e208);border:1px solid rgba(74,144,226,.2);border-radius:var(--border-radius-lg)}.breakdown-toggle{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;padding:var(--spacing-md);background:linear-gradient(135deg,var(--color-primary-light),var(--color-bg-primary));border:1px solid var(--color-primary);border-left:3px solid var(--color-primary);border-radius:var(--border-radius);color:var(--color-text-primary);font-weight:600;cursor:pointer;transition:all .2s ease}.breakdown-toggle:hover{border-color:var(--color-primary);background:linear-gradient(135deg,var(--color-primary-light),var(--color-bg-secondary));box-shadow:0 2px 8px rgba(var(--color-primary-rgb, 74, 144, 226),.2)}.expand-icon{margin-left:auto;transition:transform .2s ease}.expand-icon.expanded{transform:rotate(180deg)}.breakdown-content{margin-top:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-left:3px solid var(--color-primary);border-radius:var(--border-radius);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.breakdown-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) 0;border-bottom:1px solid var(--color-border)}.breakdown-item:last-child{border-bottom:none}.breakdown-item span:first-of-type{flex:1;color:var(--color-text-muted)}.breakdown-item span:last-child{font-weight:500;color:var(--color-text-primary)}.breakdown-divider{height:1px;background:var(--color-border);margin:var(--spacing-sm) 0}.breakdown-item.total{font-weight:600;color:var(--color-text-primary)}.breakdown-item.markup{color:var(--color-warning)}.breakdown-item.final{font-weight:700;font-size:var(--font-size-lg);color:var(--color-success)}.breakdown-section-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary);text-transform:uppercase;letter-spacing:.05em;padding:var(--spacing-xs) 0;margin-top:var(--spacing-xs)}.breakdown-detail{display:grid;grid-template-columns:1fr 1.4fr auto;gap:var(--spacing-xs);padding:3px 0;font-size:11px;line-height:1.4;align-items:center}.detail-label{color:var(--color-text-muted);white-space:nowrap}.detail-formula{color:var(--color-text-muted);opacity:.7;font-family:monospace;font-size:10px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-value{font-weight:500;color:var(--color-text-primary);text-align:right;white-space:nowrap;min-width:70px}.breakdown-detail.subtotal-row{padding:4px 0;border-top:1px solid var(--color-border);margin-top:2px}.breakdown-detail.subtotal-row .detail-label{font-weight:600;color:var(--color-text-primary)}.breakdown-detail.subtotal-row .detail-value{font-weight:600;color:var(--color-primary)}.breakdown-detail.final-row{padding:var(--spacing-sm) 0;border-top:2px solid var(--color-primary);margin-top:var(--spacing-xs)}.breakdown-detail.final-row .detail-label{font-weight:700;font-size:var(--font-size-md);color:var(--color-text-primary)}.breakdown-detail.final-row .detail-value{font-weight:700;font-size:var(--font-size-md);color:var(--color-success)}.breakdown-detail.dynamic-row{display:grid;grid-template-columns:1fr 1.4fr auto;gap:var(--spacing-xs);padding:5px 0;font-size:11px;line-height:1.4;align-items:center}.detail-control{display:flex;align-items:center;gap:4px;justify-content:flex-end}.dynamic-input{width:64px;padding:3px 6px;border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:11px;font-family:monospace;text-align:right;outline:none;transition:border-color .2s ease;-moz-appearance:textfield}.dynamic-input::-webkit-outer-spin-button,.dynamic-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.dynamic-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb, 74, 144, 226),.15)}.input-suffix,.input-prefix{font-size:11px;color:var(--color-text-muted);font-family:monospace;user-select:none}.dynamic-select{width:100%;max-width:140px;padding:3px 4px;border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:10px;outline:none;cursor:pointer;transition:border-color .2s ease}.dynamic-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb, 74, 144, 226),.15)}.dynamic-select option{background:var(--color-bg-primary);color:var(--color-text-primary)}.results-info{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--border-radius)}.info-item{display:flex;justify-content:space-between;align-items:center}.info-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.info-value{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.results-export{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.export-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.export-btn:disabled{opacity:.5;cursor:not-allowed}.export-pdf{background:#e74c3c;color:#fff;border-color:#c0392b}.export-pdf:hover:not(:disabled){background:#c0392b;box-shadow:0 2px 8px #e74c3c59}.export-excel{background:#27ae60;color:#fff;border-color:#1e8449}.export-excel:hover:not(:disabled){background:#1e8449;box-shadow:0 2px 8px #27ae6059}@media (max-width: 768px){.results-panel{position:fixed;top:50%;left:20px;right:20px;width:auto;max-height:70vh;transform:translateY(-50%)}.results-summary,.results-info{grid-template-columns:1fr}.part-metrics{flex-direction:column;gap:var(--spacing-xs)}}.printer-settings-modal{background:var(--color-bg-secondary, white);border:1px solid var(--color-border, #ddd);border-radius:8px;box-shadow:0 4px 12px #00000026;width:90%;max-width:1200px;max-height:90vh;display:flex;flex-direction:column;position:relative;overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--color-border, #eee);background:var(--color-bg-tertiary, #f8f9fa);user-select:none}.add-printer-section{margin-bottom:30px;padding:20px;background:#f8f9fa;border-radius:8px}.add-printer-section h4{margin:0 0 15px;color:#333;font-size:1.1rem}.add-printer-form{width:100%;overflow-x:auto}.form-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;align-items:end}.printers-list{margin-top:20px;overflow-x:auto}.printer-settings-modal .list-header{display:grid;grid-template-columns:minmax(120px,1.5fr) repeat(8,minmax(90px,1fr)) auto;gap:12px;padding:12px 0;border-bottom:2px solid var(--color-border, #ddd);font-weight:600;color:var(--color-text-muted, #666);font-size:.9rem;min-width:900px}.printer-settings-modal .header-cell{text-align:center}.printer-row{display:grid;grid-template-columns:minmax(120px,1.5fr) repeat(8,minmax(90px,1fr)) auto;gap:12px;padding:12px 0;border-bottom:1px solid var(--color-border, #eee);align-items:center;min-width:900px}.printer-row:hover{background-color:#f8f9fa}@media (max-width: 1200px){.printer-settings-modal .form-row{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}}@media (max-width: 768px){.printer-settings-modal{width:95%;max-height:95vh}.printer-settings-modal .form-row{grid-template-columns:1fr 1fr}}.settings-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-lg)}.settings-modal{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);max-width:800px;width:100%;max-height:80vh;display:flex;flex-direction:column}.settings-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border);background:var(--color-bg-tertiary);border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0}.settings-modal-header h2{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0}.settings-modal-close{padding:var(--spacing-sm);border:none;border-radius:var(--border-radius);background:transparent;color:var(--color-text-muted);transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:40px;height:40px}.settings-modal-close:hover{background:var(--color-bg-primary);color:var(--color-text-primary)}.settings-modal-content{flex:1;overflow-y:auto;padding:var(--spacing-lg)}.settings-placeholder{display:flex;align-items:center;justify-content:center;height:200px;color:var(--color-text-muted);text-align:center;font-size:var(--font-size-lg)}.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.settings-field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.settings-field label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.settings-field input,.settings-field select{padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-sm);transition:border-color .2s ease}.settings-field input:focus,.settings-field select:focus{outline:none;border-color:var(--color-primary)}.info-box{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-md);margin-top:var(--spacing-md)}.info-box p{margin:0 0 var(--spacing-xs) 0;font-size:var(--font-size-sm);color:var(--color-text-primary)}.info-box p:last-child{margin-bottom:0;color:var(--color-text-muted)}.settings-modal-actions{display:flex;gap:var(--spacing-md);justify-content:flex-end;padding:var(--spacing-lg);border-top:1px solid var(--color-border);background:var(--color-bg-tertiary);border-radius:0 0 var(--border-radius-lg) var(--border-radius-lg)}.settings-button{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .2s ease}.settings-button:hover{background:var(--color-bg-secondary);border-color:var(--color-primary)}.settings-button.primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.settings-button.primary:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.settings-button.secondary{background:transparent;color:var(--color-text-muted)}.settings-button.secondary:hover{background:var(--color-bg-secondary);color:var(--color-text-primary)}.modal-resize-handle{position:absolute;z-index:10}.modal-resize-e{top:0;right:0;width:5px;height:100%;cursor:ew-resize}.modal-resize-w{top:0;left:0;width:5px;height:100%;cursor:ew-resize}.modal-resize-s{bottom:0;left:0;width:100%;height:5px;cursor:ns-resize}.modal-resize-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize}@media (max-width: 768px){.settings-modal-overlay{padding:var(--spacing-sm)}.settings-modal{max-height:90vh}.settings-modal-header{padding:var(--spacing-md)}.settings-modal-header h2{font-size:var(--font-size-lg)}.settings-modal-content{padding:var(--spacing-md)}}.material-settings-modal{background:var(--color-bg-secondary, white);border:1px solid var(--color-border, #ddd);border-radius:8px;box-shadow:0 4px 12px #00000026;width:90%;max-width:1000px;max-height:90vh;display:flex;flex-direction:column;position:relative;overflow:hidden}.add-material-section{margin-bottom:30px;padding:20px;background:#f8f9fa;border-radius:8px}.add-material-section h4{margin:0 0 15px;color:#333;font-size:1.1rem}.add-material-form{width:100%}.form-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr auto;gap:12px;align-items:end}.materials-list{margin-top:20px;overflow-x:auto}.material-settings-modal .list-header{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr auto;gap:12px;padding:12px 0;border-bottom:2px solid var(--color-border, #ddd);font-weight:600;color:var(--color-text-muted, #666);font-size:.9rem}.material-settings-modal .header-cell{text-align:center}.material-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr auto;gap:12px;padding:12px 0;border-bottom:1px solid var(--color-border, #eee);align-items:center}.material-row:hover{background-color:#f8f9fa}@media (max-width: 1000px){.material-settings-modal .form-row{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}}@media (max-width: 768px){.material-settings-modal{width:95%;max-height:95vh}.material-settings-modal .form-row{grid-template-columns:1fr 1fr}}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.company-settings-modal{background:var(--color-bg-secondary, white);border:1px solid var(--color-border, #ddd);border-radius:8px;box-shadow:0 4px 12px #00000026;width:90%;max-width:1200px;max-height:90vh;display:flex;flex-direction:column;position:relative;overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee}.modal-header h3{margin:0;color:#333;font-size:1.5rem}.close-button{background:none;border:none;cursor:pointer;padding:8px;border-radius:4px;display:flex;align-items:center;justify-content:center;color:#666;transition:background-color .2s}.close-button:hover{background-color:#f5f5f5}.modal-content{flex:1;overflow-y:auto;padding:20px}.add-company-section{margin-bottom:30px;padding:20px}.add-company-section h4{margin:0 0 15px;color:#333;font-size:1.1rem}.add-company-form{width:100%}.form-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr auto;gap:12px;align-items:end}.form-field{display:flex;flex-direction:column}.form-field label{font-size:.8rem;font-weight:500;color:#666;margin-bottom:4px}.form-field input{padding:8px;border:1px solid #ddd;border-radius:4px;font-size:.9rem;transition:border-color .2s}.form-field input:focus{outline:none;border-color:#4a90e2}.add-button{background:#28a745;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:500;display:flex;align-items:center;gap:6px;transition:background-color .2s}.add-button:hover{background:#218838}.companies-list{margin-top:20px;overflow-x:auto}.company-settings-modal .list-header{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr auto;gap:12px;padding:12px 0;border-bottom:2px solid var(--color-border, #ddd);font-weight:600;color:var(--color-text-muted, #666);font-size:.9rem}.company-settings-modal .header-cell{text-align:center}.company-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr auto;gap:12px;padding:12px 0;border-bottom:1px solid var(--color-border, #eee);align-items:center}.company-row:hover{background-color:#f8f9fa}.row-cell{display:flex;align-items:center}.row-cell input{width:100%;padding:6px;border:1px solid #ddd;border-radius:4px;font-size:.85rem;text-align:center}.row-cell input:focus{outline:none;border-color:#4a90e2}.delete-button{background:#dc3545;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.delete-button:hover{background:#c82333}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:20px;border-top:1px solid #eee}.cancel-button{background:#6c757d;color:#fff;border:none;padding:10px 20px;border-radius:4px;cursor:pointer;font-weight:500;transition:background-color .2s}.cancel-button:hover{background:#5a6268}.apply-button{background:#28a745;color:#fff;border:none;padding:10px 20px;border-radius:4px;cursor:pointer;font-weight:500;transition:background-color .2s}.apply-button:hover{background:#218838}@media (max-width: 1200px){.company-settings-modal .form-row{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}}@media (max-width: 768px){.company-settings-modal{width:95%;max-height:95vh}.company-settings-modal .form-row{grid-template-columns:1fr 1fr}}.support-settings-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.support-settings-modal{background:var(--color-bg-secondary, white);border:1px solid var(--color-border, #ddd);border-radius:12px;box-shadow:0 20px 40px #00000026;width:90%;max-width:800px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;position:relative}.support-settings-modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid #e5e7eb;background:#f9fafb}.support-settings-modal-title{display:flex;align-items:center;gap:12px}.support-settings-modal-icon{color:#6366f1;width:24px;height:24px}.support-settings-modal-title h3{margin:0;font-size:20px;font-weight:600;color:#111827}.support-settings-modal-close{background:none;border:none;padding:8px;border-radius:6px;cursor:pointer;color:#6b7280;transition:all .2s ease}.support-settings-modal-close:hover{background:#f3f4f6;color:#374151}.support-settings-modal-content{padding:24px;overflow-y:auto;flex:1}.support-settings-section{margin-bottom:32px}.support-settings-section:last-child{margin-bottom:0}.support-settings-section h4{margin:0 0 16px;font-size:16px;font-weight:600;color:#374151}.support-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.support-type-card{border:2px solid #e5e7eb;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s ease;background:#fff}.support-type-card:hover{border-color:#d1d5db;box-shadow:0 4px 6px #0000000d}.support-type-card.active{border-color:#6366f1;background:#f0f4ff;box-shadow:0 4px 6px #6366f11a}.support-type-card .support-type-icon{width:32px;height:32px;color:#6366f1;margin-bottom:12px}.support-type-info{display:flex;flex-direction:column;gap:4px}.support-type-label{font-weight:600;color:#111827;font-size:14px}.support-type-description{color:#6b7280;font-size:12px;line-height:1.4}.support-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.support-setting-field{display:flex;flex-direction:column;gap:6px}.support-setting-field label{font-weight:500;color:#374151;font-size:14px}.support-setting-field input{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;transition:border-color .2s ease}.support-setting-field input:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a}.support-cap-options{display:flex;gap:24px;flex-wrap:wrap}.support-cap-option{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:#374151}.support-cap-option input[type=radio]{margin:0;width:16px;height:16px;accent-color:#6366f1}.support-settings-modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:20px 24px;border-top:1px solid #e5e7eb;background:#f9fafb}.support-settings-cancel-btn,.support-settings-apply-btn{padding:10px 20px;border-radius:6px;font-weight:500;font-size:14px;cursor:pointer;transition:all .2s ease;border:none}.support-settings-cancel-btn{background:#f3f4f6;color:#374151}.support-settings-cancel-btn:hover{background:#e5e7eb}.support-settings-apply-btn{background:#6366f1;color:#fff}.support-settings-apply-btn:hover{background:#5856eb;box-shadow:0 4px 6px #6366f133}.support-settings-apply-btn:active{transform:translateY(1px)}@media (max-width: 768px){.support-settings-modal{width:95%;margin:20px}.support-type-grid,.support-settings-grid{grid-template-columns:1fr}.support-cap-options{flex-direction:column;gap:12px}}.operation-dialog-overlay{position:fixed;inset:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:2000;padding:var(--spacing-lg)}.operation-dialog{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);max-width:400px;width:100%;display:flex;flex-direction:column}.operation-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);border-bottom:1px solid var(--color-border);background:var(--color-bg-tertiary);border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0}.operation-dialog-header h3{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0}.operation-dialog-close{padding:var(--spacing-xs);border:none;border-radius:var(--border-radius);background:transparent;color:var(--color-text-muted);transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:32px;height:32px}.operation-dialog-close:hover{background:var(--color-bg-primary);color:var(--color-text-primary)}.operation-dialog-content{padding:var(--spacing-md)}.operation-placeholder{display:flex;align-items:center;justify-content:center;height:150px;color:var(--color-text-muted);text-align:center}.operation-input-group{margin-bottom:var(--spacing-md)}.operation-input-group label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.operation-input-group input[type=range]{width:100%;height:6px;border-radius:3px;background:var(--color-bg-primary);outline:none;-webkit-appearance:none;margin:var(--spacing-xs) 0}.operation-input-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--color-primary);cursor:pointer;border:2px solid var(--color-bg-secondary);box-shadow:0 2px 4px #0003}.operation-input-group input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--color-primary);cursor:pointer;border:2px solid var(--color-bg-secondary);box-shadow:0 2px 4px #0003}.operation-input-group input[type=number]{width:80px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-sm);text-align:center}.z-controls{display:flex;align-items:center;gap:var(--spacing-xs)}.z-controls button{padding:var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:32px;height:32px}.z-controls button:hover{background:var(--color-bg-secondary);border-color:var(--color-primary)}.rotation-controls{display:flex;align-items:center;gap:var(--spacing-xs)}.rotation-controls button{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer;transition:all .2s ease;font-size:var(--font-size-sm);min-width:40px}.rotation-controls button:hover{background:var(--color-bg-secondary);border-color:var(--color-primary)}.scale-mode-toggle{padding:var(--spacing-xs);border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;transition:all .2s ease;margin-right:var(--spacing-xs);border-radius:var(--border-radius)}.scale-mode-toggle:hover{background:var(--color-bg-primary);color:var(--color-text-primary)}.scale-presets{display:flex;gap:var(--spacing-xs);margin-top:var(--spacing-xs)}.scale-presets button{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);cursor:pointer;transition:all .2s ease;font-size:var(--font-size-sm);flex:1}.scale-presets button:hover{background:var(--color-bg-secondary);border-color:var(--color-primary)}.operation-dialog-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}.operation-button{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .2s ease;min-width:80px}.operation-button.primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.operation-button.primary:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.operation-button.secondary{background:var(--color-bg-primary);color:var(--color-text-primary)}.operation-button.secondary:hover{background:var(--color-bg-secondary);border-color:var(--color-primary)}@media (max-width: 768px){.operation-dialog-overlay{padding:var(--spacing-sm)}.operation-dialog{max-width:100%}.rotation-controls,.z-controls,.scale-presets{flex-wrap:wrap}}.metrics-panel{position:fixed;top:20px;right:20px;width:400px;max-height:85vh;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);z-index:1000;display:flex;flex-direction:column;animation:slideInRight .3s ease-out;overflow:hidden}.metrics-panel .resize-handle{position:absolute;z-index:10}.metrics-panel .resize-e{top:0;right:0;width:5px;height:100%;cursor:ew-resize}.metrics-panel .resize-w{top:0;left:0;width:5px;height:100%;cursor:ew-resize}.metrics-panel .resize-s{bottom:0;left:0;width:100%;height:5px;cursor:ns-resize}.metrics-panel .resize-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize}.metrics-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);border-bottom:1px solid var(--color-border);background:var(--color-bg-tertiary);user-select:none}.metrics-panel-title{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.metrics-panel-close{padding:var(--spacing-xs);border:none;border-radius:var(--border-radius);background:transparent;color:var(--color-text-muted);transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:32px;height:32px;cursor:pointer}.metrics-panel-close:hover{background:var(--color-bg-primary);color:var(--color-text-primary)}.metrics-panel-content{flex:1;overflow-y:auto;padding:var(--spacing-md)}.metrics-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:var(--color-text-muted);text-align:center}.metrics-placeholder p{margin:var(--spacing-xs) 0}.metrics-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.metrics-section{display:flex;flex-direction:column;gap:var(--spacing-md)}.metrics-section h3{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin:0;padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-sm)}.metric-card{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--border-radius);transition:all .2s ease}.metric-card:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #0000001a}.metric-card svg{color:var(--color-primary);flex-shrink:0}.metric-content{flex:1;min-width:0}.metric-label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric-value{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.efficiency-metrics{display:flex;flex-direction:column;gap:var(--spacing-sm)}.efficiency-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--border-radius);transition:all .2s ease}.efficiency-item:hover{border-color:var(--color-primary);background:var(--color-bg-secondary)}.efficiency-label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.efficiency-value{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.time-breakdown{display:flex;flex-direction:column;gap:var(--spacing-sm)}.time-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--border-radius);transition:all .2s ease}.time-item:hover{border-color:var(--color-primary);background:var(--color-bg-secondary)}.time-label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.time-value{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}@media (max-width: 768px){.metrics-panel{position:fixed;top:50%;left:20px;right:20px;width:auto;max-height:70vh;transform:translateY(-50%)}.metrics-grid{grid-template-columns:1fr}.metric-card{padding:var(--spacing-sm)}.metric-label{font-size:var(--font-size-xs)}.metric-value{font-size:var(--font-size-sm)}}:root{--primary: #4a90e2;--primary-light: #357abd;--primary-soft: #f0f7ff;--primary-gradient: linear-gradient(135deg, #4a90e2, #357abd)}.login-gate{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#f0f7ff;padding:20px}.login-gate-card{display:flex;flex-direction:column;align-items:center;gap:24px;padding:40px 36px;background:#fff;border:1px solid rgba(74,144,226,.15);border-radius:16px;box-shadow:0 8px 32px #4a90e21f;max-width:380px;width:100%}.login-gate-logo{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.login-gate-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--primary-gradient);border-radius:14px;color:#fff;box-shadow:0 4px 14px #4a90e259}.login-gate-logo h1{font-size:20px;font-weight:700;color:var(--primary);margin:0}.login-gate-logo p{font-size:13px;color:#888;margin:0}.login-gate-form{display:flex;flex-direction:column;gap:12px;width:100%}.login-gate-field{position:relative;display:flex;align-items:center}.login-gate-field svg{position:absolute;left:14px;color:var(--primary);opacity:.6;pointer-events:none}.login-gate-field input{width:100%;padding:12px 14px 12px 40px;border:1px solid rgba(74,144,226,.2);border-radius:10px;background:var(--primary-soft);color:#1a1a2e;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s}.login-gate-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4a90e21f;background:#fff}.login-gate-field input::placeholder{color:#aab}.login-gate-error{padding:8px 12px;background:#e8f4ff;border:1px solid rgba(74,144,226,.25);border-radius:8px;color:var(--primary);font-size:13px;text-align:center}.login-gate-btn{width:100%;padding:12px;border:none;border-radius:10px;background:var(--primary-gradient);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;margin-top:4px}.login-gate-btn:hover:not(:disabled){background:linear-gradient(135deg,#357abd,#2a6399);box-shadow:0 4px 12px #4a90e266}.login-gate-btn:disabled{opacity:.6;cursor:not-allowed}.login-gate-request-btn{width:100%;padding:10px;border:1px solid var(--primary);border-radius:10px;background:transparent;color:var(--primary);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.login-gate-request-btn:hover{background:var(--primary-soft);border-color:var(--primary-light)}.login-gate-footer{font-size:11px;color:#aaa;margin:0}.login-gate-request{width:100%}.login-gate-request-title{font-size:16px;font-weight:600;color:var(--primary);margin:0 0 16px;text-align:center}.login-gate-request-success{font-size:14px;color:var(--primary);text-align:center;margin:0 0 16px}.login-gate-back-btn{width:100%;padding:10px;border:none;border-radius:10px;background:transparent;color:var(--primary);font-size:14px;cursor:pointer;transition:background .2s;margin-top:8px}.login-gate-back-btn:hover{background:var(--primary-soft)}.app{display:flex;flex-direction:column;height:100vh;background:var(--color-bg-primary);color:var(--color-text-primary)}.app-header{flex-shrink:0;min-height:120px;background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);z-index:20}.app-content{display:flex;flex:1;overflow:hidden}.app-sidebar-left{width:300px;background:var(--color-bg-secondary);border-right:1px solid var(--color-border);overflow-y:auto;z-index:10;flex-shrink:0}.app-viewer{flex:1;position:relative;background:var(--color-bg-primary);min-width:0}@media (max-width: 1200px){.app-sidebar-left{width:250px}}@media (max-width: 768px){.app-content{flex-direction:column}.app-sidebar-left{width:100%;height:200px;border-right:none;border-bottom:1px solid var(--color-border)}.app-viewer{flex:1;min-height:400px}}.loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-text-muted)}.loading-spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top:2px solid var(--color-accent);border-radius:50%;animation:spin 1s linear infinite;margin-right:var(--spacing-sm)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-error);text-align:center;padding:var(--spacing-lg)}.error-icon{width:24px;height:24px;margin-right:var(--spacing-sm);color:var(--color-error)}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--color-text-muted);text-align:center;padding:var(--spacing-lg)}.empty-icon{width:48px;height:48px;margin-bottom:var(--spacing-md);color:var(--color-text-muted)}.focusable:focus{outline:2px solid var(--color-accent);outline-offset:2px}.selected{background:var(--color-accent);color:#fff}.selected:hover{background:var(--color-accent-hover)}.hoverable:hover{background:var(--color-bg-tertiary);transition:background-color .2s ease}.active{background:var(--color-accent);color:#fff}.active:hover{background:var(--color-accent-hover)}.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fade-in{animation:fadeIn .3s ease-in}.fade-out{animation:fadeOut .3s ease-out}.slide-in-left{animation:slideInLeft .3s ease-out}.slide-in-right{animation:slideInRight .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;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}#root{height:100%;overflow:hidden}:root{--color-bg-primary: #1a1a1a;--color-bg-secondary: #2a2a2a;--color-bg-tertiary: #3a3a3a;--color-text-primary: #ffffff;--color-text-secondary: #cccccc;--color-text-muted: #888888;--color-accent: #4a90e2;--color-accent-hover: #357abd;--color-success: #4caf50;--color-warning: #ff9800;--color-error: #f44336;--color-border: #444444;--color-border-light: #666666;--border-radius: 4px;--border-radius-lg: 8px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);--shadow-md: 0 3px 6px rgba(0, 0, 0, .16), 0 3px 6px rgba(0, 0, 0, .23);--shadow-lg: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23)}[data-theme=light]{--color-bg-primary: #ffffff;--color-bg-secondary: #f5f5f5;--color-bg-tertiary: #eeeeee;--color-text-primary: #333333;--color-text-secondary: #666666;--color-text-muted: #999999;--color-accent: #2196f3;--color-accent-hover: #1976d2;--color-success: #4caf50;--color-warning: #ff9800;--color-error: #f44336;--color-border: #e0e0e0;--color-border-light: #cccccc}button{font-family:inherit;font-size:inherit;border:none;background:none;cursor:pointer;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);transition:all .2s ease}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:inherit;border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-sm);background:var(--color-bg-secondary);color:var(--color-text-primary);transition:border-color .2s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.w-full{width:100%}.h-full{height:100%}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}@keyframes slideInRight{0%{transform:translate(100%) translateY(-50%);opacity:0}to{transform:translate(0) translateY(-50%);opacity:1}}
