mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 00:12:26 -06:00 
			
		
		
		
	* dick about with stats a bit * more dicking abuot * lil tweaks * more about-dicking * weee * comments * fixie uppie
		
			
				
	
	
		
			369 lines
		
	
	
	
		
			6.4 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
			
		
		
	
	
			369 lines
		
	
	
	
		
			6.4 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
/*
 | 
						|
	GoToSocial
 | 
						|
	Copyright (C) GoToSocial Authors admin@gotosocial.org
 | 
						|
	SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
 | 
						|
	This program is free software: you can redistribute it and/or modify
 | 
						|
	it under the terms of the GNU Affero General Public License as published by
 | 
						|
	the Free Software Foundation, either version 3 of the License, or
 | 
						|
	(at your option) any later version.
 | 
						|
 | 
						|
	This program is distributed in the hope that it will be useful,
 | 
						|
	but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
	GNU Affero General Public License for more details.
 | 
						|
 | 
						|
	You should have received a copy of the GNU Affero General Public License
 | 
						|
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
						|
*/
 | 
						|
 | 
						|
@import "photoswipe/dist/photoswipe.css";
 | 
						|
@import "photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.css";
 | 
						|
@import "plyr/dist/plyr.css";
 | 
						|
 | 
						|
.media-wrapper {
 | 
						|
	height: 100%;
 | 
						|
	width: 100%;
 | 
						|
	box-sizing: border-box;
 | 
						|
	border: 0.15rem solid $gray1;
 | 
						|
	border-radius: $br;
 | 
						|
	position: relative;
 | 
						|
	overflow: hidden;
 | 
						|
 | 
						|
	img {
 | 
						|
		width: 100%;
 | 
						|
		height: 100%;
 | 
						|
		object-fit: cover;
 | 
						|
	}
 | 
						|
 | 
						|
	details {
 | 
						|
		position: relative;
 | 
						|
		height: 100%;
 | 
						|
		width: 100%;
 | 
						|
 | 
						|
		div.blurhash-container {
 | 
						|
			z-index: -1;
 | 
						|
			position: absolute;
 | 
						|
			height: 100%;
 | 
						|
			width: 100%;
 | 
						|
		}
 | 
						|
 | 
						|
		canvas {
 | 
						|
			height: 100%;
 | 
						|
			width: 100%;
 | 
						|
			object-fit: cover;
 | 
						|
		}
 | 
						|
 | 
						|
		summary {
 | 
						|
			position: absolute;
 | 
						|
			height: 100%;
 | 
						|
			width: 100%;
 | 
						|
			overflow: hidden;
 | 
						|
			z-index: 1;
 | 
						|
 | 
						|
			display: grid;
 | 
						|
			padding: 1rem;
 | 
						|
			grid-template-columns: 1fr auto 1fr;
 | 
						|
			grid-template-rows: 1fr 1fr;
 | 
						|
			grid-template-areas: 
 | 
						|
				"eye sensitive ."
 | 
						|
				".   sensitive  .";
 | 
						|
 | 
						|
			&::-webkit-details-marker {
 | 
						|
				display: none; /* Safari */
 | 
						|
			}
 | 
						|
 | 
						|
			.eye.button {
 | 
						|
				grid-area: eye;
 | 
						|
				align-self: start;
 | 
						|
				justify-self: start;
 | 
						|
				margin: 0;
 | 
						|
				padding: 0.4rem;
 | 
						|
 | 
						|
				/*
 | 
						|
					Make button outline really thick as we can't
 | 
						|
					know whether media has good contrast with it.
 | 
						|
				*/
 | 
						|
				&:focus-visible {
 | 
						|
					outline: 0.5rem dashed $button-focus-border;
 | 
						|
				}
 | 
						|
 | 
						|
				.fa-fw {
 | 
						|
					line-height: $fa-fw;
 | 
						|
				}
 | 
						|
 | 
						|
				.hide {
 | 
						|
					display: none;
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			.show.sensitive {
 | 
						|
				grid-area: sensitive;
 | 
						|
				align-self: center;
 | 
						|
 | 
						|
				text-overflow: ellipsis;
 | 
						|
				overflow: hidden;
 | 
						|
				white-space: nowrap;
 | 
						|
 | 
						|
				.button {
 | 
						|
					cursor: pointer;
 | 
						|
					align-self: center;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		&[open] summary {
 | 
						|
			height: auto;
 | 
						|
			width: auto;
 | 
						|
			cursor: pointer;
 | 
						|
 | 
						|
			grid-template-columns: 1fr;
 | 
						|
			grid-template-rows: 1fr;
 | 
						|
 | 
						|
			.show {
 | 
						|
				display: none;
 | 
						|
			}
 | 
						|
 | 
						|
			.eye.button .hide {
 | 
						|
				display: inline-block;
 | 
						|
			}
 | 
						|
 | 
						|
			div.blurhash-container,
 | 
						|
			div.blurhash-container > canvas {
 | 
						|
				display: none;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		a.photoswipe-slide,
 | 
						|
		a.unknown-attachment {
 | 
						|
			position: absolute;
 | 
						|
			width: 100%;
 | 
						|
			height: 100%;
 | 
						|
 | 
						|
			/*
 | 
						|
				Make link outline really thick as we can't
 | 
						|
				know whether media has good contrast with it.
 | 
						|
				Indent outline to avoid being hidden by overflow: hidden.
 | 
						|
			*/
 | 
						|
			&:focus-visible {
 | 
						|
				outline: 0.5rem dotted $link-fg;
 | 
						|
				outline-offset: -0.5rem;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		video.plyr-video, .plyr {
 | 
						|
			position: absolute;
 | 
						|
			height: 100%;
 | 
						|
			width: 100%;
 | 
						|
			object-fit: cover;
 | 
						|
			background: $gray1;
 | 
						|
			min-width: 100%;
 | 
						|
		}
 | 
						|
 | 
						|
		.unknown-attachment {
 | 
						|
			.placeholder {
 | 
						|
				width: 100%;
 | 
						|
				height: 100%;
 | 
						|
				padding: 0.8rem;
 | 
						|
 | 
						|
				display: flex;
 | 
						|
				flex-direction: column;
 | 
						|
				align-items: center;
 | 
						|
				gap: 0.25rem;
 | 
						|
 | 
						|
				color: $white2;
 | 
						|
 | 
						|
				.placeholder-external-link {
 | 
						|
					align-self: end;
 | 
						|
					font-size: 2.5rem;
 | 
						|
				}
 | 
						|
 | 
						|
				.placeholder-icon {
 | 
						|
					width: 100%;
 | 
						|
					font-size: 3.5rem;
 | 
						|
					text-align: center;
 | 
						|
					margin-top: auto;
 | 
						|
				}
 | 
						|
 | 
						|
				.placeholder-link-to {
 | 
						|
					width: 100%;
 | 
						|
					text-align: center;
 | 
						|
					margin-bottom: auto;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	@media screen and (max-width: 55rem) {
 | 
						|
		/*
 | 
						|
			Tablet-ish width, make "show sensitive"
 | 
						|
			and "eye" buttons smaller + more compact.
 | 
						|
		*/
 | 
						|
		& > details {
 | 
						|
			& > summary {
 | 
						|
				padding: 0.5rem;
 | 
						|
	
 | 
						|
				> div.show.sensitive.button {
 | 
						|
					font-size: smaller;
 | 
						|
					padding: 0.2rem;
 | 
						|
					line-height: 1.4rem;
 | 
						|
				}
 | 
						|
				
 | 
						|
				> span.eye.button {
 | 
						|
					font-size: smaller;
 | 
						|
					padding: 0.2rem;
 | 
						|
	
 | 
						|
					> .fa-fw {
 | 
						|
						line-height: 1.4rem;
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	@media screen and (max-width: 36rem) {
 | 
						|
		/*
 | 
						|
			Mobile-ish width, even more compact.
 | 
						|
		*/
 | 
						|
		& > details {
 | 
						|
			& > summary {
 | 
						|
				> div.show.sensitive.button {
 | 
						|
					font-size: small;
 | 
						|
					padding: 0.1rem;
 | 
						|
					line-height: 1.2rem;
 | 
						|
				}
 | 
						|
				
 | 
						|
				> span.eye.button {
 | 
						|
					font-size: small;
 | 
						|
					padding: 0.1rem;
 | 
						|
	
 | 
						|
					> .fa-fw {
 | 
						|
						line-height: 1.2rem;
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	@media screen and (max-width: 27rem) {
 | 
						|
		/*
 | 
						|
			Really really tiny, make the text
 | 
						|
			on show/hide sensitive even smaller.
 | 
						|
		*/
 | 
						|
		& > details > summary > div.show.sensitive.button {
 | 
						|
			font-size: x-small;
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
@media (scripting: none) {
 | 
						|
	.media-wrapper {
 | 
						|
		canvas.blurhash {
 | 
						|
			display: none
 | 
						|
		}
 | 
						|
 | 
						|
		& > details:not([open]) {
 | 
						|
			background: linear-gradient(
 | 
						|
				var(--bg-accent),
 | 
						|
				var(--bg) 
 | 
						|
			);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
.pswp__button--open-post-link {
 | 
						|
	display: flex;
 | 
						|
	align-items: center;
 | 
						|
	justify-content: center;
 | 
						|
 | 
						|
	span > i {
 | 
						|
		background: $status-bg;
 | 
						|
		color: $fg;
 | 
						|
		border-radius: 25%;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
.plyr--video {
 | 
						|
	flex-direction: column-reverse;
 | 
						|
 | 
						|
	.plyr__video-wrapper {
 | 
						|
		position: relative;
 | 
						|
	}
 | 
						|
 | 
						|
	.plyr__controls {
 | 
						|
		align-self: stretch;
 | 
						|
		position: initial;
 | 
						|
		padding: 0.1rem;
 | 
						|
		padding-top: 0.2rem;
 | 
						|
		gap: 0.15rem;
 | 
						|
 | 
						|
		.plyr__controls__item {
 | 
						|
			/*
 | 
						|
				Override margins from plyr as
 | 
						|
				we're displaying in flex with a gap.
 | 
						|
			*/
 | 
						|
			margin-left: 0;
 | 
						|
			margin-right: 0;
 | 
						|
			&:first-child {
 | 
						|
				margin-right: 0;
 | 
						|
			}
 | 
						|
 | 
						|
			/*
 | 
						|
				Try to split controls in at
 | 
						|
				least a somewhat sensible way.
 | 
						|
			*/
 | 
						|
			&.plyr__volume {
 | 
						|
				margin-left: auto;
 | 
						|
			}
 | 
						|
			&[data-plyr="restart"] {
 | 
						|
				margin-right: auto;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		/*
 | 
						|
			Override the rule from plyr that
 | 
						|
			hides the total duration on thinner
 | 
						|
			screens, we have enough room.
 | 
						|
		*/
 | 
						|
		.plyr__time + .plyr__time {
 | 
						|
			display: initial;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	.plyr__control {
 | 
						|
		box-shadow: none;
 | 
						|
	}
 | 
						|
 | 
						|
	.plyr__poster {
 | 
						|
		background-size: cover;
 | 
						|
	}
 | 
						|
 | 
						|
	/*
 | 
						|
		Hide plry controls when it's not inside
 | 
						|
		a lightbox, but use cursor pointer to
 | 
						|
		show the whole thing can be clicked.
 | 
						|
	*/
 | 
						|
	&.plyr--stopped, &.plyr--paused {
 | 
						|
		.plyr__controls {
 | 
						|
			display: none;
 | 
						|
		}
 | 
						|
 | 
						|
		cursor: pointer;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
.pswp__content {
 | 
						|
	padding: 2rem;
 | 
						|
 | 
						|
	/*
 | 
						|
		Render plyr controls as normal
 | 
						|
		when it's inside a lightbox.
 | 
						|
	*/
 | 
						|
	.plyr__control--overlaid {
 | 
						|
		top: calc(50% - 18px);
 | 
						|
	}
 | 
						|
	> .plyr--stopped .plyr__controls,
 | 
						|
	> .plyr--paused .plyr__controls {
 | 
						|
		display: flex;
 | 
						|
	}
 | 
						|
}
 |