/* SPDX-License-Identifier: AGPL-3.0-or-later */ .surface { --profile-skeleton-bg: var(--background-primary); --profile-skeleton-fill: var(--background-secondary-alt); --profile-skeleton-fill-strong: var(--background-tertiary); --profile-skeleton-border-color: var(--brand-primary); --profile-skeleton-radius: 0.375rem; --profile-skeleton-border-width: 0; --profile-skeleton-width: 100%; --profile-skeleton-height: 100%; --profile-skeleton-content-gap: 0.625rem; --profile-skeleton-line-radius: 62.4375rem; box-sizing: border-box; display: flex; width: var(--profile-skeleton-width); height: var(--profile-skeleton-height); max-height: var(--profile-skeleton-height); flex-direction: column; overflow: hidden; border: var(--profile-skeleton-border-width) solid var(--profile-skeleton-border-color); border-radius: var(--profile-skeleton-radius); background: var(--profile-skeleton-bg); } .pulse { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; will-change: opacity; } .popout { --profile-popout-content-width: 18.75rem; --profile-popout-content-height: 32.5rem; --profile-popout-border-width: 0.15625rem; --profile-popout-avatar-size: 5rem; --profile-popout-avatar-border: 0.2rem; --profile-popout-avatar-left: 0.625rem; --profile-popout-avatar-top: 3.4375rem; --profile-popout-banner-height: 6.5625rem; --profile-popout-header-height: 8.75rem; --profile-skeleton-width: var(--profile-popout-content-width); --profile-skeleton-height: var(--profile-popout-content-height); --profile-skeleton-radius: 0.375rem; --profile-skeleton-border-width: var(--profile-popout-border-width); --profile-skeleton-banner-height: var(--profile-popout-banner-height); --profile-skeleton-header-height: var(--profile-popout-header-height); --profile-skeleton-avatar-size: var(--profile-popout-avatar-size); --profile-skeleton-avatar-border: var(--profile-popout-avatar-border); --profile-skeleton-avatar-top: var(--profile-popout-avatar-top); --profile-skeleton-avatar-left: var(--profile-popout-avatar-left); --profile-skeleton-content-padding-inline: 1rem; --profile-skeleton-content-padding-block: 0.5rem; box-sizing: content-box; } .modal { --profile-skeleton-radius: var(--profile-modal-inner-radius, 0.25rem); --profile-skeleton-banner-aspect: 20 / 7; --profile-skeleton-avatar-size: var(--profile-modal-avatar-size, 7.5rem); --profile-skeleton-avatar-border: var(--profile-modal-avatar-border, 0.3rem); --profile-skeleton-avatar-top: calc(var(--profile-modal-avatar-top, -4.05rem) * var(--profile-modal-scale, 1)); --profile-skeleton-avatar-left: calc(var(--profile-modal-avatar-left, 1rem) * var(--profile-modal-scale, 1)); --profile-skeleton-content-padding-inline: calc(1rem * var(--profile-modal-scale, 1)); --profile-skeleton-content-padding-block: calc(1rem * var(--profile-modal-scale, 1)); --profile-skeleton-content-gap: calc(0.75rem * var(--profile-modal-scale, 1)); } .header { position: relative; flex: 0 0 auto; } .popout .header { height: var(--profile-skeleton-header-height); } .banner { position: relative; width: 100%; overflow: hidden; flex-shrink: 0; background: var(--profile-skeleton-fill); } .popout .banner { height: var(--profile-skeleton-banner-height); overflow: visible; } .modal .banner { aspect-ratio: var(--profile-skeleton-banner-aspect); border-top-left-radius: var(--profile-modal-inner-radius, 0.25rem); border-top-right-radius: var(--profile-modal-inner-radius, 0.25rem); clip-path: inset(0 round var(--profile-modal-inner-radius, 0.25rem) var(--profile-modal-inner-radius, 0.25rem) 0 0); } .bannerMask { contain: layout paint; display: block; width: 100%; height: 100%; } .bannerFill { width: 100%; height: 100%; background: linear-gradient(135deg, transparent 0%, rgba(255, 255, 255, 0.08) 48%, transparent 100%), var(--profile-skeleton-fill-strong); } .headerLower { position: relative; flex-shrink: 0; } .popout .headerLower { height: calc(var(--profile-skeleton-header-height) - var(--profile-skeleton-banner-height)); } .modal .headerLower { min-height: calc(2.375rem * var(--profile-modal-scale, 1)); padding: 0 var(--profile-skeleton-content-padding-inline); padding-top: calc(1rem * var(--profile-modal-scale, 1)); } .avatar { position: absolute; top: var(--profile-skeleton-avatar-top); left: var(--profile-skeleton-avatar-left); box-sizing: content-box; width: var(--profile-skeleton-avatar-size); height: var(--profile-skeleton-avatar-size); border: var(--profile-skeleton-avatar-border) solid var(--profile-skeleton-bg); border-radius: 624.9375rem; background: var(--profile-skeleton-fill-strong); } .popoutAvatarSlot { position: absolute; top: var(--profile-skeleton-avatar-top); left: var(--profile-skeleton-avatar-left); z-index: 1; box-sizing: content-box; width: var(--profile-skeleton-avatar-size); height: var(--profile-skeleton-avatar-size); border: var(--profile-skeleton-avatar-border) solid var(--profile-skeleton-bg); border-radius: 624.9375rem; background: var(--profile-skeleton-fill-strong); } .popoutAvatarStatus { position: absolute; top: calc(var(--profile-skeleton-avatar-top) + var(--profile-skeleton-avatar-size) - 1.125rem); left: calc(var(--profile-skeleton-avatar-left) + var(--profile-skeleton-avatar-size) - 1.125rem); z-index: 2; width: 1.5rem; height: 1.5rem; border: 0.25rem solid var(--profile-skeleton-bg); border-radius: 624.9375rem; background: var(--profile-skeleton-fill-strong); } .modal .avatar { transform: scale(var(--profile-modal-scale, 1)); transform-origin: top left; } .modalActions { display: flex; height: calc(2.375rem * var(--profile-modal-scale, 1)); min-height: calc(2.375rem * var(--profile-modal-scale, 1)); align-items: center; justify-content: flex-end; gap: 0.5rem; } .content { display: flex; min-width: 0; flex: 1 1 auto; flex-direction: column; gap: var(--profile-skeleton-content-gap); padding: var(--profile-skeleton-content-padding-block) var(--profile-skeleton-content-padding-inline); overflow: hidden; } .modal .content { margin: var(--profile-skeleton-content-padding-block) var(--profile-skeleton-content-padding-inline); padding: 0; } .line, .block, .pill, .button, .tab, .panel, .smallAvatar { flex-shrink: 0; border-radius: var(--profile-skeleton-line-radius); background: var(--profile-skeleton-fill); } .line { height: var(--profile-skeleton-line-height, 0.75rem); width: var(--profile-skeleton-line-width, 100%); } .nameLine { --profile-skeleton-line-height: 1.375rem; --profile-skeleton-line-width: 72%; margin-top: 0.125rem; } .usernameLine { --profile-skeleton-line-height: 0.875rem; --profile-skeleton-line-width: 48%; } .statusLine { --profile-skeleton-line-height: 1rem; --profile-skeleton-line-width: 78%; } .section { display: flex; flex-direction: column; gap: 0.375rem; } .sectionTitle { --profile-skeleton-line-height: 0.875rem; --profile-skeleton-line-width: 34%; } .sectionLineLong { --profile-skeleton-line-width: 92%; } .sectionLineMedium { --profile-skeleton-line-width: 74%; } .sectionLineShort { --profile-skeleton-line-width: 54%; } .activityBlock { height: 3rem; border-radius: 0.375rem; } .roleRow, .connectionRow, .tabs { display: flex; gap: 0.375rem; min-width: 0; } .pill { height: 1.375rem; width: var(--profile-skeleton-pill-width, 4.25rem); border-radius: 62.4375rem; } .connectionPill { width: 1.875rem; height: 1.875rem; border-radius: 0.375rem; } .footer { display: flex; flex: 0 0 auto; padding: 0.5rem 0.75rem 0.75rem; } .button { width: 100%; height: 2rem; border-radius: 0.375rem; } .modalUserInfo { display: flex; flex-direction: column; gap: 0.5rem; padding-left: 0.75rem; } .modalNameLine { --profile-skeleton-line-height: 1.875rem; --profile-skeleton-line-width: 52%; } .modalTagLine { --profile-skeleton-line-height: 1.125rem; --profile-skeleton-line-width: 42%; } .modalActionButton { width: 7rem; height: 2rem; border-radius: 0.375rem; } .modalActionIcon { width: 2rem; height: 2rem; border-radius: 0.375rem; } .tab { width: 30%; height: 1.875rem; border-radius: 0.375rem; } .panel { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; gap: 0.875rem; padding: calc(1rem * var(--profile-modal-scale, 1)); border-radius: 0.375rem; } .mutualRow { display: flex; align-items: center; gap: 0.75rem; } .smallAvatar { width: 2.5rem; height: 2.5rem; border-radius: 624.9375rem; } .mutualText { display: flex; min-width: 0; flex: 1 1 auto; flex-direction: column; gap: 0.375rem; }