.UpdateNotification { overflow: hidden; } .UpdateNotificationModal { --__top-fringe: 15em; // how much pleroma-tan should stick her head above --__bottom-fringe: 80em; // just reserving as much as we can, number is mostly irrelevant --__right-fringe: 8em; --__panel-background: rgb(0,255,255 / 80%); font-size: 15px; position: relative; transition: transform; transition-timing-function: ease-in-out; transition-duration: 500ms; .text { max-width: 40em; padding-left: 1em; } .footer-buttons { --panel-heading-height-padding: calc(var(--panel-header-height) * 0.2); --__panel-heading-gap: calc(var(--panel-header-height) * 0.1565); --__panel-heading-height: var(--panel-header-height); --__panel-heading-height-inner: calc(var(--__panel-heading-height) - 2 * var(--panel-heading-height-padding, 0)); box-sizing: border-box; position: absolute; bottom: 0; left: 0; right: 0; display: grid; z-index: 20; grid-auto-flow: column; grid-template-columns: auto; grid-auto-columns: auto; grid-column-gap: var(--__panel-heading-gap); padding: var(--panel-heading-height-padding); height: var(--__panel-heading-height); line-height: var(--__panel-heading-height-inner); font-size: calc(var(--panelHeaderSize) / 3.2); } @media all and (width <= 800px) { /* For mobile, the modal takes 100% of the available screen. This ensures the minimized modal is always 50px above the browser bottom bar regardless of whether or not it is visible. */ width: 100vw; } @media all and (height <= 600px) { display: none; } .content { overflow: hidden; margin-top: calc(-1 * var(--__top-fringe)); margin-bottom: calc(-1 * var(--__bottom-fringe)); margin-right: calc(-1 * var(--__right-fringe)); &.-noImage { .text { padding-right: var(--__right-fringe); } } } .panel-body { border-width: 0 0 1px; border-style: solid; border-color: var(--border); } .panel-footer { z-index: 10; position: relative; border-width: 0; .button-default { z-index: 2; } } .pleroma-tan { object-fit: cover; object-position: top; transition: position, left, right, top, bottom, max-width, max-height; transition-timing-function: ease-in-out; transition-duration: 500ms; width: 25em; float: right; z-index: 20; position: relative; shape-margin: 0.5em; filter: drop-shadow(5px 5px 10px rgb(0 0 0 / 50%)); pointer-events: none; } .spacer-top { min-height: var(--__top-fringe); } .spacer-bottom { min-height: calc(var(--__bottom-fringe) + var(--panel-header-height)); } .extra-info-group { transition: max-height, padding, height; transition-timing-function: ease-in; transition-duration: 700ms; max-height: 70vh; mask: linear-gradient(to top, white, transparent) bottom/100% 2px no-repeat, linear-gradient(to top, white, white); } .art-credit { text-align: right; } &.-peek { /* Explanation: * 100vh - 100% = Distance between modal's top+bottom boundaries and screen * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen */ transform: translateY(calc(((100vh - 100%) / 2))); .pleroma-tan { float: right; z-index: 10; shape-image-threshold: 70%; } .extra-info-group { max-height: 0; } } }