.app{display:flex;flex-direction:column;height:100vh;background:#1a1a2e;color:#eee}.header{padding:16px 24px;background:#16213e;border-bottom:1px solid #0f3460;display:flex;align-items:center;gap:24px}.header h1{font-size:20px;font-weight:600;color:#e94560}.upload-section{display:flex;align-items:center;gap:16px}.upload-btn{background:#e94560;color:#fff;border:none;padding:10px 20px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s}.upload-btn:hover{background:#c93d54}.upload-btn:disabled{background:#555;cursor:not-allowed}.file-info{font-size:13px;color:#aaa}.main-content{display:flex;flex:1;overflow:hidden}.sidebar{width:280px;background:#16213e;border-right:1px solid #0f3460;display:flex;flex-direction:column;overflow-y:auto}.filter-section{padding:16px;border-bottom:1px solid #0f3460}.filter-section h3{font-size:13px;font-weight:600;color:#e94560;text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px}.filter-group{display:flex;flex-direction:column;gap:8px}.filter-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#1a1a2e;border-radius:6px;cursor:pointer;transition:background .2s}.filter-item:hover{background:#0f3460}.filter-item.selected{background:#0f3460;border:1px solid #e94560}.filter-item input[type=checkbox]{accent-color:#e94560}.filter-item label{font-size:13px;cursor:pointer;flex:1}.filter-item span.count{font-size:11px;color:#888;background:#0f3460;padding:2px 8px;border-radius:10px}.object-list-section{flex:1;overflow-y:auto;padding:16px}.object-list-section h3{font-size:13px;font-weight:600;color:#e94560;text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;position:sticky;top:0;background:#16213e;padding:8px 0}.object-table{width:100%;border-collapse:collapse;font-size:12px}.object-table th{text-align:left;padding:8px;background:#0f3460;color:#aaa;font-weight:500;position:sticky;top:32px}.object-table td{padding:8px;border-bottom:1px solid #0f3460}.object-table tr:hover td{background:#0f3460;cursor:pointer}.viewport{flex:1;position:relative;background:#0a0a15}.viewport-info{position:absolute;top:12px;left:12px;background:#16213ee6;padding:8px 12px;border-radius:6px;font-size:12px;color:#aaa}.viewport-controls{position:absolute;bottom:12px;left:12px;display:flex;gap:8px}.viewport-controls button{background:#16213e;color:#eee;border:1px solid #0f3460;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:12px;transition:background .2s}.viewport-controls button:hover{background:#0f3460}.drop-zone{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px dashed #0f3460;margin:20px;border-radius:16px;transition:border-color .2s,background .2s}.drop-zone.drag-over{border-color:#e94560;background:#e945600d}.drop-zone-icon{font-size:64px;margin-bottom:16px}.drop-zone-text{font-size:18px;color:#aaa;margin-bottom:8px}.drop-zone-subtext{font-size:13px;color:#666}.drop-zone input[type=file]{display:none}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#0a0a15e6}.spinner{width:48px;height:48px;border:4px solid #0f3460;border-top-color:#e94560;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-size:14px;color:#aaa}
