this repo has no description
at hotfix/infinite-loop-intersection-observer 2576 lines 62 kB view raw
1@import url('@szhsin/react-menu/dist/core.css'); 2@import url('toastify-js/src/toastify.css'); 3 4html, 5body { 6 margin: 0; 7 padding: 0; 8 background-color: var(--bg-color); 9 color: var(--text-color); 10 overflow-x: hidden; 11} 12body { 13 touch-action: pan-x pan-y; 14} 15 16#app { 17 min-height: 100vh; 18 min-height: 100dvh; 19 display: flex; 20 align-items: center; 21 justify-content: center; 22} 23#app-standalone { 24 background-color: var(--bg-faded-color); 25} 26 27/* MENTIONS */ 28 29a.mention { 30 text-decoration-line: none; 31} 32a.mention span { 33 text-decoration-line: underline; 34 text-decoration-color: inherit; 35 text-decoration-thickness: 2px; 36 text-underline-offset: 2px; 37} 38/* a.mention:has(span).hashtag { 39 color: var(--link-light-color); 40} */ 41a.mention span { 42 color: var(--text-color); 43} 44a[href^='http'][rel*='nofollow']:visited:not(:has(div)) { 45 color: var(--link-visited-color); 46 text-decoration-color: var(--link-visited-color); 47} 48 49.deck-container { 50 width: 100%; 51 height: 100vh; 52 height: 100dvh; 53 overflow: auto; 54 overflow-x: hidden; 55 transition: opacity 0.1s ease-in-out; 56 overscroll-behavior: contain; 57 scroll-behavior: smooth; 58 background-color: var(--bg-color); 59 flex-grow: 1; 60 /* This `transform` fixes carousel blocking vertical scrolling for pointer devices on iPad */ 61 transform: translateZ(0); 62} 63 64@media (hover: hover) { 65 .deck-container { 66 overscroll-behavior: auto; 67 } 68} 69.deck-container[hidden] { 70 display: block; 71 position: absolute; 72 user-select: none; 73 pointer-events: none; 74 opacity: 0; 75 content-visibility: hidden; 76} 77 78.deck-container, 79.deck.contained { 80 scroll-padding-top: 3em; 81} 82 83:is(#home-page, #welcome, #columns, #loader-root) ~ .deck-container { 84 z-index: 10; 85 position: fixed; 86 inset: 0; 87} 88:is(#home-page, #welcome, #columns, #loader-root):has(~ .deck-container) { 89 /* display: block; */ 90 position: absolute; 91 user-select: none; 92 pointer-events: none; 93 opacity: 0; 94 /* This causes scrollTop to be reset to 0 when the page is hidden */ 95 /* content-visibility: hidden; */ 96} 97 98.deck { 99 min-height: 100vh; 100 min-height: 100dvh; 101 margin: auto; 102 width: var(--main-width); 103 max-width: 100%; 104 background-color: var(--bg-color); 105 overflow-anchor: auto; 106} 107.deck.contained { 108 overflow: auto; 109 overflow-x: hidden; 110 height: 100vh; 111 height: 100dvh; 112 overscroll-behavior: contain; 113} 114@media (hover: hover) { 115 .deck.contained { 116 overscroll-behavior: auto; 117 } 118} 119 120.deck > header { 121 position: sticky; 122 top: 0; 123 z-index: 1; 124 cursor: default; 125 z-index: 10; 126 user-select: none; 127 transition: transform 0.5s ease-in-out; 128 user-select: none; 129 130 .header-double-lines { 131 font-size: 90% !important; 132 cursor: pointer; 133 134 div { 135 font-weight: normal; 136 color: var(--text-insignificant-color); 137 } 138 } 139} 140.deck > header[hidden] { 141 display: block; 142 transform: translateY(-100%); 143 pointer-events: none; 144 user-select: none; 145} 146.deck > header .header-grid { 147 background-color: var(--bg-color); 148 /* background-color: var(--bg-blur-color); 149 background-image: linear-gradient(to bottom, var(--bg-color), transparent); 150 backdrop-filter: saturate(180%) blur(20px); */ 151 border-bottom: var(--hairline-width) solid var(--divider-color); 152 min-height: 3em; 153 display: grid; 154 grid-template-columns: 1fr minmax(0, max-content) 1fr; 155 align-items: center; 156 white-space: nowrap; 157} 158.deck > header .header-grid > .header-side:last-of-type { 159 text-align: right; 160 grid-column: 3; 161} 162.deck > header .header-grid :is(button, .button).plain { 163 backdrop-filter: none; 164} 165.deck > header .header-grid h1 { 166 margin: 0 8px; 167 padding: 0; 168 font-size: 1.2em; 169 text-align: center; 170 overflow: hidden; 171 text-overflow: ellipsis; 172 white-space: nowrap; 173} 174.deck > header .header-grid.header-grid-2 { 175 grid-template-columns: 1fr max-content; 176} 177.deck > header .header-grid-2 h1 { 178 text-align: left; 179 padding-left: 8px; 180} 181.deck > header .header-grid h1:has(.ancestors-indicator) { 182 display: flex; 183 gap: 8px; 184 align-items: center; 185 max-width: fit-content; 186} 187.deck > header .header-grid h1:has(.ancestors-indicator) .hero-heading { 188 flex: 1; 189 overflow: hidden; 190 text-overflow: ellipsis; 191 white-space: nowrap; 192} 193.deck h2 { 194 font-size: 1.45em; 195} 196.deck.padded-bottom .timeline > li:last-child { 197 padding-bottom: 80vh !important; 198 padding-bottom: 80dvh !important; 199} 200 201@keyframes indeterminate-bar { 202 0% { 203 transform: translateX(-50%); 204 opacity: 0.25; 205 } 206 50% { 207 opacity: 1; 208 } 209 100% { 210 transform: translateX(50%); 211 opacity: 0.25; 212 } 213} 214.deck > header.loading:after { 215 pointer-events: none; 216 content: ''; 217 display: block; 218 height: 4px; 219 position: absolute; 220 bottom: 0; 221 width: 50%; 222 left: 25%; 223 background-image: radial-gradient( 224 farthest-side at bottom, 225 var(--link-color), 226 transparent 227 ); 228 animation: indeterminate-bar 1s ease-in-out infinite alternate; 229} 230@media (min-width: 40em) { 231 .deck > header.loading:after { 232 height: 8px; 233 } 234} 235 236.timeline { 237 margin: 0 auto; 238 padding: 0; 239 240 &.timeline-media { 241 --grid-gap: 8px; 242 display: grid; 243 grid-template-columns: 1fr; 244 grid-auto-rows: fit-content; 245 gap: var(--grid-gap); 246 padding: var(--grid-gap); 247 248 &:not(#columns &) { 249 background-color: var(--bg-faded-color); 250 } 251 252 @media (min-width: 320px) { 253 grid-template-columns: 1fr 1fr; 254 } 255 256 @media (min-width: 40em) { 257 &:not(#columns &) { 258 --grid-gap: 16px; 259 grid-template-columns: 1fr 1fr 1fr; 260 261 @media (min-width: 40em) { 262 width: 95vw; 263 max-width: calc(320px * 3.3); 264 transform: translateX(calc(-50% + var(--main-width) / 2)); 265 } 266 } 267 268 #columns & { 269 padding-inline: 0; 270 } 271 } 272 273 li { 274 padding: 0 !important; 275 margin: 0 !important; 276 border: 0 !important; 277 overflow: visible !important; 278 background-color: transparent !important; 279 box-shadow: none !important; 280 } 281 282 @supports (grid-template-rows: masonry) { 283 grid-template-rows: masonry; 284 masonry-auto-flow: pack; 285 286 .media-post a { 287 aspect-ratio: revert !important; 288 289 video, 290 img, 291 audio { 292 min-height: 88px; /* for extreme dimensions */ 293 } 294 } 295 } 296 } 297} 298.timeline.grow { 299 /* min-height: 100vh; 300 min-height: 100dvh; */ 301 padding-bottom: calc(env(safe-area-inset-bottom) + 16px); 302} 303.timeline > li { 304 list-style: none; 305 margin: 0; 306 padding: 0; 307 border-bottom: var(--hairline-width) solid var(--divider-color); 308} 309.timeline.flat > li { 310 border-bottom: none; 311} 312 313.timeline.contextual { 314 --thread-start: 40px; 315 --line-start: 40px; 316 --line-width: 3px; 317 --line-end: calc(var(--line-start) + var(--line-width)); 318 --line-margin-end: 16px; 319 --line-radius: 10px; 320 --line-diameter: calc(var(--line-radius) * 2); 321 --avatar-size: 50px; 322 --avatar-margin-start: 16px; 323 --avatar-margin-end: 12px; 324} 325.timeline.contextual > li { 326 background-image: linear-gradient( 327 to right, 328 transparent, 329 transparent var(--line-start), 330 var(--comment-line-color) var(--line-start), 331 var(--comment-line-color) var(--line-end), 332 transparent var(--line-end), 333 transparent 334 ); 335 background-repeat: no-repeat; 336 transition: opacity 0.3s ease-in-out; 337} 338.timeline.contextual > li:first-child { 339 background-position: 0 calc(16px + var(--avatar-size)); 340} 341.timeline.contextual > li:last-child { 342 background-size: 100% 20px; 343} 344.timeline.contextual > li:only-child { 345 background-image: none; 346} 347.timeline.contextual > li.descendant { 348 position: relative; 349} 350.timeline.contextual > li.descendant { 351 padding-bottom: 1em; 352} 353.timeline.contextual 354 > li.descendant:not(.thread) 355 > :is(.status-link, .status-focus) { 356 padding-left: 40px; 357} 358.timeline.contextual .replies[data-scroll-left]:not([data-scroll-left='0']) { 359 background-color: var(--bg-color); 360 box-shadow: inset 0 -3px var(--comment-line-color), 361 inset 0 3px var(--comment-line-color); 362 overscroll-behavior-x: contain; 363 /* touch-action: pan-x; */ 364} 365.timeline.contextual .replies[data-comments-level='4'] { 366 overflow-x: auto; 367} 368.timeline.contextual .replies[data-comments-level='4']:has(.replies) { 369 overflow-x: auto; 370 mask-image: linear-gradient(to left, transparent, black 32px); 371} 372.timeline.contextual 373 .replies[data-comments-level='4']:has(.replies) 374 > .replies-summary { 375 border-top: 2px dashed var(--divider-color); 376} 377.timeline.contextual 378 .replies[data-comments-level='4'] 379 .replies[data-comments-level-overflow='true'] 380 .status { 381 min-width: min(20em, 80vw); 382} 383.timeline.contextual 384 > li.descendant.thread 385 > :is(.status-link, .status-focus) 386 + .replies 387 .replies-summary { 388 margin-left: calc( 389 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 390 (var(--line-margin-end) * (var(--comments-level) - 1)) 391 ); 392} 393/* .timeline.contextual 394 > li.descendant.thread 395 > .status-link 396 + .replies 397 .replies 398 > .replies-summary { 399 margin-left: calc( 400 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 401 var(--line-margin-end) 402 ); 403} 404.timeline.contextual 405 > li.descendant.thread 406 > .status-link 407 + .replies 408 .replies 409 .replies 410 > .replies-summary { 411 margin-left: calc( 412 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 413 (var(--line-margin-end) * 2) 414 ); 415} */ 416.timeline.contextual 417 > li.descendant.thread 418 > :is(.status-link, .status-focus) 419 + .replies 420 :is(.status-link, .status-focus) { 421 padding-left: calc( 422 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 423 (var(--line-margin-end) * (var(--comments-level) - 1)) 424 ); 425} 426/* .timeline.contextual 427 > li.descendant.thread 428 > .status-link 429 + .replies 430 .replies 431 .status-link { 432 padding-left: calc( 433 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 434 var(--line-margin-end) 435 ); 436} 437.timeline.contextual 438 > li.descendant.thread 439 > .status-link 440 + .replies 441 .replies 442 .replies 443 .status-link { 444 padding-left: calc( 445 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 446 (var(--line-margin-end) * 2) 447 ); 448} */ 449.timeline.contextual 450 > li.descendant:not(.thread) 451 > :is(.status-link, .status-focus) 452 + .replies 453 .replies-summary { 454 margin-left: calc( 455 var(--thread-start) + var(--line-margin-end) * var(--comments-level) 456 ); 457} 458/* .timeline.contextual 459 > li.descendant:not(.thread) 460 > .status-link 461 + .replies 462 .replies 463 > .replies-summary { 464 margin-left: calc( 465 var(--thread-start) + var(--line-margin-end) + var(--line-margin-end) 466 ); 467} 468.timeline.contextual 469 > li.descendant:not(.thread) 470 > .status-link 471 + .replies 472 .replies 473 .replies 474 > .replies-summary { 475 margin-left: calc( 476 var(--thread-start) + var(--line-margin-end) + (var(--line-margin-end) * 2) 477 ); 478} */ 479.timeline.contextual 480 > li.descendant:not(.thread) 481 > :is(.status-link, .status-focus) 482 + .replies 483 :is(.status-link, .status-focus) { 484 padding-left: calc( 485 var(--thread-start) + var(--line-margin-end) * var(--comments-level) 486 ); 487} 488/* .timeline.contextual 489 > li.descendant:not(.thread) 490 > .status-link 491 + .replies 492 .replies 493 .status-link { 494 padding-left: calc(var(--thread-start) + (var(--line-margin-end) * 2)); 495} 496.timeline.contextual 497 > li.descendant:not(.thread) 498 > .status-link 499 + .replies 500 .replies 501 .replies 502 .status-link { 503 padding-left: calc(var(--thread-start) + (var(--line-margin-end) * 3)); 504} */ 505.timeline.contextual > li.descendant:not(.thread):before { 506 content: ''; 507 position: absolute; 508 top: 10px; 509 left: var(--line-start); 510 width: var(--line-diameter); 511 height: var(--line-diameter); 512 border-radius: var(--line-radius); 513 border-style: solid; 514 border-width: var(--line-width); 515 border-color: transparent transparent var(--comment-line-color) transparent; 516 transform: rotate(45deg); 517} 518.timeline.contextual > li .replies-link { 519 color: var(--text-insignificant-color); 520 margin-left: 16px; 521 margin-top: -12px; 522 padding-bottom: 12px; 523 font-size: 90%; 524} 525.timeline.contextual > li.ancestor .replies-link { 526 margin-left: calc( 527 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) 528 ); 529} 530.timeline.contextual 531 > li.thread 532 > :is(.status-link, .status-focus) 533 .replies-link { 534 margin-left: calc( 535 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) 536 ); 537} 538.timeline.contextual > li .replies-link * { 539 vertical-align: middle; 540} 541.timeline.contextual > li .replies { 542 margin-top: -12px; 543} 544.timeline.contextual > li .replies :is(ul, li):not(.content *) { 545 margin: 0; 546 padding: 0; 547 list-style: none; 548} 549.timeline.contextual > li .replies > .replies-summary { 550 padding: 8px; 551 background-color: var(--bg-faded-color); 552 display: inline-block; 553 border-radius: 8px; 554 cursor: pointer; 555 text-transform: uppercase; 556 font-size: 12px; 557 color: var(--text-insignificant-color); 558 user-select: none; 559 box-shadow: 0 0 0 2px var(--bg-color); 560 position: relative; 561 list-style: none; 562 white-space: nowrap; 563 564 b { 565 font-weight: 500; 566 color: var(--text-color); 567 } 568} 569.timeline.contextual > li .replies > .replies-summary::-webkit-details-marker { 570 display: none; 571} 572.timeline.contextual > li .replies > .replies-summary > * { 573 vertical-align: middle; 574} 575.timeline.contextual > li .replies > .replies-summary .avatars { 576 margin-right: 8px; 577 578 > *:not(:first-child) { 579 margin: 0 0 0 -4px; 580 } 581} 582.timeline.contextual > li .replies > .replies-summary:active, 583.timeline.contextual > li .replies[open] > .replies-summary { 584 color: var(--text-color); 585 background-color: var(--comment-line-color); 586 background-image: linear-gradient( 587 to top right, 588 var(--comment-line-color), 589 var(--bg-faded-color) 590 ); 591} 592.timeline.contextual > li .replies[open] > .replies-summary { 593 border-bottom-left-radius: 0; 594} 595.timeline.contextual > li .replies .replies-summary[hidden] { 596 display: none; 597} 598.timeline.contextual > li .replies li:not(.content li) { 599 position: relative; 600} 601.timeline.contextual > li .replies li:not(.content li) { 602 --line-start: calc( 603 var(--thread-start) + var(--line-margin-end) * var(--comments-level) 604 ); 605 --line-end: calc(var(--line-start) + var(--line-width)); 606 background-image: linear-gradient( 607 to right, 608 transparent, 609 transparent var(--line-start), 610 var(--comment-line-color) var(--line-start), 611 var(--comment-line-color) var(--line-end), 612 transparent var(--line-end), 613 transparent 614 ); 615 background-repeat: no-repeat; 616} 617/* .timeline.contextual > li .replies .replies li { 618 --line-start: calc(var(--thread-start) + (var(--line-margin-end) * 2)); 619} 620.timeline.contextual > li .replies .replies .replies li { 621 --line-start: calc(var(--thread-start) + (var(--line-margin-end) * 3)); 622} */ 623.timeline.contextual > li.thread .replies li:not(.content li) { 624 --line-start: calc( 625 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 626 (var(--line-margin-end) * (var(--comments-level) - 1)) 627 ); 628} 629/* .timeline.contextual > li.thread .replies .replies li { 630 --line-start: calc( 631 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 632 var(--line-margin-end) 633 ); 634} 635.timeline.contextual > li.thread .replies .replies .replies li { 636 --line-start: calc( 637 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 638 (var(--line-margin-end) * 2) 639 ); 640} */ 641.timeline.contextual > li .replies li:not(.content li):last-child { 642 background-size: 100% 20px; 643} 644.timeline.contextual > li .replies li:not(.content li):before { 645 content: ''; 646 position: absolute; 647 top: 10px; 648 left: var(--line-start); 649 width: var(--line-diameter); 650 height: var(--line-diameter); 651 border-radius: var(--line-radius); 652 border-style: solid; 653 border-width: var(--line-width); 654 border-color: transparent transparent var(--comment-line-color) transparent; 655 transform: rotate(45deg); 656} 657/* .timeline.contextual > li .replies .replies li:before { 658 --line-start: calc( 659 var(--thread-start) + var(--line-margin-end) + var(--line-margin-end) 660 ); 661} 662.timeline.contextual > li .replies .replies .replies li:before { 663 --line-start: calc( 664 var(--thread-start) + var(--line-margin-end) + (var(--line-margin-end) * 2) 665 ); 666} */ 667.timeline.contextual > li.thread .replies li:not(.content li):before { 668 --line-start: calc( 669 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 670 (var(--line-margin-end) * (var(--comments-level) - 1)) 671 ); 672} 673/* .timeline.contextual > li.thread .replies .replies li:before { 674 --line-start: calc( 675 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 676 var(--line-margin-end) 677 ); 678} 679.timeline.contextual > li.thread .replies .replies .replies li:before { 680 --line-start: calc( 681 var(--avatar-size) + var(--avatar-margin-start) + var(--avatar-margin-end) + 682 (var(--line-margin-end) * 2) 683 ); 684} */ 685.timeline.contextual.loading > li:not(.hero) { 686 /* opacity: 0.5; */ 687 pointer-events: none; 688} 689 690.timeline.contextual > li .replies { 691 > ul > li:only-child { 692 > .replies { 693 > ul > li:only-child { 694 margin-left: calc(-1 * var(--line-margin-end)); 695 background-position: calc(16px) 0; 696 background-size: 100% calc(20px + 8px); 697 698 &:before { 699 display: none; 700 } 701 } 702 } 703 } 704} 705 706.timeline-deck.compact .status { 707 max-height: max(25vh, 160px); 708 overflow: hidden; 709 mask-image: linear-gradient( 710 rgba(0, 0, 0, 1), 711 rgba(0, 0, 0, 1) 80%, 712 transparent 95% 713 ); 714} 715.timeline-deck.compact .status .meta ~ * { 716 pointer-events: none; 717} 718 719.timeline-header { 720 padding: 0 16px; 721 opacity: 0.75; 722} 723 724.timeline-empty { 725 color: var(--text-insignificant-color); 726 padding: 0 16px; 727 margin-bottom: 3em; 728} 729 730.timeline:not(.flat) > li.timeline-item-container { 731 --avatar-size: 50px; 732 --line-start: 40px; 733 --line-width: 3px; 734 --line-end: calc(var(--line-start) + var(--line-width)); 735 background-image: linear-gradient( 736 to right, 737 transparent, 738 transparent var(--line-start), 739 var(--comment-line-color) var(--line-start), 740 var(--comment-line-color) var(--line-end), 741 transparent var(--line-end), 742 transparent 743 ); 744 background-repeat: no-repeat; 745} 746.timeline:not(.flat) > li.timeline-item-container-start { 747 margin-bottom: 0; 748 border-bottom-left-radius: 0; 749 border-bottom-right-radius: 0; 750 border-bottom: 0; 751 background-position: 0 calc(16px + var(--avatar-size)); 752} 753.timeline:not(.flat) > li.timeline-item-container-middle { 754 margin-top: 0; 755 margin-bottom: 0; 756 border-radius: 0; 757 border-bottom: 0; 758 border-top: 0; 759} 760.timeline:not(.flat) > li.timeline-item-container-end { 761 margin-top: 0; 762 border-top-left-radius: 0; 763 border-top-right-radius: 0; 764 border-top: 0; 765 background-size: 100% 16px; 766} 767.timeline:not(.flat) 768 > li:is(.timeline-item-container-middle, .timeline-item-container-end) 769 .status-reply-to:not(.visibility-direct):not(.status-card) { 770 background-image: none; 771} 772.timeline:not(.flat) 773 > li.timeline-item-diff-author 774 > :is(.status-link, .status-focus) 775 > .status 776 > a 777 > .avatar { 778 transform: scale(0.8); 779 filter: drop-shadow(0 0 16px var(--bg-color)) 780 drop-shadow(0 0 8px var(--bg-color)) drop-shadow(0 0 8px var(--bg-color)); 781} 782 783.timeline .show-more { 784 padding-left: calc(var(--line-end) + var(--line-margin-end)) !important; 785 text-align: left; 786 background-color: transparent !important; 787 backdrop-filter: none !important; 788 position: relative; 789 border-radius: 0; 790 padding-block: 16px !important; 791 792 .avatars-bunch > .avatar:not(:first-child) { 793 margin-left: -4px; 794 } 795} 796.timeline .show-more:hover { 797 filter: none !important; 798 color: var(--text-color) !important; 799 background-color: var(--bg-faded-blur-color) !important; 800} 801.timeline .show-more:before { 802 content: ''; 803 position: absolute; 804 top: 10px; 805 left: var(--line-start); 806 width: var(--line-diameter); 807 height: var(--line-diameter); 808 border-radius: var(--line-radius); 809 border-style: solid; 810 border-width: var(--line-width); 811 border-color: transparent transparent var(--comment-line-color) transparent; 812 transform: rotate(45deg); 813} 814 815.status-loading { 816 text-align: center; 817 color: var(--text-insignificant-color); 818 max-width: var(--main-width); 819} 820.status-error { 821 text-align: center; 822 color: var(--text-insignificant-color); 823 max-width: var(--main-width); 824} 825 826.status-link { 827 display: block; 828 text-decoration-line: none; 829 color: inherit; 830 user-select: none; 831 transition: background-color 0.2s ease-out; 832 -webkit-tap-highlight-color: transparent; 833 animation: appear 0.2s ease-out; 834 -webkit-touch-callout: none; 835} 836@media (pointer: coarse) { 837 .status-focus:not(.hero .status-focus) { 838 /* Only the hero doesn't have context menu */ 839 user-select: none; 840 -webkit-tap-highlight-color: transparent; 841 -webkit-touch-callout: none; 842 } 843} 844:is(.status-link, .status-focus):is(:focus, .is-active) { 845 background-color: var(--link-bg-hover-color); 846 outline-offset: -2px; 847} 848@media (hover: hover) { 849 .status-link:hover { 850 background-color: var(--link-bg-hover-color); 851 outline-offset: -2px; 852 } 853} 854.status-link:active:not(:has(:is(.media, button):active)) { 855 filter: brightness(0.95); 856} 857 858.status-carousel { 859 --carousel-faded-color: var(--bg-faded-color); 860 background: linear-gradient( 861 to bottom right, 862 var(--carousel-faded-color), 863 transparent 150% 864 ); 865 position: relative; 866 container-type: inline-size; 867} 868.status-carousel:after { 869 content: ''; 870 position: absolute; 871 inset: 0; 872 pointer-events: none; 873 background-image: radial-gradient( 874 ellipse 50% 32px at bottom center, 875 var(--carousel-faded-color), 876 transparent 877 ), 878 linear-gradient(to top, var(--bg-color), transparent 64px); 879 background-repeat: no-repeat; 880 background-position: bottom center; 881} 882.status-carousel header { 883 padding: 8px 16px 0; 884 display: flex; 885 justify-content: space-between; 886 align-items: center; 887} 888.status-carousel h3 { 889 margin: 0; 890 padding: 0; 891 font-size: 14px; 892 text-transform: uppercase; 893 color: var(--carousel-color); 894 text-shadow: 0 1px var(--bg-color); 895} 896.status-carousel > ul { 897 --carousel-gap: 16px; 898 display: flex; 899 overflow-x: auto; 900 overflow-y: clip; 901 scroll-snap-type: x mandatory; 902 scroll-behavior: smooth; 903 margin: 0; 904 padding: 8px 16px; 905 gap: var(--carousel-gap); 906 align-items: flex-start; 907 counter-reset: index; 908 min-height: 160px; 909 max-height: 65vh; 910 max-height: 65dvh; 911} 912.status-carousel > ul > li { 913 scroll-snap-align: center; 914 scroll-snap-stop: always; 915 flex-shrink: 0; 916 display: flex; 917 width: 100%; 918 max-width: min(320px, calc(100% - 16px)); 919 list-style: none; 920 margin: 0; 921 padding: 0; 922 /* max-height: 65vh; 923 max-height: 65dvh; */ 924 counter-increment: index; 925 position: relative; 926} 927.status-carousel > ul > li:is(:empty, :has(> a:empty)) { 928 display: none; 929} 930.status-carousel .status-carousel-beacon { 931 margin-right: calc(-1 * var(--carousel-gap)); 932 pointer-events: none; 933 opacity: 0; 934 935 ~ .status-carousel-beacon { 936 margin-left: calc(-1 * var(--carousel-gap)); 937 } 938} 939/* 940 Assume that browsers that do support inline-size property also support container queries. 941 https://www.smashingmagazine.com/2021/05/css-container-queries-use-cases-migration-strategies/#progressive-enhancement-polyfills 942*/ 943@supports not (contain: inline-size) { 944 @media (hover: hover) or (pointer: fine) or (min-width: 40em) { 945 .status-carousel > ul { 946 scroll-snap-type: none; 947 } 948 } 949} 950@container (min-width: 640px) { 951 .status-carousel > ul { 952 scroll-snap-type: none; 953 } 954} 955.status-carousel .content-container .content:only-child { 956 font-size: calc(100% + 25% * max(2 - var(--content-text-weight), 0)); 957 958 &:has(.status-card) { 959 font-size: unset; 960 } 961} 962/* .status-carousel 963 .content-container[data-content-text-weight='1'] 964 .media-container.media-eq1 { 965 /* LOL, this is madness, reading a value from the style attribute * / 966 height: auto; 967 min-height: 160px; 968 max-height: max(160px, 50vh); 969} */ 970.status-carousel.boosts-carousel { 971 --carousel-color: var(--reblog-color); 972 --carousel-faded-color: var(--reblog-faded-color); 973} 974.status-carousel.boosts-carousel .status-reblog { 975 background-image: none; 976} 977.status-carousel.boosts-carousel > ul > li:before { 978 content: counter(index); 979 position: absolute; 980 left: 0; 981 font-size: 10px; 982 color: var(--text-insignificant-color); 983 padding: 6px; 984} 985 986.ui-state { 987 padding: 16px; 988 text-align: center; 989} 990 991.status-carousel-link { 992 display: block; 993 width: 100%; 994 text-decoration-line: none; 995 color: inherit; 996 user-select: none; 997 transition: background-color 0.2s ease-out; 998 -webkit-tap-highlight-color: transparent; 999 animation: appear 0.2s ease-out; 1000 border: 1px solid var(--outline-color); 1001 background-color: var(--bg-blur-color); 1002 border-radius: 16px; 1003 overflow: clip; 1004 box-shadow: 0 1px var(--bg-color); 1005 1006 &:has(.status-badge:not(:empty)) { 1007 border-top-right-radius: 8px; 1008 } 1009 1010 .status-carousel.boosts-carousel & { 1011 border-top-left-radius: 8px; 1012 } 1013} 1014.status-carousel-link::focus { 1015 background-color: var(--link-bg-hover-color); 1016} 1017@media (hover: hover) { 1018 .status-carousel-link:hover { 1019 background-color: var(--link-bg-hover-color); 1020 } 1021} 1022.status-carousel-link:active:not(:has(:is(.media, button):active)) { 1023 filter: brightness(0.95); 1024} 1025 1026.deck-backdrop { 1027 position: fixed; 1028 top: 0; 1029 right: 0; 1030 height: 100%; 1031 width: 100%; 1032 z-index: 1000; 1033 display: flex; 1034 background-color: var(--backdrop-color); 1035 animation: appear 0.2s ease-out; 1036} 1037.deck-backdrop > a { 1038 flex-grow: 1; 1039 /* backdrop-filter: saturate(0.75); */ 1040} 1041@keyframes slide-in { 1042 0% { 1043 transform: translate3d(100%, 0, 0); 1044 } 1045 100% { 1046 transform: translate3d(0, 0, 0); 1047 } 1048} 1049.deck-backdrop .deck { 1050 width: var(--main-width); 1051 max-width: 100vw; 1052 background-color: var(--bg-color); 1053 box-shadow: -1px 0 var(--bg-color); 1054} 1055.deck-backdrop .deck.slide-in:not(.deck-view-full) { 1056 animation: slide-in 0.5s var(--timing-function); 1057} 1058.deck-backdrop .deck .status { 1059 max-width: var(--main-width); 1060} 1061.deck-backdrop .deck :is(.button-switch-view, .menu-switch-view) { 1062 display: none; 1063} 1064@media (min-width: 40em) { 1065 .deck-backdrop .deck .button-switch-view { 1066 display: inline-block; 1067 } 1068 .deck-backdrop .deck .menu-switch-view { 1069 display: flex; 1070 } 1071 .deck-backdrop .deck.deck-view-full { 1072 /* min-width: 100%; */ 1073 width: 100%; 1074 background-image: radial-gradient( 1075 circle, 1076 transparent 30em, 1077 var(--bg-faded-color) 1078 ); 1079 } 1080 .deck-backdrop .deck.deck-view-full > * { 1081 max-width: calc(var(--main-width) + 32px); 1082 margin: 0 auto; 1083 } 1084 .deck-backdrop .deck.deck-view-full .status { 1085 max-width: 100%; 1086 } 1087} 1088 1089.deck-close { 1090 color: var(--text-insignificant-color) !important; 1091} 1092.deck-close:is(:hover, :focus) { 1093 color: var(--text-color) !important; 1094} 1095 1096:is(button, .button).plain.has-badge:after { 1097 content: ''; 1098 display: inline-block; 1099 position: absolute; 1100 right: 10px; 1101 width: 4px; 1102 height: 4px; 1103 border-radius: 50%; 1104 background-color: var(--link-color); 1105 opacity: 0.5; 1106} 1107 1108@keyframes fade-from-top { 1109 0% { 1110 transform: translate(-50%, -200%); 1111 opacity: 0; 1112 } 1113 100% { 1114 transform: translate(-50%, 0); 1115 opacity: 1; 1116 } 1117} 1118.updates-button { 1119 position: absolute; 1120 z-index: 2; 1121 top: 3em; 1122 animation: fade-from-top 0.3s var(--timing-function); 1123 left: 50%; 1124 margin-top: 16px; 1125 transform: translate(-50%, 0); 1126 font-size: 90%; 1127 pointer-events: auto; 1128 transition: all 0.3s ease-in-out; 1129 1130 header[hidden] & { 1131 opacity: 0; 1132 transform: translate(-50%, -100%) scale(0.9); 1133 pointer-events: none; 1134 animation: none !important; 1135 } 1136} 1137.updates-button .icon { 1138 vertical-align: top; 1139} 1140@media (pointer: coarse) { 1141 .updates-button:after { 1142 content: ''; 1143 position: absolute; 1144 inset: -16px; 1145 } 1146} 1147 1148/* BOX */ 1149 1150.box { 1151 width: var(--main-width); 1152 max-width: 100vw; 1153 padding: 16px; 1154} 1155 1156/* CAROUSEL */ 1157/* use snap, center children, max width viewport */ 1158 1159.media-modal-container { 1160 position: relative; 1161 width: 70%; 1162 flex-grow: 1; 1163 background-color: var(--backdrop-solid-color); 1164 animation: appear 0.3s var(--timing-function) both; 1165 transition: width 0.3s var(--timing-function); 1166 1167 &:only-child { 1168 width: 100%; 1169 } 1170} 1171.media-modal-container.loading { 1172 display: flex; 1173 justify-content: center; 1174 align-items: center; 1175 background-image: radial-gradient( 1176 closest-side, 1177 var(--bg-blur-color), 1178 transparent 1179 ); 1180} 1181 1182.carousel { 1183 display: flex; 1184 overflow-x: auto; 1185 scroll-snap-type: x mandatory; 1186 /* scroll-behavior: smooth; */ 1187 scrollbar-width: none; 1188 overscroll-behavior: contain; 1189 touch-action: pan-x; 1190 user-select: none; 1191 width: 100%; 1192 gap: 16px; 1193} 1194.carousel::-webkit-scrollbar { 1195 display: none; 1196} 1197.carousel .carousel-item { 1198 scroll-snap-align: center; 1199 scroll-snap-stop: always; 1200 flex-shrink: 0; 1201 display: flex; 1202 justify-content: center; 1203 align-items: center; 1204 width: 100%; 1205 height: 100vh; 1206 height: 100dvh; 1207 background-color: var(--accent-alpha-color); 1208 /* background-image: radial-gradient( 1209 closest-side, 1210 var(--accent-color) 10%, 1211 var(--accent-alpha-color) 40%, 1212 transparent 100% 1213 ); */ 1214} 1215.carousel .carousel-item :is(img, video) { 1216 width: auto; 1217 max-width: 100%; 1218 height: auto; 1219 max-height: 100vh; 1220 max-height: 100dvh; 1221 vertical-align: middle; 1222} 1223.carousel .carousel-item video { 1224 min-height: 80px; 1225 max-height: 80vh; /* prevent other UI elements from obscuring video */ 1226} 1227.carousel .carousel-item .media { 1228 background-size: contain; 1229 background-repeat: no-repeat; 1230 background-position: center; 1231 width: 100%; 1232 height: 100%; 1233 overflow: hidden; 1234 display: flex; 1235 justify-content: center; 1236 align-items: center; 1237 padding: env(safe-area-inset-top, 0) env(safe-area-inset-right, 0) 1238 env(safe-area-inset-bottom, 0) env(safe-area-inset-left, 0); 1239 background-origin: content-box; 1240} 1241 1242.carousel-top-controls { 1243 top: 0; 1244 top: env(safe-area-inset-top, 0); 1245} 1246:is(.carousel-top-controls, .carousel-controls) { 1247 /* mix-blend-mode: luminosity; */ 1248 position: absolute; 1249 left: 0; 1250 left: env(safe-area-inset-left, 0); 1251 right: 0; 1252 right: env(safe-area-inset-right, 0); 1253 padding: 16px; 1254 display: flex; 1255 gap: 8px; 1256 justify-content: space-between; 1257 text-align: center; 1258 pointer-events: none; 1259} 1260:is(.carousel-top-controls, .carousel-controls)[hidden] { 1261 opacity: 0; 1262} 1263.carousel-controls { 1264 top: 45%; 1265} 1266 1267:is(.button, button).carousel-button, 1268button.carousel-dot { 1269 pointer-events: auto; 1270 font-weight: bold; 1271 color: var(--text-color); 1272 background-color: var(--bg-faded-blur-color); 1273 border: 1px solid var(--outline-color); 1274 box-shadow: 0 4px 32px var(--drop-shadow-color); 1275 transition: all 0.2s ease-out; 1276} 1277button.carousel-dot { 1278 background-color: transparent; 1279} 1280:is(.button, button).carousel-button { 1281 background-color: var(--bg-blur-color); 1282} 1283:is(.button, button).carousel-button:is(:hover, :focus):not(:active) { 1284 background-color: var(--bg-color); 1285} 1286.carousel-top-controls .szh-menu-container { 1287 pointer-events: auto; 1288} 1289:is(.button, button).carousel-button[hidden] { 1290 display: inline-block; 1291 opacity: 0; 1292 pointer-events: none; 1293} 1294.carousel-dots { 1295 border-radius: 999px; 1296 background-color: var(--bg-faded-blur-color); 1297 border: 1px solid var(--outline-color); 1298 box-shadow: 0 4px 32px var(--drop-shadow-color); 1299 /* backdrop-filter: blur(12px) invert(0.25); */ 1300 transition: background-color 0.2s ease-out; 1301 &:hover { 1302 background-color: var(--bg-color); 1303 } 1304} 1305button.carousel-dot { 1306 backdrop-filter: none !important; 1307 border: none; 1308 box-shadow: none; 1309} 1310/* button.carousel-dot[disabled] { 1311 pointer-events: none; 1312} */ 1313button.carousel-dot .icon { 1314 transition: all 0.2s; 1315 transform: scale(0.5); 1316} 1317button.carousel-dot:not(.active) .icon { 1318 opacity: 0.5; 1319} 1320button.carousel-dot:not(.active):is(:hover, :focus) .icon { 1321 opacity: 1; 1322} 1323button.carousel-dot:is(.active, [disabled].active) { 1324 opacity: 1; 1325} 1326button.carousel-dot:is(.active, [disabled].active) .icon { 1327 opacity: 1; 1328 transform: scale(1); 1329} 1330@media (hover: hover) { 1331 .carousel-top-controls { 1332 transform: translateY(-100%); 1333 transition: transform 0.2s ease-in-out; 1334 } 1335 .carousel-controls { 1336 transform: scale(0); 1337 /* transition: transform 0.2s ease-in-out; */ 1338 } 1339 .carousel-controls 1340 :is(.button, button).carousel-button:is(:hover, :focus):not(:active) { 1341 transform: scale(1.2); 1342 } 1343 .carousel-controls :is(.button, button).carousel-button:active { 1344 transition-duration: 0s; 1345 } 1346 1347 :is(.carousel-top-controls, .carousel-controls)[hidden] { 1348 opacity: 1; 1349 } 1350 .carousel:hover + .carousel-top-controls, 1351 .carousel:hover + .carousel-top-controls + .carousel-controls, 1352 .carousel-top-controls:hover, 1353 .carousel-controls:hover, 1354 .carousel-top-controls:focus-within, 1355 .carousel-controls:focus-within { 1356 transform: translateY(0); 1357 } 1358} 1359 1360/* CAROUSEL + STATUS PAGE COMBO */ 1361 1362.media-post-link .button-label { 1363 display: none; 1364} 1365body:has(.status-deck) .media-post-link { 1366 display: none; 1367} 1368.media-modal-count-1 .button-label { 1369 display: inline; 1370} 1371 1372/* ✨ New */ 1373body:has(.media-modal-container + .status-deck) .media-post-link { 1374 display: inline-block; 1375} 1376.media-modal-container + .status-deck { 1377 /* display: none; */ 1378 position: absolute; 1379 z-index: -1; 1380 pointer-events: none; 1381 user-select: none; 1382 animation: none; 1383} 1384 1385@media (min-width: calc(40em + 350px)) { 1386 .media-post-link .button-label { 1387 display: inline; 1388 } 1389 #modal-container > div, 1390 .status-deck { 1391 transition: all 0.3s ease-in-out; 1392 } 1393 /* Don't do this if there's a modal sheet (.sheet) */ 1394 :has(#modal-container .carousel):has(.status-deck):not( 1395 :has(.sheet, #compose-container) 1396 ) 1397 .status-deck { 1398 width: 350px; 1399 min-width: 0; 1400 } 1401 :has(#modal-container .carousel):has(.status-deck):not( 1402 :has(.sheet, #compose-container) 1403 ) 1404 #modal-container 1405 > div { 1406 left: 0; 1407 right: 350px; 1408 width: auto; 1409 } 1410 /* ✨ New */ 1411 /* .deck-backdrop > a { 1412 width: 100%; 1413 flex-grow: 0; 1414 } */ 1415 .deck-backdrop .media-modal-container + .status-deck:not(.deck-view-full) { 1416 /* display: block; */ 1417 width: 30%; 1418 /* min-width: 350px; */ 1419 position: static; 1420 z-index: 1; 1421 pointer-events: auto; 1422 user-select: auto; 1423 } 1424 .deck-backdrop .media-modal-container + .status-deck:not(.slide-in) { 1425 animation: appear 0.3s ease-in-out; 1426 } 1427 body:has(.media-modal-container + .status-deck) .media-post-link { 1428 display: none; 1429 } 1430} 1431 1432/* COMPOSE BUTTON */ 1433 1434#compose-button { 1435 position: fixed; 1436 bottom: 16px; 1437 bottom: max(16px, env(safe-area-inset-bottom)); 1438 right: 16px; 1439 right: max(16px, env(safe-area-inset-right)); 1440 padding: 16px; 1441 background-color: var(--button-bg-blur-color); 1442 /* backdrop-filter: blur(16px); */ 1443 z-index: 10; 1444 box-shadow: 0 3px 8px -1px var(--drop-shadow-color), 1445 0 10px 36px -4px var(--button-bg-blur-color); 1446 transition: all 0.3s ease-in-out; 1447} 1448.deck-container:has(header[hidden]) ~ #compose-button, 1449#compose-button[hidden] { 1450 transform: translateY(200%); 1451 pointer-events: none; 1452 user-select: none; 1453 opacity: 0; 1454} 1455#compose-button .icon { 1456 transition: transform 0.3s ease-in-out; 1457} 1458#compose-button[hidden] .icon { 1459 transform: rotate3d(0, 0, 1, -25deg); 1460} 1461#compose-button:is(:hover, :focus) { 1462 background-color: var(--button-bg-color); 1463 filter: none; 1464} 1465#compose-button:active { 1466 transform: scale(0.95); 1467 transition: none; 1468} 1469#compose-button .icon { 1470 filter: drop-shadow(0 1px 2px var(--button-bg-color)); 1471} 1472@media (max-width: calc(40em - 1px)) { 1473 #app[data-shortcuts-view-mode='tab-menu-bar'] #compose-button { 1474 bottom: calc(16px + 52px); 1475 bottom: calc(16px + env(safe-area-inset-bottom) + 52px); 1476 } 1477} 1478 1479/* SHEET */ 1480 1481.sheet { 1482 align-self: flex-end; 1483 display: flex; 1484 flex-direction: column; 1485 max-height: 90vh; 1486 max-height: 90dvh; 1487 /* overflow: hidden; */ 1488 background-color: var(--bg-color); 1489 width: 100%; 1490 max-width: calc(var(--main-width) - 50px - 16px); 1491 border-radius: 16px 16px 0 0; 1492 box-shadow: 0 -1px 32px var(--drop-shadow-color); 1493 animation: slide-up 0.3s var(--timing-function); 1494 /* border: 1px solid var(--outline-color); */ 1495 position: relative; 1496} 1497.sheet-max { 1498 max-width: none; 1499 height: 90vh; 1500 height: 90dvh; 1501} 1502@media (min-width: 40em) { 1503 .sheet { 1504 width: 90vw; 1505 width: 90dvw; 1506 } 1507} 1508.sheet .sheet-close { 1509 position: absolute; 1510 border-radius: 0; 1511 padding: 0; 1512 right: env(safe-area-inset-right); 1513 width: 44px; 1514 height: 44px; 1515 display: inline-flex; 1516 align-items: center; 1517 justify-content: center; 1518 z-index: 2; 1519 background-color: transparent; 1520 background-image: radial-gradient( 1521 circle, 1522 var(--close-button-bg-color) 0px 14px, 1523 transparent 14px 1524 ); 1525 color: var(--close-button-color); 1526} 1527.sheet .sheet-close.outer { 1528 margin-top: -44px; 1529 background-image: radial-gradient( 1530 circle, 1531 var(--bg-faded-color) 0px 13px, 1532 var(--outline-color) 13px 14px, 1533 transparent 14px 1534 ); 1535} 1536.sheet .sheet-close:is(:hover, :focus) { 1537 color: var(--close-button-hover-color); 1538} 1539.sheet .sheet-close:active { 1540 background-image: radial-gradient( 1541 circle, 1542 var(--close-button-bg-active-color) 0px 14px, 1543 transparent 14px 1544 ); 1545} 1546.sheet header { 1547 padding: 16px 16px 8px; 1548 padding-left: max(16px, env(safe-area-inset-left)); 1549 padding-right: max(16px, env(safe-area-inset-right)); 1550 user-select: none; 1551} 1552.sheet .sheet-close:not(.outer) + header { 1553 padding-right: max(44px, env(safe-area-inset-right)); 1554} 1555.sheet header :is(h1, h2, h3) { 1556 margin: 0; 1557} 1558.sheet header.header-grid { 1559 display: grid; 1560 grid-template-columns: 1fr auto; 1561 grid-gap: 8px; 1562 align-items: center; 1563} 1564.sheet main { 1565 overflow: auto; 1566 overflow-x: hidden; 1567 overscroll-behavior: contain; 1568 padding: 16px 16px; 1569 padding-left: max(16px, env(safe-area-inset-left)); 1570 padding-right: max(16px, env(safe-area-inset-right)); 1571 padding-bottom: max(16px, env(safe-area-inset-bottom)); 1572} 1573.sheet header + main { 1574 padding-top: 0; 1575 mask-image: linear-gradient(to bottom, transparent 0%, black 10px); 1576} 1577 1578/* ICON */ 1579 1580.icon { 1581 flex-shrink: 0; 1582 display: inline-block; 1583 overflow: hidden; 1584 line-height: 0; 1585 1586 svg { 1587 contain: none; 1588 } 1589} 1590 1591/* TAG */ 1592 1593.tag { 1594 font-size: smaller; 1595 color: var(--bg-faded-color); 1596 background-color: var(--text-insignificant-color); 1597 padding: 2px 4px; 1598 border-radius: 4px; 1599 display: inline-block; 1600 margin: 4px; 1601 align-self: center; 1602 text-align: center; 1603 1604 &.clickable { 1605 cursor: pointer; 1606 } 1607} 1608.tag .icon { 1609 vertical-align: middle; 1610} 1611.tag.collapsed { 1612 margin: 0; 1613} 1614.tag.insignificant { 1615 border: 1px solid var(--outline-color); 1616 color: var(--text-insignificant-color); 1617 background-color: var(--bg-faded-color); 1618} 1619.tag.danger { 1620 background-color: var(--red-color); 1621} 1622.tag.minimal { 1623 margin: 0; 1624 color: var(--text-insignificant-color); 1625 background-color: var(--bg-faded-color); 1626 text-shadow: 0 1px var(--bg-color); 1627 line-height: 1; 1628} 1629 1630/* MENU POPUP */ 1631 1632.szh-menu-container { 1633 user-select: none; 1634 -webkit-touch-callout: none; 1635 -webkit-user-drag: none; 1636} 1637body > .szh-menu-container { 1638 position: fixed !important; 1639 z-index: 10; 1640} 1641.szh-menu-container:not(:empty) { 1642 inset: 0; 1643 inset: env(safe-area-inset-top) env(safe-area-inset-right) 1644 env(safe-area-inset-bottom) env(safe-area-inset-left); 1645} 1646.szh-menu { 1647 padding: 8px 0; 1648 margin: 0; 1649 font-size: var(--text-size); 1650 background-color: var(--bg-color); 1651 border: 1px solid var(--outline-color); 1652 border-radius: 8px; 1653 box-shadow: 0 3px 16px -3px var(--drop-shadow-color); 1654 text-align: left; 1655 /* animation: appear-smooth 0.15s ease-in-out; */ 1656 width: 16em; 1657 max-width: 90vw; 1658 /* overflow: hidden; */ 1659} 1660.szh-menu[aria-label='Submenu'] { 1661 background-color: var(--bg-blur-color); 1662 backdrop-filter: blur(4px); 1663 box-shadow: 0 3px 24px -3px var(--drop-shadow-color); 1664} 1665.szh-menu__header { 1666 margin: -8px 0 8px; 1667 padding: 8px 16px; 1668 color: var(--text-insignificant-color); 1669 font-size: 90%; 1670 background-color: var(--bg-faded-color); 1671 /* background-image: linear-gradient(to top, var(--bg-faded-color), transparent); */ 1672 text-shadow: 0 1px 0 var(--bg-color); 1673 line-height: 1.2; 1674 /* border-bottom: 1px solid var(--outline-color); */ 1675 border-radius: 8px 8px 0 0; 1676} 1677.szh-menu__header.plain { 1678 margin-bottom: 0; 1679 background-color: transparent; 1680} 1681.szh-menu__header * { 1682 vertical-align: middle; 1683} 1684.szh-menu.menu-emphasized { 1685 border-color: var(--outline-hover-color); 1686 box-shadow: 0 3px 16px -3px var(--drop-shadow-color), 1687 0 3px 32px var(--drop-shadow-color), 0 3px 48px var(--drop-shadow-color); 1688 background-color: var(--bg-color); 1689 animation-duration: 0.3s; 1690 animation-timing-function: ease-in-out; 1691 width: auto; 1692} 1693.szh-menu .footer { 1694 margin: 8px 0 -8px; 1695 padding: 8px 16px; 1696 color: var(--text-insignificant-color); 1697 font-size: 90%; 1698 background-color: var(--bg-faded-color); 1699 text-shadow: 0 1px 0 var(--bg-color); 1700 line-height: 1.2; 1701 display: flex; 1702 gap: 8px; 1703 align-items: center; 1704 border-radius: 0 0 8px 8px; 1705} 1706.szh-menu .szh-menu__item { 1707 display: flex; 1708 gap: 8px; 1709 align-items: center; 1710 line-height: 1.1; 1711 padding: 8px 16px !important; 1712 transition: all 0.1s ease-in-out; 1713 text-decoration: none; 1714 white-space: nowrap; 1715 overflow: hidden; 1716 text-overflow: ellipsis; 1717} 1718.szh-menu .szh-menu__item--focusable { 1719 background-color: transparent; 1720} 1721.szh-menu .szh-menu__item span { 1722 white-space: nowrap; 1723 overflow: hidden; 1724 text-overflow: ellipsis; 1725} 1726/* .szh-menu .szh-menu__item * { 1727 vertical-align: middle; 1728} */ 1729.szh-menu .szh-menu__item a { 1730 flex: 1; 1731 overflow: hidden; 1732 text-overflow: ellipsis; 1733 display: flex; 1734 gap: 8px; 1735 color: inherit; 1736 text-decoration: none; 1737 padding: 8px 16px !important; 1738 margin: -8px -16px !important; 1739 align-items: center; 1740 user-select: none; 1741 -webkit-touch-callout: none; 1742} 1743.szh-menu .szh-menu__item a.is-active { 1744 font-weight: bold; 1745} 1746.szh-menu .szh-menu__item .icon { 1747 opacity: 0.5; 1748} 1749.szh-menu 1750 .szh-menu__item:not(.szh-menu__item--disabled, .szh-menu__item--hover) { 1751 color: var(--text-color); 1752} 1753.szh-menu .szh-menu__item--hover:not(.menu-field) { 1754 color: var(--button-text-color); 1755 background-color: var(--button-bg-color); 1756} 1757.szh-menu__divider { 1758 background-color: var(--divider-color); 1759} 1760.szh-menu .szh-menu__item .menu-grow { 1761 flex-grow: 1; 1762 text-overflow: ellipsis; 1763 overflow: hidden; 1764} 1765.szh-menu .menu-double-lines { 1766 white-space: normal !important; 1767 display: -webkit-box; 1768 -webkit-line-clamp: 2; 1769 -webkit-box-orient: vertical; 1770 overflow: hidden !important; 1771} 1772.szh-menu .menu-double-lines span { 1773 white-space: normal; 1774 line-height: inherit; 1775 font-size: inherit; 1776} 1777.szh-menu .menu-horizontal { 1778 display: grid; 1779 /* two columns only */ 1780 grid-template-columns: repeat(2, 1fr); 1781} 1782.szh-menu .menu-horizontal:has(> .szh-menu__item:only-child) { 1783 grid-template-columns: 1fr; 1784} 1785.szh-menu .menu-horizontal > .szh-menu__item:not(:only-child):first-child, 1786.szh-menu .menu-horizontal > *:not(:only-child):first-child .szh-menu__item { 1787 padding-right: 4px !important; 1788} 1789.szh-menu 1790 .menu-horizontal 1791 > .szh-menu__item:not(:only-child):not(:first-child):not(:last-child), 1792.szh-menu 1793 .menu-horizontal 1794 > *:not(:only-child):not(:first-child):not(:last-child) 1795 .szh-menu__item { 1796 padding-left: 8px !important; 1797 padding-right: 4px !important; 1798} 1799.szh-menu .menu-horizontal > .szh-menu__item:not(:only-child):last-child, 1800.szh-menu .menu-horizontal > *:not(:only-child):last-child .szh-menu__item { 1801 padding-left: 8px !important; 1802} 1803.szh-menu .szh-menu__item .menu-shortcut { 1804 opacity: 0.5; 1805 font-weight: normal; 1806} 1807.szh-menu .szh-menu__item form { 1808 display: flex; 1809 flex: 1; 1810 gap: 8px; 1811 align-items: center; 1812} 1813.szh-menu .szh-menu__item form > input[type='text'] { 1814 flex-grow: 1; 1815 width: 100%; 1816} 1817.szh-menu .szh-menu__item--hover .danger-icon { 1818 color: var(--red-color); 1819 opacity: 1; 1820} 1821.szh-menu 1822 .szh-menu__item:not(.szh-menu__item--disabled):not( 1823 .szh-menu__item--hover 1824 ).danger { 1825 color: var(--red-color); 1826} 1827.szh-menu 1828 .szh-menu__item:not(.szh-menu__item--disabled):not( 1829 .szh-menu__item--hover 1830 ).danger 1831 .icon { 1832 opacity: 1; 1833} 1834 1835.szh-menu 1836 .szh-menu__item--type-checkbox:not(.szh-menu__item--disabled):not( 1837 .szh-menu__item--hover 1838 ) { 1839 .icon { 1840 opacity: 0.15; 1841 } 1842 1843 &.szh-menu__item--checked { 1844 color: var(--link-color); 1845 1846 .icon { 1847 opacity: 1; 1848 color: inherit; 1849 } 1850 } 1851} 1852 1853.szh-menu .menu-wrap { 1854 display: flex; 1855 flex-wrap: wrap; 1856} 1857.szh-menu .menu-wrap > * { 1858 flex-grow: 1; 1859 flex-basis: 50%; 1860} 1861 1862/* GLASS MENU */ 1863 1864.glass-menu { 1865 background-color: var(--bg-blur-color); 1866 backdrop-filter: blur(8px) saturate(3); 1867 border: var(--hairline-width) solid var(--bg-color); 1868 box-shadow: 0 3px 8px -1px var(--drop-shadow-color); 1869 text-shadow: 0 var(--hairline-width) var(--bg-color), 0 0 8px var(--bg-color); 1870} 1871.glass-menu .szh-menu__item--hover { 1872 background-color: var(--button-bg-blur-color); 1873 text-shadow: none; 1874} 1875 1876/* DONUT METER */ 1877 1878meter.donut { 1879 appearance: none; 1880} 1881 1882meter.donut::-webkit-meter-inner-element, 1883meter.donut::-webkit-meter-bar, 1884meter.donut::-webkit-meter-optimum-value, 1885meter.donut::-webkit-meter-suboptimum-value, 1886meter.donut::-webkit-meter-even-less-good-value { 1887 display: none; 1888} 1889 1890meter.donut::-moz-meter-bar { 1891 background: transparent; 1892} 1893 1894meter.donut { 1895 position: relative; 1896 --dimension: 24px; 1897 --border-width: 2px; 1898 --middle-circle-radius: calc(var(--dimension) / 2 - var(--border-width)); 1899 width: var(--dimension); 1900 height: var(--dimension); 1901 border-radius: 50%; 1902 --fill: calc(var(--percentage) * 1%); 1903 --color: var(--link-color); 1904 --middle-circle: radial-gradient( 1905 circle at 50% 50%, 1906 var(--bg-color) var(--middle-circle-radius), 1907 transparent var(--middle-circle-radius) 1908 ); 1909 background-image: var(--middle-circle), 1910 conic-gradient(var(--color) var(--fill), var(--outline-color) 0); 1911 transform: scale(0.7); 1912 transition: transform 0.2s ease-in-out; 1913} 1914meter.donut.warning { 1915 --color: var(--orange-color); 1916 transform: scale(1); 1917} 1918meter.donut.danger { 1919 --color: var(--red-color); 1920 transform: scale(1); 1921} 1922meter.donut.explode { 1923 background-image: none; 1924 transform: scale(1); 1925} 1926meter.donut:is(.warning, .danger, .explode):after { 1927 content: attr(data-left); 1928 position: absolute; 1929 top: 50%; 1930 left: 50%; 1931 transform: translate(-50%, -50%); 1932 font-size: 12px; 1933 color: var(--text-insignificant-color); 1934} 1935meter.donut:is(.danger, .explode):after { 1936 color: var(--red-color); 1937} 1938meter.donut[hidden] { 1939 display: inline-block; 1940 visibility: hidden; 1941} 1942 1943/* SHINY PILL */ 1944 1945:is(.shiny-pill, :root .toastify.shiny-pill) { 1946 pointer-events: auto; 1947 color: var(--link-text-color); 1948 font-weight: 500; 1949 text-shadow: 0 1px var(--bg-color); 1950 background-color: var(--bg-color); 1951 border: 2px solid var(--link-faded-color); 1952 box-shadow: 0 3px 16px var(--drop-shadow-color), 1953 0 6px 16px -3px var(--drop-shadow-color); 1954} 1955:is(.shiny-pill, :root .toastify.shiny-pill):hover:not(:active) { 1956 color: var(--text-color); 1957 border-color: var(--link-color); 1958 filter: none !important; 1959 box-shadow: 0 3px 16px var(--drop-shadow-color), 1960 0 6px 16px -3px var(--drop-shadow-color), 1961 0 6px 16px var(--drop-shadow-color); 1962} 1963 1964/* TOAST */ 1965 1966:root .toastify { 1967 user-select: none; 1968 padding: 8px 16px; 1969 border-radius: 999px; 1970 pointer-events: none; 1971 color: var(--button-text-color); 1972 text-shadow: 0 calc(var(--hairline-width) * -1) var(--drop-shadow-color); 1973 background-color: var(--button-bg-color); 1974 background-image: none; 1975 box-shadow: 0 3px 8px -1px var(--drop-shadow-color), 1976 0 10px 36px -4px var(--button-bg-blur-color); 1977 text-align: center; 1978} 1979.toastify-bottom { 1980 margin-bottom: env(safe-area-inset-bottom); 1981} 1982 1983/* TOAST - ALERT */ 1984 1985:root .toastify.alert { 1986 z-index: 1001; 1987 box-shadow: 0 8px 32px var(--text-insignificant-color); 1988 background-color: var(--bg-color); 1989 color: var(--text-color); 1990 cursor: pointer; 1991 pointer-events: auto; 1992 padding: 16px 32px; 1993 font-size: max(calc(16px * 1.1), var(--text-size)); 1994 text-align: center; 1995 line-height: 1.25; 1996} 1997:root .toastify.alert:is(:hover, :active) { 1998 background-color: var(--bg-faded-color); 1999} 2000 2001/* AVATARS STACK */ 2002 2003.avatars-stack { 2004 display: flex; 2005 flex-wrap: wrap; 2006 gap: 4px; 2007} 2008/* I'm just feeling bored, so having fun here */ 2009@media (hover: hover) { 2010 .avatars-stack > * img { 2011 transition: transform 0.3s ease-in-out; 2012 } 2013 .avatars-stack:hover > *:nth-of-type(odd) img { 2014 transform: rotate(15deg); 2015 } 2016 .avatars-stack:hover > *:nth-of-type(even) img { 2017 transform: rotate(-15deg); 2018 } 2019} 2020 2021/* 404 */ 2022 2023#not-found-page { 2024 display: flex; 2025 align-items: center; 2026 justify-content: center; 2027 text-align: center; 2028 overflow: hidden; 2029 cursor: default; 2030 color: var(--text-insignificant-color); 2031 background-image: radial-gradient( 2032 circle at 50% 50%, 2033 var(--bg-color) 25%, 2034 var(--bg-faded-color) 2035 ); 2036 text-shadow: 0 1px var(--bg-color); 2037} 2038 2039/* ACCOUNT STATUSES */ 2040 2041@keyframes peekaboo-header { 2042 from { 2043 opacity: 0; 2044 transform: translateY(10%); 2045 } 2046 to { 2047 opacity: 1; 2048 transform: translateY(0); 2049 } 2050} 2051 2052@supports (animation-timeline: scroll()) { 2053 .header-account { 2054 animation: peekaboo-header 1s linear both; 2055 animation-timeline: scroll(); 2056 animation-range: 0 150px; 2057 } 2058} 2059 2060/* LINK LISTS? */ 2061 2062ul.link-list { 2063 list-style: none; 2064 padding: 16px; 2065 margin: 0; 2066 display: flex; 2067 flex-direction: column; 2068 gap: 1px; 2069} 2070ul.link-list li { 2071 padding: 0; 2072 margin: 0; 2073} 2074ul.link-list li a { 2075 --radius: 8px; 2076 display: block; 2077 background-color: var(--bg-faded-color); 2078 line-height: 1.25; 2079 padding: 12px; 2080 text-decoration: none; 2081 line-height: 1.4; 2082 font-weight: 500; 2083 display: flex; 2084 align-items: center; 2085 gap: 8px; 2086 2087 .count { 2088 font-size: 80%; 2089 display: inline-block; 2090 color: var(--text-insignificant-color); 2091 min-width: 16px; 2092 min-height: 16px; 2093 padding: 4px; 2094 background-color: var(--bg-color); 2095 border-radius: 4px; 2096 2097 @media (min-width: 40em) { 2098 background-color: var(--bg-faded-color); 2099 } 2100 } 2101} 2102ul.link-list li:first-child a { 2103 border-top-left-radius: var(--radius); 2104 border-top-right-radius: var(--radius); 2105} 2106ul.link-list li:last-child a { 2107 border-bottom-left-radius: var(--radius); 2108 border-bottom-right-radius: var(--radius); 2109} 2110ul.link-list li a:is(:hover, :focus) { 2111 color: var(--text-color); 2112} 2113ul.link-list li a:active { 2114 filter: brightness(0.9); 2115} 2116ul.link-list li a * { 2117 vertical-align: middle; 2118} 2119ul.link-list li a .icon { 2120 flex-shrink: 0; 2121} 2122 2123@media (min-width: 40em) { 2124 ul.link-list li a { 2125 background-color: var(--bg-color); 2126 } 2127} 2128 2129/* NAV MENU BUTTON */ 2130 2131.nav-menu-button.with-avatar { 2132 position: relative; 2133} 2134.nav-menu-button:is(:hover, :focus):not(:active) { 2135 filter: none !important; 2136} 2137.nav-menu-button .avatar { 2138 transition: box-shadow 0.3s ease-out; 2139} 2140.nav-menu-button:is(:hover, :focus, .active) .avatar { 2141 box-shadow: 0 0 0 2px var(--bg-color), 0 0 0 4px var(--link-light-color); 2142} 2143.nav-menu-button.with-avatar .icon { 2144 position: absolute; 2145 bottom: 4px; 2146 right: 8px; 2147 background-color: var(--bg-color); 2148 border-radius: 2px; 2149} 2150.nav-menu-button.with-avatar:hover:not(:active, .active) .icon { 2151 transform: translateY(-1px); 2152} 2153 2154/* COLUMNS */ 2155 2156#columns { 2157 display: flex; 2158 width: 100vw; 2159 overflow-y: hidden; 2160 overflow-x: scroll; 2161 scroll-snap-type: x mandatory; 2162 scroll-behavior: smooth; 2163 /* scrollbar-width: none; */ 2164 overscroll-behavior: contain; 2165 overscroll-behavior-x: contain; 2166 /* This `transform` fixes horizontal scrolling for pointer devices on iPad */ 2167 transform: translateZ(0); 2168} 2169/* #columns::-webkit-scrollbar { 2170 display: none; 2171} */ 2172#columns > * { 2173 overscroll-behavior: auto; 2174 scroll-snap-align: left; 2175 scroll-snap-stop: always; 2176 overscroll-behavior: auto; 2177 flex-basis: min(100vw, 360px); 2178 flex-shrink: 0; 2179 box-shadow: -1px 0 var(--bg-color), -2px 0 var(--drop-shadow-color), 2180 -3px 0 var(--bg-color); 2181} 2182#columns:has(> :nth-child(3)) > *:nth-child(even), 2183#columns:has(> :nth-child(3)) 2184 > *:nth-child(even) 2185 .timeline-deck 2186 > header 2187 .header-grid { 2188 background-color: var(--bg-blur-color); 2189} 2190#columns .header-grid input { 2191 pointer-events: none; 2192} 2193#columns { 2194 /* Any buttons except nav menu button on first header-side, on 1st column */ 2195 .deck-container:first-of-type 2196 .header-grid 2197 .header-side:first-of-type 2198 > *:not(.nav-menu-button), 2199 /* Any buttons on last header-side, on 1st column */ 2200 .deck-container:first-of-type .header-grid .header-side:last-of-type > *, 2201 /* Any buttons on any header-side, on columns after 1st */ 2202 .deck-container:not(:first-of-type) .header-grid .header-side > * { 2203 display: none; 2204 } 2205} 2206@media (min-width: 40em) { 2207 #columns { 2208 /* gap: 16px; */ 2209 /* padding: 0 16px; */ 2210 /* background-color: var(--bg-faded-color); */ 2211 height: 100vh; 2212 height: 100dvh; 2213 justify-content: stretch; 2214 align-items: stretch; 2215 } 2216 #columns > * { 2217 padding: 0 16px; 2218 border-inline: var(--hairline-width) solid var(--bg-faded-color); 2219 /* border-radius: 16px; */ 2220 /* box-shadow: -4px 0 16px -8px var(--drop-shadow-color); */ 2221 height: unset; 2222 /* background-color: var(--bg-faded-blur-color); */ 2223 /* backdrop-filter: blur(16px) saturate(3); */ 2224 /* background-image: linear-gradient( 2225 160deg, 2226 transparent 20%, 2227 var(--bg-color), 2228 transparent 75% 2229 ); */ 2230 /* position: sticky; 2231 left: 0; */ 2232 /* transition: all 0.3s ease-out; */ 2233 } 2234 /* #columns > *:nth-child(2) { 2235 left: 5%; 2236 } 2237 #columns > *:nth-child(3) { 2238 left: 10%; 2239 } 2240 #columns > *:nth-child(4) { 2241 left: 15%; 2242 } 2243 #columns > *:nth-child(5) { 2244 left: 20%; 2245 } 2246 #columns > *:nth-child(6) { 2247 left: 25%; 2248 } 2249 #columns > *:nth-child(7) { 2250 left: 30%; 2251 } 2252 #columns > *:nth-child(8) { 2253 left: 35%; 2254 } 2255 #columns > *:nth-child(9) { 2256 left: 40%; 2257 } 2258 #columns > *:nth-child(10) { 2259 left: 45%; 2260 } 2261 #columns > *:focus { 2262 z-index: 1; 2263 box-shadow: 0 0 32px var(--drop-shadow-color), 2264 0 0 32px var(--drop-shadow-color); 2265 } */ 2266 /* #columns:has(> *:focus) > *:not(:focus) > * { 2267 filter: opacity(0.8); 2268 } */ 2269 2270 #columns > *:focus-visible, 2271 #columns > *:has(:focus-visible) { 2272 /* box-shadow: 0 4px 16px var(--drop-shadow-color), 2273 0 4px 16px var(--drop-shadow-color); */ 2274 /* border-color: var(--outline-hover-color); */ 2275 z-index: 1; 2276 box-shadow: inset 0 0 0 1px var(--outline-hover-color); 2277 } 2278 #columns .timeline:not(.flat) > li:has(.status-link.is-active), 2279 #columns 2280 .timeline:not(.flat) 2281 > li:not(:has(.status-carousel)):has(+ li .status-link.is-active), 2282 #columns 2283 .timeline:not(.flat) 2284 > li:not(:has(.status-carousel)):has(.status-link.is-active) 2285 + li { 2286 transform: none; 2287 } 2288 #columns .timeline-deck > header { 2289 margin: 0; 2290 } 2291 #columns .timeline-deck > header[hidden] { 2292 transform: none; 2293 pointer-events: auto; 2294 } 2295 #columns li.timeline-item-carousel { 2296 width: auto; 2297 transform: none; 2298 } 2299} 2300 2301/* FILTER BAR */ 2302 2303.filter-bar { 2304 padding: 8px 16px; 2305 background-color: var(--bg-faded-color); 2306 display: flex; 2307 gap: 8px; 2308 overflow-x: auto; 2309 mask-image: linear-gradient( 2310 to right, 2311 transparent, 2312 black 16px, 2313 black calc(100% - 16px), 2314 transparent 2315 ); 2316 align-items: center; 2317 transition: opacity 0.3s ease-out; 2318 2319 &.expandable:not(#columns &) { 2320 @media (min-width: 40em) { 2321 width: 95vw; 2322 max-width: calc(320px * 3.3); 2323 transform: translateX(calc(-50% + var(--main-width) / 2)); 2324 } 2325 } 2326 2327 &.loading, 2328 .loading > & { 2329 pointer-events: none; 2330 opacity: 0.5; 2331 } 2332 2333 .filter-field { 2334 flex-shrink: 0; 2335 padding: 8px 16px; 2336 border-radius: 999px; 2337 color: var(--text-color); 2338 background-color: var(--bg-color); 2339 background-image: none; 2340 border: 2px solid transparent; 2341 margin: 0; 2342 /* appearance: none; */ 2343 line-height: 1; 2344 font-size: 90%; 2345 display: flex; 2346 gap: 8px; 2347 2348 > .icon { 2349 color: var(--link-color); 2350 } 2351 2352 &:placeholder-shown { 2353 color: var(--text-insignificant-color); 2354 } 2355 2356 &:is(:hover, :focus-visible) { 2357 border-color: var(--link-light-color); 2358 } 2359 &:focus { 2360 outline-color: var(--link-light-color); 2361 } 2362 &.is-active { 2363 border-color: var(--link-color); 2364 box-shadow: inset 0 0 8px var(--link-faded-color); 2365 } 2366 2367 :is(input, select) { 2368 background-color: transparent; 2369 background-image: none; 2370 border: 0; 2371 padding: 0; 2372 margin: 0; 2373 color: inherit; 2374 font-size: inherit; 2375 line-height: inherit; 2376 appearance: none; 2377 border-radius: 0; 2378 box-shadow: none; 2379 outline: none; 2380 } 2381 2382 input[type='month'] { 2383 min-width: 6em; 2384 2385 &::-webkit-calendar-picker-indicator { 2386 /* replace icon with triangle */ 2387 opacity: 0.5; 2388 background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none"><path d="M4 6L8 10L12 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'); 2389 } 2390 2391 @media (prefers-color-scheme: dark) { 2392 &::-webkit-calendar-picker-indicator { 2393 filter: invert(1); 2394 } 2395 } 2396 } 2397 } 2398} 2399.filter-bar.centered { 2400 justify-content: center; 2401} 2402@media (min-width: 40em) { 2403 .filter-bar { 2404 background-color: transparent; 2405 } 2406} 2407.filter-bar > a:not(.filter-clear) { 2408 padding: 8px 16px; 2409 border-radius: 999px; 2410 background-color: var(--bg-color); 2411 color: var(--link-color); 2412 text-decoration: none; 2413 white-space: nowrap; 2414 border: 2px solid transparent; 2415 transition: border-color 0.3s ease-out; 2416 display: inline-flex; 2417 align-items: center; 2418 gap: 8px; 2419} 2420.filter-bar > a:focus-visible { 2421 border-color: var(--link-light-color); 2422} 2423@media (hover: hover) { 2424 .filter-bar > a:hover { 2425 border-color: var(--link-light-color); 2426 } 2427} 2428.filter-bar > a > * { 2429 vertical-align: middle; 2430} 2431.filter-bar > a.is-active { 2432 border-color: var(--link-color); 2433 box-shadow: inset 0 0 8px var(--link-faded-color); 2434} 2435.filter-bar > a > .filter-count { 2436 font-size: 80%; 2437 display: inline-block; 2438 color: var(--text-insignificant-color); 2439 min-width: 16px; 2440 min-height: 16px; 2441 padding: 4px; 2442 margin: -4px -8px -4px 0; 2443 background-color: var(--bg-faded-color); 2444 border-radius: 999px; 2445} 2446 2447/* NOTIFICATION PEEK */ 2448 2449.notification-peek .notification { 2450 padding-inline: 0 !important; 2451} 2452 2453/* OTHERS */ 2454 2455@media (min-width: 40em) { 2456 html, 2457 body { 2458 background-color: var(--bg-faded-color); 2459 } 2460 .deck-container { 2461 background-color: var(--bg-faded-color); 2462 } 2463 #app { 2464 display: flex; 2465 } 2466 .deck-container { 2467 transition: transform 0.4s var(--timing-function); 2468 } 2469 .deck-container:has(~ .deck-backdrop .deck) { 2470 transition: transform 0.4s ease-out; 2471 transform: translate3d(-5vw, 0, 0); 2472 } 2473 .deck-backdrop .deck { 2474 /* width: 50%; 2475 min-width: var(--main-width); */ 2476 border-left: 1px solid var(--divider-color); 2477 } 2478 .timeline-deck { 2479 border: 0; 2480 background-color: transparent; 2481 } 2482 .timeline-deck > header { 2483 --margin-top: 8px; 2484 top: var(--margin-top); 2485 margin-inline: 8px; 2486 } 2487 .timeline-deck > header .header-grid { 2488 border-bottom: 0; 2489 border-radius: 16px; 2490 background-color: var(--bg-faded-blur-color); 2491 backdrop-filter: blur(16px); 2492 background-image: none; 2493 border-radius: 16px; 2494 min-height: 4em; 2495 } 2496 .timeline-deck > header[hidden] { 2497 transform: translate3d(0, calc((100% + var(--margin-top)) * -1), 0); 2498 } 2499 .deck > header { 2500 text-shadow: 0 1px var(--bg-color); 2501 2502 form { 2503 text-shadow: none; 2504 } 2505 } 2506 .deck > header h1 { 2507 font-size: 1.5em; 2508 } 2509 .updates-button { 2510 margin-top: 24px; 2511 } 2512 .timeline:not(.flat) > li { 2513 --item-radius: 16px; 2514 border: 1px solid var(--divider-color); 2515 margin: 16px 0; 2516 background-color: var(--bg-color); 2517 border-radius: var(--item-radius); 2518 overflow: hidden; 2519 box-shadow: 0px 1px var(--bg-blur-color); 2520 transition: transform 0.4s var(--timing-function); 2521 --back-transition: transform 0.4s ease-out; 2522 } 2523 .timeline:not(.flat) > li > a { 2524 border-radius: inherit; 2525 } 2526 .timeline:not(.flat) > li:not(:has(.status-carousel)) { 2527 transform: translate3d(0, 0, 0); 2528 } 2529 .timeline:not(.flat) 2530 > li:not(.timeline-item-container-end, .timeline-item-container-middle):has( 2531 .status-badge:not(:empty) 2532 ) { 2533 border-top-right-radius: 8px; 2534 } 2535 .timeline:not(.flat) > li:has(.status-link.is-active) { 2536 transition: var(--back-transition); 2537 transform: translate3d(-2.5vw, 0, 0); 2538 } 2539 .timeline:not(.flat) 2540 > li.timeline-item-container:has(.status-link.is-active) { 2541 border-top-left-radius: var(--item-radius); 2542 border-bottom-left-radius: var(--item-radius); 2543 } 2544 .timeline:not(.flat) 2545 > li:not(:has(.status-carousel)):has(+ li .status-link.is-active), 2546 .timeline:not(.flat) 2547 > li:not(:has(.status-carousel)):has(.status-link.is-active) 2548 + li { 2549 transition: var(--back-transition); 2550 transform: translate3d(-1.25vw, 0, 0); 2551 } 2552 .timeline:not(.flat) 2553 > li.timeline-item-container:not(:has(.status-carousel)):has( 2554 + li .status-link.is-active 2555 ) { 2556 border-top-left-radius: var(--item-radius); 2557 } 2558 .timeline:not(.flat) 2559 > li.timeline-item-container:not(:has(.status-carousel)):has( 2560 .status-link.is-active 2561 ) 2562 + li.timeline-item-container { 2563 border-bottom-left-radius: var(--item-radius); 2564 } 2565 .box { 2566 padding: 32px; 2567 } 2568 /* :is(.carousel-top-controls, .carousel-controls) { 2569 padding: 32px; 2570 } */ 2571 li.timeline-item-carousel { 2572 width: 95vw; 2573 max-width: calc(320px * 3.3); 2574 transform: translateX(calc(-50% + var(--main-width) / 2)); 2575 } 2576}