pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
at main 447 lines 9.7 kB view raw
1@import url("https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&family=PT+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap"); 2@tailwind base; 3@tailwind components; 4@tailwind utilities; 5 6html, 7body { 8 font-family: "Lato", sans-serif !important; 9 @apply bg-background-main !important; 10 @apply font-main text-type-text; 11 min-height: 100vh; 12 min-height: 100dvh; 13 font-size: 1.0248em; 14 /* Use clip instead of hidden so position:sticky still works (e.g. Settings sidebar) */ 15 overflow-x: clip; 16} 17 18html[data-full], 19html[data-full] body { 20 overscroll-behavior-y: none; 21} 22 23body[data-no-scroll] { 24 overflow-y: hidden; 25 height: 100vh; 26} 27 28#root { 29 padding: 0.05px; 30 min-height: 100vh; 31 min-height: 100dvh; 32 width: 100%; 33} 34 35body[data-no-select] { 36 user-select: none; 37} 38 39html[data-no-scroll], 40html[data-no-scroll] body { 41 overflow: hidden; 42} 43 44.top-content { 45 padding-top: calc(env(safe-area-inset-top) - 20px); 46} 47 48.roll { 49 animation: roll 1s; 50} 51 52.roll-infinite { 53 animation: roll 2s infinite; 54} 55 56@keyframes roll { 57 from { 58 transform: rotate(0deg); 59 } 60 61 to { 62 transform: rotate(360deg); 63 } 64} 65 66.line-clamp { 67 overflow: hidden; 68 display: -webkit-box; 69 -webkit-line-clamp: 1; 70 -webkit-box-orient: vertical; 71 overflow: hidden; 72} 73 74.google-cast-button:not(.casting) google-cast-launcher { 75 @apply brightness-[500]; 76} 77 78.is-mobile-view .overflow-y-auto { 79 height: 60vh; 80} 81 82.h-screen { 83 height: 100vh; 84 height: 100dvh; 85} 86 87.min-h-screen { 88 min-height: 100vh; 89 min-height: 100dvh; 90} 91 92/*generated with Input range slider CSS style generator (version 20211225) 93https://toughengineer.github.io/demo/slider-styler*/ 94:root { 95 --slider-height: 0.25rem; 96 --slider-border-radius: 1em; 97 --slider-progress-background: #8652bb; 98} 99 100input[type="range"].styled-slider { 101 height: var(--slider-height); 102 -webkit-appearance: none; 103 appearance: none; 104 border-radius: var(--slider-border-radius); 105 background: #1c161b; 106} 107 108/*progress support*/ 109input[type="range"].styled-slider.slider-progress { 110 --range: calc(var(--max) - var(--min)); 111 --ratio: calc((var(--value) - var(--min)) / var(--range)); 112 --sx: calc(0.5 * 1rem + var(--ratio) * (100% - 1rem)); 113} 114 115/*webkit*/ 116input[type="range"].styled-slider::-webkit-slider-thumb { 117 -webkit-appearance: none; 118 width: 1rem; 119 height: 1rem; 120 border-radius: var(--slider-border-radius); 121 background: #ffffff; 122 border: none; 123 box-shadow: 0 0 2px #000000; 124 margin-top: calc(0.25em * 0.5 - 1rem * 0.5); 125} 126 127input[type="range"].styled-slider::-webkit-slider-runnable-track { 128 height: var(--slider-height); 129 border: none; 130 box-shadow: none; 131 border-radius: var(--slider-border-radius); 132} 133 134input[type="range"].styled-slider::-webkit-slider-thumb:hover { 135 background: #dcdcdc; 136} 137 138input[type="range"].styled-slider.slider-progress::-webkit-slider-runnable-track { 139 background: 140 linear-gradient( 141 var(--slider-progress-background), 142 var(--slider-progress-background) 143 ) 144 0 / var(--sx) 100% no-repeat, 145 #1c161b; 146} 147 148/*mozilla*/ 149input[type="range"].styled-slider::-moz-range-thumb { 150 width: 1rem; 151 height: 1rem; 152 border-radius: var(--slider-border-radius); 153 background: #ffffff; 154 border: none; 155 box-shadow: 0 0 2px #000000; 156} 157 158input[type="range"].styled-slider::-moz-range-track { 159 height: var(--slider-height); 160 border: none; 161 border-radius: var(--slider-border-radius); 162 background: #1c161b; 163 box-shadow: none; 164} 165 166input[type="range"].styled-slider::-moz-range-thumb:hover { 167 background: #dcdcdc; 168} 169 170input[type="range"].styled-slider.slider-progress::-moz-range-track { 171 background: 172 linear-gradient( 173 var(--slider-progress-background), 174 var(--slider-progress-background) 175 ) 176 0 / var(--sx) 100% no-repeat, 177 #1c161b; 178} 179 180/*ms*/ 181input[type="range"].styled-slider::-ms-fill-upper { 182 background: transparent; 183 border-color: transparent; 184} 185 186input[type="range"].styled-slider::-ms-fill-lower { 187 background: transparent; 188 border-color: transparent; 189} 190 191input[type="range"].styled-slider::-ms-thumb { 192 width: 1rem; 193 height: 1rem; 194 border-radius: var(--slider-border-radius); 195 background: #ffffff; 196 border: none; 197 box-shadow: 0 0 2px #000000; 198 margin-top: 0; 199 box-sizing: border-box; 200} 201 202input[type="range"].styled-slider::-ms-track { 203 height: var(--slider-height); 204 border-radius: var(--slider-border-radius); 205 background: #1c161b; 206 border: none; 207 box-shadow: none; 208 box-sizing: border-box; 209} 210 211input[type="range"].styled-slider::-ms-thumb:hover { 212 background: #dcdcdc; 213} 214 215input[type="range"].styled-slider.slider-progress::-ms-fill-lower { 216 height: var(--slider-height); 217 border-radius: var(--slider-border-radius) 0 0 5px; 218 margin: -undefined 0 -undefined -undefined; 219 background: var(--slider-progress-background); 220 border: none; 221 border-right-width: 0; 222} 223 224/* Modern thin rounded scrollbar */ 225* { 226 scrollbar-width: thin; 227 scrollbar-color: theme("colors.video.context.border") transparent; 228} 229 230::-webkit-scrollbar { 231 width: 6px; 232 height: 6px; 233} 234 235::-webkit-scrollbar-track { 236 background: transparent; 237 border-radius: 10px; 238} 239 240::-webkit-scrollbar-thumb { 241 background-color: theme("colors.video.context.border"); 242 border-radius: 10px; 243 transition: background-color 0.2s ease; 244} 245 246::-webkit-scrollbar-thumb:hover { 247 background-color: rgba(134, 82, 187, 0.8); 248} 249 250::-webkit-scrollbar-thumb:active { 251 background-color: rgba(134, 82, 187, 1); 252} 253 254::-webkit-scrollbar-corner { 255 background: transparent; 256} 257 258.grecaptcha-badge { 259 display: none !important; 260} 261 262.tabbable:focus-visible { 263 outline: 2px solid theme("colors.themePreview.primary"); 264 box-shadow: 0 0 10px theme("colors.themePreview.secondary"); 265} 266 267[dir="rtl"] .transform { 268 /* Invert horizontal X offset on transform (Tailwind RTL plugin does the rest) */ 269 transform: translate(calc(var(--tw-translate-x) * -1), var(--tw-translate-y)) 270 rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) 271 scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; 272} 273[dir="ltr"] .transform { 274 /* default - otherwise it overwrites*/ 275 transform: translate(var(--tw-translate-x), var(--tw-translate-y)) 276 rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) 277 scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; 278} 279 280@keyframes jiggle { 281 0%, 282 100% { 283 transform: rotate(-1deg); 284 } 285 50% { 286 transform: rotate(1deg); 287 } 288} 289 290.jiggle { 291 animation: jiggle 0.25s infinite; 292} 293 294.carousel-container { 295 position: relative; 296 mask-image: linear-gradient( 297 to right, 298 rgba(0, 0, 0, 0), 299 /* Left edge */ rgba(0, 0, 0, 1) 80px, 300 /* visible after 80px */ rgba(0, 0, 0, 1) calc(100% - 80px), 301 /* invisible 80px from right */ rgba(0, 0, 0, 0) 100% /* Right edge */ 302 ); 303 -webkit-mask-image: linear-gradient( 304 to right, 305 rgba(0, 0, 0, 0), 306 rgba(0, 0, 0, 1) 80px, 307 rgba(0, 0, 0, 1) calc(100% - 80px), 308 rgba(0, 0, 0, 0) 100% 309 ); 310 z-index: 1; 311} 312 313@media (max-width: 768px) { 314 .carousel-container { 315 mask-image: linear-gradient( 316 to right, 317 rgba(0, 0, 0, 0), 318 /* Left edge */ rgba(0, 0, 0, 1) 20px, 319 /* visible after 80px */ rgba(0, 0, 0, 1) calc(100% - 20px), 320 /* invisible 80px from right */ rgba(0, 0, 0, 0) 100% /* Right edge */ 321 ); 322 -webkit-mask-image: linear-gradient( 323 to right, 324 rgba(0, 0, 0, 0), 325 rgba(0, 0, 0, 1) 20px, 326 rgba(0, 0, 0, 1) calc(100% - 20px), 327 rgba(0, 0, 0, 0) 100% 328 ); 329 } 330} 331 332.vertical-carousel-container { 333 --mask-fade-distance: 80px; 334 position: relative; 335 -webkit-mask-image: linear-gradient( 336 to bottom, 337 transparent, 338 black var(--mask-fade-distance), 339 black calc(100% - var(--mask-fade-distance)), 340 transparent 341 ); 342 mask-image: var(-webkit-mask-image); 343 z-index: 1; 344} 345 346.vertical-carousel-container.hide-top-gradient { 347 -webkit-mask-image: linear-gradient( 348 to bottom, 349 black, 350 black calc(100% - var(--mask-fade-distance)), 351 transparent 352 ); 353 mask-image: var(-webkit-mask-image); 354} 355 356.vertical-carousel-container.hide-bottom-gradient { 357 -webkit-mask-image: linear-gradient( 358 to bottom, 359 transparent, 360 black var(--mask-fade-distance), 361 black 362 ); 363 mask-image: var(-webkit-mask-image); 364} 365 366.vertical-carousel-container.hide-top-gradient.hide-bottom-gradient { 367 -webkit-mask-image: none; 368 mask-image: none; 369} 370 371@media (max-width: 768px) { 372 .vertical-carousel-container { 373 --mask-fade-distance: 20px; 374 } 375} 376 377/* DetailsModal staggered scaling anime */ 378@keyframes scaleIn { 379 0% { 380 transform: scale(0); 381 opacity: 0; 382 } 383 50% { 384 transform: scale(1.1); 385 } 386 100% { 387 transform: scale(1); 388 opacity: 1; 389 } 390} 391 392.bookmark-button { 393 opacity: 0; 394 transition: opacity 0.3s; 395} 396 397.group:hover .bookmark-button { 398 opacity: 1; 399} 400 401@media (max-width: 1024px) { 402 .group:hover .bookmark-button { 403 opacity: 0; 404 } 405} 406 407.cast-button-container { 408 position: relative; 409 width: 40px; 410 height: 40px; 411 display: flex; 412 align-items: center; 413 justify-content: center; 414 flex-shrink: 0; 415} 416 417.cast-button-container google-cast-launcher { 418 width: 24px !important; 419 height: 24px !important; 420 min-width: 24px !important; 421 min-height: 24px !important; 422 display: block; 423} 424 425.google-cast-button.hidden { 426 display: none; 427} 428 429.google-cast-button:not(.casting) google-cast-launcher { 430 @apply brightness-[500]; 431} 432 433/* Image fade-in on load */ 434img:not(.no-fade):not([src=""]) { 435 opacity: 0; 436 transition: opacity 0.8s ease-in-out; 437} 438 439/* Fade in when image has loaded class */ 440img.loaded:not(.no-fade) { 441 opacity: 1; 442} 443 444/* For images that are already cached/loaded, show them immediately */ 445img[complete]:not(.no-fade):not([src=""]) { 446 opacity: 1; 447}