| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | **********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | @import '../node_modules/material-symbols/outlined.css'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /********************************************************* Config ****/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :root { | 
					
						
							|  |  |  | 	/* dimensions */ | 
					
						
							| 
									
										
										
										
											2023-08-13 13:03:16 +03:00
										 |  |  | 	--gallery-image-base-height: 18rem; | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	--gallery-image-margin: 0; | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | 	--gallery-current-image-border: 0.7rem; | 
					
						
							|  |  |  | 	--gallery-padding: 3rem; | 
					
						
							| 
									
										
										
										
											2023-07-23 06:46:14 +03:00
										 |  |  | 	--gallery-padding-horizontal: var(--gallery-padding); | 
					
						
							| 
									
										
										
										
											2023-07-24 21:04:42 +03:00
										 |  |  | 	--gallery-padding-vertical: var(--gallery-current-image-border); | 
					
						
							| 
									
										
										
										
											2023-07-23 06:46:14 +03:00
										 |  |  | 	--gallery-padding-top: var(--gallery-padding-vertical); | 
					
						
							|  |  |  | 	--gallery-padding-bottom: var(--gallery-padding-vertical); | 
					
						
							|  |  |  | 	--gallery-padding-left: var(--gallery-padding-horizontal); | 
					
						
							|  |  |  | 	--gallery-padding-right: var(--gallery-padding-horizontal); | 
					
						
							| 
									
										
										
										
											2023-07-24 21:04:42 +03:00
										 |  |  | 	--gallery-image-scroll-margin: calc(2 * var(--gallery-current-image-border)); | 
					
						
							| 
									
										
										
										
											2023-08-13 13:03:16 +03:00
										 |  |  | 	--gallery-empty-height: var(--gallery-image-base-height); | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | 	--gallery-scrollbar-width: 0.5rem; | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	--toolbar-button-size: 2rem; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-24 21:04:42 +03:00
										 |  |  | 	--lightbox-frame: 5vmin; | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	--lightbox-image-margin-top: 0.75; | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	--lightbox-button-size: 2em; | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* theme */ | 
					
						
							|  |  |  | 	--gallery-text-color: black; | 
					
						
							|  |  |  | 	--gallery-secondary-color: silver; | 
					
						
							|  |  |  | 	--gallery-background-color: white; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:37:10 +03:00
										 |  |  | 	--lightbox-text-color: black; | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	--lightbox-background-color: white; | 
					
						
							| 
									
										
										
										
											2023-07-21 03:16:20 +03:00
										 |  |  | 	/*--lightbox-background-color: rgba(0,0,0,0.8);*/ | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:37:10 +03:00
										 |  |  | .gallery-dark { | 
					
						
							|  |  |  | 	--gallery-text-color: silver; | 
					
						
							|  |  |  | 	--gallery-secondary-color: gray; | 
					
						
							|  |  |  | 	--gallery-background-color: black; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .lightbox-dark { | 
					
						
							|  |  |  | 	--lightbox-text-color: silver; | 
					
						
							|  |  |  | 	--lightbox-background-color: black; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /****************************************************** Scrolling ****/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ::-webkit-scrollbar { | 
					
						
							|  |  |  | 	width: var(--gallery-scrollbar-width); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ::-webkit-scrollbar-track { | 
					
						
							|  |  |  | 	background-color: transparent; | 
					
						
							|  |  |  | 	border-radius: 100px; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ::-webkit-scrollbar-thumb { | 
					
						
							|  |  |  | 	background-color: var(--gallery-secondary-color); | 
					
						
							|  |  |  | 	border-radius: 100px; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | body { | 
					
						
							|  |  |  | 	overflow-y: scroll; | 
					
						
							| 
									
										
										
										
											2023-07-23 07:13:07 +03:00
										 |  |  | 	/* XXX these for some reason do not work in FF... */ | 
					
						
							|  |  |  | 	scrollbar-width: thin; | 
					
						
							|  |  |  | 	scrollbar-color: transparent var(--gallery-secondary-color); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:37:10 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	color: var(--gallery-text-color); | 
					
						
							|  |  |  | 	background: var(--gallery-background-color); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /******************************************************** Gallery ****/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* XXX need to account for scrollbar popping in and out */ | 
					
						
							|  |  |  | .gallery { | 
					
						
							| 
									
										
										
										
											2023-08-01 18:46:58 +03:00
										 |  |  | 	--base-layer: 10; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-23 06:46:14 +03:00
										 |  |  | 	padding-top: var(--gallery-padding-top); | 
					
						
							|  |  |  | 	padding-bottom: var(--gallery-padding-bottom); | 
					
						
							|  |  |  | 	padding-left: calc( | 
					
						
							|  |  |  | 		var(--gallery-scrollbar-width)  | 
					
						
							|  |  |  | 		+ var(--gallery-padding-left) ); | 
					
						
							|  |  |  | 	padding-right: var(--gallery-padding-right); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:37:10 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	color: var(--gallery-text-color); | 
					
						
							|  |  |  | 	background: var(--gallery-background-color); | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	overflow-x: clip; | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | .gallery .images { | 
					
						
							|  |  |  | 	position: relative; | 
					
						
							|  |  |  | 	display: flex; | 
					
						
							|  |  |  | 	justify-content: flex-start; | 
					
						
							|  |  |  | 	align-content: flex-start; | 
					
						
							|  |  |  | 	flex-flow: row wrap; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* empty... */ | 
					
						
							| 
									
										
										
										
											2023-08-12 00:31:21 +03:00
										 |  |  | .gallery .images:empty { | 
					
						
							|  |  |  | 	height: var(--gallery-empty-height); | 
					
						
							|  |  |  | 	border: dashed 1px black; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | .gallery .images:empty:after, | 
					
						
							|  |  |  | .gallery .images:empty:before { | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	--font-size: 1.5rem; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-12 00:31:21 +03:00
										 |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	width: 100%; | 
					
						
							|  |  |  | 	left: 0; | 
					
						
							|  |  |  | 	top: 0; | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | 	line-height: var(--gallery-empty-height); | 
					
						
							| 
									
										
										
										
											2023-08-12 00:31:21 +03:00
										 |  |  | 	text-align: center; | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | 	opacity: 0.6; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery .images:empty:before { | 
					
						
							|  |  |  | 	content: "Empty"; | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	font-size: var(--font-size); | 
					
						
							| 
									
										
										
										
											2023-08-12 00:31:21 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | .gallery .images:empty:after { | 
					
						
							|  |  |  | 	content: "(drag new images here)"; | 
					
						
							|  |  |  | 	font-size: small; | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	margin-top: calc(var(--font-size) / 1.3); | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | 	opacity: 0.4; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | /* empty otter... */ | 
					
						
							|  |  |  | .gallery.otter .images:empty:before, | 
					
						
							|  |  |  | .gallery.otter .images:empty:after { | 
					
						
							|  |  |  | 	--font-size: 3em; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery.otter .images:empty:before { | 
					
						
							|  |  |  | 	content: "🦦"; | 
					
						
							|  |  |  | 	filter: saturate(0) contrast(200%); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery.otter .images:empty:after { | 
					
						
							|  |  |  | 	margin-top: calc(var(--font-size) / 2); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-13 00:23:13 +03:00
										 |  |  | /* image... */ | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | .gallery .images img { | 
					
						
							| 
									
										
										
										
											2023-08-13 13:03:16 +03:00
										 |  |  | 	height: var(--gallery-image-base-height); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	width: auto; | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	border: solid var(--gallery-image-margin) transparent; | 
					
						
							|  |  |  | 	box-sizing: border-box; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-22 15:33:55 +03:00
										 |  |  | 	scroll-margin: var(--gallery-image-scroll-margin); | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	image-rendering: crisp-edges; | 
					
						
							| 
									
										
										
										
											2023-07-21 03:16:20 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	cursor: pointer; | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | .gallery:not(.lightboxed) .images img:not(.current):hover { | 
					
						
							|  |  |  | 	z-index: calc(var(--base-layer) + 1); | 
					
						
							|  |  |  | 	box-shadow:  | 
					
						
							|  |  |  | 		0px 0px 0px calc(var(--gallery-current-image-border) / 5) rgba(255,255,255,1), | 
					
						
							|  |  |  | 		0.2em 0.2em 1em 0em rgba(0,0,0,0.8); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* current image... */ | 
					
						
							|  |  |  | .gallery .images img.current { | 
					
						
							|  |  |  | 	z-index: 10; | 
					
						
							|  |  |  | 	box-shadow:  | 
					
						
							|  |  |  | 		0px 0px 0px var(--gallery-current-image-border) rgba(255,255,255,1), | 
					
						
							|  |  |  | 		0.4em 0.4em 2em 0em rgba(0,0,0,0.8); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery:not(.lightboxed) .images img.current:hover { | 
					
						
							|  |  |  | 	z-index: calc(var(--base-layer) + 1); | 
					
						
							|  |  |  | 	box-shadow:  | 
					
						
							|  |  |  | 		0px 0px 0px var(--gallery-current-image-border) rgba(255,255,255,1), | 
					
						
							|  |  |  | 		0.6em 0.6em 3em 0em rgba(0,0,0,0.8); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-21 14:40:30 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-11 17:33:35 +03:00
										 |  |  | /* dragged image... */ | 
					
						
							|  |  |  | .gallery .images img.dragged { | 
					
						
							| 
									
										
										
										
											2023-08-11 13:21:01 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-11 17:33:35 +03:00
										 |  |  | .gallery .images:has(.dragged) img:not(.dragged) { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* image dragged over... */ | 
					
						
							|  |  |  | .gallery .images img.dragged-over { | 
					
						
							|  |  |  | 	filter: saturate(0); | 
					
						
							| 
									
										
										
										
											2023-08-11 13:21:01 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-12 00:51:18 +03:00
										 |  |  | /* image marked for removal... */ | 
					
						
							|  |  |  | .gallery .images img.to-remove { | 
					
						
							|  |  |  | 	opacity: 0.3; | 
					
						
							|  |  |  | 	filter: saturate(0); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-01 18:46:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | /*************************************************** Image markers ***/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .gallery .images img+.mark { | 
					
						
							| 
									
										
										
										
											2023-08-01 18:46:58 +03:00
										 |  |  | 	z-index: var(--base-layer); | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | 	position: relative; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-02 12:48:47 +03:00
										 |  |  | .gallery .images img:hover+.mark { | 
					
						
							|  |  |  | 	z-index: calc(var(--base-layer) + 1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery.lightboxed .images img:not(.current)+.mark { | 
					
						
							|  |  |  | 	display: none; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-07-23 06:51:18 +03:00
										 |  |  | .gallery.lightboxed .images img.current+.mark { | 
					
						
							| 
									
										
										
										
											2023-08-02 12:48:47 +03:00
										 |  |  | 	z-index: calc(var(--base-layer) + 1); | 
					
						
							| 
									
										
										
										
											2023-07-22 15:33:55 +03:00
										 |  |  | 	position: fixed; | 
					
						
							|  |  |  | 	bottom: 0; | 
					
						
							|  |  |  | 	right: 0; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-28 23:19:39 +03:00
										 |  |  | /* marker: marked */ | 
					
						
							|  |  |  | .gallery .images img+.mark.marked:after { | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | 	content: ""; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	display: block; | 
					
						
							|  |  |  | 	width: 1em; | 
					
						
							|  |  |  | 	height: 1em; | 
					
						
							|  |  |  | 	right: 0.5em; | 
					
						
							|  |  |  | 	bottom: 0.5em; | 
					
						
							|  |  |  | 	border-radius: 50%; | 
					
						
							| 
									
										
										
										
											2023-07-20 22:06:51 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | 	background: blue; | 
					
						
							| 
									
										
										
										
											2023-07-22 15:33:55 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	box-shadow: 0em 0em 0em 0.05em rgba(255,255,255,1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	cursor: pointer; | 
					
						
							| 
									
										
										
										
											2023-07-20 21:42:17 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | /******************************************************** Toolbar ****/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* XXX make the toolbar swirchable and contextual... */ | 
					
						
							|  |  |  | .gallery .toolbar { | 
					
						
							| 
									
										
										
										
											2023-08-14 12:09:27 +03:00
										 |  |  | 	--padding: 0.5rem; | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	--top: 1rem; | 
					
						
							|  |  |  | 	--height: calc((var(--toolbar-button-size) + var(--padding) * 2)); | 
					
						
							| 
									
										
										
										
											2023-08-14 12:09:27 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | 	display: inline-block; | 
					
						
							|  |  |  | 	position: sticky; | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	width: fit-content; | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	top: calc(var(--height) * -1 + var(--top)); | 
					
						
							| 
									
										
										
										
											2023-08-14 12:09:27 +03:00
										 |  |  | 	padding: var(--padding); | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	padding-right: var(--height); | 
					
						
							|  |  |  | 	padding-left: var(--height); | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	margin-left: calc(var(--gallery-padding-horizontal) * -1); | 
					
						
							|  |  |  | 	/* takeup no space... */ | 
					
						
							|  |  |  | 	margin-top: calc(var(--height)  * -1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	translate: 0 100%; | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 05:49:08 +03:00
										 |  |  | 	z-index: calc(var(--base-layer) + 2); | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-14 11:49:34 +03:00
										 |  |  | 	border: solid 1px var(--gallery-secondary-color); | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	border-radius: calc(var(--height) / 8); | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | 	background: var(--gallery-background-color); | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	box-shadow: 0.2em 0.2em 0.5em -0.3em rgba(0,0,0,0.8); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	transition:  | 
					
						
							|  |  |  | 		padding-right 0.2s, | 
					
						
							|  |  |  | 		opacity 0.2s, | 
					
						
							|  |  |  | 		translate 0.2s; | 
					
						
							| 
									
										
										
										
											2023-08-15 20:59:21 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	user-select: none; | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | } | 
					
						
							|  |  |  | /* XXX need to hide parts of the toolbar and make it transparent... */ | 
					
						
							|  |  |  | .gallery.lightboxed .toolbar, | 
					
						
							|  |  |  | .gallery.detailed .toolbar { | 
					
						
							|  |  |  | 	display: none; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | /* sticky toolbar indicator... */ | 
					
						
							|  |  |  | .gallery .toolbar.sticky:after { | 
					
						
							|  |  |  | 	content: "lock"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	display: block; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	bottom: 0; | 
					
						
							|  |  |  | 	right: 0; | 
					
						
							|  |  |  | 	padding: calc(var(--toolbar-button-size) / 10); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	font-family: "Material Symbols Outlined"; | 
					
						
							|  |  |  | 	font-size: small; | 
					
						
							|  |  |  | 	font-weight: bold; | 
					
						
							|  |  |  | 	color: var(--gallery-text-color); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	opacity: 0.2; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	pointer-events: none; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* collapsed toolbar (default)... */ | 
					
						
							|  |  |  | /* XXX shoud the toolbar be vertical??? */ | 
					
						
							|  |  |  | .gallery .toolbar:not(.shown) { | 
					
						
							|  |  |  | 	translate: calc(-100% + var(--toolbar-button-size) + var(--padding)) 100%; | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	/*padding-right: calc(var(--padding) / 5);*/ | 
					
						
							|  |  |  | 	padding-right: var(--height); | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | } | 
					
						
							|  |  |  | .gallery .toolbar:not(.shown):not(:hover) { | 
					
						
							|  |  |  | 	box-shadow: none; | 
					
						
							| 
									
										
										
										
											2023-08-16 00:36:10 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	z-index: var(--base-layer); | 
					
						
							|  |  |  | 	animation: 0.5s steps(1) tuck-to-backgroud; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | @keyframes tuck-to-backgroud { | 
					
						
							|  |  |  | 	0% { | 
					
						
							|  |  |  | 		z-index: calc(var(--base-layer) + 2); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	100% { | 
					
						
							|  |  |  | 		z-index: var(--base-layer); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-14 12:09:27 +03:00
										 |  |  | /* groups... */ | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | .gallery .toolbar>* { | 
					
						
							| 
									
										
										
										
											2023-08-14 12:09:27 +03:00
										 |  |  | 	display: inline-block; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | .gallery .toolbar>*:not(:last-child) { | 
					
						
							| 
									
										
										
										
											2023-08-14 12:09:27 +03:00
										 |  |  | 	padding-right: calc(var(--padding) / 2); | 
					
						
							|  |  |  | 	border-right: solid 1px var(--gallery-secondary-color); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-14 11:49:34 +03:00
										 |  |  | /* buttons... */ | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | .gallery .toolbar button { | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	min-width: var(--toolbar-button-size); | 
					
						
							| 
									
										
										
										
											2023-08-14 11:49:34 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	border: solid 1px transparent; | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	background: transparent; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	font-family: "Material Symbols Outlined"; | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	font-size: var(--toolbar-button-size);  | 
					
						
							|  |  |  | 	line-height: var(--toolbar-button-size); | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 	font-weight: 300; | 
					
						
							|  |  |  | 	-webkit-font-smoothing: antialiased; | 
					
						
							|  |  |  | 	-moz-osx-font-smoothing: grayscale; | 
					
						
							|  |  |  | 	text-rendering: optimizeLegibility; | 
					
						
							|  |  |  | 	font-feature-settings: "liga";    | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	text-align: center; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery .toolbar button sec { | 
					
						
							|  |  |  | 	display: inline-block; | 
					
						
							|  |  |  | 	position: relative; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	left: 0; | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	bottom: calc(var(--toolbar-button-size) / -6); | 
					
						
							|  |  |  | 	margin-left: calc(var(--toolbar-button-size) / -1.5625); | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	font-size: calc(var(--toolbar-button-size) / 1.15); | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* XXX this works but needs another layer of black text on top... | 
					
						
							|  |  |  | 	 * 		...not sure how to do this without JS -- SVG would be simpler! */ | 
					
						
							|  |  |  | 	/*-webkit-text-stroke: 0.1em white; | 
					
						
							|  |  |  | 	text-stroke: 0.1em white; */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* XXX HACK: might be better to use SVG for this... */ | 
					
						
							|  |  |  | 	text-shadow:  | 
					
						
							|  |  |  | 		0em 0.05em 0px var(--gallery-background-color), | 
					
						
							|  |  |  | 		0.05em 0em 0px var(--gallery-background-color), | 
					
						
							|  |  |  | 		-0.05em 0em 0px var(--gallery-background-color), | 
					
						
							|  |  |  | 		0em -0.05em 0px var(--gallery-background-color), | 
					
						
							|  |  |  | 		0.05em 0.05em 0px var(--gallery-background-color), | 
					
						
							|  |  |  | 		-0.05em -0.05em 0px var(--gallery-background-color), | 
					
						
							|  |  |  | 		-0.05em 0.05em 0px var(--gallery-background-color), | 
					
						
							|  |  |  | 		0.05em -0.05em 0px var(--gallery-background-color); | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-14 11:49:34 +03:00
										 |  |  | .gallery .toolbar button:hover { | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	border-radius: calc(var(--toolbar-button-size) / 5); | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	border-color: var(--gallery-secondary-color); | 
					
						
							| 
									
										
										
										
											2023-08-14 11:49:34 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | /* button: collapse... */ | 
					
						
							|  |  |  | .gallery .toolbar button.collapse { | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	width: var(--height); | 
					
						
							|  |  |  | 	height: 100%; | 
					
						
							|  |  |  | 	top: 0; | 
					
						
							|  |  |  | 	right: 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | 	opacity: 0.3; | 
					
						
							|  |  |  | 	transition: rotate 0.2s; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery .toolbar:not(.shown) button.collapse { | 
					
						
							|  |  |  | 	rotate: 180deg; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery .toolbar button.collapse:hover { | 
					
						
							|  |  |  | 	opacity: 1; | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	border-color: transparent; | 
					
						
							| 
									
										
										
										
											2023-08-15 20:45:42 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | .gallery .toolbar button.drag-handle { | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	height: calc(100% - var(--padding) * 2); | 
					
						
							|  |  |  | 	top: 0; | 
					
						
							|  |  |  | 	left: 0; | 
					
						
							|  |  |  | 	margin-top: var(--padding); | 
					
						
							|  |  |  | 	margin-bottom: var(--padding); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 20:59:21 +03:00
										 |  |  | 	font-family: "Material Symbols Outlined"; | 
					
						
							|  |  |  | 	font-size: var(--toolbar-button-size);  | 
					
						
							|  |  |  | 	line-height: var(--toolbar-button-size); | 
					
						
							|  |  |  | 	font-weight: 300; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	cursor: pointer; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-16 00:36:10 +03:00
										 |  |  | 	color: var(--gallery-secondary-color); | 
					
						
							| 
									
										
										
										
											2023-08-15 20:59:21 +03:00
										 |  |  | } | 
					
						
							|  |  |  | .gallery .toolbar .drag-handle:hover { | 
					
						
							| 
									
										
										
										
											2023-08-16 00:36:10 +03:00
										 |  |  | 	color: var(--gallery-text-color); | 
					
						
							| 
									
										
										
										
											2023-08-16 02:57:03 +03:00
										 |  |  | 	border-color: transparent; | 
					
						
							| 
									
										
										
										
											2023-08-15 20:59:21 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-13 14:26:13 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | /******************************************************* Overlays ****/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .gallery.lightboxed, | 
					
						
							|  |  |  | .gallery.detailed { | 
					
						
							|  |  |  | 	--base-layer: 100; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery.lightboxed .lightbox, | 
					
						
							|  |  |  | .gallery.detailed .details { | 
					
						
							|  |  |  | 	display: block; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | .gallery .lightbox, | 
					
						
							|  |  |  | .gallery .details { | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	display: none; | 
					
						
							|  |  |  | 	position: fixed; | 
					
						
							|  |  |  | 	width: 100%; | 
					
						
							|  |  |  | 	height: 100%; | 
					
						
							|  |  |  | 	top: 0px; | 
					
						
							|  |  |  | 	left: 0px; | 
					
						
							| 
									
										
										
										
											2023-08-01 18:46:58 +03:00
										 |  |  | 	z-index: var(--base-layer); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	text-align: center; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-03 16:40:59 +03:00
										 |  |  | 	color: var(--gallery-text-color); | 
					
						
							|  |  |  | 	background: var(--gallery-background-color); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*------------------------------------------------------ Lightbox ---*/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-03 16:40:59 +03:00
										 |  |  | .gallery .lightbox { | 
					
						
							|  |  |  | 	color: var(--lightbox-text-color); | 
					
						
							|  |  |  | 	background: var(--lightbox-background-color); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-07-21 21:24:40 +03:00
										 |  |  | .gallery .lightbox.show-caption:before { | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	content: attr(caption); | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	bottom: 0.5em; | 
					
						
							|  |  |  | 	left: 0.5em; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery .lightbox.clickable { | 
					
						
							| 
									
										
										
										
											2023-07-21 03:16:20 +03:00
										 |  |  | 	cursor: pointer; | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							|  |  |  | /* XXX add metadata display... */ | 
					
						
							|  |  |  | .gallery .lightbox img { | 
					
						
							|  |  |  | 	object-fit: contain; | 
					
						
							|  |  |  | 	width: calc( | 
					
						
							|  |  |  | 		100vw  | 
					
						
							| 
									
										
										
										
											2023-07-24 21:04:42 +03:00
										 |  |  | 		- var(--lightbox-frame) * 2); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	height: calc( | 
					
						
							|  |  |  | 		100vh  | 
					
						
							| 
									
										
										
										
											2023-07-24 21:04:42 +03:00
										 |  |  | 		- var(--lightbox-frame) * 2); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	margin-top: calc( | 
					
						
							| 
									
										
										
										
											2023-07-24 21:04:42 +03:00
										 |  |  | 		var(--lightbox-frame)  | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 		* var(--lightbox-image-margin-top));  | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*------------------------------------------------------- Details ---*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .gallery .details img { | 
					
						
							| 
									
										
										
										
											2023-08-03 15:20:42 +03:00
										 |  |  | 	width: 20em; | 
					
						
							|  |  |  | 	height: 20em; | 
					
						
							|  |  |  | 	padding: 0.5em; | 
					
						
							|  |  |  | 	object-fit: contain; | 
					
						
							|  |  |  | 	border: solid 1px black; | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /******************************************************* Controls ****/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .gallery .buttons { | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	display: flex; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	top: 0; | 
					
						
							|  |  |  | 	right: 0; | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | .gallery .button { | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	disbplay: inline-block; | 
					
						
							| 
									
										
										
										
											2023-07-21 03:16:20 +03:00
										 |  |  | 	cursor: pointer; | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	width: var(--lightbox-button-size); | 
					
						
							|  |  |  | 	height: var(--lightbox-button-size); | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	font-size: var(--lightbox-button-size); | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	line-height: var(--lightbox-button-size); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	filter: saturate(0); | 
					
						
							| 
									
										
										
										
											2023-08-03 16:40:59 +03:00
										 |  |  | 	 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	opacity: 0.1; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | .gallery .button:hover { | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 	opacity: 1; | 
					
						
							|  |  |  | 	filter: saturate(1); | 
					
						
							| 
									
										
										
										
											2023-08-03 16:40:59 +03:00
										 |  |  | 	color: var(--gallery-text-color); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* XXX HACK: might be better to use SVG for this... */ | 
					
						
							|  |  |  | 	text-shadow:  | 
					
						
							|  |  |  | 		0.02em 0.02em 0em var(--gallery-background-color), | 
					
						
							|  |  |  | 		-0.02em -0.02em 0em var(--gallery-background-color), | 
					
						
							|  |  |  | 		-0.02em 0.02em 0em var(--gallery-background-color), | 
					
						
							|  |  |  | 		0.02em -0.02em 0em var(--gallery-background-color); | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							|  |  |  | /* controls: close... */ | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | .gallery .button.close:after { | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	content: "✕"; | 
					
						
							| 
									
										
										
										
											2023-08-15 16:57:21 +03:00
										 |  |  | 	/*color: red;*/ | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | .gallery .button.fullscreen:after { | 
					
						
							| 
									
										
										
										
											2023-07-27 13:26:11 +03:00
										 |  |  | 	content: "⛶"; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-08-03 14:10:59 +03:00
										 |  |  | .gallery .button.info:after { | 
					
						
							|  |  |  | 	content: "i"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery .button.prev:after { | 
					
						
							|  |  |  | 	content: "<"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .gallery .button.next:after { | 
					
						
							|  |  |  | 	content: ">"; | 
					
						
							| 
									
										
										
										
											2023-08-02 19:01:34 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:13:09 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-14 14:38:12 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /********************************************************** Utils ****/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .gallery:not(.lightboxed):not(.detailed) .hide-in-gallery, | 
					
						
							|  |  |  | .gallery.lightboxed .hide-in-lightbox, | 
					
						
							|  |  |  | .gallery.detailed .hide-in-details { | 
					
						
							|  |  |  | 	display: none; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-17 13:16:55 +03:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | * vim:set ts=4 sw=4 :                                                */ |