mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 11:20:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			826 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
			
		
		
	
	
			826 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
| /**********************************************************************
 | |
| * 
 | |
| **********************************************************************/
 | |
| /******************************************************** Settings ***/
 | |
| /********************************************************** Mixins ***/
 | |
| /********************************************************* utility ***/
 | |
| .expanding-text .hidden {
 | |
|   display: none;
 | |
| }
 | |
| .expanding-text:hover .shown {
 | |
|   display: none;
 | |
| }
 | |
| .expanding-text:hover .hidden {
 | |
|   display: inline;
 | |
| }
 | |
| /*********************************************************************/
 | |
| body {
 | |
|   font-family: sans-serif;
 | |
|   padding: 0px;
 | |
|   margin: 0px;
 | |
| }
 | |
| /********************************************************** Viewer ***/
 | |
| .viewer {
 | |
|   position: relative;
 | |
|   width: 100%;
 | |
|   height: 100%;
 | |
|   overflow: hidden;
 | |
|   /*border: solid blue 1px;*/
 | |
| 
 | |
|   box-sizing: border-box;
 | |
|   -moz-user-select: none;
 | |
|   -webkit-user-select: none;
 | |
|   -o-user-select: none;
 | |
|   -ms-user-select: none;
 | |
|   user-select: none;
 | |
| }
 | |
| /****************************************************** Ribbon set ***/
 | |
| .ribbon-set {
 | |
|   position: absolute;
 | |
|   display: block;
 | |
|   /* NOTE: this needs for scaling/zooming to behave correctly and not 
 | |
| 		shift the element, when its dimensions change... 
 | |
| 		...this is because .ribbon-set will both be used for scaling 
 | |
| 		and aligning... */
 | |
| 
 | |
|   -webkit-transform-origin: top left;
 | |
|   -ms-transform-origin: top left;
 | |
|   transform-origin: top left;
 | |
| }
 | |
| .ribbon-set:empty:after {
 | |
|   display: block;
 | |
|   top: 0px;
 | |
|   left: 0px;
 | |
|   width: 100%;
 | |
|   height: 100%;
 | |
|   content: "Empty";
 | |
|   text-align: center;
 | |
| }
 | |
| /********************************************************** Ribbon ***/
 | |
| .ribbon {
 | |
|   position: relative;
 | |
|   display: block;
 | |
|   height: auto;
 | |
|   min-width: 0px;
 | |
|   overflow: visible;
 | |
|   white-space: nowrap;
 | |
|   font-size: 0;
 | |
|   margin-top: 20px;
 | |
|   margin-bottom: 20px;
 | |
| }
 | |
| .ribbon:empty {
 | |
|   display: none;
 | |
| }
 | |
| .ribbon:first-child {
 | |
|   margin-top: 0px;
 | |
| }
 | |
| .ribbon:last-child {
 | |
|   margin-bottom: 0px;
 | |
| }
 | |
| /*********************************************************** Image ***/
 | |
| .image {
 | |
|   position: relative;
 | |
|   display: inline-block;
 | |
|   vertical-align: middle;
 | |
|   text-align: left;
 | |
|   width: 300px;
 | |
|   height: 300px;
 | |
|   font-size: 12pt;
 | |
|   overflow: hidden;
 | |
|   box-sizing: border-box;
 | |
|   color: white;
 | |
|   text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
 | |
|   background: no-repeat 50% #000000;
 | |
|   background-size: contain;
 | |
|   /* XXX do we need this? */
 | |
| 
 | |
|   border: solid black 5px;
 | |
| }
 | |
| .current.image {
 | |
|   background: no-repeat 50% #000000;
 | |
|   background-size: contain;
 | |
|   /* XXX remove this... */
 | |
| 
 | |
|   border: solid red 5px;
 | |
| }
 | |
| /* image turning... */
 | |
| /* NOTE: need to account for proportions after turning... */
 | |
| .image[orientation="90"] {
 | |
|   -webkit-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   -moz-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   -o-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   -ms-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
| }
 | |
| .image[orientation="180"] {
 | |
|   -webkit-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   -moz-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   -o-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   -ms-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
| }
 | |
