VulpesOS/overrides/gallery.gaiamobile.org/style/gallery.css
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

922 lines
21 KiB
CSS

* { -moz-box-sizing: border-box;
/**
By default do not allow any user text selection, only enable
for certain parts on a per-element/region area
*/
-moz-user-select: none;
}
html {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
overflow: hidden;
font-size: 10px;
}
body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
color: #fff;
font-size: 1rem;
background-color: #0E1214;
overflow: hidden;
}
section {
margin: 0;
padding: 0;
overflow: hidden;
font-size: 1.4rem;
}
.large-only {
display: none !important;
}
.hidden {
display: none;
}
/* hide sections from screen reader when modal dialogs are showing */
body.showing-dialog > section {
visibility: hidden;
}
/* All of the main views fill the screen */
#fullscreen-view, #edit-view, #crop-view, #thumbnail-views {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
overflow: hidden;
font-size: 2.1rem;
/* display will be determined by LAYOUT_MODE */
display: none;
}
/* Hide unresolved gaia-header elements */
gaia-header:unresolved {
visibility:hidden;
}
#thumbnail-views > gaia-header {
position: absolute;
width: 100%;
top: 0;
}
/* Bug 1111735 - !important is needed because of the shadow CSS polyfill */
.thumbnails-list, .thumbnails-select, .thumbnails-pick {
/* display will be determined by LAYOUT_MODE */
display: none !important;
}
body.thumbnailListView .thumbnails-list,
body.thumbnailSelectView .thumbnails-select,
body.pickView .thumbnails-pick {
display: block !important;
}
body.thumbnailListView #thumbnail-views,
body.thumbnailSelectView #thumbnail-views,
body.pickView #thumbnail-views,
body.fullscreenView #fullscreen-view,
body.editView #edit-view,
body.cropView #crop-view {
display: block;
}
/* Header in default thumbnail list in tablets only, see gallery_tablet.css */
body.thumbnailListView #thumbnails-list-top {
display: none !important;
}
/*
* The overlay content area holds the text of the overlay.
* It has borders and a less transparent background so that
* the overlay text shows up more clearly
*/
#overlay-content {
background:
image-set(url("images/ui/pattern.png") 1x, url("images/ui/pattern@1.5x.png") 1.5x, url("images/ui/pattern@2x.png") 2x, url("images/ui/pattern@2.25x.png") 2.25x) repeat left top,
image-set(url("images/ui/gradient.png") 1x, url("images/ui/gradient@1.5x.png") 1.5x, url("images/ui/gradient@2x.png") 2x, url("images/ui/gradient@2.25x.png") 2.25x) no-repeat left top;
background-size: auto auto, 100% 100%;
/* We can't use shortand with background size because is not implemented yet:
https://bugzilla.mozilla.org/show_bug.cgi?id=570326; */
overflow: hidden;
position: absolute;
z-index: 1;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 0;
/* Using font-size: 0; we avoid the unwanted visual space (about 3px)
created by white-spaces and break lines in the code betewen inline-block elements */
color: #fff;
padding: 11rem 2.5rem 0 2.5rem;
}
#overlay-title {
font-weight: normal;
font-size: 1.9rem;
color: #fff;
margin: 0 0.5rem 0 0.5rem;
padding: 0;
}
#overlay-text {
padding: 1rem 0.5rem 0 0.5rem;
border-top: 0.1rem solid #686868;
font-weight: 300;
font-size: 2.5rem;
color: #ebebeb;
}
#overlay-menu {
z-index: 1;
}
/* For overriding the style from BB */
#overlay-menu.hidden {
display: none;
}
#overlay-menu button.hidden {
display: none;
}
#overlay-menu button.full {
margin: 0;
}
/*
* Thumbnails are implemented as <li> elements in a <ul> with background-image
* set to display the image. We use background-size: cover to automatically
* resize the image as needed.
*/
#thumbnails {
position: absolute;
left: 0;
width: 100%;
top: 0;
bottom: 0;
/* top and bottom are set depending on view below */
padding: 0;
margin: 0;
overflow-y: scroll;
overflow-x: hidden;
/*
* the body background is black, but remind the UA of that here to
* keep the thumbnail view opaque if possible.
*/
background-color: #0E1214;
will-change: scroll-position;
/*
* set it visible/hidden by LAYOUT_MODE
*/
visibility: hidden;
pointer-events: none;
}
/*
* The thumbnail list appears in regular browsing mode, in selection mode,
* and in pick mode.
*/
body.thumbnailSelectView #thumbnails,
body.pickView #thumbnails,
body.thumbnailListView #thumbnails {
visibility: visible;
pointer-events: auto;
bottom: 0;
}
body.thumbnailSelectView #thumbnails,
body.pickView #thumbnails {
top: 5rem;
}
/*
* Give the very last thumbnail a large bottom margin so that it doesn't
* hide behind the overlaid toolbar in thumbnail list and select view.
*/
body.thumbnailSelectView #thumbnails > li:last-child .thumbnail:last-child,
body.thumbnailListView #thumbnails > li:last-child .thumbnail:last-child {
margin-bottom: 4.5rem;
}
.thumbnail-group-header {
font-size: 1.6rem;
font-weight: 400;
color: #8a9699;
-moz-padding-start: 0.5rem;
height: 4rem;
line-height: 4rem;
width:100%;
float:left;
}
/* Bug 968311 - Keep Gallery in scrollable
* background color. Need in all four
* containers below.
*/
#thumbnails > li,
#thumbnails > li > ul,
.thumbnail-group-header,
.thumbnail-group-container {
background-color: #0E1214;
}
.thumbnail-group-container {
padding: 0;
}
#thumbnails>li {
/* no list item bullets */
list-style-type: none;
}
#thumbnails>li:first-child .thumbnail-group-header {
border-top: 0.1rem solid;
border-color:rgba(255,255,255, 0.1);
}
.thumbnail {
-moz-margin-end: 0.1rem;
margin-bottom: 0.1rem;
padding: 0;
/* default to left-to-right, but overridden for rtl languages below */
float: left;
/* don't let the user select the items */
-moz-user-select: none;
background-color: #444;
/*
* Here's the thumbnail size for portrait mode. We have 3 thumbnails
* for each row. The size for landscape mode is handled below by
* media query.
* Padding-bottom is used here in order to set div height with respect
* to device width.
*/
width: calc((100% - 0.2rem) / 3 );
height: 0;
padding-bottom: calc((100% - 0.2rem) / 3 );
outline: none;
}
.thumbnail:nth-child(3n) {
-moz-margin-end: 0;
}
.thumbnailImage{
width: 100%;
}
.thumbnailImage.selected {
outline: solid #00aacc 0.3rem;
outline-offset: -0.2rem;
}
/* RTL modifications */
html[dir=rtl] #thumbnails-number-selected {
direction: rtl;
}
@media (orientation: landscape) {
/* 4 thumbnails for each row in landscape mode. */
.thumbnail {
width: calc((100% - 0.3rem) / 4);
padding-bottom: calc((100% - 0.3rem) / 4);
}
.thumbnail:nth-child(3n) {
-moz-margin-end: 0.1rem;
}
.thumbnail:nth-child(4n) {
-moz-margin-end: 0;
}
}
#fullscreen-back-button-tiny {
/*
these particular sizes, positions, and colors are chosen
to line up with the focus mode button of the camera app
*/
position: absolute;
top: 2rem;
left: 1.4rem;
width: 5rem;
height: 5rem;
font-size: 0;
border-radius: 50%;
border: none;
background: rgba(95, 95, 95, 0.3);
color: inherit;
transition: opacity 0.2s linear;
z-index: 10;
}
/**
* 1. Make sure icon is aligned inside circle
*/
#fullscreen-back-button-tiny:before {
margin-left: -0.3rem; /* 1 */
}
#fullscreen-back-button-tiny:active {
background-color: #008eab;
}
#frames {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
.frame {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
overflow: hidden;
-moz-user-select: none;
will-change: scroll-position;
}
.frame > .image-view {
top: 0; /* javascript modifies this position with a transform */
left: 0;
position: absolute;
border-width: 0;
padding: 0;
margin: 0;
pointer-events: none;
-moz-user-select: none;
transition: opacity 100ms ease-in;
}
.frame > video {
transform-origin: 0 0;
}
/* localization */
body.hidden *[data-l10n-id] {
visibility: hidden;
}
*[dir=rtl] .thumbnail {
float: right;
}
/* the indeterminate progress bar displayed while scanning */
#throbber {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 0.3rem;
border: none;
overflow: hidden;
background-size: 1rem;
background-image: repeating-linear-gradient(135deg,
#000 0%, #000 42%,
#32D1F2 42%, #32D1F2 57%,
#000 57%, #000 100%);
z-index: 10; /* has to be higher than pick-top */
}
#throbber.throb {
animation: throb 1s steps(10) infinite;
}
@keyframes throb {
from { background-position: 0 0; }
to { background-position: -1rem 0; }
}
#spinner {
position: absolute;
top: calc(50% - 1.5rem);
left: calc(50% - 1.5rem);
z-index: 1000;
}
/* override progress_activity.css */
#spinner.hidden {
display: none;
}
/* buttons */
a.button {
display: block;
padding: 0;
margin: 0;
border-width: 0;
background-position: center center;
background-repeat: no-repeat;
background-size: 3rem;
/* for buttons that display text */
font-size: 1.4rem;
text-align: center;
line-height: 4.5rem;
}
a.button:active, a.button:focus {
outline: none;
}
a.button.disabled {
opacity: 0.4;
pointer-events: none;
}
.icon.icon-done {
background: image-set(url("images/iconaction_done_30x30.png") 1x, url("images/iconaction_done_30x30@1.5x.png") 1.5x, url("images/iconaction_done_30x30@2x.png") 2x, url("images/iconaction_done_30x30@2.25x.png") 2.25x) no-repeat center center / 3rem !important;
}
footer {
background: rgba(0, 0, 0, 0.75);
height: 4.5rem;
position: absolute;
bottom: 0;
left: 0;
right: 0;
z-index: 1;
box-shadow: 0 -0.2rem 0.5rem rgba(50, 50, 50, 0.75);
}
.icon.icon-done {
background-image: image-set(url("images/iconaction_done_30x30.png") 1x, url("images/iconaction_done_30x30@1.5x.png") 1.5x, url("images/iconaction_done_30x30@2x.png") 2x, url("images/iconaction_done_30x30@2.25x.png") 2.25x) !important;
}
#thumbnails-camera-button {
position: absolute;
width: 50%;
height: 100%;
left: 0;
border-right: 0.1rem solid #000;
}
#thumbnails-select-button {
position: absolute;
width: 50%;
height: 100%;
left: 50%;
}
#thumbnails-delete-button {
position: absolute;
width: 50%;
height: 100%;
left: 0;
border-right: 0.1rem solid #000;
}
#thumbnails-share-button {
position: absolute;
width: 50%;
height: 100%;
left: 50%;
}
#fullscreen-toolbar {
height: 4.5rem;
position: absolute;
bottom: 0;
left: 0;
right: 0;
font-size: 0;
visibility: visible;
direction: ltr; /* buttons in toolbar are not directional and stays LTR */
/**
Bug 991367 - This is a temporary workaround for an issue where
the `tap` event on the video player "Pause" button causes a
`click` event to bleed through to the "Camera" button on the
toolbar. To get around this issue, we add 0.1s delay before
restoring the toolbar from hidden state and transition the
`visibility` property as well.
*/
transition: visibility 0.2s linear 0.1s, transform 0.2s linear 0.1s;
}
/* only for large screen */
#fullscreen-toolbar-header {
display: none;
}
#fullscreen-toolbar-header > menu {
display: none;
}
#fullscreen-toolbar > a {
display: inline-block;
width: 20%;
height: 100%;
}
#fullscreen-view.toolbar-hidden #fullscreen-toolbar {
pointer-events: none;
visibility: hidden;
transform: translate(0, 4.5rem);
transition-delay: 0s;
}
#fullscreen-view.toolbar-hidden #fullscreen-back-button-tiny {
opacity: 0;
pointer-events: none;
}
#pick-header {
/*
* we want the user to be able to push the close button even if
* an overlay is displayed, so be sure that this titlebar/toolbar
* is above the overlay
*/
z-index: 2;
}
/* like .frame */
#crop-frame {
position: absolute;
top: 5rem;
bottom: 0;
left: 0;
width: 100%;
padding: 0;
margin: 0;
overflow: hidden;
-moz-user-select: none;
}
#crop-image {
top: 0; /* javascript modifies this position with a transform */
left: 0;
position: relative;
border-width: 0;
padding: 0;
margin: 0;
transform-origin: 0 0;
pointer-events: none;
-moz-user-select: none;
}
#edit-preview-area {
position: absolute;
left: 0;
right: 0;
top: 5rem;
bottom: 4.5rem; /* 4.5rem for edit-toolbar */
}
#edit-preview-canvas {
position: absolute;
top: 1.5rem;
left: 2.5rem;
width: calc(100% - 5rem); /* I can't do right: 2.5rem here. Bug? */
height: calc(100% - 3rem); /* can't just set bottom: 1.5rem here */
}
#edit-crop-canvas {
position: absolute;
left: 0;
right: 0;
width: 100%;
height: 100%;
}
#edit-options {
position: absolute;
left: 0;
width: 100%;
height: 5rem;
bottom: 0;
background: image-set(url("images/options-background.png") 1x, url("images/options-background@1.5x.png") 1.5x, url("images/options-background@2x.png") 2x, url("images/options-background@2.25x.png") 2.25x);
}
/* The progress has higer selectivity css in progress.css to control display.
* The hidden attribute in progress is not working in this case. We need to use
* css to override it. */
#save-progress.hidden {
display: none;
}
/* All the effect options radio buttons share these styles */
#edit-effect-options a.radio.button {
position: absolute;
display: block;
top: 0;
height: 100%;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
margin: 0;
padding: 0;
border-width: 0;
border-right: solid black 0.1rem;
overflow: hidden;
}
#edit-effect-options a.selected.radio.button {
outline: solid #00aacc 0.2rem;
outline-offset: -0.2rem;
}
#edit-crop-options a.button {
position: absolute;
display: block;
top: 0;
bottom: 0;
width: 20%;
margin: 0;
padding: 0;
border-width: 0;
border-right: solid black 0.1rem;
overflow: hidden;
font-size: 1.4rem;
background-position: center;
}
#edit-crop-options a.selected.radio.button {
outline: solid #00aacc 0.2rem;
outline-offset: -0.2rem;
}
#edit-crop-aspect-free {
left: 0;
background-image: image-set(url("images/iconaction_camera_freecrop_30x30.png") 1x, url("images/iconaction_camera_freecrop_30x30@1.5x.png") 1.5x, url("images/iconaction_camera_freecrop_30x30@2x.png") 2x, url("images/iconaction_camera_freecrop_30x30@2.25x.png") 2.25x);
}
#edit-crop-aspect-portrait {
left: 20%;
background-image: image-set(url("images/iconaction_camera_crop2x3_30x30.png") 1x, url("images/iconaction_camera_crop2x3_30x30@1.5x.png") 1.5x, url("images/iconaction_camera_crop2x3_30x30@2x.png") 2x, url("images/iconaction_camera_crop2x3_30x30@2.25x.png") 2.25x);
}
#edit-crop-aspect-landscape {
left: 40%;
background-image: image-set(url("images/iconaction_camera_crop3x2_30x30.png") 1x, url("images/iconaction_camera_crop3x2_30x30@1.5x.png") 1.5x, url("images/iconaction_camera_crop3x2_30x30@2x.png") 2x, url("images/iconaction_camera_crop3x2_30x30@2.25x.png") 2.25x);
}
#edit-crop-aspect-square {
left: 60%;
background-image: image-set(url("images/iconaction_camera_crop1x1_30x30.png") 1x, url("images/iconaction_camera_crop1x1_30x30@1.5x.png") 1.5x, url("images/iconaction_camera_crop1x1_30x30@2x.png") 2x, url("images/iconaction_camera_crop1x1_30x30@2.25x.png") 2.25x);
}
#edit-crop-aspect-more {
left: 80%;
}
/* instead of using images inside the buttons above, just draw boxes */
#edit-free-frame {
margin-left: 0.5rem;
margin-top: 0.5rem;
width: 3rem;
height: 2.5rem;
border: dotted white 0.1rem;
}
#edit-portrait-frame {
margin-left: 1.1rem;
margin-top: 0.6rem;
width: 2.6rem;
height: 3.9rem;
border: solid white 0.1rem;
}
#edit-landscape-frame {
margin-left: 0.5rem;
margin-top: 1.2rem;
width: 3.9rem;
height: 2.6rem;
border: solid white 0.1rem;
}
#edit-square-frame {
margin-left: 0.8rem;
margin-top: 0.9rem;
width: 3.2rem;
height: 3.2rem;
border: solid white 0.1rem;
}
/* All the effects radio buttons share these styles */
#edit-effect-options > a.radio.button {
width: 20%;
padding-top: 1.5rem;
}
#edit-effect-none {
left:0;
}
#edit-effect-bw {
left:20%
}
#edit-effect-sepia {
left:40%
}
#edit-effect-bluesteel {
left:60%
}
#edit-effect-faded {
left:80%
}
a.filter-bw {
filter: url(../index.html#filter-bw);
}
a.filter-sepia {
filter: url(../index.html#filter-sepia);
}
a.filter-bluesteel {
filter: url(../index.html#filter-bluesteel);
}
a.filter-faded {
filter: url(../index.html#filter-faded);
}
#edit-toolbar {
height: 4.5rem;
position: absolute;
bottom: 0;
left: 0;
right: 0;
font-size: 0;
transition: transform 0.2s linear;
direction: ltr; /* buttons in toolbar are not directional and stays LTR */
}
/* all buttons in the toolbar share these styles */
#edit-toolbar > a {
display: inline-block;
vertical-align: top;
width: 25%;
height: 100%;
}
#edit-toolbar > a.selected {
color: #00CAF2;
}
#edit-exposure-button {
left: 0;
}
#edit-crop-button {
left: 20%;
}
#edit-effect-button {
left: 40%;
}
#edit-border-button {
left: 60%;
}
#edit-enhance-button {
left: 80%;
}
/* Override the styles from shared/styles/status.css */
#edit-copy-save-banner.banner, #edit-enhance-banner.banner {
position: absolute;
left: 0;
bottom: 4.5rem;
background-color: #0E1214;
}
#edit-copy-save-banner > p, #edit-enhance-banner > p {
text-align: center;
}
#edit-effect-button {
background-image: image-set(url("images/actionicon_gallery_edit_effects_30x30.png") 1x, url("images/actionicon_gallery_edit_effects_30x30@1.5x.png") 1.5x, url("images/actionicon_gallery_edit_effects_30x30@2x.png") 2x, url("images/actionicon_gallery_edit_effects_30x30@2.25x.png") 2.25x);
}
#edit-border-button {
background-image: url('images/actionicon_gallery_edit_borders_30x30.png');
}
#edit-enhance-button {
background-image: image-set(url("images/actionicon_gallery_edit_enhance_30x30.png") 1x, url("images/actionicon_gallery_edit_enhance_30x30@1.5x.png") 1.5x, url("images/actionicon_gallery_edit_enhance_30x30@2x.png") 2x, url("images/actionicon_gallery_edit_enhance_30x30@2.25x.png") 2.25x);
}
#edit-enhance-button.on {
background-image: image-set(url("images/actionicon_gallery_edit_enhance_on_30x30.png") 1x, url("images/actionicon_gallery_edit_enhance_on_30x30@1.5x.png") 1.5x, url("images/actionicon_gallery_edit_enhance_on_30x30@2x.png") 2x, url("images/actionicon_gallery_edit_enhance_on_30x30@2.25x.png") 2.25x);
}
/*
* All of these slider styles are for the exposure compensation slider
* If this app ever needs another slider, we'll have lots of name
* collisions. Ideally, this slider stuff should all be packaged up
* into a reusable component. But this is one-off for now
*/
#exposure-slider {
position: absolute;
left: 0;
width: 100%;
height: 5rem;
font-size: 1.4rem;
}
#sliderbar {
position: relative;
height: 2.6rem;
padding: 0;
margin: 0;
background: image-set(url("images/slider-background.png") 1x, url("images/slider-background@1.5x.png") 1.5x, url("images/slider-background@2x.png") 2x, url("images/slider-background@2.25x.png") 2.25x);
}
#sliderline {
position: absolute;
height: 0.5rem;
top: 1rem;
left: 3.5rem;
right: 3.5rem;
margin: 0;
border-radius: 3px;
background: image-set(url("images/slider-line.png") 1x, url("images/slider-line@1.5x.png") 1.5x, url("images/slider-line@2x.png") 2x, url("images/slider-line@2.25x.png") 2.25x) repeat-x;
border: none;
}
#sliderthumb {
position: absolute;
width: 3.6rem;
height: 2.6rem;
-moz-margin-start: calc(3.9rem - 1.8rem);
background: image-set(url("images/slider-scrubber.png") 1x, url("images/slider-scrubber@1.5x.png") 1.5x, url("images/slider-scrubber@2x.png") 2x, url("images/slider-scrubber@2.25x.png") 2.25x) no-repeat center center / 100%;
font: 0/0 a;
}
#sliderthumb.active {
background-image: image-set(url("images/slider-scrubber-active.png") 1x, url("images/slider-scrubber-active@1.5x.png") 1.5x, url("images/slider-scrubber-active@2x.png") 2x, url("images/slider-scrubber-active@2.25x.png") 2.25x);
}
#sliderlabels {
position: relative;
height: 3rem;
padding: 0;
margin: 0;
color: white;
}
.sliderlabel {
position: absolute;
top: -0.2rem;
height: 0.8rem;
background: image-set(url("images/slider-marker.png") 1x, url("images/slider-marker@1.5x.png") 1.5x, url("images/slider-marker@2x.png") 2x, url("images/slider-marker@2.25x.png") 2.25x) no-repeat top left;
color: #8a9699;
font-size: 1.5rem;
}
html[dir="rtl"] .sliderlabel {
background: image-set(url("images/slider-marker.png") 1x, url("images/slider-marker@1.5x.png") 1.5x, url("images/slider-marker@2x.png") 2x, url("images/slider-marker@2.25x.png") 2.25x) no-repeat top right;
}
.sliderlabel:after {
content: attr(data-label);
position: relative;
text-align: center;
top: 0.9rem;
width: 1rem;
margin: 0 calc(-50% + 0.1rem);
/* Slider labels are numbers */
direction: ltr;
unicode-bidi: -moz-isolate;
}
#slider-3 {
-moz-margin-start: 3.9rem;
}
#slider-2 {
-moz-margin-start: calc(3.9rem + (100% - 2 * 3.9rem) / 6);
}
#slider-1 {
-moz-margin-start: calc(3.9rem + (100% - 2 * 3.9rem) * 2 / 6);
}
#slider0 {
-moz-margin-start: calc(3.9rem + (100% - 2 * 3.9rem) * 3 / 6);
color: #fff;
}
#slider1 {
-moz-margin-start: calc(3.9rem + (100% - 2 * 3.9rem) * 4 / 6);
}
#slider2 {
-moz-margin-start: calc(3.9rem + (100% - 2 * 3.9rem) * 5 / 6);
}
#slider3 {
-moz-margin-start: calc(3.9rem + (100% - 2 * 3.9rem));
}