.toast{display:flex;align-items:center;justify-content:space-between;min-width:300px;max-width:500px;padding:16px 20px;margin-bottom:12px;border-radius:8px;box-shadow:0 4px 12px #00000026;animation:slideIn .4s cubic-bezier(.16,1,.3,1);cursor:pointer;transition:transform .2s,opacity .2s;position:relative;overflow:hidden}.toast:hover{transform:translate(-4px)}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-progress-container{position:absolute;bottom:0;left:0;right:0;height:3px;background:#fff3;overflow:hidden}.toast-progress{height:100%;background:#fffc;transition:width .1s linear;transform-origin:right}.toast-progress.paused{transition:none}.toast-success{background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;border-left:4px solid #2e7d32}.toast-error{background:linear-gradient(135deg,#f44336,#d32f2f);color:#fff;border-left:4px solid #c62828}.toast-warning{background:linear-gradient(135deg,#ff9800,#f57c00);color:#fff;border-left:4px solid #e65100}.toast-info{background:linear-gradient(135deg,#2196f3,#1976d2);color:#fff;border-left:4px solid #1565C0}.toast-content{display:flex;align-items:center;gap:12px;flex:1}.toast-icon{font-size:20px;font-weight:700;flex-shrink:0}.toast-message{font-size:14px;font-weight:500;line-height:1.4;flex:1}.toast-close{background:transparent;border:none;color:#fff;font-size:24px;font-weight:700;cursor:pointer;padding:0;margin-left:12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s;flex-shrink:0}.toast-close:hover{background:#fff3}.toast-container{position:fixed;top:20px;right:20px;z-index:10000;display:flex;flex-direction:column;pointer-events:none}.toast-container>*{pointer-events:all}.create-table-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.create-table-modal{background:#fff;border-radius:12px;padding:30px;max-width:500px;width:90%;position:relative;box-shadow:0 8px 32px #0003;max-height:80vh;overflow-y:auto}.create-table-modal-close{position:absolute;top:15px;right:15px;background:none;border:none;font-size:28px;cursor:pointer;color:#666;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.create-table-modal-close:hover{background:#f0f0f0;color:#000}.create-table-modal h2{margin-top:0;margin-bottom:10px;color:#212529;font-size:24px}.create-table-modal p{margin-bottom:20px;color:#666;font-size:14px}.columns-list{margin-bottom:20px;max-height:300px;overflow-y:auto}.column-item{display:flex;align-items:center;gap:10px;padding:12px;margin-bottom:8px;background:#f8f9fa;border-radius:8px;border:2px solid transparent;transition:all .2s}.column-item:hover{border-color:#4caf50;background:#f0f7f0}.column-name{flex:1;padding:8px 12px;cursor:pointer;border-radius:6px;transition:all .2s;font-size:15px;font-weight:500;color:#212529}.column-name:hover{background:#e9ecef}.column-edit-input{flex:1;padding:8px 12px;border:2px solid #4CAF50;border-radius:6px;font-size:15px;font-weight:500;outline:none}.delete-column-btn{background:#f44;color:#fff;border:none;border-radius:50%;width:28px;height:28px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}.delete-column-btn:hover{background:#c00;transform:scale(1.1)}.modal-actions{display:flex;flex-direction:column;gap:15px}.add-column-btn{padding:10px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;transition:all .3s;box-shadow:0 2px 8px #667eea4d}.add-column-btn:hover{transform:translateY(-2px);box-shadow:0 4px 16px #667eea66}.modal-buttons{display:flex;gap:10px;justify-content:flex-end}.cancel-btn,.create-btn{padding:12px 24px;border:none;border-radius:8px;cursor:pointer;font-size:15px;font-weight:600;transition:all .3s}.cancel-btn{background:#e9ecef;color:#495057}.cancel-btn:hover{background:#dee2e6}.create-btn{background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;box-shadow:0 2px 8px #4caf504d}.create-btn:hover{transform:translateY(-2px);box-shadow:0 4px 16px #4caf5066}.file-tab{background:#fff;padding:40px;min-height:400px}.controls{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.controls button{padding:12px 24px;border-radius:10px;font-size:15px;font-weight:600;transition:all .3s ease;border:none;cursor:pointer;box-shadow:0 2px 8px #0000001a}.controls button.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.controls button.primary:hover{transform:translateY(-2px);box-shadow:0 4px 16px #667eea66}.controls button:not(.primary){background:#fff;color:#667eea;border:2px solid #667eea}.controls button:not(.primary):hover{background:#667eea;color:#fff;transform:translateY(-2px);box-shadow:0 4px 16px #667eea4d}.controls button:disabled{opacity:.6;cursor:not-allowed;transform:none}.file-info{margin-top:24px;padding:20px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:12px;border-left:4px solid #667eea}.file-info p{margin:10px 0;color:#495057;font-size:15px;font-weight:500}.file-info p strong{color:#667eea;font-weight:700}.empty-file-state{text-align:center;padding:80px 20px;color:#6c757d}.empty-file-icon{font-size:80px;margin-bottom:24px;opacity:.7;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.empty-file-state h3{font-size:28px;font-weight:700;color:#495057;margin-bottom:12px}.empty-file-state p{font-size:16px;color:#6c757d;line-height:1.6;max-width:500px;margin:0 auto 32px}.error{color:#dc3545;margin-top:16px;padding:16px 20px;background:#fff5f5;border-radius:10px;border-left:4px solid #dc3545;font-weight:500}.add-column-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.add-column-modal{background:#fff;border-radius:12px;padding:24px;min-width:400px;max-width:500px;box-shadow:0 8px 32px #0003;position:relative}.add-column-modal-close{position:absolute;top:12px;right:12px;background:transparent;border:none;font-size:28px;cursor:pointer;color:#666;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.add-column-modal-close:hover{background:#f0f0f0}.add-column-modal h3{margin:0 0 20px;font-size:20px;font-weight:600;color:#212529}.add-column-input{width:100%;padding:12px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;margin-bottom:20px;box-sizing:border-box;transition:border-color .2s}.add-column-input:focus{outline:none;border-color:#667eea}.add-column-modal-actions{display:flex;gap:12px;justify-content:flex-end}.editor-tab{background:#fff;padding:40px;min-height:400px}.editor-container{width:100%}.editor-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:20px;border-bottom:2px solid #e9ecef}.editor-header h3{margin:0;color:#212529;font-size:24px;font-weight:700;letter-spacing:-.5px}.editor-actions{display:flex;align-items:center;gap:16px}.modified-indicator{color:#ff6b00;font-size:14px;font-weight:600;padding:8px 16px;background:#fff3e0;border-radius:8px;display:flex;align-items:center;gap:8px;border:2px solid #ff9800}.modified-indicator:before{content:"●";font-size:16px;color:#ff6b00;animation:blink 1.5s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.save-btn{background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;border:none;padding:14px 28px;border-radius:10px;cursor:pointer;font-size:16px;font-weight:600;transition:all .3s ease;box-shadow:0 2px 8px #4caf504d;margin-left:auto}.save-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 16px #4caf5066}.save-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.export-btn{background:linear-gradient(135deg,#1976d2,#1565c0);color:#fff;border:none;padding:12px 22px;border-radius:10px;cursor:pointer;font-size:15px;font-weight:600;transition:all .3s ease;box-shadow:0 2px 8px #1976d259}.export-btn:hover{background:linear-gradient(135deg,#1e88e5,#1976d2);transform:translateY(-2px);box-shadow:0 4px 16px #1976d273}.editor-controls{margin-bottom:20px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editor-controls-right{display:flex;gap:12px;align-items:center;margin-left:auto}.editor-controls button:not(.save-btn):not(.export-btn){padding:10px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:10px;cursor:pointer;font-size:14px;font-weight:600;transition:all .3s ease;box-shadow:0 2px 8px #667eea4d}.editor-controls button:not(.save-btn):not(.export-btn):hover{background:linear-gradient(135deg,#5a6fd6,#6a4190);transform:translateY(-2px);box-shadow:0 4px 16px #667eea73}.table-wrapper{overflow-x:auto;max-height:70vh;overflow-y:auto;margin:20px;padding:0 20px 20px;border-radius:12px;border:1px solid #e9ecef;box-shadow:0 2px 8px #0000000d;background:#fff;position:relative}.editor-footer{margin:20px;padding:16px 0;border-top:1px solid #e9ecef;display:flex;justify-content:flex-start}.data-table{width:100%;border-collapse:collapse;background:#fff}.data-table thead{position:sticky;top:0;z-index:6;background:#f8f9fa}.data-table th{background:#f8f9fa;padding:12px;text-align:left;font-weight:700;border-bottom:3px solid #dee2e6;position:sticky;top:0;z-index:7;color:#495057;font-size:13px;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 4px 8px #0003;min-height:75px;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;vertical-align:middle}.data-table th:after{content:"";position:absolute;bottom:-3px;left:0;right:0;height:5px;background:#f8f9fa;z-index:8}.data-table th:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#f8f9fa,#e9ecef);z-index:-1}.data-table td{padding:12px;border-bottom:1px solid #f1f3f5;transition:background .2s;position:relative;z-index:0;background:#fff;overflow:visible}.data-table td textarea{width:100%;padding:10px 12px;border:2px solid #e9ecef;border-radius:8px;font-size:14px;transition:all .2s;background:#fff;font-family:inherit;word-wrap:break-word;overflow-wrap:break-word;white-space:pre-wrap;resize:none;overflow:hidden;box-sizing:border-box}.data-table td textarea:hover{border-color:#ced4da}.data-table td textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;background:#f8f9ff}.data-table td input:hover{border-color:#ced4da}.data-table td input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;background:#f8f9ff}.row-header{width:56px;min-width:56px;background:#f8f9fa;position:sticky;left:0;z-index:7;border-right:2px solid #dee2e6}.row-header-cell{width:56px;min-width:56px;background:#f8f9fa;position:sticky;left:0;z-index:4;padding:6px 4px;text-align:center;border-right:2px solid #e9ecef;vertical-align:middle}.row-actions-btn{width:28px;height:28px;border-radius:50%;border:none;background:#eef1f7;color:#3a4a6b;font-size:18px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s ease,transform .2s ease}.row-actions-btn:hover{background:#e0e6f2;transform:scale(1.05)}.row-menu{position:absolute;background:#fff;border:1px solid #e3e7ef;border-radius:8px;box-shadow:0 8px 24px #0000001f;padding:4px;z-index:20;width:max-content;min-width:0;max-width:200px}.row-menu-item{width:95%;display:block;text-align:left;padding:6px 8px;border:none;background:transparent;cursor:pointer;font-size:12px;color:#2c3e50;border-radius:6px;white-space:nowrap}.row-menu-item:hover{background:#f4f6fb}.row-menu-item.disabled{opacity:.5;cursor:not-allowed}.row-menu-item.danger{color:#d32f2f;background:#fff5f5}.row-menu-item.danger:hover{background:#ffe9e9}.row-control-btn{background:#667eea;color:#fff;border:none;width:26px;height:26px;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s ease;font-weight:600;flex-shrink:0}.row-control-btn:hover:not(:disabled){transform:scale(1.08);box-shadow:0 2px 6px #0003}.row-control-btn:disabled{opacity:.25;cursor:not-allowed}.row-control-btn.move-up,.row-control-btn.move-down{background:#667eea}.row-control-btn.move-up:hover:not(:disabled){background:#5568d3}.row-control-btn.move-down:hover:not(:disabled){background:#5568d3}.row-control-btn.duplicate{background:#4caf50}.row-control-btn.duplicate:hover{background:#45a049}.row-control-btn.delete{background:#f44336}.row-control-btn.delete:hover{background:#d32f2f}.column-header{position:relative;min-width:120px;-webkit-user-select:none;user-select:none}.column-resize-handle{position:absolute;top:0;right:0;width:4px;height:100%;cursor:col-resize;background:transparent;z-index:2;transition:background .2s}.column-resize-handle:hover{background:#667eea}.column-resize-handle:active{background:#5568d3}.column-header-resize-handle{position:absolute;bottom:0;left:0;right:0;height:8px;cursor:row-resize;background:transparent;z-index:2;transition:background .2s}.column-header-resize-handle:hover{background:#667eea}.column-header-resize-handle:active{background:#5568d3}.global-header-resize-handle{position:absolute;bottom:0;left:0;right:0;height:8px;cursor:row-resize;background:transparent;z-index:2;transition:background .2s}.global-header-resize-handle:hover{background:#667eea}.global-header-resize-handle:active{background:#5568d3}.row-resize-handle{position:absolute;bottom:0;left:0;right:0;height:8px;cursor:row-resize;background:transparent;z-index:2;transition:background .2s}.row-resize-handle:hover{background:#667eea}.row-resize-handle:active{background:#5568d3}.column-header.dragging{opacity:.5}.column-header.drag-over{border-left:3px solid #667eea}.column-header.resizing-all{background:#e3f2fd!important;border:2px solid #2196F3!important;box-shadow:0 0 10px #2196f34d!important}.autocomplete-dropdown{background:#fff;border:1px solid #e3e7ef;border-radius:8px;box-shadow:0 8px 24px #0000001f;min-width:0;width:auto;overflow-y:auto;overflow-x:hidden;z-index:20;box-sizing:border-box}.autocomplete-item{padding:8px 12px;cursor:pointer;font-size:14px;color:#2c3e50;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;transition:background .15s;box-sizing:border-box;min-height:36px;display:flex;align-items:center}.autocomplete-item:hover,.autocomplete-item.selected{background:#f4f6fb}.autocomplete-item:first-child{border-top-left-radius:8px;border-top-right-radius:8px}.autocomplete-item:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.column-header-content{display:flex;justify-content:space-between;align-items:center;gap:8px}.column-name-editable{flex:1;cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .2s;-webkit-user-select:none;user-select:none;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;line-height:1.4}.column-name-editable:hover{background:#e9ecef}.column-name-edit-input{flex:1;padding:4px 8px;border:2px solid #4CAF50;border-radius:4px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;outline:none;background:#fff;color:#495057;font-family:inherit}.delete-column-btn-wrapper,.delete-row-btn-wrapper{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative}.delete-row-btn-wrapper{width:24px;height:24px}.delete-column-btn{background:#f44336;color:#fff;border:none;width:20px;height:20px;border-radius:50%;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;padding:0;transition:opacity .2s,transform .2s,background .2s;flex-shrink:0;position:relative;opacity:.8;pointer-events:all}.delete-row-btn{background:#f44336;color:#fff;border:none;width:24px;height:24px;border-radius:50%;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;padding:0;transition:opacity .2s,transform .2s,background .2s;flex-shrink:0;position:relative;opacity:.8;pointer-events:all}.delete-column-btn-wrapper:hover .delete-column-btn,.delete-row-btn-wrapper:hover .delete-row-btn{opacity:1;transform:scale(1.1)}.delete-row-btn:hover,.delete-column-btn:hover{background:#d32f2f;transform:scale(1.1)}.delete-row-btn{width:24px;height:24px;position:relative}.row-header-cell{position:relative}.data-table tr:hover,.data-table tr:hover td{background:#f8f9ff}.empty-state{text-align:center;padding:80px 20px;color:#6c757d}.empty-state-icon{font-size:64px;margin-bottom:24px;opacity:.6}.empty-state h3{font-size:24px;font-weight:700;color:#495057;margin-bottom:12px}.empty-state p{font-size:16px;color:#6c757d;line-height:1.6;max-width:500px;margin:0 auto}.modal-content{background:#fff;padding:24px;border-radius:12px;box-shadow:0 4px 20px #00000026;min-width:450px;max-width:550px;animation:slideUp .2s ease-out}.modal-content label{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:#212529}.name-input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;margin-bottom:20px;transition:border-color .2s;box-sizing:border-box}.name-input:focus{outline:none;border-color:#4caf50;box-shadow:0 0 0 3px #4caf501a}.chart-tab{margin-top:20px}.chart-controls{background:#fff;padding:15px;border-radius:8px;margin-bottom:20px;box-shadow:0 2px 4px #0000001a;word-wrap:break-word;overflow-wrap:break-word}.columns-list{margin:10px 0;display:flex;flex-direction:column}.column-label{display:flex;align-items:center;margin:8px 0;padding:8px 10px;background:#f9f9f9;border-radius:6px;transition:background-color .2s,opacity .2s,border .2s,transform .2s;gap:8px;position:relative;border:2px solid transparent;cursor:grab;word-wrap:break-word;overflow-wrap:break-word;white-space:normal}.column-label:hover{background:#e8f5e9;border-color:#c8e6c9}.column-label:active{cursor:grabbing}.column-label.dragging{opacity:.5;background:#e3f2fd;border-color:#2196f3;cursor:grabbing}.column-label.preview{background:#e8f5e9;border-color:#4caf50}.column-label label{margin:0;padding:0;background:transparent}.column-label:hover label{background:transparent}.column-label input[type=checkbox]{width:14px;height:14px;margin-right:8px;cursor:pointer;accent-color:#4CAF50;flex-shrink:0}.column-label span{flex:1;margin-right:8px;word-wrap:break-word;overflow-wrap:break-word;white-space:normal}.drag-handle{cursor:grab;color:#999;font-size:18px;padding:4px 8px;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;transition:color .2s,background-color .2s,transform .2s;flex-shrink:0;border-radius:4px;background:transparent}.drag-handle:hover{color:#4caf50;background:#4caf501a;transform:scale(1.1)}.drag-handle:active{cursor:grabbing;transform:scale(1.05)}.column-label.dragging .drag-handle{cursor:grabbing}.drag-handle span{line-height:1;letter-spacing:-2px;margin:0;font-weight:700}.move-buttons{display:flex;gap:4px;flex-shrink:0}.move-btn{padding:2px 6px;font-size:12px;background:transparent;color:#666;border:1px solid #ddd;border-radius:3px;cursor:pointer;transition:all .2s;min-width:24px;height:24px;display:flex;align-items:center;justify-content:center;line-height:1}.move-btn:hover:not(:disabled){background:#4caf50;color:#fff;border-color:#4caf50}.move-btn:disabled{color:#ccc;border-color:#eee;cursor:not-allowed;opacity:.5}.zoom-controls{margin-top:10px;display:flex;align-items:center;gap:10px}.zoom-slider{width:200px}.plot{width:100%;height:800px;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}.plot iframe{overflow:hidden!important;border:none}.plot iframe body{overflow:hidden!important}.plot::-webkit-scrollbar{display:none}.plot{-ms-overflow-style:none;scrollbar-width:none}.chart-actions{margin-top:15px;display:flex;gap:10px;align-items:center}.save-btn{background:#4caf50;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:background .2s}.save-btn:hover:not(:disabled){background:#45a049}.save-btn:disabled{opacity:.6;cursor:not-allowed;background:#9e9e9e}.save-as-new-btn{background:#2196f3;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:background .2s}.save-as-new-btn:hover:not(:disabled){background:#1976d2}.save-as-new-btn:disabled{opacity:.6;cursor:not-allowed}.delete-btn{background:#f44336;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:background .2s}.delete-btn:hover:not(:disabled){background:#da190b}.delete-btn:disabled{opacity:.6;cursor:not-allowed}.chart-wrapper{width:900px;height:900px;position:relative;display:flex;align-items:center;justify-content:center}.chart-wrapper iframe{border:none;background:#fff}.error{color:#c62828;margin:10px 0;padding:12px;background:#ffebee;border-radius:6px;border-left:4px solid #c62828}.chart-controls label{display:flex;align-items:center;margin:8px 0;cursor:pointer;padding-left:8px;border-radius:4px;transition:background-color .2s}.chart-controls label:hover{background:#f5f5f5}.chart-controls label input[type=checkbox]{width:18px;height:18px;margin-right:8px;cursor:pointer;accent-color:#4CAF50;flex-shrink:0}.projects-tab{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.projects-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:2px solid #e0e0e0}.view-switcher{display:flex;gap:10px}.view-switcher button{padding:8px 16px;border:2px solid #e0e0e0;background:#fff;border-radius:4px;cursor:pointer;transition:all .2s}.view-switcher button.active{background:#4caf50;color:#fff;border-color:#4caf50}.view-switcher button:hover:not(.active){background:#f5f5f5}.refresh-btn{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer}.refresh-btn:hover{background:#1976d2}.projects-list{display:flex;flex-direction:column;gap:15px}.project-item{display:flex;justify-content:space-between;align-items:center;padding:15px;background:#f9f9f9;border-radius:6px;border:1px solid #e0e0e0;transition:all .2s;gap:15px}.project-item:hover{background:#f0f0f0;box-shadow:0 2px 4px #0000001a}.project-item.active-file{background:#e8f5e9;border-color:#4caf50;border-width:2px}.project-status{display:flex;align-items:center;min-width:100px}.status-badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:500;cursor:help}.status-open{background:#4caf50;color:#fff}.status-modified{background:#ff9800;color:#fff}.project-info{flex:1}.project-info h4{margin:0 0 8px;color:#333}.project-meta{margin:0;color:#666;font-size:13px}.project-actions{display:flex;gap:10px}.empty-state{text-align:center;padding:40px;color:#666}.empty-state .hint{margin-top:10px;font-size:14px;color:#999}.error{background:#ffebee;color:#c62828;padding:12px;border-radius:4px;margin-bottom:15px;border-left:4px solid #c62828}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;margin-top:20px}.project-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px;transition:all .2s;display:flex;flex-direction:column;gap:15px}.project-card:hover{box-shadow:0 4px 8px #0000001a;transform:translateY(-2px)}.project-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.project-card-header h3{margin:0;color:#333;flex:1}.project-card-header .danger.small{padding:4px 8px;font-size:14px;min-width:auto;width:auto}.project-description{color:#495057;font-size:14px;margin:0 0 8px;line-height:1.5}.project-stats{display:flex;gap:15px;font-size:14px;color:#666}.project-stats span{display:flex;align-items:center;gap:5px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:8px;padding:30px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;position:relative}.modal-close{position:absolute;top:10px;right:10px;background:none;border:none;font-size:24px;cursor:pointer;color:#666;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.modal-close:hover{background:#f5f5f5;color:#333}.modal h3{margin:0 0 20px;color:#333}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:#333;font-weight:500}.form-group input,.form-group textarea{width:100%;padding:10px;border:1px solid #e0e0e0;border-radius:4px;font-size:14px;font-family:inherit;box-sizing:border-box}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#4caf50}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.delete-file-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.delete-file-modal{background:#fff;border-radius:12px;padding:24px;min-width:400px;max-width:500px;box-shadow:0 8px 32px #0003;position:relative}.delete-file-modal-close{position:absolute;top:12px;right:12px;background:transparent;border:none;font-size:28px;cursor:pointer;color:#666;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.delete-file-modal-close:hover{background:#f0f0f0}.delete-file-modal h3{margin:0 0 16px;font-size:20px;font-weight:600;color:#212529}.delete-file-modal p{margin:12px 0;color:#495057;font-size:14px;line-height:1.5}.delete-file-modal p strong{color:#212529;font-weight:600}.warning-text{color:#dc3545;font-size:13px;margin-top:8px}.delete-file-modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.cancel-btn{padding:10px 20px;background:#f5f5f5;border:1px solid #ddd;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s}.cancel-btn:hover{background:#e9e9e9}.danger{padding:10px 20px;background:#dc3545;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s}.danger:hover{background:#c82333}.rename-input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;margin-bottom:20px;transition:border-color .2s;box-sizing:border-box}.rename-input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;margin-bottom:20px;transition:border-color .2s}.rename-input:focus{outline:none;border-color:#4caf50;box-shadow:0 0 0 3px #4caf501a}.modal-actions button.primary:disabled{opacity:.5;cursor:not-allowed}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-in}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#fff;padding:24px;border-radius:12px;box-shadow:0 4px 20px #00000026;min-width:400px;max-width:500px;animation:slideUp .2s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-content h3{margin:0 0 20px;font-size:20px;color:#212529}.modal-content p{margin:0 0 20px;color:#666;line-height:1.5}.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}.modal-actions button{padding:10px 20px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s;width:100%}.modal-actions button.primary{background:#4caf50;color:#fff}.modal-actions button.primary:hover:not(:disabled){background:#45a049}.modal-actions button.secondary{background:#f5f5f5;color:#666}.modal-actions button.secondary:hover{background:#e0e0e0}.modal-actions button.delete{background:#f44336;color:#fff}.modal-actions button.delete:hover{background:#da190b}.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-bottom:20px}.file-card{background:#fff;border:1px solid #e0e0e0;border-radius:12px;padding:20px;box-shadow:0 2px 8px #00000014;transition:all .3s ease}.file-card:hover{box-shadow:0 4px 16px #0000001f;transform:translateY(-2px)}.file-card-header{margin-bottom:12px;display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.file-card-header h4{margin:0;font-size:16px;font-weight:600;color:#212529;word-break:break-word;flex:1}.delete-file-btn-small{background:#f44336;color:#fff;border:none;width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;padding:0;transition:opacity .2s,transform .2s,background .2s;flex-shrink:0;opacity:.8}.delete-file-btn-small:hover{opacity:1;background:#d32f2f;transform:scale(1.1)}.rename-file-btn-small{background:#2196f3;color:#fff;border:none;width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;padding:0;transition:opacity .2s,transform .2s,background .2s;flex-shrink:0;opacity:.8}.rename-file-btn-small:hover{opacity:1;background:#1976d2;transform:scale(1.1)}.export-file-btn-small{background:#4caf50;color:#fff;border:none;width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;padding:0;transition:opacity .2s,transform .2s,background .2s;flex-shrink:0;opacity:.9}.export-file-btn-small:hover{opacity:1;background:#388e3c;transform:scale(1.1)}.file-card-info{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;color:#6c757d;font-size:14px}.file-card-actions{display:flex;gap:10px;flex-direction:column}.file-card-actions-two{flex-direction:row}.file-card-actions-two .file-card-button{flex:1;min-width:0}.file-card-button{width:100%;padding:10px;font-size:14px}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:30px;padding:20px}.pagination-btn{padding:10px 20px;border:1px solid #ddd;background:#fff;border-radius:8px;cursor:pointer;font-size:14px;transition:all .2s}.pagination-btn:hover:not(:disabled){background:#f8f9fa;border-color:#4caf50;color:#4caf50}.pagination-btn:disabled{opacity:.5;cursor:not-allowed}.pagination-info{font-size:14px;color:#6c757d;font-weight:500}.project-diagrams-list .empty-state{text-align:center;padding:60px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center}.project-diagrams-list .empty-state p{color:#fff;font-size:16px;margin:8px 0;text-shadow:0 2px 4px rgba(0,0,0,.5)}.project-diagrams-list .empty-state .hint{color:#ffffffe6;font-size:14px;text-shadow:0 1px 3px rgba(0,0,0,.4)}.project-header{position:relative;text-align:center;margin-bottom:30px;display:flex;align-items:flex-start;justify-content:center}.project-header-content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center}.project-detail .project-description{margin:8px 0 0;font-size:14px;color:#495057;line-height:1.4;max-width:500px;text-align:center}.project-header h2{font-size:40px;font-weight:700;margin:0 0 10px;color:#212529}.project-title-block{display:flex;flex-direction:column;align-items:center;gap:4px}.project-open-filename{margin:0;font-size:26px;font-weight:600;color:#1a237e}.back-btn-compact{position:absolute;left:0;top:0;background:#ffffffe6;border:1px solid #e0e0e0;border-radius:6px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;color:#666;transition:all .2s;padding:0;box-shadow:0 1px 3px #0000001a}.back-btn-compact:hover{background:#fff;border-color:#4caf50;color:#4caf50;transform:translate(-2px);box-shadow:0 2px 6px #00000026}.diagram-item{padding:15px;border:1px solid #e0e0e0;margin-bottom:12px;border-radius:8px;background:#fff;display:flex;justify-content:space-between;align-items:center;gap:15px;transition:box-shadow .2s}.diagram-item:hover{box-shadow:0 2px 8px #0000001a}.diagram-info{flex:1}.diagram-info h4{margin:0 0 8px;font-size:18px;color:#212529}.diagram-info p{margin:4px 0;font-size:14px;color:#666}.diagram-date{font-size:12px!important;color:#999!important}.diagram-actions{display:flex;gap:8px;flex-shrink:0}.diagram-actions button{padding:8px 14px;font-size:14px;white-space:nowrap}.diagram-actions button.secondary{background:#2196f3;color:#fff;border:none;cursor:pointer;border-radius:4px;transition:background .2s}.diagram-actions button.secondary:hover{background:#1976d2}.diagram-actions button.delete{background:#f44336;color:#fff;border:none;cursor:pointer;border-radius:4px;transition:background .2s}.diagram-actions button.delete:hover{background:#da190b}.admin-panel{max-width:1400px;margin:0 auto;padding:20px}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.admin-header h1{margin:0;color:#212529}.back-btn{padding:10px 20px;background:#6c757d;color:#fff;border:none;border-radius:6px;cursor:pointer;transition:background .2s}.back-btn:hover{background:#5a6268}.loading{text-align:center;padding:50px;font-size:18px;color:#666}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:30px}.stat-card{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a;border-left:4px solid #4CAF50}.stat-card h3{margin:0 0 10px;font-size:14px;color:#666;text-transform:uppercase}.stat-value{font-size:32px;font-weight:700;color:#212529;margin-bottom:5px}.stat-details{font-size:12px;color:#666}.subscriptions-overview{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px}.subscriptions-overview h3{margin:0 0 15px;color:#212529}.subs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px}.sub-item{display:flex;justify-content:space-between;padding:10px 15px;background:#f8f9fa;border-radius:6px}.sub-label{font-weight:600;color:#495057}.sub-count{font-weight:700;color:#4caf50}.users-section{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.users-section h2{margin:0 0 20px;color:#212529}.users-table-container{overflow-x:auto}.users-table{width:100%;border-collapse:collapse;font-size:14px}.users-table th{background:#f8f9fa;padding:12px 8px;text-align:left;font-weight:600;color:#495057;border-bottom:2px solid #dee2e6;white-space:nowrap}.users-table td{padding:12px 8px;border-bottom:1px solid #dee2e6}.users-table tr:hover{background:#f8f9fa}.users-table tr.inactive-user{opacity:.6;background:#f8d7da}.subscription-select{padding:5px 10px;border:1px solid #ced4da;border-radius:4px;font-size:14px;cursor:pointer;background:#fff}.subscription-select:hover{border-color:#4caf50}.status-badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600}.status-badge.active{background:#d4edda;color:#155724}.status-badge.inactive{background:#f8d7da;color:#721c24}.admin-badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;background:#e2e3e5;color:#383d41}.admin-badge.is-admin{background:#fff3cd;color:#856404}.toggle-active-btn{padding:6px 12px;border:none;border-radius:4px;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .2s}.toggle-active-btn.deactivate{background:#f8d7da;color:#721c24}.toggle-active-btn.deactivate:hover{background:#f5c6cb}.toggle-active-btn.activate{background:#d4edda;color:#155724}.toggle-active-btn.activate:hover{background:#c3e6cb}.admin-tabs{display:flex;gap:10px;margin-bottom:20px;border-bottom:2px solid #dee2e6}.admin-tabs button{padding:12px 24px;background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:16px;font-weight:500;color:#666;transition:all .2s}.admin-tabs button:hover{color:#212529;background:#f8f9fa}.admin-tabs button.active{color:#4caf50;border-bottom-color:#4caf50}.subscriptions-section{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.subscriptions-section h2{margin:0 0 20px;color:#212529}.configs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px}.config-card{background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;padding:20px;transition:box-shadow .2s}.config-card:hover{box-shadow:0 4px 8px #0000001a}.config-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:10px;border-bottom:2px solid #dee2e6}.config-header h3{margin:0;color:#212529}.config-type{padding:4px 12px;background:#4caf50;color:#fff;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.config-limits{display:flex;flex-direction:column;gap:10px;margin-bottom:15px}.limit-item{display:flex;justify-content:space-between;padding:8px 12px;background:#fff;border-radius:4px}.limit-label{color:#666;font-weight:500}.limit-value{color:#212529;font-weight:700;font-size:18px}.config-edit{display:flex;flex-direction:column;gap:12px}.config-edit label{display:flex;flex-direction:column;gap:5px;font-size:14px;font-weight:500;color:#495057}.config-edit input{padding:8px 12px;border:1px solid #ced4da;border-radius:4px;font-size:14px}.config-edit input:focus{outline:none;border-color:#4caf50;box-shadow:0 0 0 3px #4caf501a}.config-actions{display:flex;gap:10px;margin-top:10px}.config-actions button{flex:1;padding:8px 16px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}.config-actions button.primary{background:#4caf50;color:#fff}.config-actions button.primary:hover{background:#45a049}.config-actions button.secondary{background:#e0e0e0;color:#666}.config-actions button.secondary:hover{background:#d0d0d0}.auth-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.auth-modal{background:#fff;border-radius:8px;padding:30px;max-width:400px;width:90%;position:relative;box-shadow:0 4px 6px #0000001a}.auth-modal-close{position:absolute;top:10px;right:10px;background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.auth-modal-close:hover{color:#000}.auth-modal h2{margin-top:0;margin-bottom:20px}.form-group{margin-bottom:15px}.form-group label{display:block;margin-bottom:5px;font-weight:500}.form-group input{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#4caf50}.auth-error{background:#ffebee;color:#c62828;padding:10px;border-radius:4px;margin-bottom:15px;border-left:4px solid #c62828}.auth-switch{margin-top:15px;text-align:center;color:#666}.auth-switch button{background:none;border:none;color:#4caf50;cursor:pointer;text-decoration:underline;padding:0;margin-left:5px}.auth-switch button:hover{color:#45a049}.app{max-width:1400px;margin:0 auto}.tab-container{margin-bottom:10px}.tab-button{padding:10px 20px;margin-right:5px;background:#333;color:#fff;border:none;cursor:pointer;border-radius:4px 4px 0 0;transition:all .2s}.tab-button:hover{background:#444}.tab-button.active{background:#4caf50;color:#fff}.tab-button-guest{padding:10px 20px;margin-right:5px;background:#f5f5f5;color:#333;border:1px solid #ddd;cursor:pointer;border-radius:4px 4px 0 0;transition:all .2s;font-weight:500}.tab-button-guest:hover{background:#e8e8e8;border-color:#4caf50;color:#2c2c2c}.tab-button-guest.active{background:#4caf50;color:#fff;border-color:#4caf50}.tab-content{display:none}.tab-content.active{display:block}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;margin:0;padding:20px}button,select{margin:5px;padding:10px 16px;font-size:14px;border-radius:6px;border:1px solid #ccc;cursor:pointer;background:#fff;transition:all .2s;font-weight:500}button:hover{background:#f0f0f0;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}button.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none}button.primary:hover{background:linear-gradient(135deg,#5568d3,#653a8f);box-shadow:0 4px 8px #667eea4d}button.danger{background:#f44336;color:#fff;border:none}button.danger:hover{background:#d32f2f;box-shadow:0 4px 8px #f443364d}button:disabled{opacity:.6;cursor:not-allowed;transform:none}.app{max-width:1400px;margin:0 auto;background:#fff;border-radius:12px;padding:30px;box-shadow:0 10px 40px #0003}.app h2{color:#333;margin-bottom:10px;font-size:28px;font-weight:600}.tab-container{display:flex;gap:10px;margin-bottom:20px;border-bottom:2px solid #e0e0e0;padding-bottom:0}.tab-button{padding:12px 24px;background:transparent;border:none;border-bottom:3px solid transparent;border-radius:0;cursor:pointer;font-size:16px;font-weight:500;color:#ffffffe6;transition:all .2s;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.3)}.tab-button:hover{color:#fff;background:#ffffff1a;transform:none}.tab-button.active{color:#fff;border-bottom-color:#fff;background:#ffffff26;font-weight:600;text-shadow:0 2px 4px rgba(0,0,0,.4)}