| .image[orientation="270"] {
 | |
|   -webkit-transform: rotate(270deg) scaleY(1) scaleX(1);
 | |
|   -moz-transform: rotate(270deg) scaleY(1) scaleX(1);
 | |
|   -o-transform: rotate(270deg) scaleY(1) scaleX(1);
 | |
|   -ms-transform: rotate(270deg) scaleY(1) scaleX(1);
 | |
|   transform: rotate(270deg) scaleY(1) scaleX(1);
 | |
| }
 | |
| /* Flipped vertically only... */
 | |
| /* NOTE: wee need to do all possible combinations here as we can't 
 | |
|  	combine different parts of a transform attr from different 
 | |
|  	classes */
 | |
| .image[flipped*="vertical"] {
 | |
|   -webkit-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| .image[orientation="90"][flipped="vertical"] {
 | |
|   -webkit-transform: rotate(90deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(90deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(90deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(90deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(90deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| .image[orientation="180"][flipped="vertical"] {
 | |
|   -webkit-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| .image[orientation="270"][flipped="vertical"] {
 | |
|   -webkit-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| /* Flipped horizontally only... */
 | |
| .image[flipped*="horizontal"] {
 | |
|   -webkit-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="90"][flipped="horizontal"] {
 | |
|   -webkit-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="180"][flipped="horizontal"] {
 | |
|   -webkit-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="270"][flipped="horizontal"] {
 | |
|   -webkit-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| /* Flipped vertically and horizontally... */
 | |
| .image[flipped*="vertical"][flipped*="horizontal"] {
 | |
|   -webkit-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="90"][flipped*="vertical"][flipped*="horizontal"] {
 | |
|   -webkit-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="180"][flipped*="vertical"][flipped*="horizontal"] {
 | |
|   -webkit-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="270"][flipped*="vertical"][flipped*="horizontal"] {
 | |
|   -webkit-transform: rotate(270deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(270deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(270deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(270deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(270deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| /* default backgrounds */
 | |
| /* XXX not sure if we need these... 
 | |
| .image {
 | |
| 	background-image: url(images/loading.gif);
 | |
| }
 | |
| .image[orientation="90"] {
 | |
| 	background-image: url(images/loading-90deg.gif);
 | |
| }
 | |
| .image[orientation="180"] {
 | |
| 	background-image: url(images/loading-180deg.gif);
 | |
| }
 | |
| .image[orientation="270"] {
 | |
| 	background-image: url(images/loading-270deg.gif);
 | |
| }
 | |
| */
 | |
| /***************************************************** Image marks ***/
 | |
| .marks-visible.viewer .marked.image:after {
 | |
|   display: block;
 | |
|   position: absolute;
 | |
|   content: "";
 | |
|   font-size: 0pt;
 | |
|   border: none;
 | |
|   width: 10px;
 | |
|   height: 10px;
 | |
|   top: auto;
 | |
|   bottom: 5px;
 | |
|   left: auto;
 | |
|   right: 5px;
 | |
|   border-radius: 50%;
 | |
|   background: blue;
 | |
| }
 | |
| .marks-visible.viewer .marked.image[orientation="270"][flipped*="vertical"][flipped*="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image:not([orientation])[flipped*="vertical"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="0"][flipped*="vertical"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="180"][flipped="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="90"]:not([flipped]):after {
 | |
|   top: 5px;
 | |
|   bottom: auto:
 | |
| 	left: auto;
 | |
|   right: 5px;
 | |
| }
 | |
| .marks-visible.viewer .marked.image:not([orientation])[flipped*="vertical"][flipped*="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="0"][flipped*="vertical"][flipped*="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="270"][flipped="vertical"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="90"][flipped="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="180"]:not([flipped]):after {
 | |
|   top: 5px;
 | |
|   bottom: auto;
 | |
|   left: 5px;
 | |
|   right: auto;
 | |
| }
 | |
| .marks-visible.viewer .marked.image[orientation="90"][flipped*="vertical"][flipped*="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="180"][flipped="vertical"]:after,
 | |
| .marks-visible.viewer .marked.image:not([orientation])[flipped*="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="0"][flipped*="horizontal"]:after,
 | |
| .marks-visible.viewer .marked.image[orientation="270"]:not([flipped]):after {
 | |
|   top: auto;
 | |
|   bottom: 5px;
 | |
|   left: 5px;
 | |
|   right: auto;
 | |
| }
 | |
| /* NOTE: we use a different mark representation for single image mode... */
 | |
| .marks-visible.single-image-mode.viewer .marked.image:after {
 | |
|   display: none;
 | |
| }
 | |
| /* corner mark... (a-la bookmarks in PortableMag) 
 | |
|  * XXX account for flipping... */
 | |
| /*
 | |
| @ribbon-mark-offset: -15px;
 | |
| 
 | |
| .marks-visible.viewer .marked.image:after {
 | |
| 	display: block;
 | |
| 	position: absolute;
 | |
| 	content: "";
 | |
| 	font-size: 0pt;
 | |
| 	border: none;
 | |
| 
 | |
| 	width: 30px;
 | |
| 	height: 30px;
 | |
| 
 | |
| 	top: @ribbon-mark-offset;
 | |
| 	right: @ribbon-mark-offset;
 | |
| 
 | |
| 	background: blue;
 | |
| 
 | |
| 	.rotate(45deg)
 | |
| }
 | |
| .marks-visible.viewer .marked.image[orientation="90"]:after {
 | |
| 	top: @ribbon-mark-offset;
 | |
| 	left: @ribbon-mark-offset;
 | |
| }
 | |
| .marks-visible.viewer .marked.image[orientation="180"]:after {
 | |
| 	bottom: @ribbon-mark-offset;
 | |
| 	left: @ribbon-mark-offset;
 | |
| }
 | |
| .marks-visible.viewer .marked.image[orientation="270"]:after {
 | |
| 	bottom: @ribbon-mark-offset;
 | |
| 	right: @ribbon-mark-offset;
 | |
| }
 | |
| */
 | |
| /* XXX should we use opacity??? */
 | |
| .marked-only-view.viewer:not(.marks-visible) .image:not(.marked) {
 | |
|   opacity: 0.3;
 | |
| }
 | |
| /****************************************************** Image info ***/
 | |
| .image .inline-image-info {
 | |
|   display: none;
 | |
|   position: absolute;
 | |
|   bottom: 0px;
 | |
|   width: 100%;
 | |
|   background: black;
 | |
|   opacity: 0.7;
 | |
| }
 | |
| .image .inline-image-info:hover {
 | |
|   -moz-user-select: auto;
 | |
|   -webkit-user-select: auto;
 | |
|   -o-user-select: auto;
 | |
|   -ms-user-select: auto;
 | |
|   user-select: auto;
 | |
| }
 | |
| .image .inline-image-info::selection {
 | |
|   color: white;
 | |
|   background: red;
 | |
| }
 | |
| .image-info-visible.viewer .global-image-info,
 | |
| .image-info-visible.viewer .image:hover .inline-image-info {
 | |
|   display: block;
 | |
| }
 | |
| .single-image-mode.viewer .image:hover .inline-image-info {
 | |
|   display: none;
 | |
| }
 | |
| .image[orientation="90"] .inline-image-info {
 | |
|   top: auto;
 | |
|   left: 100%;
 | |
|   -webkit-transform-origin: bottom left;
 | |
|   -ms-transform-origin: bottom left;
 | |
|   transform-origin: bottom left;
 | |
|   -webkit-transform: rotate(-90deg) scaleY(1) scaleX(1);
 | |
|   -moz-transform: rotate(-90deg) scaleY(1) scaleX(1);
 | |
|   -o-transform: rotate(-90deg) scaleY(1) scaleX(1);
 | |
|   -ms-transform: rotate(-90deg) scaleY(1) scaleX(1);
 | |
|   transform: rotate(-90deg) scaleY(1) scaleX(1);
 | |
| }
 | |
| .image[orientation="180"] .inline-image-info {
 | |
|   top: 0px;
 | |
|   bottom: auto;
 | |
|   -webkit-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   -moz-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   -o-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   -ms-transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
|   transform: rotate(180deg) scaleY(1) scaleX(1);
 | |
| }
 | |
| .image[orientation="270"] .inline-image-info {
 | |
|   top: auto;
 | |
|   left: auto;
 | |
|   right: 100%;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   -moz-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   -o-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   -ms-transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
|   transform: rotate(90deg) scaleY(1) scaleX(1);
 | |
| }
 | |
| /* compensate for flipping... */
 | |
| /* XXX START: I hate this code, will think if a better way to do this... */
 | |
| .image:not([orientation="90"])[flipped*="horizontal"] .inline-image-info {
 | |
|   -webkit-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(0deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="90"][flipped*="horizontal"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 100%;
 | |
|   left: -100%;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(90deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="180"][flipped*="horizontal"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 100%;
 | |
|   left: 0px;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(180deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="270"][flipped*="horizontal"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 0px;
 | |
|   left: 0px;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   -moz-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   -o-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   -ms-transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
|   transform: rotate(270deg) scaleY(1) scaleX(-1);
 | |
| }
 | |
| .image[flipped*="vertical"] .inline-image-info {
 | |
|   top: 0px;
 | |
|   bottom: auto;
 | |
|   -webkit-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(0deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| .image[orientation="90"][flipped*="vertical"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 100%;
 | |
|   left: 100%;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom left;
 | |
|   -ms-transform-origin: bottom left;
 | |
|   transform-origin: bottom left;
 | |
|   -webkit-transform: rotate(-270deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(-270deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(-270deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(-270deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(-270deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| .image[orientation="180"][flipped*="vertical"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 0px;
 | |
|   left: -100%;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(180deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| .image[orientation="270"][flipped*="vertical"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 100%;
 | |
|   left: -100%;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   -moz-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   -o-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   -ms-transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
|   transform: rotate(270deg) scaleY(-1) scaleX(1);
 | |
| }
 | |
| .image[flipped*="vertical"][flipped*="horizontal"] .inline-image-info {
 | |
|   top: 0px;
 | |
|   bottom: auto;
 | |
|   -webkit-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(0deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="90"][flipped*="vertical"][flipped*="horizontal"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 0px;
 | |
|   left: -100%;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(-90deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(-90deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(-90deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(-90deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(-90deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="180"][flipped*="vertical"][flipped*="horizontal"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 0px;
 | |
|   left: auto;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(180deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| .image[orientation="270"][flipped*="vertical"][flipped*="horizontal"] .inline-image-info {
 | |
|   top: auto;
 | |
|   bottom: 100%;
 | |
|   left: auto;
 | |
|   right: auto;
 | |
|   -webkit-transform-origin: bottom right;
 | |
|   -ms-transform-origin: bottom right;
 | |
|   transform-origin: bottom right;
 | |
|   -webkit-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   -moz-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   -o-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   -ms-transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
|   transform: rotate(90deg) scaleY(-1) scaleX(-1);
 | |
| }
 | |
| /* XXX END */
 | |
| .overlay-info {
 | |
|   display: none;
 | |
|   position: absolute;
 | |
|   bottom: 0px;
 | |
|   left: 0px;
 | |
|   width: 100%;
 | |
|   padding: 2px;
 | |
|   padding-left: 10px;
 | |
|   padding-right: 10px;
 | |
|   box-sizing: border-box;
 | |
|   background: black;
 | |
|   color: white;
 | |
|   opacity: 0.6;
 | |
| }
 | |
| .overlay-info:hover {
 | |
|   -moz-user-select: auto;
 | |
|   -webkit-user-select: auto;
 | |
|   -o-user-select: auto;
 | |
|   -ms-user-select: auto;
 | |
|   user-select: auto;
 | |
| }
 | |
| .overlay-info .float-right {
 | |
|   float: right;
 | |
| }
 | |
| .overlay-info .secondary {
 | |
|   font-style: italic;
 | |
|   font-size: small;
 | |
|   color: silver;
 | |
| }
 | |
| .overlay-info::selection,
 | |
| .overlay-info ::selection {
 | |
|   color: white;
 | |
|   background: red;
 | |
| }
 | |
| /*************************************************** Global status ***/
 | |
| .global-status {
 | |
|   display: block;
 | |
|   opacity: 1;
 | |
|   z-index: 1000;
 | |
| }
 | |
| /****************************************************** Indicators ***/
 | |
| .up-indicator,
 | |
| .down-indicator,
 | |
| .start-indicator,
 | |
| .end-indicator {
 | |
|   display: block;
 | |
|   position: absolute;
 | |
|   content: "";
 | |
|   top: 0px;
 | |
|   left: 50%;
 | |
|   height: 50px;
 | |
|   width: 100px;
 | |
|   margin-left: -50px;
 | |
|   overflow: hidden;
 | |
|   cursor: hand;
 | |
| }
 | |
| .up-indicator:after,
 | |
| .down-indicator:after {
 | |
|   display: inline-block;
 | |
|   position: absolute;
 | |
|   content: "";
 | |
|   width: 50px;
 | |
|   height: 50px;
 | |
|   bottom: -25px;
 | |
|   left: 25px;
 | |
|   background: yellow;
 | |
|   -webkit-transform: rotate(45deg) scaleY(1) scaleX(1);
 | |
|   -moz-transform: rotate(45deg) scaleY(1) scaleX(1);
 | |
|   -o-transform: rotate(45deg) scaleY(1) scaleX(1);
 | |
|   -ms-transform: rotate(45deg) scaleY(1) scaleX(1);
 | |
|   transform: rotate(45deg) scaleY(1) scaleX(1);
 | |
| }
 | |
| .down-indicator {
 | |
|   top: auto;
 | |
|   bottom: 0px;
 | |
| }
 | |
| .down-indicator:after {
 | |
|   top: -25px;
 | |
|   bottom: auto;
 | |
| }
 | |
| .start-indicator,
 | |
| .end-indicator {
 | |
|   left: 0px;
 | |
|   width: 10px;
 | |
|   height: 100%;
 | |
|   margin: 0px;
 | |
|   background: yellow;
 | |
| }
 | |
| .end-indicator {
 | |
|   left: auto;
 | |
|   right: 0px;
 | |
| }
 | |
| /* default state */
 | |
| .up-indicator,
 | |
| .down-indicator,
 | |
| .start-indicator,
 | |
| .end-indicator {
 | |
|   display: none;
 | |
| }
 | |
| /* these are generic containers for indicators */
 | |
| .global-mode-indicators {
 | |
|   position: absolute;
 | |
|   top: 15px;
 | |
|   right: 15px;
 | |
|   height: 20px;
 | |
|   width: auto;
 | |
|   font-size: small;
 | |
|   vertical-align: center;
 | |
| }
 | |
| .global-mode-indicators > * {
 | |
|   margin-left: 10px;
 | |
| }
 | |
| .global-mode-indicators .circle,
 | |
| .context-mode-indicators .circle {
 | |
|   display: inline-block;
 | |
|   width: 10px;
 | |
|   height: 10px;
 | |
|   border-radius: 50%;
 | |
| }
 | |
| /* hide indicators in single image mode */
 | |
| .single-image-mode.viewer .global-mode-indicators {
 | |
|   opacity: 0.5;
 | |
| }
 | |
| .light.single-image-mode.viewer .global-mode-indicators {
 | |
|   opacity: 0.1;
 | |
| }
 | |
| .dark.single-image-mode.viewer .global-mode-indicators {
 | |
|   opacity: 0.6;
 | |
| }
 | |
| .single-image-mode.viewer .global-mode-indicators:hover {
 | |
|   opacity: 1;
 | |
| }
 | |
| /* context indicators */
 | |
| .context-mode-indicators {
 | |
|   position: absolute;
 | |
|   right: 15px;
 | |
|   bottom: 15px;
 | |
|   height: 20px;
 | |
|   width: auto;
 | |
|   font-size: small;
 | |
|   vertical-align: center;
 | |
| }
 | |
| .context-mode-indicators > * {
 | |
|   margin-left: 10px;
 | |
| }
 | |
| /* actual indicators */
 | |
| /* marks... */
 | |
| .global-mode-indicators .marked-only-visible,
 | |
| .global-mode-indicators .marks-visible,
 | |
| .context-mode-indicators .current-image-marked {
 | |
|   display: none;
 | |
|   color: blue;
 | |
|   height: 20px;
 | |
|   vertical-align: center;
 | |
| }
 | |
| .global-mode-indicators .marked-only-visible .shown,
 | |
| .global-mode-indicators .marks-visible .shown,
 | |
| .context-mode-indicators .current-image-marked .shown {
 | |
|   display: none;
 | |
| }
 | |
| .global-mode-indicators .marked-only-visible:after,
 | |
| .global-mode-indicators .marks-visible:after,
 | |
| .context-mode-indicators .current-image-marked:after {
 | |
|   display: inline-block;
 | |
|   width: 6px;
 | |
|   height: 6px;
 | |
|   border-radius: 50%;
 | |
|   content: "";
 | |
|   background-color: blue;
 | |
|   border: solid 2px blue;
 | |
|   margin-left: 5px;
 | |
|   margin-top: 3px;
 | |
|   top: 50%;
 | |
| }
 | |
| .marks-visible.viewer .global-mode-indicators .marks-visible {
 | |
|   display: inline-block;
 | |
| }
 | |
| .marked-only-view.viewer .global-mode-indicators .marks-visible {
 | |
|   display: none;
 | |
| }
 | |
| .marked-only-view.viewer .global-mode-indicators .marked-only-visible {
 | |
|   display: inline-block;
 | |
| }
 | |
| .marked-only-view.viewer:not(.marks-visible) .global-mode-indicators .marked-only-visible:after {
 | |
|   background-color: transparent;
 | |
| }
 | |
| /* image mark in single image mode... */
 | |
| .context-mode-indicators .current-image-marked {
 | |
|   display: none;
 | |
|   color: blue;
 | |
| }
 | |
| .single-image-mode.marks-visible.viewer .context-mode-indicators .current-image-marked.shown {
 | |
|   display: inline-block;
 | |
| }
 | |
| /********************************************** Mode: single image ***/
 | |
| .single-image-mode.viewer .image {
 | |
|   background-color: transparent;
 | |
|   /* NOTE: need to keep a distance from screen borders... */
 | |
| 
 | |
|   border: solid transparent 2px;
 | |
| }
 | |
| .single-image-mode.viewer .image:not(.current) {
 | |
|   /* XXX for some reason this breaks the alignment on large magnifications...
 | |
| 	display: none;
 | |
| 	*/
 | |
| 
 | |
|   /* XXX this makes images pass through the :visible filter...
 | |
| 	opacity: 0;
 | |
| 	*/
 | |
| 
 | |
|   visibility: hidden;
 | |
| }
 | |
| /********************************************************** Themes ***/
 | |
| /* XXX this is by no means final... */
 | |
| .viewer,
 | |
| .light.viewer,
 | |
| .light.viewer .overlay-block .background {
 | |
|   background: white;
 | |
| }
 | |
| .gray.viewer,
 | |
| .gray.viewer .overlay-block .background {
 | |
|   background: #333;
 | |
| }
 | |
| .dark.viewer,
 | |
| .dark.viewer .overlay-block .background {
 | |
|   background: #0a0a0a;
 | |
| }
 | |
| /********************************************************* Overlay ***/
 | |
| .overlay-block {
 | |
|   display: none;
 | |
|   position: absolute:
 | |
| 	top: 0px;
 | |
|   left: 0px;
 | |
|   height: 100%;
 | |
|   width: 100%;
 | |
| }
 | |
| .viewer.overlay .overlay-block {
 | |
|   display: block;
 | |
| }
 | |
| .overlay-block .background {
 | |
|   position: absolute:
 | |
| 	top: 0px;
 | |
|   left: 0px;
 | |
|   height: 100%;
 | |
|   width: 100%;
 | |
|   opacity: 0.7;
 | |
| }
 | |
| /************************************************************ Help ***/
 | |
| /* XXX make this more generic, and not just for the keyboard... */
 | |
| /* this is for sliding stuff */
 | |
| .viewer.drawer-mode {
 | |
|   box-shadow: 0px 0px 50px 0px silver;
 | |
| }
 | |
| /* help */
 | |
| .keyboard-help {
 | |
|   width: 80%;
 | |
|   margin-top: 20px;
 | |
|   margin-left: 15%;
 | |
|   margin-right: 5%;
 | |
|   margin-bottom: 100px;
 | |
| }
 | |
| .keyboard-help .section-doc {
 | |
|   font-size: small;
 | |
|   vertical-align: top;
 | |
|   font-style: italic;
 | |
| }
 | |
| .keyboard-help th {
 | |
|   text-align: left;
 | |
|   height: 50px;
 | |
|   vertical-align: bottom;
 | |
|   border-bottom: solid gray 1px;
 | |
| }
 | |
| .keyboard-help tr:hover {
 | |
|   background: #eee;
 | |
|   vertical-align: top;
 | |
| }
 | |
| .keyboard-help tr td:first-child {
 | |
|   color: gray;
 | |
|   font-style: italic;
 | |
|   padding-right: 20px;
 | |
|   padding-left: 10px;
 | |
| }
 | |
| .keyboard-help .section-doc td:only-child {
 | |
|   padding-right: 0px;
 | |
|   padding-left: 0px;
 | |
| }
 | |
| /**********************************************************************
 | |
| * vim:set spell ft=css :                                             */
 |