Instant Images – One Click Unsplash Uploads - Version 3.3.0

Version Description

  • January 10, 2019 =
  • UPDATE - Removed cURL usage for downloading images in place of core copy() PHP function.
  • NEW - Adding Axios for HTTP requests
  • NEW - Removing /instant-images folder in uploads directory on plugin de-activation.
  • FIX - Added fix for directory permission issue when creating uploads/instant-images.
Download this release

Release Info

Developer dcooney
Plugin Icon 128x128 Instant Images – One Click Unsplash Uploads
Version 3.3.0
Comparing to
See all releases

Code changes from version 3.2.1 to 3.3.0

README.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: dcooney, connekthq
3
  Donate link: https://connekthq.com/donate/
4
  Tags: stock photo, unsplash, prototyping, photos, upload, media library, image upload, free photos
5
  Requires at least: 4.0
6
- Tested up to: 4.9.8
7
- Stable tag: 3.2.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -116,6 +116,12 @@ How to install Instant Images.
116
 
117
  == Changelog ==
118
 
 
 
 
 
 
 
119
  = 3.2.1 - September 25, 2018 =
120
  * NEW - Added Instant Images to media upload tabs. You can now upload a photo and insert it into a page or page immediately. Please note, this is currently not working with the Gutenberg editor.
121
  * UPDATE - Better cURL error handling (hopefully).
3
  Donate link: https://connekthq.com/donate/
4
  Tags: stock photo, unsplash, prototyping, photos, upload, media library, image upload, free photos
5
  Requires at least: 4.0
6
+ Tested up to: 5.0.3
7
+ Stable tag: 3.3.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
116
 
117
  == Changelog ==
118
 
119
+ = 3.3.0 - January 10, 2019 =
120
+ * UPDATE - Removed cURL usage for downloading images in place of core `copy()` PHP function.
121
+ * NEW - Adding Axios for HTTP requests
122
+ * NEW - Removing `/instant-images` folder in uploads directory on plugin de-activation.
123
+ * FIX - Added fix for directory permission issue when creating `uploads/instant-images`.
124
+
125
  = 3.2.1 - September 25, 2018 =
126
  * NEW - Added Instant Images to media upload tabs. You can now upload a photo and insert it into a page or page immediately. Please note, this is currently not working with the Gutenberg editor.
127
  * UPDATE - Better cURL error handling (hopefully).
