/* Copyright (c) 2012 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ body { -webkit-user-select: none; font-family: Open Sans, Droid Sans Fallback, sans-serif; font-size: 84%; margin: 0; } .gallery, .gallery .content { bottom: 0; left: 0; overflow: hidden; position: absolute; right: 0; top: 0; } /* Common background for both mosaic and slide mode. */ .gallery .content { background-color: black; } /* Close button */ /* We actually want (left,top) to be (0,0) but for some weird reason this triggers :hover style on page reload which is ugly. */ .gallery > .close { cursor: pointer; left: 1px; position: absolute; top: 1px; z-index: 200; } /* The close icon is in a nested div so that its opacity can be manipulated independently from its parent (which can be dimmed when the crop frame overlaps it) */ .gallery > .close div { background-image: -webkit-image-set( url('../images/gallery/back_to_files.png') 1x, url('../images/gallery/2x/back_to_files.png') 2x); background-position: center center; background-repeat: no-repeat; height: 40px; opacity: 0; width: 64px; } .gallery[tools] > .close div { opacity: 0.5; } .gallery[tools] > .close div:hover { opacity: 1; } /* Image container and canvas elements */ .gallery .image-container { cursor: none; /* Only visible when the toolbar is active */ height: 100%; position: absolute; width: 100%; } .gallery[tools][locked] *, .gallery[tools][locked] .image-container[cursor] { cursor: wait; } .gallery[tools] .image-container[cursor='default'] { cursor: default; } .gallery[tools] .image-container[cursor='move'] { cursor: -webkit-image-set( url('../images/gallery/cursor_move.png') 1x, url('../images/gallery/2x/cursor_move.png') 2x) 15 15; } .gallery[tools] .image-container[cursor='crop'] { cursor: -webkit-image-set( url('../images/gallery/cursor_crop.png') 1x, url('../images/gallery/2x/cursor_crop.png') 2x) 15 15; } .gallery[tools] .image-container[cursor='n-resize'], .gallery[tools] .image-container[cursor='s-resize'] { cursor: -webkit-image-set( url('../images/gallery/cursor_updown.png') 1x, url('../images/gallery/2x/cursor_updown.png') 2x) 15 15; } .gallery[tools] .image-container[cursor='e-resize'], .gallery[tools] .image-container[cursor='w-resize'] { cursor: -webkit-image-set( url('../images/gallery/cursor_leftright.png') 1x, url('../images/gallery/2x/cursor_leftright.png') 2x) 15 15; } .gallery[tools] .image-container[cursor='nw-resize'], .gallery[tools] .image-container[cursor='se-resize'] { cursor: -webkit-image-set( url('../images/gallery/cursor_nwse.png') 1x, url('../images/gallery/2x/cursor_nwse.png') 2x) 15 15; } .gallery[tools] .image-container[cursor='ne-resize'], .gallery[tools] .image-container[cursor='sw-resize'] { cursor: -webkit-image-set( url('../images/gallery/cursor_swne.png') 1x, url('../images/gallery/2x/cursor_swne.png') 2x) 15 15; } .gallery .image-container > .image { /* Duration and timing function are set in Javascript. */ -webkit-transition-property: -webkit-transform, opacity; pointer-events: none; position: absolute; } .gallery .image-container > .image[fade] { opacity: 0; } /* Full resolution image is invisible unless printing. */ .gallery .image-container > canvas.fullres { display: none; } @media print { /* Do not print anything but the image content. */ .gallery > :not(.content) { display: none !important; } /* Center the printed image. */ .gallery .image-container { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; display: -webkit-box; } /* Do not print the screen resolution image. */ .gallery .image-container > canvas.image { display: none !important; } /* Print the full resolution image instead. */ .gallery .image-container > canvas.fullres { display: block !important; max-height: 100%; max-width: 100%; } /* Print video at the center of the page */ .gallery .image-container > video.image { position: auto !important; } } /* Toolbar */ .gallery > .toolbar { -webkit-box-align: stretch; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-transition: opacity 300ms ease; background-color: rgba(18, 18, 18, 0.875); border-top: 1px solid rgba(31, 31, 31, 0.875); bottom: 0; box-sizing: border-box; display: -webkit-box; height: 55px; min-width: 800px; opacity: 0; padding: 0 8px; pointer-events: none; position: absolute; width: 100%; } .gallery[tools]:not([slideshow]) > .toolbar { opacity: 1; pointer-events: auto; } /* Hide immediately when entering the slideshow. */ .gallery[tools][slideshow] > .toolbar { -webkit-transition-duration: 0; } .gallery[tools][locked] > .toolbar { pointer-events: none; } .gallery .arrow-box { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; display: -webkit-box; height: 100%; pointer-events: none; position: absolute; width: 100%; z-index: 100; } .gallery .arrow-box .arrow { opacity: 0; pointer-events: none; } .gallery .arrow-box .arrow-spacer { -webkit-box-flex: 1; pointer-events: none; } .gallery[tools] .arrow-box[active] .arrow { cursor: pointer; opacity: 1; pointer-events: auto; } /* The arrow icons are in nested divs so that their opacity can be manipulated * independently from their parent (which can be dimmed when the crop frame * overlaps it) */ .gallery .arrow div { background-position: center center; background-repeat: no-repeat; height: 193px; opacity: 0; width: 105px; } .gallery[tools] .arrow-box[active] .arrow div { opacity: 0.25; } .gallery[tools] .arrow-box[active] .arrow div:hover { opacity: 1; } .gallery .arrow.left div { background-image: -webkit-image-set( url('../images/gallery/arrow_left.png') 1x, url('../images/gallery/2x/arrow_left.png') 2x); } .gallery .arrow.right div { background-image: -webkit-image-set( url('../images/gallery/arrow_right.png') 1x, url('../images/gallery/2x/arrow_right.png') 2x); } /* Special behavior on mouse drag. Redundant .gallery attributes included to make the rules more specific */ /* Everything but the image container should become mouse-transparent */ .gallery[tools][editing][mousedrag] * { pointer-events: none; } .gallery[tools][editing][mousedrag] .image-container { pointer-events: auto; } /* The editor marks elements with 'dimmed' attribute to get them out of the way of the crop frame */ .gallery[tools][editing] *[dimmed], .gallery[tools][editing] *[dimmed] * { pointer-events: none; } .gallery[tools][editing] *[dimmed] { opacity: 0.2; } /* Filename */ .gallery .filename-spacer { position: relative; width: 270px; } .gallery .filename-spacer > * { -webkit-transition: visibility 0 linear 180ms, all 180ms linear; background-color: transparent; overflow: hidden; position: absolute; width: 260px; } .gallery .filename-spacer * { color: white; } .gallery .filename-spacer .namebox { height: 22px; top: 15px; } .gallery[editing] .filename-spacer .namebox { height: 21px; top: 5px; } .gallery .filename-spacer .namebox { background-color: transparent; border: none; box-sizing: border-box; cursor: pointer; display: block; font-size: 120%; outline: none; overflow: hidden; padding: 0 3px; position: absolute; text-overflow: ellipsis; white-space: nowrap; } .gallery .filename-spacer .namebox[disabled] { -webkit-user-select: none; cursor: default; } .gallery .filename-spacer .namebox:not([disabled]):not(:focus):hover { background-color: rgba(48, 48, 48, 1.0); } .gallery .filename-spacer .namebox:focus { background-color: white; color: black; cursor: text; } .gallery .filename-spacer .options { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: start; display: -webkit-box; opacity: 0; top: 50px; visibility: hidden; } .gallery[editing] .filename-spacer .options { opacity: 1; top: 28px; visibility: visible; } .gallery .filename-spacer .saved, .gallery .filename-spacer .overwrite-original { -webkit-transition: all linear 120ms; cursor: inherit; font-size: 90%; margin-left: 3px; margin-right: 18px; opacity: 0; pointer-events: none; } .gallery[editing] .filename-spacer .saved { color: white; opacity: 0.5; } .gallery[editing] .filename-spacer .overwrite-original, .gallery[editing] .filename-spacer .overwrite-original > * { cursor: pointer; opacity: 1; pointer-events: auto; } .gallery[editing] .options[saved] .overwrite-original { opacity: 0.5; } .gallery[editing] .options[saved] .overwrite-original, .gallery[editing] .options[saved] .overwrite-original > * { cursor: default; pointer-events: none; } .gallery .filename-spacer .overwrite-original input { margin-bottom: -2px; margin-right: 6px; } .gallery .filename-spacer .saved[highlighted] { -webkit-transform: scaleX(1.1) scaleY(1.1) rotate(0); opacity: 1; } /* Bubble */ .gallery .toolbar .bubble { bottom: 65px; font-size: 85%; left: 50px; position: absolute; width: 220px; } .gallery:not([editing]) .toolbar .bubble { display: none; } /* Toolbar buttons */ .gallery .button-spacer { -webkit-box-flex: 1; display: -webkit-box; } /* Thumbnails */ .gallery .ribbon-spacer { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; display: -webkit-box; height: 100%; left: 280px; position: absolute; right: 280px; } .gallery .toolbar .ribbon { -webkit-box-flex: 0; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-transition: opacity 180ms linear, visibility 0 linear; display: -webkit-box; height: 100%; overflow: hidden; z-index: 0; } .gallery[editing] .toolbar .ribbon { -webkit-transition-delay: 0, 180ms; opacity: 0; visibility: hidden; } .gallery .ribbon-image { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; -webkit-transition: all 180ms linear; border: 2px solid rgba(255, 255, 255, 0); /* transparent white */ cursor: pointer; display: -webkit-box; height: 47px; margin: 2px; overflow: hidden; width: 47px; } .ribbon-image[vanishing='smooth'] { border-left-width: 0; border-right-width: 0; margin-left: 0; margin-right: 0; width: 0; } .gallery .ribbon-image[selected] { border: 2px solid rgba(255, 233, 168, 1); } .gallery .toolbar .ribbon.fade-left { -webkit-mask-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 1) 40px); } .gallery .toolbar .ribbon.fade-right { -webkit-mask-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 1) 40px); } .gallery .toolbar .ribbon.fade-left.fade-right { -webkit-mask-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 1) 40px, rgba(0, 0, 0, 1) 230px, rgba(0, 0, 0, 0) 100%); } .gallery .image-wrapper { background-size: 45px 45px; border: 1px solid rgba(0, 0, 0, 0); /* transparent black */ height: 45px; overflow: hidden; position: relative; width: 45px; } .gallery .image-wrapper > img { position: absolute; } /* Editor buttons */ .gallery .edit-bar-spacer { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; -webkit-transition: opacity 180ms linear, visibility 0 linear 180ms; display: -webkit-box; height: 100%; left: 280px; opacity: 0; position: absolute; right: 280px; visibility: hidden; } .gallery .toolbar .edit-main { -webkit-box-orient: horizontal; -webkit-box-pack: center; color: white; display: -webkit-box; height: 55px; overflow: visible; } .gallery[editing] .edit-bar-spacer { -webkit-transition-delay: 100ms, 100ms; opacity: 1.0; pointer-events: auto; visibility: visible; } .gallery > .toolbar button { -webkit-box-align: center; -webkit-box-flex: 0; -webkit-box-orient: horizontal; -webkit-box-pack: end; background-color: rgba(0, 0, 0, 0); background-position: center; background-repeat: no-repeat; border: none; box-sizing: content-box; color: white; cursor: pointer; display: -webkit-box; height: 40px; margin: 8px 0 7px 3px; min-width: 40px; /* Reset. */ opacity: 0.99; /* Workaround for http://crosbug.com/21065 */ padding: 0; position: relative; width: 40px; z-index: 10; } /* By default, labels are hidden. */ .gallery > .toolbar button span { display: none; } /* Show labels if there is enough space. */ @media (min-width: 1000px) { .gallery .edit-main button { background-position: 5px center; min-width: 0; /* Reset. */ padding: 0 10px 0 35px; width: auto; } .gallery > .toolbar button span { display: inline; } } .gallery > .toolbar button:hover { background-color: rgba(31, 31, 31, 1); color: white; } .gallery > .toolbar button:active, .gallery > .toolbar button[pressed], .gallery > .toolbar button[pressed]:hover { background-color: rgba(240, 240, 240, 1); color: black; } .gallery > .toolbar button.autofix { background-image: -webkit-image-set( url('../images/gallery/icon_autofix.png') 1x, url('../images/gallery/2x/icon_autofix.png') 2x); } .gallery > .toolbar button.autofix:active, .gallery > .toolbar button.autofix[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_autofix_selected.png') 1x, url('../images/gallery/2x/icon_autofix_selected.png') 2x); } .gallery > .toolbar button.crop { background-image: -webkit-image-set( url('../images/gallery/icon_crop.png') 1x, url('../images/gallery/2x/icon_crop.png') 2x); } .gallery > .toolbar button.crop:active, .gallery > .toolbar button.crop[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_crop_selected.png') 1x, url('../images/gallery/2x/icon_crop_selected.png') 2x); } .gallery > .toolbar button.exposure { background-image: -webkit-image-set( url('../images/gallery/icon_brightness.png') 1x, url('../images/gallery/2x/icon_brightness.png') 2x); } .gallery > .toolbar button.exposure:active, .gallery > .toolbar button.exposure[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_brightness_selected.png') 1x, url('../images/gallery/2x/icon_brightness_selected.png') 2x); } .gallery > .toolbar button.rotate_right { background-image: -webkit-image-set( url('../images/gallery/icon_rotate.png') 1x, url('../images/gallery/2x/icon_rotate.png') 2x); } .gallery > .toolbar button.rotate_right:active, .gallery > .toolbar button.rotate_right[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_rotate_selected.png') 1x, url('../images/gallery/2x/icon_rotate_selected.png') 2x); } .gallery > .toolbar button.rotate_left { background-image: -webkit-image-set( url('../images/gallery/icon_rotate_left.png') 1x, url('../images/gallery/2x/icon_rotate_left.png') 2x); } .gallery > .toolbar button.rotate_left:active, .gallery > .toolbar button.rotate_left[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_rotate_left_selected.png') 1x, url('../images/gallery/2x/icon_rotate_left_selected.png') 2x); } .gallery > .toolbar button.undo { background-image: -webkit-image-set( url('../images/gallery/icon_undo.png') 1x, url('../images/gallery/2x/icon_undo.png') 2x); } .gallery > .toolbar button.undo:active, .gallery > .toolbar button.undo[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_undo_selected.png') 1x, url('../images/gallery/2x/icon_undo_selected.png') 2x); } .gallery > .toolbar button.redo { background-image: -webkit-image-set( url('../images/gallery/icon_redo.png') 1x, url('../images/gallery/2x/icon_redo.png') 2x); position: absolute; /* Exclude from center-packing*/ } .gallery > .toolbar button.redo:active, .gallery > .toolbar button.redo[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_redo_selected.png') 1x, url('../images/gallery/2x/icon_redo_selected.png') 2x); } .gallery > .toolbar button[disabled] { opacity: 0.5; pointer-events: none; } .gallery > .toolbar button[hidden] { display: none; } .gallery[mode='slide'] > .toolbar > button.mode { background-image: -webkit-image-set( url('../images/gallery/icon_mosaic.png') 1x, url('../images/gallery/2x/icon_mosaic.png') 2x); } .gallery[mode='slide'] > .toolbar > button.mode:active { background-image: -webkit-image-set( url('../images/gallery/icon_mosaic_selected.png') 1x, url('../images/gallery/2x/icon_mosaic_selected.png') 2x); } .gallery[mode='mosaic'] > .toolbar > button.mode { background-image: -webkit-image-set( url('../images/gallery/icon_1up.png') 1x, url('../images/gallery/2x/icon_1up.png') 2x); } .gallery[mode='mosaic'] > .toolbar > button.mode:active { background-image: -webkit-image-set( url('../images/gallery/icon_1up_selected.png') 1x, url('../images/gallery/2x/icon_1up_selected.png') 2x); } .gallery > .toolbar > button.slideshow { background-image: -webkit-image-set( url('../images/gallery/icon_slideshow.png') 1x, url('../images/gallery/2x/icon_slideshow.png') 2x); } .gallery > .toolbar > button.slideshow:active, .gallery > .toolbar > button.slideshow[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_slideshow_selected.png') 1x, url('../images/gallery/2x/icon_slideshow_selected.png') 2x); } .gallery > .toolbar > button.delete { background-image: -webkit-image-set( url('../images/gallery/icon_delete.png') 1x, url('../images/gallery/2x/icon_delete.png') 2x); } .gallery > .toolbar > button.delete:active { background-image: -webkit-image-set( url('../images/gallery/icon_delete_selected.png') 1x, url('../images/gallery/2x/icon_delete_selected.png') 2x); } .gallery > .toolbar > button.edit { background-image: -webkit-image-set( url('../images/gallery/icon_edit.png') 1x, url('../images/gallery/2x/icon_edit.png') 2x); } .gallery > .toolbar > button.edit:active, .gallery > .toolbar > button.edit[pressed] { background-image: -webkit-image-set( url('../images/gallery/icon_edit_selected.png') 1x, url('../images/gallery/2x/icon_edit_selected.png') 2x); } .gallery > .toolbar > button.share { background-image: -webkit-image-set( url('../images/gallery/icon_share.png') 1x, url('../images/gallery/2x/icon_share.png') 2x); } .gallery > .toolbar > button.share:hover { background-color: rgba(31, 31, 31, 1); } .gallery[error] > .toolbar button.edit, .gallery[error] > .toolbar button.share { opacity: 0.7; pointer-events: none; } .gallery > .toolbar > button.share[disabled] { display: none; } /* Secondary toolbar (mode-specific tools) */ .gallery .edit-modal { -webkit-box-orient: horizontal; -webkit-box-pack: center; bottom: 80px; display: -webkit-box; height: 40px; pointer-events: none; position: absolute; width: 100%; } .gallery .edit-modal-wrapper[hidden] { display: none; } .gallery .edit-modal-wrapper { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; background-color: rgba(0, 0, 0, 0.75); color: white; display: -webkit-box; padding-right: 5px; pointer-events: auto; } .gallery .edit-modal .label { -webkit-box-align: center; -webkit-box-orient: horizontal; background-position: 20px center; background-repeat: no-repeat; display: -webkit-box; height: 20px; padding-left: 50px; padding-right: 10px; } .gallery .edit-modal .label.brightness { background-image: -webkit-image-set( url('../images/gallery/icon_brightness.png') 1x, url('../images/gallery/2x/icon_brightness.png') 2x); } .gallery .edit-modal .label.contrast { background-image: -webkit-image-set( url('../images/gallery/icon_contrast.png') 1x, url('../images/gallery/2x/icon_contrast.png') 2x); height: 24px; margin-left: 15px; } .gallery .edit-modal .range { -webkit-appearance: none !important; height: 3px; margin-right: 10px; margin-top: 1px; } .gallery .edit-modal .range::-webkit-slider-thumb { -webkit-appearance: none; background-image: -webkit-image-set( url('../images/gallery/slider_thumb.png') 1x, url('../images/gallery/2x/slider_thumb.png') 2x); height: 29px; width: 16px; } /* Crop frame */ .gallery .crop-overlay { -webkit-box-orient: vertical; display: -webkit-box; pointer-events: none; position: absolute; } .gallery .crop-overlay .shadow { background-color: rgba(0, 0, 0, 0.65); } .gallery .crop-overlay .middle-box { -webkit-box-flex: 1; -webkit-box-orient: horizontal; display: -webkit-box; } .gallery .crop-frame { -webkit-box-flex: 1; display: -webkit-box; position: relative; } .gallery .crop-frame div { -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.75); background-color: rgba(255, 255, 255, 1); position: absolute; } .gallery .crop-frame .horizontal { height: 1px; left: 7px; right: 7px; } .gallery .crop-frame .horizontal.top { top: 0; } .gallery .crop-frame .horizontal.bottom { bottom: 0; } .gallery .crop-frame .vertical { bottom: 7px; top: 7px; width: 1px; } .gallery .crop-frame .vertical.left { left: 0; } .gallery .crop-frame .vertical.right { right: 0; } .gallery .crop-frame .corner { border-radius: 6px; height: 13px; width: 13px; } .gallery .crop-frame .corner.left { left: -6px; } .gallery .crop-frame .corner.right { right: -6px; } .gallery .crop-frame .corner.top { top: -6px; } .gallery .crop-frame .corner.bottom { bottom: -6px; } /* Prompt/notification panel */ .gallery .prompt-wrapper { -webkit-box-orient: horizontal; -webkit-box-pack: center; display: -webkit-box; height: 100%; pointer-events: none; position: absolute; width: 100%; } .gallery .prompt-wrapper[pos=top] { -webkit-box-align: start; } .gallery .prompt-wrapper[pos=center] { -webkit-box-align: center; } .gallery .prompt-wrapper[pos=center] .close { display: none; } .gallery .prompt-wrapper > div.dimmable { -webkit-transition: opacity 220ms ease; opacity: 1; } .gallery .prompt { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-transition: all 180ms ease; background-color: rgba(0, 0, 0, 0.8); color: white; display: -webkit-box; font-size: 120%; height: 40px; opacity: 0; padding: 0 20px; position: relative; top: 5px; } .gallery .prompt[state='fadein'] { opacity: 1; top: 0; } .gallery .prompt[state='fadeout'] { opacity: 0; top: 0; } .gallery .prompt-wrapper[pos=top] .prompt { padding-right: 10px; } .gallery .prompt .close { background-image: -webkit-image-set( url('../images/gallery/butterbar_close_x.png') 1x, url('../images/gallery/2x/butterbar_close_x.png') 2x); background-position: center center; background-repeat: no-repeat; height: 16px; margin-left: 16px; opacity: 0.65; pointer-events: auto; width: 16px; } .gallery .prompt .close:hover { background-color: rgba(81, 81, 81, 1); opacity: 1.0; } .gallery .share-menu { -webkit-border-radius: 1px; -webkit-box-align: stretch; -webkit-box-orient: vertical; -webkit-box-pack: start; -webkit-transition: opacity 500ms ease-in-out; background-color: white; border: 1px solid #7f7f7f; bottom: 60px; display: -webkit-box; opacity: 1.0; padding: 8px; position: absolute; right: 10px; } .gallery .share-menu .bubble-point { background-image: -webkit-image-set( url('../images/gallery/bubble_point.png') 1x, url('../images/gallery/2x/bubble_point.png') 2x); background-position: center top; background-repeat: no-repeat; bottom: -8px; height: 8px; padding: 0; position: absolute; right: 20px; width: 20px; } .gallery .share-menu[hidden] { bottom: -100%; /* offscreen so that 'dimmed' attribute does not show it*/ opacity: 0; pointer-events: none; } .gallery .share-menu > .item { background-color: rgba(0, 0, 0, 0); background-position: 5px center; background-repeat: no-repeat; cursor: pointer; padding: 5px; padding-left: 26px; } .gallery .share-menu > .item:hover { background-color: rgba(240, 240, 240, 1); } .gallery .share-menu > div > img { display: block; margin-right: 5px; } /* Load spinner and error banner */ .gallery .spinner { background-image: url('../images/common/spinner_white.svg'); background-size: 100%; height: 32px; left: 50%; margin-left: -16px; margin-top: -16px; opacity: 0.5; position: absolute; top: 50%; width: 32px; } .gallery:not([spinner]) .spinner { display: none; } .gallery .error-banner { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; background-color: rgba(24, 24, 24, 1); background-image: -webkit-image-set( url('../images/media/error.png') 1x, url('../images/media/2x/error.png') 2x); background-position: 25px center; background-repeat: no-repeat; color: white; display: -webkit-box; height: 54px; padding-left: 70px; padding-right: 35px; } .gallery:not([error]) .error-banner { display: none; } /* Video playback support. */ .gallery video { height: 100%; position: absolute; width: 100%; } .gallery .video-controls-spacer { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; bottom: 60px; /* Just above the toolbar */ display: -webkit-box; height: 30px; left: 0; opacity: 0; pointer-events: none; position: absolute; right: 0; } .gallery[video] .video-controls-spacer { /* Animate opacity on 'tools' attribute toggle. */ /* Change opacity immediately on 'video' attribute change. */ -webkit-transition: opacity 280ms ease; } .gallery[video][tools] .video-controls-spacer { opacity: 1; } .gallery .video-controls { display: none; max-width: 800px; } .gallery[video] .video-controls { -webkit-box-flex: 1; display: -webkit-box; } .gallery[video] > .toolbar .edit-main { display: none; } /* Mosaic view. */ .mosaic { /* -webkit-transition-duration is set in Javascript. */ -webkit-transition-property: -webkit-transform; -webkit-transition-timing-function: linear; bottom: 55px; /* Toolbar height. */ left: 0; overflow-x: scroll; overflow-y: hidden; position: absolute; right: 0; top: 0; } .mosaic::-webkit-scrollbar { background: transparent; } .mosaic::-webkit-scrollbar-thumb { background: rgb(31, 31, 31); } .gallery:not([mode='mosaic']) .mosaic::-webkit-scrollbar-thumb { background: transparent; } .mosaic-tile { /* Tile's zoom factor is animated on hover. We apply the transform to the entire tile so that the image outline is included into the animation. */ -webkit-transition: -webkit-transform 150ms linear; position: absolute; } /* Mosaic tile's opacity is controlled by |visible| attribute which changes separately from .gallery[mode] */ .mosaic:not([visible]) .mosaic-tile .img-border { opacity: 0; } /* Animate tile's opacity, except for the selected tile which should show/hide instantly (this looks better when zooming to/from the slide mode). */ .mosaic-tile:not([selected]) .img-border { -webkit-transition: opacity 350ms linear; } /* Must be in sync with mosaic_mode.js. Mosaic.Layout.SPACING should be equal to top + bottom + border-top-width + border-bottom-width AND left + right + border-left-width + border-right-width */ .mosaic-tile .img-border { border: 1px solid black; /* Space between the outline and the image. */ bottom: 4px; left: 4px; outline: 2px solid transparent; overflow: hidden; position: absolute; right: 4px; top: 4px; } /* Selected and hover state are only visible when zoom transition is over. */ .mosaic[visible='normal'] .mosaic-tile[selected] .img-border { outline-color: rgb(51, 153, 255); } .mosaic[visible='normal'].hover-visible .mosaic-tile:hover { -webkit-transform: scale(1.05); z-index: 50; } .mosaic[visible='normal'].hover-visible .mosaic-tile:hover:not([selected]) .img-border { outline-color: rgb(182, 212, 252); } .mosaic-tile .img-wrapper { bottom: 0; left: 0; position: absolute; right: 0; top: 0; } .mosaic-tile .img-wrapper[generic-thumbnail], .mosaic-tile .img-wrapper:not([generic-thumbnail]) canvas { -webkit-animation: fadeIn ease-in 1; -webkit-animation-duration: 500ms; -webkit-animation-fill-mode: forwards; } @-webkit-keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* In order to do mode animated transitions smoothly we keep both mosaic and image-container but transparent. */ .gallery:not([mode='mosaic']) .mosaic, .gallery:not([mode='slide']) .image-container { pointer-events: none; } .gallery:not([mode='slide']) .ribbon, .gallery:not([mode='slide']) .arrow-box { opacity: 0; pointer-events: none; } /* Temporary. Remove this along with the delete confirmation dialog when Undo delete is implemented. */ .cr-dialog-shield { background-color: black; } /* Slideshow controls */ .slideshow-toolbar { -webkit-box-align: center; -webkit-box-orient: horizontal; -webkit-box-pack: center; bottom: 0; display: none; left: 0; padding-bottom: 6px; pointer-events: none; position: absolute; right: 0; } .gallery[tools][slideshow] .slideshow-toolbar { display: -webkit-box; } .slideshow-toolbar > div { background-position: center; background-repeat: no-repeat; height: 68px; opacity: 0.5; pointer-events: auto; width: 68px; } .slideshow-toolbar > div:hover { opacity: 1; } .slideshow-toolbar > .slideshow-play { background-image: -webkit-image-set( url('../images/gallery/slideshow-play.png') 1x, url('../images/gallery/2x/slideshow-play.png') 2x); margin-right: -2px; } .gallery[slideshow='playing'] .slideshow-toolbar > .slideshow-play { background-image: -webkit-image-set( url('../images/gallery/slideshow-pause.png') 1x, url('../images/gallery/2x/slideshow-pause.png') 2x); } .slideshow-toolbar > .slideshow-end { background-image: -webkit-image-set( url('../images/gallery/slideshow-end.png') 1x, url('../images/gallery/2x/slideshow-end.png') 2x); margin-left: -2px; }