admin/admin.php CHANGED
@@ -152,7 +152,7 @@ add_action('media_upload_instant_img_tab', 'media_upload_instant_images_handler'
152
  * @since 2.0
153
  */
154
  function media_instant_img_tab() {
155
- media_upload_header();
156
  instant_img_scripts();
157
  $show_settings = false;
158
  ?>
152
  * @since 2.0
153
  */
154
  function media_instant_img_tab() {
155
+ //media_upload_header();
156
  instant_img_scripts();
157
  $show_settings = false;
158
  ?>
admin/assets/js/admin.js CHANGED
File without changes
admin/includes/cta/permissions.php CHANGED
File without changes
admin/includes/settings.php CHANGED
File without changes
admin/includes/unsplash-settings.php CHANGED
File without changes
admin/views/unsplash.php CHANGED
File without changes
api/resize.php CHANGED
@@ -27,7 +27,6 @@ add_action( 'rest_api_init', function () {
27
  * @param $request $_POST
28
  * @return $response json
29
  * @since 3.0
30
-
31
  */
32
 
33
  function resize_image( WP_REST_Request $request ) {
@@ -45,89 +44,102 @@ function resize_image( WP_REST_Request $request ) {
45
  $download_h = isset($options['unsplash_download_h']) ? $options['unsplash_download_h'] : 1200; // height
46
 
47
  // Get JSON Data
48
- $data = json_decode($request->get_body()); // Get contents of request
49
-
50
- $path = sanitize_text_field($data->path); // Path on server
51
- $name = sanitize_text_field($data->filename); // name
52
- $filename = $path . $name; // full filename
53
- $filetype = wp_check_filetype( basename( $filename ), null );
54
- $title = sanitize_text_field($data->title); // Title
55
- $alt = sanitize_text_field($data->alt); // Alt text
56
- $caption = sanitize_text_field($data->caption); // Caption text
57
- $custom_filename = sanitize_title($data->custom_filename); // Custom filename
58
-
59
- $name = (!empty($custom_filename)) ? $custom_filename .'.jpg' : $name;
60
-
61
- // Resize image to max size (set in Settings)
62
- $image = wp_get_image_editor( $filename );
63
- if ( ! is_wp_error( $image ) ) {
64
- $image->resize( $download_w, $download_h, false );
65
- $image->save( $filename );
66
- }
67
-
68
- // Get upload directory
69
- $wp_upload_dir = wp_upload_dir(); // ['path'] ['basedir']
70
-
71
- // Copy file from uploads/instant-images to a media library directory.
72
- $new_filename = $wp_upload_dir['path'] .'/'. $name;
73
- $copy_file = copy($filename , $new_filename);
74
 
75
- if(!$copy_file){
76
-
77
- // Error
78
- $response = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  'success' => false,
80
- 'msg' => __('Unable to copy image to the media library. Please check your server permissions.', 'instant-images')
81
- );
82
-
83
- } else {
84
-
85
- // Build attachment array
86
- $attachment = array(
87
- 'guid'=> $wp_upload_dir['url'] . basename( $new_filename ),
88
- 'post_mime_type' => $filetype['type'],
89
- 'post_title' => $title,
90
- 'post_excerpt' => $caption,
91
- 'post_content' => '',
92
- 'post_status' => 'inherit'
93
- );
94
-
95
- $image_id = wp_insert_attachment($attachment, $new_filename, 0); // Insert as attachment
96
-
97
- update_post_meta( $image_id, '_wp_attachment_image_alt', $alt ); // Add alt text
98
-
99
- $attach_data = wp_generate_attachment_metadata( $image_id, $new_filename ); // Generate metadata
100
- wp_update_attachment_metadata( $image_id, $attach_data ); // Add metadata
101
-
102
-
103
- // Response
104
- if(file_exists($new_filename)){ // If image was uploaded temporary image
105
-
106
- // Success
107
- $response = array(
108
- 'success' => true,
109
- 'msg' => __('Image successfully uploaded to your media library!', 'instant-images'),
110
- 'id' => $image_id
111
- );
112
-
113
- }else{
114
-
115
- // Error
116
- $response = array(
117
- 'success' => false,
118
- 'msg' => __('There was an error sending the image to your media library. Please check your server permissions and confirm the upload_max_filesize setting (php.ini) is large enough for the downloaded image (8mb minimum is recommended).', 'instant-images'),
119
- 'id' => ''
120
- );
121
- }
122
- }
123
-
124
- // Delete temporary image
125
- if(file_exists($filename)){
126
- unlink($filename);
127
- }
128
-
129
- // Send response as JSON
130
- wp_send_json($response);
131
 
132
  }
133
  }
27
  * @param $request $_POST
28
  * @return $response json
29
  * @since 3.0
 
30
  */
31
 
32
  function resize_image( WP_REST_Request $request ) {
44
  $download_h = isset($options['unsplash_download_h']) ? $options['unsplash_download_h'] : 1200; // height
45
 
46
  // Get JSON Data
47
+ $body = json_decode($request->get_body(), true); // Get contents of request body
48
+ $data = json_decode($body['data']); // Get contents of data
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ if($body && $data){
51
+
52
+ $path = sanitize_text_field($data->path); // Path on server
53
+ $name = sanitize_text_field($data->filename); // name
54
+ $filename = $path . $name; // full filename
55
+ $filetype = wp_check_filetype( basename( $filename ), null );
56
+ $title = sanitize_text_field($data->title); // Title
57
+ $alt = sanitize_text_field($data->alt); // Alt text
58
+ $caption = sanitize_text_field($data->caption); // Caption text
59
+ $custom_filename = sanitize_title($data->custom_filename); // Custom filename
60
+
61
+ $name = (!empty($custom_filename)) ? $custom_filename .'.jpg' : $name;
62
+
63
+ // Resize image to max size (set in Settings)
64
+ $image = wp_get_image_editor( $filename );
65
+ if ( ! is_wp_error( $image ) ) {
66
+ $image->resize( $download_w, $download_h, false );
67
+ $image->save( $filename );
68
+ }
69
+
70
+ // Get upload directory
71
+ $wp_upload_dir = wp_upload_dir(); // ['path'] ['basedir']
72
+
73
+ // Copy file from uploads/instant-images to a media library directory.
74
+ $new_filename = $wp_upload_dir['path'] .'/'. $name;
75
+ $copy_file = @copy($filename , $new_filename);
76
+
77
+ if(!$copy_file){
78
+
79
+ // Error
80
+ $response = array(
81
+ 'success' => false,
82
+ 'msg' => __('Unable to copy image to the media library. Please check your server permissions.', 'instant-images')
83
+ );
84
+
85
+ } else {
86
+
87
+ // Build attachment array
88
+ $attachment = array(
89
+ 'guid'=> $wp_upload_dir['url'] . basename( $new_filename ),
90
+ 'post_mime_type' => $filetype['type'],
91
+ 'post_title' => $title,
92
+ 'post_excerpt' => $caption,
93
+ 'post_content' => '',
94
+ 'post_status' => 'inherit'
95
+ );
96
+
97
+ $image_id = wp_insert_attachment($attachment, $new_filename, 0); // Insert as attachment
98
+
99
+ update_post_meta( $image_id, '_wp_attachment_image_alt', $alt ); // Add alt text
100
+
101
+ $attach_data = wp_generate_attachment_metadata( $image_id, $new_filename ); // Generate metadata
102
+ wp_update_attachment_metadata( $image_id, $attach_data ); // Add metadata
103
+
104
+
105
+ // Response
106
+ if(file_exists($new_filename)){ // If image was uploaded temporary image
107
+
108
+ // Success
109
+ $response = array(
110
+ 'success' => true,
111
+ 'msg' => __('Image successfully uploaded to your media library!', 'instant-images'),
112
+ 'id' => $image_id
113
+ );
114
+
115
+ }else{
116
+
117
+ // Error
118
+ $response = array(
119
+ 'success' => false,
120
+ 'msg' => __('There was an error sending the image to your media library. Please check your server permissions and confirm the upload_max_filesize setting (php.ini) is large enough for the downloaded image (8mb minimum is recommended).', 'instant-images'),
121
+ 'id' => ''
122
+ );
123
+ }
124
+ }
125
+
126
+ // Delete temporary image
127
+ if(file_exists($filename)){
128
+ unlink($filename);
129
+ }
130
+
131
+ wp_send_json($response); // Send response as JSON
132
+
133
+ } else {
134
+
135
+ $response = array(
136
  'success' => false,
137
+ 'msg' => __('There was an error resizing the image, please try again.', 'instant-images'),
138
+ 'id' => ''
139
+ );
140
+ wp_send_json($response); // Send response as JSON
141
+
142
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
 
144
  }
145
  }
api/upload.php CHANGED
@@ -27,122 +27,110 @@ add_action( 'rest_api_init', function () {
27
  * @param $request $_POST
28
  * @return $response json
29
  * @since 3.0
30
-
31
  */
32
 
33
- function upload_image( WP_REST_Request $request ) {
34
 
35
- if (is_user_logged_in() && current_user_can( apply_filters('instant_images_user_role', 'edit_theme_options') )){
36
- error_reporting(E_ALL|E_STRICT);
 
37
 
38
  // Create /instant-images directory inside /uploads to temporarily store images
39
- $dir = INSTANT_IMG_UPLOAD_PATH;
40
- if(!is_dir($dir)){
41
- wp_mkdir_p($dir);
42
  }
43
-
44
  // Is directory writeable, if not exit with an error
45
  if (!is_writable(INSTANT_IMG_UPLOAD_PATH.'/')) {
46
- $json = json_encode(
47
  array(
48
  'error' => true,
49
  'msg' => __('Unable to save image, check your server permissions of `uploads/instant-instants`', 'instant-images')
50
  )
51
  );
52
- wp_send_json($json);
53
- }
54
-
55
-
56
- $data = json_decode($request->get_body()); // Get contents of request
57
- $id = sanitize_key($data->id); // Image ID
58
- $img = sanitize_text_field($data->image); // Image URL
59
-
60
  $path = INSTANT_IMG_UPLOAD_PATH.'/'; // Temp Image Path
61
- $url = INSTANT_IMG_UPLOAD_URL; // Full url path for image upload
62
 
63
- // Create temp. image variable
64
- $filename = $id.'.jpg';
65
- $tmp_img = $path .''.$filename;
66
 
 
 
 
 
 
67
 
68
- // Confirm cURL is enabled
69
- if(in_array ('curl', get_loaded_extensions())) {
70
-
71
- // Generate temp image from URL and store it on server for upload
72
- $ch = curl_init(); // Lets use cURL
73
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
74
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
75
- curl_setopt($ch, CURLOPT_URL, $img);
76
- curl_setopt($ch, CURLOPT_HEADER, 0);
77
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
78
- curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
79
- $picture = curl_exec($ch);
80
-
81
- // cURL error
82
- if (curl_error($ch)) {
83
- $response = array(
84
- 'error' => true,
85
- 'msg' => __('cURL Request Error:', 'instant-images') .': '. curl_error($ch),
86
- 'path' => '',
87
- 'filename' => ''
88
- );
89
- }
90
-
91
-
92
- // Success
93
- else {
94
-
95
- // Save file to server
96
- $saved_file = file_put_contents($tmp_img, $picture);
97
 
98
- // Was the temporary image saved?
99
- if ($saved_file) {
 
 
 
 
 
 
 
 
 
100
 
101
- if(file_exists($path.''.$filename)){
102
-
103
- // SUCCESS - Image saved
104
- $response = array(
105
- 'error' => false,
106
- 'msg' => __('Image successfully uploaded to server.', 'instant-images'),
107
- 'path' => $path,
108
- 'filename' => $filename
109
- );
110
-
111
- }else{
112
-
113
- // ERROR - File does NOT exist
114
- $response = array(
115
- 'error' => true,
116
- 'msg' => __('Uploaded image not found, please ensure you have proper permissions set on the uploads directory.', 'instant-images'),
117
- 'path' => '',
118
- 'filename' => ''
119
- );
120
-
121
- }
122
 
123
- } else {
124
 
125
- // ERROR - Error on save
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  $response = array(
127
  'error' => true,
128
- 'msg' => __('Unable to download image to server, please check your server permissions of the instant-images folder in your WP uploads directory.', 'instant-images'),
129
  'path' => '',
130
  'filename' => ''
131
  );
132
-
133
  }
134
-
 
 
 
 
 
 
 
 
 
 
135
  }
136
 
137
- curl_close($ch); // CLose cURL
138
  }
139
 
140
- // cURL not enabled
141
  else{
142
 
143
  $response = array(
144
  'error' => true,
145
- 'msg' => __('cURL is not enabled on your server. Please contact your server administrator.', 'instant-images'),
146
  'path' => $path,
147
  'filename' => $filename
148
  );
27
  * @param $request $_POST
28
  * @return $response json
29
  * @since 3.0
30
+ * @updated 3.3
31
  */
32
 
33
+ function upload_image( WP_REST_Request $request ) {
34
 
35
+ if (is_user_logged_in() && current_user_can( apply_filters('instant_images_user_role', 'edit_theme_options') )){
36
+
37
+ error_reporting(E_ALL|E_STRICT);
38
 
39
  // Create /instant-images directory inside /uploads to temporarily store images
40
+ if(!is_dir(INSTANT_IMG_UPLOAD_PATH)){
41
+ wp_mkdir_p(INSTANT_IMG_UPLOAD_PATH);
 
42
  }
43
+
44
  // Is directory writeable, if not exit with an error
45
  if (!is_writable(INSTANT_IMG_UPLOAD_PATH.'/')) {
46
+ $response = json_encode(
47
  array(
48
  'error' => true,
49
  'msg' => __('Unable to save image, check your server permissions of `uploads/instant-instants`', 'instant-images')
50
  )
51
  );
52
+ wp_send_json($response);
53
+ }
54
+
55
+ $body = json_decode($request->get_body(), true); // Get contents of request
56
+ $data = json_decode($body['data']); // Info about image
 
 
 
57
  $path = INSTANT_IMG_UPLOAD_PATH.'/'; // Temp Image Path
 
58
 
 
 
 
59
 
60
+ // Get data params from the $body
61
+ if($data){
62
+ $id = sanitize_key($data->id); // Image ID
63
+ $img = sanitize_text_field($data->image); // Image URL
64
+ }
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
+ // If ID and IMG not set, exit
68
+ if(!isset($id) || !isset($img)){
69
+ $response = array(
70
+ 'error' => true,
71
+ 'msg' => __('An issue occurred retrieving image info via the REST API.', 'instant-images'),
72
+ 'path' => $path,
73
+ 'filename' => $filename
74
+ );
75
+ wp_send_json($response);
76
+ }
77
+
78
 
79
+ // Create temp. image variables
80
+ $filename = $id.'.jpg';
81
+ $img_path = $path .''.$filename;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
 
 
83
 
84
+ if(function_exists('copy')){
85
+
86
+ // Save file to server using copy() function
87
+ $saved_file = @copy($img.'jpg', $img_path);
88
+
89
+ // Was the temporary image saved?
90
+ if ($saved_file) {
91
+
92
+ if(file_exists($path.''.$filename)){
93
+
94
+ // SUCCESS - Image saved
95
+ $response = array(
96
+ 'error' => false,
97
+ 'msg' => __('Image successfully uploaded to server.', 'instant-images'),
98
+ 'path' => $path,
99
+ 'filename' => $filename
100
+ );
101
+
102
+ }else{
103
+
104
+ // ERROR - File does NOT exist
105
  $response = array(
106
  'error' => true,
107
+ 'msg' => __('Uploaded image not found, please ensure you have proper permissions set on the uploads directory.', 'instant-images'),
108
  'path' => '',
109
  'filename' => ''
110
  );
111
+
112
  }
113
+
114
+ } else {
115
+
116
+ // ERROR - Error on save
117
+ $response = array(
118
+ 'error' => true,
119
+ 'msg' => __('Unable to download image to server, please check the server permissions of the instant-images folder in your WP uploads directory.', 'instant-images'),
120
+ 'path' => '',
121
+ 'filename' => ''
122
+ );
123
+
124
  }
125
 
 
126
  }
127
 
128
+ // copy() not enabled
129
  else{
130
 
131
  $response = array(
132
  'error' => true,
133
+ 'msg' => __('The core PHP copy() function is not available on your server. Please contact your server administrator to upgrade your PHP version.', 'instant-images'),
134
  'path' => $path,
135
  'filename' => $filename
136
  );
dist/css/instant-images.css CHANGED
@@ -1 +1,1371 @@
1
- @import url(//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css);html{overflow-y:scroll}body.media_page_instant-images{background:#fff}body.media_page_instant-images #wpcontent{padding-left:0;padding-bottom:40px}@media screen and (max-width:800px){body.media_page_instant-images #wpcontent{padding-bottom:0}}body.media_page_instant-images #wpbody-content{padding-bottom:0}body.media_page_instant-images #wpfooter{padding-top:0;padding-bottom:0;line-height:40px;background:#f7f7f7;border-top:1px solid #efefef;position:fixed;bottom:0;z-index:1100}body.media_page_instant-images #wpfooter p{line-height:40px}@media screen and (max-width:800px){body.media_page_instant-images #wpfooter{display:none}}.instant-img-container{font-size:14px;color:#666;position:relative}.instant-img-container *{-webkit-box-sizing:border-box;box-sizing:border-box}.instant-img-container a{color:#5d72c3;-webkit-transition:all .25s ease;-o-transition:all .25s ease;transition:all .25s ease}.instant-img-container a:hover{color:#5568ae;text-decoration:none}.instant-img-container img{max-width:100%}.instant-img-container p{color:#666;width:100%;display:block;clear:both;text-transform:none;padding:0;margin:0 0 15px;font-size:14px}.instant-img-container.loading .loading-block{display:block}.instant-img-container .error-messaging{display:none}.instant-img-container .error-messaging.active{padding:17px 17px 17px 57px;-webkit-border-radius:3px;border-radius:3px;background:#df3333;color:#fff;font-size:13px;margin-bottom:25px;display:block;position:relative}.instant-img-container .error-messaging.active:before{font-family:FontAwesome;content:"\F06A";display:block;left:17px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);position:absolute;font-size:30px;opacity:.75}.instant-img-container .header-wrap{background:#f7f7f7 url(../img/logo-48x48.png) no-repeat 25px 20px;padding:20px 25px 20px 83px;min-height:88px;overflow:hidden;border-bottom:1px solid #efefef;position:relative}@media screen and (max-width:800px){.instant-img-container .header-wrap{background-position:center 20px;padding:80px 25px 20px;text-align:center}}.instant-img-container .header-wrap h1{padding:0;margin:4px 0 0;font-weight:700;font-size:26px;max-width:70%}@media screen and (max-width:800px){.instant-img-container .header-wrap h1{max-width:100%;width:100%;text-align:center}}.instant-img-container .header-wrap h1 span{display:block;padding:8px 0 0;color:#888;font-size:15px;font-weight:400}.instant-img-container .header-wrap button{position:absolute;right:25px;bottom:26px}@media screen and (max-width:800px){.instant-img-container .header-wrap button{position:static;margin-top:20px;display:inline-block}}.instant-img-container .header-wrap button i{margin-right:2px}.instant-img-container .instant-images-wrapper{padding:0 25px;display:block;overflow:hidden;min-height:400px;background:url(../img/ajax-loader-lg.gif) no-repeat 50%}.instant-img-container .instant-images-wrapper.loaded{background:none}.instant-img-container .permissions-warning{padding:0 25px}.instant-img-container .permissions-warning .inner{border-bottom:1px solid #efefef;padding:32px 0}.instant-img-container .permissions-warning input{max-width:500px}.instant-img-container .permissions-warning h3{font-size:22px;margin:0 0 15px}.instant-img-container .permissions-warning h3 i{margin:0 2px 0 0;position:relative}.instant-img-container .permissions-warning p:first-of-type{font-size:18px;margin:0 0 2px}.instant-img-container .loading-block{display:none;padding:50px;background:url(../img/ajax-loader-lg.gif) no-repeat 50%}.instant-img-container .load-more-wrap{margin:1% 0 0;padding:25px 0;text-align:center;display:none;border-top:1px solid #efefef}.instant-img-container .load-more-wrap button{display:inline-block;margin:0;padding:12px 15px;font-size:15px;font-weight:600;-webkit-transition:all .1s ease;-o-transition:all .1s ease;transition:all .1s ease;height:auto;line-height:1;cursor:pointer;background-image:none;background-repeat:no-repeat!important;background-position:15px!important}.instant-img-container .load-more-wrap button.disabled{opacity:.3;cursor:default}.instant-img-container .cnkt-main{width:100%;float:none;background:none!important;position:relative}.instant-img-container h2,.instant-img-container h3,.instant-img-container h4{margin-top:0}.instant-img-container .save-settings p.submit{float:left;margin:0 2px 0 0;width:auto}.instant-img-container .save-settings .loading{width:46px;height:28px;display:none;float:left;background:#fff url(../img/ajax-loader.gif) no-repeat 50%}#TB_ajaxContent{clear:both;line-height:1.4em;overflow:auto;text-align:left;width:100%!important;-webkit-box-sizing:border-box;box-sizing:border-box;padding:15px!important}.cnkt-sidebar .form-table{margin:0;border:none}.cnkt-sidebar .form-table label,.cnkt-sidebar .form-table p,.cnkt-sidebar .form-table td{font-size:13px}.cnkt-sidebar .form-table label{display:block;clear:both;float:none}.cnkt-sidebar .form-table label span{opacity:.8;font-size:13px;font-style:italic}.cnkt-sidebar .form-table th{display:none}.instant-img-container .form-table td{border-top:0;padding:5px 0 20px;float:left;width:100%;margin:0}.instant-img-container .form-table tr:first-of-type td{padding:10px 0}.cnkt-main .form-msg,.cnkt-sidebar .form-table .form-msg{display:block;line-height:18px;padding:12px 12px 12px 15px;margin:15px 0 0;color:#666;background-color:#fff9ea;border-left:5px solid #dfd8c2;-webkit-border-radius:2px;border-radius:2px}.cnkt-main .form-msg span,.cnkt-sidebar .form-table .form-msg span{display:block;padding:6px 0 3px}.instant-img-container h1,.instant-img-container h3,.instant-img-container h4{color:#222;margin-top:0}.instant-img-container h4+p{margin-top:-6px}.instant-img-container p.small{font-size:12px;margin-top:-10px;opacity:.7}.instant-img-container ul{padding:0;margin:0;list-style:none}.instant-img-container input,.instant-img-container label,.instant-img-container select,.instant-img-container textarea{-webkit-box-shadow:none;box-shadow:none}.instant-img-container label{padding:5px 0}#unsplash-form-options h2,#unsplash-form-options p.desc{display:none}.instant-img-container input[type=number],.instant-img-container input[type=text],.instant-img-container textarea{padding:10px;line-height:1;border:1px solid #ccc;background:#f7f7f7;width:100%;-webkit-border-radius:2px;border-radius:2px;height:auto}.instant-img-container input[type=text]:focus,.instant-img-container textarea:focus{border-color:#999;-webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;background:#efefef}.spacer{display:block;height:40px;overflow:hidden;clear:both;width:100%}.spacer.sm{height:20px}input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fff inset}.instant-img-container .control-nav{display:block;margin:0;padding:25px 0;list-style:none;overflow:hidden}.instant-img-container .control-nav li{padding:0;margin:0 3px 0 0;float:left;background:none;font-size:18px;position:relative}.instant-img-container .control-nav li a{padding:0 24px 0 2px;height:48px;line-height:48px;display:block;color:#999;text-decoration:none;background-position:96%;background-repeat:no-repeat}.instant-img-container .control-nav li a.active{color:#111;cursor:default;font-weight:600}.instant-img-container .control-nav li a:focus,.instant-img-container .control-nav li a:hover{color:#111;outline:none;-webkit-box-shadow:none;box-shadow:none}.instant-img-container .control-nav li a.loading{background-image:url(../img/ajax-loader.gif)}@media screen and (max-width:800px){.instant-img-container .control-nav li{font-size:16px;margin:0}.instant-img-container .control-nav li a{padding-left:3px}}@media screen and (max-width:600px){.instant-img-container .control-nav li{width:33.333%;text-align:center;margin:0;padding-bottom:15px}}.instant-img-container .control-nav li.search-field{float:right;width:49%;margin:0;max-width:500px}@media screen and (max-width:600px){.instant-img-container .control-nav li.search-field{width:100%;display:block;position:static;padding-bottom:15px;text-align:left;max-width:100%}}.instant-img-container .control-nav li.search-field .searchResults{position:absolute;right:100.5%;top:7px;width:auto;height:34px;line-height:34px;padding:0 27px 0 10px;background:#ffffbf;border:1px solid #ebebae;-webkit-border-radius:3px;border-radius:3px;z-index:99;font-size:13px;font-weight:600;-webkit-transition:all .25s ease;-o-transition:all .25s ease;transition:all .25s ease;color:#444;text-shadow:0 1px 1px hsla(0,0%,100%,.3);-webkit-box-shadow:0 2px 3px rgba(0,0,0,.05);box-shadow:0 2px 3px rgba(0,0,0,.05)}.instant-img-container .control-nav li.search-field .searchResults span{cursor:help}.instant-img-container .control-nav li.search-field .searchResults a,.instant-img-container .control-nav li.search-field .searchResults span{line-height:34px}.instant-img-container .control-nav li.search-field .searchResults a{padding:0 10px;height:34px;line-height:33px;position:absolute;right:0;top:0}.instant-img-container .control-nav li.search-field .searchResults:after,.instant-img-container .control-nav li.search-field .searchResults:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;z-index:100}.instant-img-container .control-nav li.search-field .searchResults:after{border-color:hsla(62,46%,78%,0);border-left-color:#ffffbf;border-width:6px;margin-top:-6px}.instant-img-container .control-nav li.search-field .searchResults:before{border-color:transparent;border-left-color:#ebebae;border-width:7px;margin-top:-7px}.instant-img-container .control-nav li.search-field .searchResults.hide{opacity:0;visibility:hidden}.instant-img-container .control-nav li.search-field form{padding:0 1px 0 0;margin:0;position:relative;height:48px;display:block}.instant-img-container .control-nav li.search-field form:hover button{opacity:1}.instant-img-container .control-nav li.search-field input{width:100%;padding:0 45px 0 10px;border:1px solid #e1e1e1;background-color:#f7f7f7!important;height:46px;line-height:46px;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:5px;border-radius:5px;font-size:16px;-webkit-transition:padding .15s ease;-o-transition:padding .15s ease;transition:padding .15s ease}.instant-img-container .control-nav li.search-field input:focus{border-color:#999}.instant-img-container .control-nav li.search-field input.searching{padding-left:34px;background-image:url(../img/ajax-loader.gif);background-position:10px;background-repeat:no-repeat}.instant-img-container .control-nav li.search-field button{position:absolute;right:-2px;top:-1px;width:48px;height:48px;z-index:1;border:none!important;background:transparent!important;cursor:pointer;color:#666;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transition:all .25s ease;-o-transition:all .25s ease;transition:all .25s ease;opacity:.5}.instant-img-container .control-nav li.search-field button:focus,.instant-img-container .control-nav li.search-field button:hover{outline:none;color:#5d72c3}.instant-img-container .control-nav li.search-field input[type=search]::-webkit-input-placeholder{color:#ccc;font-weight:300;font-style:normal;font-size:14px}.instant-img-container .control-nav li.search-field input[type=search]:-moz-placeholder,.instant-img-container .control-nav li.search-field input[type=search]::-moz-placeholder{color:#ccc;font-weight:300;font-style:normal;font-size:14px}.instant-img-container .control-nav li.search-field input[type=search]:-ms-input-placeholder{color:#ccc;font-weight:300;font-style:normal;font-size:14px}#photos{width:100%;width:-webkit-calc(100% + 10px);width:calc(100% + 10px);margin:0 0 0 -5px;padding:0;position:relative}#photos .photo{width:20%;margin:0;padding:0 5px 10px;opacity:0;-webkit-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}#photos .photo--wrap{position:relative}#photos .photo.in-view{opacity:1}#photos .photo.in-progress .fade{opacity:0!important;visibility:hidden!important}#photos .photo .img-wrap{display:block;overflow:hidden;position:relative}@media screen and (min-width:2000px){#photos .photo{width:20%}}@media screen and (max-width:1570px){#photos .photo{width:25%}}@media screen and (max-width:1270px){#photos .photo{width:33.333333%}}@media screen and (max-width:800px){#photos .photo{width:50%}}@media screen and (max-width:600px){#photos .photo{width:100%;margin:0 0 2%}}#photos .photo:focus a.upload img{opacity:.6}#photos .photo:focus .fade{opacity:1;visibility:visible}#photos .photo:focus .fade.user{opacity:.7}#photos .photo a.upload{display:block;position:relative;background-color:#222;background-position:50%;background-repeat:no-repeat;background-image:url(../img/ajax-loader.gif);overflow:hidden}#photos .photo a.upload.loaded{background-image:none}#photos .photo a.upload:active,#photos .photo a.upload:focus{outline:none;border:none;-webkit-box-shadow:none;box-shadow:none}#photos .photo a.upload img{-webkit-transition:all .45s ease;-o-transition:all .45s ease;transition:all .45s ease;width:100%;height:auto!important;padding:0;vertical-align:top}#photos .photo a.upload .status{visibility:hidden;opacity:0;-webkit-transition:all .2575s ease-in-out;-o-transition:all .2575s ease-in-out;transition:all .2575s ease-in-out;width:60px;height:60px;line-height:60px;-webkit-border-radius:100%;border-radius:100%;position:absolute;left:50%;top:50%;z-index:5;-webkit-transform:translate(-50%,-50%) scale(1.5);-ms-transform:translate(-50%,-50%) scale(1.5);transform:translate(-50%,-50%) scale(1.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.15);box-shadow:0 0 4px rgba(0,0,0,.15)}#photos .photo a.upload .status:before{font-family:FontAwesome;display:block;color:#fff;font-size:22px;opacity:.8}#photos .photo a.upload.errors .status,#photos .photo a.upload.resizing .status,#photos .photo a.upload.success .status,#photos .photo a.upload.uploading .status{text-align:center;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(1);-ms-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}#photos .photo a.upload.uploading{cursor:default!important}#photos .photo a.upload.uploading .status{visibility:visible;opacity:1;background-color:#5d72c3}#photos .photo a.upload.uploading .status:before{content:"\F019"}#photos .photo a.upload.resizing{cursor:default!important}#photos .photo a.upload.resizing .status{visibility:visible;opacity:1;background-color:#e4c452}#photos .photo a.upload.resizing .status:before{color:#fff;content:"\F065"}#photos .photo a.upload.success{cursor:default!important}#photos .photo a.upload.success .status{visibility:visible;opacity:1;width:70px;height:70px;line-height:70px;background-color:#63d875;-webkit-border-radius:100%;border-radius:100%}#photos .photo a.upload.success .status:before{content:"\F00C";color:#fff}#photos .photo a.upload.errors{cursor:help!important}#photos .photo a.upload.errors .status{visibility:visible;opacity:1;width:60px;height:60px;line-height:60px;background-color:#df3333;-webkit-border-radius:100%;border-radius:100%}#photos .photo a.upload.errors .status:before{content:"\F12A";color:#fff;opacity:.8}#photos .photo.uploaded a.upload img{opacity:.25!important}#photos .photo.in-progress a.upload img,#photos .photo:hover a.upload img{opacity:.6}#photos .photo.in-progress .fade,#photos .photo:hover .fade{opacity:1;visibility:visible}#photos .photo.in-progress .fade.user,#photos .photo:hover .fade.user{opacity:.7}#photos .photo.in-progress .notice-msg{top:0;opacity:1}#photos .photo .fade{-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;color:#333;background:hsla(0,0%,100%,.75);-webkit-border-radius:3px;border-radius:3px;height:28px;line-height:28px;font-size:13px;opacity:0;visibility:hidden;position:absolute;left:10px;bottom:10px;z-index:6;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.25);box-shadow:0 1px 1px rgba(0,0,0,.25)}#photos .photo .fade.likes{padding:0 8px;display:inline-block;width:auto;left:auto;right:45px;cursor:default!important}#photos .photo .fade.likes i{color:#d13714;line-height:29px;margin-right:1px}#photos .photo .fade.edit-photo,#photos .photo .fade.external-photo{padding:0 8px;display:inline-block;width:auto;left:auto;right:10px;cursor:pointer}#photos .photo .fade.edit-photo i,#photos .photo .fade.external-photo i{line-height:29px;position:relative;left:1px}#photos .photo .fade.edit-photo:hover,#photos .photo .fade.external-photo:hover{background:hsla(0,0%,100%,.95)}#photos .photo .fade.external-photo i{position:relative;top:1px}#photos .photo .fade.edit-photo{top:10px}#photos .photo .fade.edit-photo i{position:static}#photos .photo .fade.user{background:none;color:#fff;font-size:14px;max-width:65%;cursor:pointer;text-decoration:none;border:none;-webkit-box-shadow:none!important;box-shadow:none!important;line-height:22px;bottom:5px}#photos .photo .fade.user:hover{opacity:.95}#photos .photo .fade.user .user-wrap{position:relative;padding-left:28px;display:block;width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}#photos .photo .fade.user img{width:22px;max-width:22px;-webkit-border-radius:100%;border-radius:100%;position:absolute;left:0;top:0}#photos .photo .notice-msg{position:absolute;z-index:999;top:-40px;left:0;height:40px;line-height:40px;width:100%;background:rgba(0,0,0,.6);text-align:center;color:#e0e4f5;font-size:13px;margin:0;padding:0;-webkit-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:0;z-index:9999}#photos .edit-screen{position:absolute;left:0;top:0;width:100%;height:100%;z-index:999;background:hsla(0,0%,100%,.9);opacity:0;visibility:hidden;-webkit-transition:all .25s ease;-o-transition:all .25s ease;transition:all .25s ease;padding:8px 8px 0;overflow-y:auto;-webkit-overflow-scrolling:touch;border:1px solid #e1e1e1;-webkit-transform:scale(1.025);-ms-transform:scale(1.025);transform:scale(1.025)}#photos .edit-screen.editing{visibility:visible;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#photos .edit-screen--controls,#photos .edit-screen--title{display:block;background:#f7f7f7;border:1px solid #e1e1e1;padding:15px;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0}#photos .edit-screen--controls .button-primary,#photos .edit-screen--title .button-primary{float:right}#photos .edit-screen--controls{-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px}#photos .edit-screen--title{border-bottom:none}#photos .edit-screen--title p{font-size:12px;line-height:1.25;margin:0;color:#999}#photos .edit-screen--title p.heading{color:#222;margin:0 0 5px;font-weight:600;text-transform:uppercase}#photos .edit-screen label{margin:0;padding:15px;display:block;background:#fff;border:1px solid #e1e1e1;border-bottom:none;-webkit-border-radius:2px;border-radius:2px;position:relative}#photos .edit-screen span{display:block;font-size:11px;text-transform:uppercase;font-weight:600;margin:0 0 5px;color:#222;line-height:1}#photos .edit-screen textarea{resize:none}#photos .edit-screen input{font-size:12px;padding:0 5px;margin:0;height:30px;line-height:30px}#photos .edit-screen em{position:absolute;bottom:15px;right:15px;height:30px;line-height:30px;background:#777;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;color:#e1e1e1;font-style:normal;font-size:11px;padding:0 10px}.instant-images-settings{display:none;background-color:#efefef;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7}.instant-images-settings .cnkt-sidebar{padding:20px 25px;overflow:hidden}.instant-images-settings .cnkt-sidebar .cta{float:left;width:50%}@media screen and (max-width:800px){.instant-images-settings .cnkt-sidebar .cta{float:none!important;width:100%!important}}.instant-images-settings .cnkt-sidebar .cta.ii-settings{width:31.333%}.instant-images-settings .cnkt-sidebar .cta.ii-plugins{width:68.666%;width:-webkit-calc(68.666% - 25px);width:calc(68.666% - 25px);float:right}.instant-images-settings .cnkt-sidebar .cta h2{border:none;padding:17px 20px 3px;font-size:16px}.instant-images-settings .cnkt-sidebar .cta h2.w-border{border-top:1px solid #e7e7e7}.instant-images-settings .cnkt-sidebar .cta h2+p{padding:0 20px 15px;margin:0!important;border-bottom:1px solid #e7e7e7}.instant-images-settings .cnkt-sidebar .cta h2,.instant-images-settings .cnkt-sidebar .cta h2+p{background:#f7f7f7;margin:0}.instant-images-settings .cnkt-sidebar .cta ul.whats-new{list-style:disc;padding:0 0 10px 20px}.instant-images-settings .cnkt-sidebar .cta ul.whats-new li{margin:10px 0 0}.instant-images-settings .cnkt-sidebar .cta ul.whats-new li pre{display:inline-block;margin:0;padding:3px;background:#f7f7f7;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 0 1px #efefef;box-shadow:0 0 0 1px #efefef}.instant-images-settings .cnkt-sidebar .cta{background:#fff;padding:0 0 20px;margin:0 0 20px;overflow:hidden;position:relative;border:1px solid #e7e7e7}.instant-images-settings .cnkt-sidebar .cta.padding-bottom{padding-bottom:66px}.instant-images-settings .cnkt-sidebar .cnkt-sidebar h3,.instant-images-settings .cnkt-sidebar .cnkt-sidebar h4{margin-top:0}.instant-images-settings .cnkt-sidebar .cta-wrap{display:block;padding:10px 20px}.instant-images-settings .cnkt-sidebar .cta-wrap h4{padding:10px 0 7px;margin:0}.instant-images-settings .cnkt-sidebar .cta-wrap h4 span{display:inline-block;line-height:1;padding:8px 10px;-webkit-border-radius:2px;border-radius:2px;background:#ffc;color:#666}.instant-images-settings .cnkt-sidebar .cnkt-plugin-installer .plugin{width:48%;margin:2% 1% 0}@media screen and (max-width:1170px){.instant-images-settings .cnkt-sidebar .cnkt-plugin-installer .plugin{width:100%;margin:2% 0 0}}.instant-images-settings .cnkt-sidebar .cnkt-plugin-installer .plugin h2{border:none;padding:0;font-size:16px}.instant-images-settings .cnkt-sidebar .cnkt-plugin-installer .plugin h2+p{padding:0;margin:0!important;border-bottom:none}.instant-images-settings .cnkt-sidebar .cnkt-plugin-installer .plugin h2,.instant-images-settings .cnkt-sidebar .cnkt-plugin-installer .plugin h2+p{background:none;margin:0}.instant-images-settings table{margin-top:5px}.instant-img-container[data-media-popup=true]{background:#fff}.instant-img-container[data-media-popup=true] .header-wrap{display:none}.instant-img-container[data-media-popup=true] .instant-images-wrapper{padding:0 16px}.no-results{display:none;padding:150px 100px;text-align:center}.no-results.show{display:block}.no-results h3{font-size:24px;line-height:29px;margin:0 0 10px}.no-results p{font-size:16px;margin:0}@media screen and (max-width:800px){.no-results{padding:50px}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url(//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css);html {
2
+ overflow-y: scroll;
3
+ }
4
+
5
+ body.media_page_instant-images {
6
+ background: #fff;
7
+ }
8
+
9
+ body.media_page_instant-images #wpcontent {
10
+ padding-left: 0;
11
+ padding-bottom: 40px;
12
+ }
13
+
14
+ @media screen and (max-width: 800px) {
15
+ body.media_page_instant-images #wpcontent {
16
+ padding-bottom: 0;
17
+ }
18
+ }
19
+
20
+ body.media_page_instant-images #wpbody-content {
21
+ padding-bottom: 0;
22
+ }
23
+
24
+ body.media_page_instant-images #wpfooter {
25
+ padding-top: 0;
26
+ padding-bottom: 0;
27
+ line-height: 40px;
28
+ background: #f7f7f7;
29
+ border-top: 1px solid #efefef;
30
+ position: fixed;
31
+ bottom: 0;
32
+ z-index: 1100;
33
+ }
34
+
35
+ body.media_page_instant-images #wpfooter p {
36
+ line-height: 40px;
37
+ }
38
+
39
+ @media screen and (max-width: 800px) {
40
+ body.media_page_instant-images #wpfooter {
41
+ display: none;
42
+ }
43
+ }
44
+
45
+ .instant-img-container {
46
+ font-size: 14px;
47
+ color: #666;
48
+ position: relative;
49
+ /*
50
+ Admin Screens - Setting page
51
+ wp-admin/upload.php?page=instant-images
52
+ */
53
+ }
54
+
55
+ .instant-img-container * {
56
+ -webkit-box-sizing: border-box;
57
+ box-sizing: border-box;
58
+ }
59
+
60
+ .instant-img-container a {
61
+ color: #5d72c3;
62
+ -webkit-transition: all 0.25s ease;
63
+ -o-transition: all 0.25s ease;
64
+ transition: all 0.25s ease;
65
+ }
66
+
67
+ .instant-img-container a:hover {
68
+ color: #5568ae;
69
+ text-decoration: none;
70
+ }
71
+
72
+ .instant-img-container img {
73
+ max-width: 100%;
74
+ }
75
+
76
+ .instant-img-container p {
77
+ display: block;
78
+ color: #666;
79
+ width: 100%;
80
+ display: block;
81
+ clear: both;
82
+ text-transform: none;
83
+ padding: 0;
84
+ margin: 0 0 15px;
85
+ font-size: 14px;
86
+ }
87
+
88
+ .instant-img-container.loading .loading-block {
89
+ display: block;
90
+ }
91
+
92
+ .instant-img-container .error-messaging {
93
+ display: none;
94
+ }
95
+
96
+ .instant-img-container .error-messaging.active {
97
+ padding: 17px 17px 17px 57px;
98
+ -webkit-border-radius: 3px;
99
+ border-radius: 3px;
100
+ background: #df3333;
101
+ color: #fff;
102
+ font-size: 13px;
103
+ margin-bottom: 25px;
104
+ display: block;
105
+ position: relative;
106
+ }
107
+
108
+ .instant-img-container .error-messaging.active:before {
109
+ font-family: 'FontAwesome';
110
+ content: '\F06A';
111
+ display: block;
112
+ left: 17px;
113
+ top: 50%;
114
+ -webkit-transform: translateY(-50%);
115
+ -ms-transform: translateY(-50%);
116
+ transform: translateY(-50%);
117
+ position: absolute;
118
+ font-size: 30px;
119
+ opacity: 0.75;
120
+ }
121
+
122
+ .instant-img-container .header-wrap {
123
+ background: #f7f7f7 url(../img/logo-48x48.png) no-repeat 25px 20px;
124
+ padding: 20px 25px 20px 83px;
125
+ min-height: 88px;
126
+ overflow: hidden;
127
+ border-bottom: 1px solid #efefef;
128
+ position: relative;
129
+ }
130
+
131
+ @media screen and (max-width: 800px) {
132
+ .instant-img-container .header-wrap {
133
+ background-position: center 20px;
134
+ padding: 80px 25px 20px;
135
+ text-align: center;
136
+ }
137
+ }
138
+
139
+ .instant-img-container .header-wrap h1 {
140
+ padding: 0;
141
+ margin: 4px 0 0;
142
+ font-weight: 700;
143
+ font-size: 26px;
144
+ max-width: 70%;
145
+ }
146
+
147
+ @media screen and (max-width: 800px) {
148
+ .instant-img-container .header-wrap h1 {
149
+ max-width: 100%;
150
+ width: 100%;
151
+ text-align: center;
152
+ }
153
+ }
154
+
155
+ .instant-img-container .header-wrap h1 span {
156
+ display: block;
157
+ padding: 8px 0 0;
158
+ color: #888;
159
+ font-size: 15px;
160
+ font-weight: 400;
161
+ }
162
+
163
+ .instant-img-container .header-wrap button {
164
+ position: absolute;
165
+ right: 25px;
166
+ bottom: 26px;
167
+ }
168
+
169
+ @media screen and (max-width: 800px) {
170
+ .instant-img-container .header-wrap button {
171
+ position: static;
172
+ margin-top: 20px;
173
+ display: inline-block;
174
+ }
175
+ }
176
+
177
+ .instant-img-container .header-wrap button i {
178
+ margin-right: 2px;
179
+ }
180
+
181
+ .instant-img-container .instant-images-wrapper {
182
+ padding: 0 25px;
183
+ display: block;
184
+ overflow: hidden;
185
+ min-height: 400px;
186
+ background: url(../img/ajax-loader-lg.gif) no-repeat center center;
187
+ }
188
+
189
+ .instant-img-container .instant-images-wrapper.loaded {
190
+ background: none;
191
+ }
192
+
193
+ .instant-img-container .permissions-warning {
194
+ padding: 0 25px;
195
+ }
196
+
197
+ .instant-img-container .permissions-warning .inner {
198
+ border-bottom: 1px solid #efefef;
199
+ padding: 32px 0;
200
+ }
201
+
202
+ .instant-img-container .permissions-warning input {
203
+ max-width: 500px;
204
+ }
205
+
206
+ .instant-img-container .permissions-warning h3 {
207
+ font-size: 22px;
208
+ margin: 0 0 15px;
209
+ }
210
+
211
+ .instant-img-container .permissions-warning h3 i {
212
+ margin: 0 2px 0 0;
213
+ position: relative;
214
+ }
215
+
216
+ .instant-img-container .permissions-warning p:first-of-type {
217
+ font-size: 18px;
218
+ margin: 0 0 2px;
219
+ }
220
+
221
+ .instant-img-container .loading-block {
222
+ display: none;
223
+ padding: 50px;
224
+ background: url(../img/ajax-loader-lg.gif) no-repeat center center;
225
+ }
226
+
227
+ .instant-img-container .load-more-wrap {
228
+ margin: 1% 0 0;
229
+ padding: 25px 0;
230
+ text-align: center;
231
+ display: none;
232
+ border-top: 1px solid #efefef;
233
+ }
234
+
235
+ .instant-img-container .load-more-wrap button {
236
+ display: inline-block;
237
+ margin: 0;
238
+ padding: 12px 15px;
239
+ font-size: 15px;
240
+ font-weight: 600;
241
+ -webkit-transition: all 0.1s ease;
242
+ -o-transition: all 0.1s ease;
243
+ transition: all 0.1s ease;
244
+ height: auto;
245
+ line-height: 1;
246
+ cursor: pointer;
247
+ background-image: none;
248
+ background-repeat: no-repeat !important;
249
+ background-position: 15px center !important;
250
+ }
251
+
252
+ .instant-img-container .load-more-wrap button.disabled {
253
+ opacity: 0.3;
254
+ cursor: default;
255
+ }
256
+
257
+ /*
258
+ Columns
259
+ */
260
+ .instant-img-container .cnkt-main {
261
+ width: 100%;
262
+ float: none;
263
+ background: none !important;
264
+ position: relative;
265
+ }
266
+
267
+ .instant-img-container h2,
268
+ .instant-img-container h3,
269
+ .instant-img-container h4 {
270
+ margin-top: 0;
271
+ }
272
+
273
+ /*
274
+ * Settings
275
+ */
276
+ .instant-img-container .save-settings p.submit {
277
+ float: left;
278
+ margin: 0 2px 0 0;
279
+ width: auto;
280
+ }
281
+
282
+ .instant-img-container .save-settings .loading {
283
+ width: 46px;
284
+ height: 28px;
285
+ display: none;
286
+ float: left;
287
+ background: #fff url(../img/ajax-loader.gif) no-repeat center center;
288
+ }
289
+
290
+ /*
291
+ * Thickbox styles
292
+ */
293
+ #TB_ajaxContent {
294
+ clear: both;
295
+ line-height: 1.4em;
296
+ overflow: auto;
297
+ text-align: left;
298
+ width: 100% !important;
299
+ -webkit-box-sizing: border-box;
300
+ box-sizing: border-box;
301
+ padding: 15px !important;
302
+ }
303
+
304
+ /* Table */
305
+ .cnkt-sidebar .form-table {
306
+ margin: 0;
307
+ border: none;
308
+ }
309
+
310
+ .cnkt-sidebar .form-table td,
311
+ .cnkt-sidebar .form-table label,
312
+ .cnkt-sidebar .form-table p {
313
+ font-size: 13px;
314
+ }
315
+
316
+ .cnkt-sidebar .form-table label {
317
+ display: block;
318
+ clear: both;
319
+ float: none;
320
+ }
321
+
322
+ .cnkt-sidebar .form-table label span {
323
+ opacity: 0.8;
324
+ font-size: 13px;
325
+ font-style: italic;
326
+ }
327
+
328
+ .cnkt-sidebar .form-table th {
329
+ display: none;
330
+ }
331
+
332
+ .instant-img-container .form-table td {
333
+ border-top: 0;
334
+ padding: 5px 0 20px;
335
+ float: left;
336
+ width: 100%;
337
+ margin: 0;
338
+ }
339
+
340
+ .instant-img-container .form-table tr:first-of-type td {
341
+ padding: 10px 0;
342
+ }
343
+
344
+ .cnkt-sidebar .form-table .form-msg,
345
+ .cnkt-main .form-msg {
346
+ display: block;
347
+ line-height: 18px;
348
+ padding: 12px 12px 12px 15px;
349
+ margin: 15px 0 0;
350
+ color: #666;
351
+ background-color: #fff9ea;
352
+ border-left: 5px solid #dfd8c2;
353
+ -webkit-border-radius: 2px;
354
+ border-radius: 2px;
355
+ }
356
+
357
+ .cnkt-sidebar .form-table .form-msg span,
358
+ .cnkt-main .form-msg span {
359
+ display: block;
360
+ padding: 6px 0 3px;
361
+ }
362
+
363
+ .instant-img-container h1,
364
+ .instant-img-container h3,
365
+ .instant-img-container h4 {
366
+ color: #222;
367
+ margin-top: 0;
368
+ }
369
+
370
+ .instant-img-container h4 + p {
371
+ margin-top: -6px;
372
+ }
373
+
374
+ .instant-img-container p.small {
375
+ font-size: 12px;
376
+ margin-top: -10px;
377
+ opacity: 0.7;
378
+ }
379
+
380
+ .instant-img-container ul {
381
+ padding: 0;
382
+ margin: 0;
383
+ list-style: none;
384
+ }
385
+
386
+ .instant-img-container label,
387
+ .instant-img-container input,
388
+ .instant-img-container select,
389
+ .instant-img-container textarea {
390
+ -webkit-box-shadow: none;
391
+ box-shadow: none;
392
+ }
393
+
394
+ .instant-img-container label {
395
+ padding: 5px 0;
396
+ }
397
+
398
+ #unsplash-form-options h2,
399
+ #unsplash-form-options p.desc {
400
+ display: none;
401
+ }
402
+
403
+ .instant-img-container input[type=text],
404
+ .instant-img-container input[type=number],
405
+ .instant-img-container textarea {
406
+ padding: 10px;
407
+ line-height: 1;
408
+ border: 1px solid #ccc;
409
+ background: #f7f7f7;
410
+ width: 100%;
411
+ -webkit-border-radius: 2px;
412
+ border-radius: 2px;
413
+ height: auto;
414
+ }
415
+
416
+ .instant-img-container input[type=text]:focus,
417
+ .instant-img-container textarea:focus {
418
+ border-color: #999;
419
+ -webkit-box-shadow: 0 0 3px #ccc;
420
+ box-shadow: 0 0 3px #ccc;
421
+ background: #efefef;
422
+ }
423
+
424
+ /* Helpers */
425
+ .spacer {
426
+ display: block;
427
+ height: 40px;
428
+ overflow: hidden;
429
+ clear: both;
430
+ width: 100%;
431
+ }
432
+
433
+ .spacer.sm {
434
+ height: 20px;
435
+ }
436
+
437
+ input:-webkit-autofill {
438
+ -webkit-box-shadow: 0 0 0px 1000px white inset;
439
+ }
440
+
441
+ .instant-img-container .control-nav {
442
+ display: block;
443
+ margin: 0;
444
+ padding: 25px 0;
445
+ list-style: none;
446
+ overflow: hidden;
447
+ }
448
+
449
+ .instant-img-container .control-nav li {
450
+ padding: 0;
451
+ margin: 0 3px 0 0;
452
+ float: left;
453
+ background: none;
454
+ font-size: 18px;
455
+ position: relative;
456
+ }
457
+
458
+ .instant-img-container .control-nav li a {
459
+ padding: 0 24px 0 2px;
460
+ height: 48px;
461
+ line-height: 48px;
462
+ display: block;
463
+ color: #999;
464
+ text-decoration: none;
465
+ background-position: 96% center;
466
+ background-repeat: no-repeat;
467
+ }
468
+
469
+ .instant-img-container .control-nav li a.active {
470
+ color: #111;
471
+ cursor: default;
472
+ font-weight: 600;
473
+ }
474
+
475
+ .instant-img-container .control-nav li a:hover, .instant-img-container .control-nav li a:focus {
476
+ color: #111;
477
+ outline: none;
478
+ -webkit-box-shadow: none;
479
+ box-shadow: none;
480
+ }
481
+
482
+ .instant-img-container .control-nav li a.loading {
483
+ background-image: url(../img/ajax-loader.gif);
484
+ }
485
+
486
+ @media screen and (max-width: 800px) {
487
+ .instant-img-container .control-nav li {
488
+ font-size: 16px;
489
+ margin: 0;
490
+ }
491
+ .instant-img-container .control-nav li a {
492
+ padding-left: 3px;
493
+ }
494
+ }
495
+
496
+ @media screen and (max-width: 600px) {
497
+ .instant-img-container .control-nav li {
498 <