/* SPDX-License-Identifier: AGPL-3.0-or-later */ .guildsLayoutContainer { --layout-user-area-overlay-height: 0px; --layout-user-area-reserved-height: 0px; --layout-mobile-bottom-nav-reserved-height: 0px; position: relative; display: grid; grid-template-columns: var(--layout-guild-list-width) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); grid-auto-rows: minmax(0, 1fr); height: 100%; min-height: 0; max-height: 100%; width: 100%; min-width: 0; max-width: 100%; background-color: var(--background-secondary); } .guildsLayoutReserveSpace { --layout-user-area-overlay-height: calc(var(--layout-user-area-height) + var(--layout-voice-connection-height, 0px)); } .guildsLayoutReserveMobileBottomNav { --layout-mobile-bottom-nav-reserved-height: var(--mobile-bottom-nav-height); } .guildsLayoutContainerMobile { composes: guildsLayoutContainer; grid-template-columns: 1fr; background-color: var(--background-secondary); } .guildsLayoutFullscreen { grid-template-columns: minmax(0, 1fr); background-color: #000; } .guildListScrollerWrapper { --scroller-track-block-end-inset: var( --layout-user-area-overlay-height, var(--layout-user-area-reserved-height, 0px) ); grid-column: 1; grid-row: 1; min-height: 0; height: calc( 100% - var(--layout-user-area-reserved-height, 0px) - var(--layout-mobile-bottom-nav-reserved-height, 0px) ); width: var(--layout-guild-list-width); min-width: 0; background-color: var(--background-secondary); position: relative; z-index: var(--z-index-elevated-1); } .guildListScrollContainer { height: 100%; width: 100%; min-width: 0; background-color: var(--background-secondary); --guild-badge-surface: var(--background-secondary); padding-top: var(--spacing-1); padding-bottom: var(--spacing-2); } .guildListContent { --guild-list-item-size: var(--guild-icon-size); --guild-list-item-box-size: 3rem; --guild-list-item-gap: 0.375rem; --guild-list-item-inset: calc((var(--guild-list-item-box-size) - var(--guild-list-item-size)) / 2); --guild-folder-expanded-surface-size: var(--guild-list-item-box-size); display: flex; flex-direction: column; align-items: center; width: 100%; min-width: 0; padding-bottom: calc( var(--layout-user-area-overlay-height, var(--layout-user-area-reserved-height, 0px)) + var(--spacing-2) ); } .guildListTopSection, .guildListGuildsSection { display: flex; flex-direction: column; align-items: center; width: 100%; } .guildListTopSection { gap: var(--guild-list-item-gap); } .guildListGuildsSection { position: relative; gap: var(--guild-list-item-gap); } .guildListItems { position: relative; display: flex; flex-direction: column; align-items: center; width: 100%; gap: 0; } .guildListItemSlot { display: flex; justify-content: center; width: 100%; } .contentContainer { grid-column: 2; grid-row: 1; display: grid; grid-template-rows: minmax(0, 1fr); min-height: 0; min-width: 0; background-color: var(--background-secondary); position: relative; height: 100%; max-height: 100%; width: 100%; max-width: 100%; } .contentContainerRounded { border-top-left-radius: clamp(0.75rem, 1.6vw, 1.125rem); background-clip: padding-box; overflow: hidden; } .contentContainerMobile { grid-column: 1 / -1; } .contentContainerFullscreen { grid-column: 1 / -1; background-color: #000; } .contentInner { height: 100%; min-height: 0; max-height: 100%; width: 100%; min-width: 0; background-color: var(--background-secondary); } .contentInnerFullscreen { background-color: #000; } .nagbarStack { display: flex; flex-direction: column; gap: 0; } .userAreaWrapper { position: absolute; bottom: 0; left: 0; width: calc(var(--layout-guild-list-width) + var(--layout-sidebar-width) + 0.0625rem); display: flex; align-items: flex-end; padding: 0; pointer-events: none; z-index: var(--z-index-elevated-1); } .userAreaWrapper > * { pointer-events: auto; } .guildListItem { position: relative; display: flex; height: var(--guild-list-item-box-size); width: 100%; align-items: center; justify-content: center; padding: var(--guild-list-item-inset); box-sizing: border-box; z-index: 0; } .guildListReorderTarget { height: calc(var(--guild-list-item-box-size) + var(--guild-list-item-gap)); } .guildIcon { display: flex; align-items: center; justify-content: center; height: var(--guild-icon-size); width: var(--guild-icon-size); flex-shrink: 0; cursor: pointer; border-radius: var(--radius-full); background-color: transparent; background-size: cover; background-position: center; font-weight: 600; font-size: 1.25rem; color: var(--text-primary); overflow: hidden; transition: border-radius 70ms ease-out, background-color 70ms ease-out, color 70ms ease-out; container-type: size; --initials-font-size: clamp(0.85rem, 45cqi, 1.35rem); --initials-letter-spacing: 0px; --initials-scale: 1; } .guildIconSelected:not(.guildIconNoImage) { border-radius: 30%; } @media (hover: hover) and (pointer: fine) { :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .guildListItem:hover .guildIcon:not(.guildIconNoImage), :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .guildIcon:hover:not(.guildIconNoImage), .guildListItem.contextMenuHover .guildIcon:not(.guildIconNoImage) { border-radius: 30%; } } .guildIconNoImage { transition-property: background-color, color, border-radius; transition-duration: 70ms; transition-timing-function: ease-out; background-color: var(--guilds-layout-item-bg, var(--guild-list-foreground)); cursor: pointer; } .guildIconSelected.guildIconNoImage { border-radius: 30%; background-color: var(--brand-primary); color: white; } @media (hover: hover) and (pointer: fine) { :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .guildListItem:hover .guildIconNoImage, :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .guildIconNoImage:hover, .guildListItem.contextMenuHover .guildIconNoImage { border-radius: 30%; background-color: var(--brand-primary); color: white; } } .guildIconInitials { white-space: nowrap; display: inline-block; text-align: center; line-height: 1; color: inherit; font-weight: 600; font-size: var(--initials-font-size); letter-spacing: var(--initials-letter-spacing); transform: scale(var(--initials-scale)); transform-origin: center; } .guildIcon[data-initials-length='medium'] .guildIconInitials { --initials-font-size: clamp(0.85rem, 38cqi, 1.11rem); --initials-letter-spacing: 0px; --initials-scale: 0.92; } .guildIcon[data-initials-length='long'] .guildIconInitials { --initials-font-size: clamp(0.85rem, 32cqi, 0.87rem); --initials-letter-spacing: 0px; --initials-scale: 0.78; } .guildIndicator { position: absolute; left: -0.15rem; display: flex; align-items: center; justify-content: center; height: var(--guild-icon-size); width: 0.5rem; pointer-events: none; container-type: layout size; z-index: 2; } .guildIndicatorBar { display: block; width: 0.35rem; border-radius: 0 var(--radius-full) var(--radius-full) 0; background-color: var(--text-primary); } .guildBadge { position: absolute; right: -0.25rem; bottom: -0.25rem; pointer-events: none; border-radius: var(--radius-md); } .guildBadgeActive { box-shadow: 0 0 0 0.1875rem var(--guild-badge-surface, var(--background-secondary)); } .dmListSection { display: flex; flex-direction: column; align-items: center; gap: var(--guild-list-item-gap); min-height: 0; width: 100%; } .guildVoiceBadge { position: absolute; right: -0.25rem; top: -0.25rem; pointer-events: none; z-index: 2; } .guildVoiceBadgeInner { display: flex; align-items: center; justify-content: center; height: 1.25rem; width: 1.25rem; flex-shrink: 0; border-radius: var(--radius-full); background-color: var(--status-online); box-shadow: 0 0 0 0.1875rem var(--guild-badge-surface, var(--background-secondary)); pointer-events: none; color: white; } .guildErrorBadge { position: absolute; top: 0; right: 0; pointer-events: none; } .guildErrorBadgeInner { display: flex; align-items: center; justify-content: center; height: 1rem; width: 1rem; flex-shrink: 0; border-radius: var(--radius-full); background-color: white; color: var(--status-danger); box-shadow: 0 0 0 0.1875rem var(--guild-badge-surface, var(--background-secondary)); } .dmListItem { composes: guildListItem; } .dmListItemWrapper { height: var(--guild-list-item-box-size); width: 100%; display: flex; justify-content: center; align-items: center; } .dmIcon { composes: guildIcon; } .fluxerButton { composes: guildListItem; } .fluxerButtonIcon { composes: guildIcon; background-color: var(--guilds-layout-item-bg, var(--guild-list-foreground)); color: var(--text-primary); transition-property: background-color, color, border-radius; transition-duration: 70ms; transition-timing-function: ease-out; } .fluxerButtonIconSelected { background-color: var(--brand-primary); color: white; } @media (hover: hover) and (pointer: fine) { :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .fluxerButton:hover .fluxerButtonIcon, :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .fluxerButtonIcon:hover, .fluxerButton.contextMenuHover .fluxerButtonIcon { background-color: var(--brand-primary); color: white; } } .addGuildButton { composes: guildListItem; } .addGuildButtonIcon { display: flex; align-items: center; justify-content: center; height: var(--guild-icon-size); width: var(--guild-icon-size); flex-shrink: 0; cursor: pointer; border-radius: var(--radius-full); border: 0.125rem dashed var(--background-modifier-accent); background-color: transparent; color: var(--text-primary); transition-property: border-radius, border-color; transition-duration: 70ms; transition-timing-function: ease-out; } @media (hover: hover) and (pointer: fine) { :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .addGuildButton:hover .addGuildButtonIcon, :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .addGuildButtonIcon:hover, .addGuildButton.contextMenuHover .addGuildButtonIcon { border-color: var(--text-primary); } } .guildDivider { height: 0.125rem; width: 2rem; flex-shrink: 0; margin-top: var(--guild-list-item-gap); margin-bottom: var(--guild-list-item-gap); border-radius: 0.0625rem; background-color: var(--background-modifier-hover); } .dmUserAvatars { display: flex; align-items: center; } .dmUserAvatar { height: 2rem; width: 2rem; border: 0.125rem solid var(--background-primary); z-index: 1; } .dmUserAvatarImage { height: 100%; width: 100%; } .fluxerSymbolIcon { height: 2.75rem; width: 2.75rem; color: currentColor; } .relative { position: relative; } .favoritesIcon { height: 1.75rem; width: 1.75rem; } .unavailableContainer { composes: guildListItem; } .unavailableBadge { display: flex; height: var(--guild-list-item-size); width: var(--guild-list-item-size); flex-shrink: 0; cursor: pointer; align-items: center; justify-content: center; border-radius: var(--radius-full); border: 0.125rem solid var(--status-danger); background-color: transparent; color: var(--text-primary); transition-property: color, background-color; transition-timing-function: ease-out; transition-duration: 150ms; } @media (hover: hover) and (pointer: fine) { :global(:where(html.window-focused, html.unfocused-fully-interactive):not(.window-focus-activation-guard)) .unavailableBadge:hover { background-color: var(--status-danger); color: white; } } .unavailableIcon { height: 2rem; width: 2rem; } .guildTooltipContainer { display: flex; box-sizing: border-box; min-width: min(13.75rem, calc(100vw - 4rem)); flex-direction: column; align-items: flex-start; gap: 0.375rem; padding: 0.125rem 0; } .guildTooltipHeader { display: flex; min-width: 0; align-items: center; gap: 0.375rem; } .guildVerifiedIcon { height: 1rem; width: 1rem; flex-shrink: 0; color: var(--text-primary); } .guildTooltipName { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 1rem; line-height: 1.4; font-weight: 600; color: var(--text-primary); } .guildTooltipMessage { font-size: 0.875rem; color: var(--text-primary-muted); } .guildTooltipError { font-size: 0.875rem; color: var(--status-danger); } .outlineFrame { --outline-radius: 0px; } .outlineFrameFullscreen { border: none; border-radius: 0; background: #000; } :global(html.platform-native:not(.platform-macos)) .guildsLayoutContainer { padding-top: var(--native-titlebar-height); } :global(html.platform-native:not(.platform-macos)) .guildsLayoutFullscreen { padding-top: 0; } :global(html.platform-native.platform-macos) .guildListScrollContainer { padding-top: var(--native-titlebar-height); } :global(html:not(.platform-native)) .outlineFrame, :global(html.platform-native.platform-macos) .outlineFrame { border-top: none; } :global(html.platform-native:not(.platform-macos)) .outlineFrame { border-top: 0.0625rem solid var(--user-area-divider-color); --outline-radius: clamp(0.5rem, 1.2vw, 0.875rem); } :global(html:not(.platform-native)) .outlineFrameFullscreen, :global(html.platform-native.platform-macos) .outlineFrameFullscreen, :global(html.platform-native:not(.platform-macos)) .outlineFrameFullscreen { border: none; } .guildMutedInfo { display: flex; align-items: center; justify-content: flex-start; gap: 0.375rem; } .guildMutedIcon { height: 0.875rem; width: 0.875rem; flex-shrink: 0; color: var(--text-primary-muted); } .guildMutedText { font-size: 0.8125rem; font-weight: 400; color: var(--text-primary-muted); } .guildTooltipStats { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.625rem; margin-top: 0.125rem; min-height: 1rem; width: 100%; } .guildTooltipStat { --guild-tooltip-count-skeleton-width: 2.125rem; display: inline-flex; align-items: center; min-width: 0; min-height: 1rem; line-height: 1; } .guildTooltipStatOnline { --guild-tooltip-count-skeleton-width: 2.125rem; } .guildTooltipStatMembers { --guild-tooltip-count-skeleton-width: 2.5rem; } .guildTooltipStatDot { margin-right: 0.3rem; height: 0.5rem; width: 0.5rem; border-radius: 624.9375rem; flex: 0 0 auto; } .guildTooltipStatDotOnline { background-color: var(--status-online); } .guildTooltipStatDotMembers { background-color: var(--text-tertiary-secondary); } .guildTooltipStatText { display: inline-flex; min-width: 0; align-items: center; gap: 0.25rem; color: var(--text-primary-muted); font-size: 0.8125rem; font-variant-numeric: tabular-nums; line-height: 1.2; white-space: nowrap; } .guildTooltipStatSkeleton { height: 0.6875rem; width: var(--guild-tooltip-count-skeleton-width); min-width: var(--guild-tooltip-count-skeleton-width); border-radius: 62.4375rem; background: color-mix(in srgb, var(--text-primary-muted) 22%, transparent); animation: guild-tooltip-stat-skeleton-pulse 1.6s ease-in-out infinite; } :global(html.reduced-motion) .guildTooltipStatSkeleton { animation: none; opacity: 0.72; } @keyframes guild-tooltip-stat-skeleton-pulse { 0%, 100% { opacity: 0.44; } 50% { opacity: 0.72; } } .guildVoiceInfo { display: flex; align-items: center; gap: 0.375rem; min-height: 1.875rem; padding-right: 0.25rem; } .guildVoiceIcon { height: 1.75rem; width: 1.75rem; flex: 0 0 auto; color: var(--text-primary-muted); } .guildVoiceAvatarStack { --avatar-stack-extra-height: 0rem; --avatar-stack-padding-block-end: var(--avatar-outline, 0.125rem); --avatar-stack-outline-color: var(--settings-surface-background, var(--form-surface-background)); } .guildVoiceBadgeIcon { height: 0.75rem; width: 0.75rem; } .guildErrorIcon { height: 1rem; width: 1rem; } .guildInvitesPausedBadge { position: absolute; right: calc(-0.25rem - 0.1875rem); bottom: calc(-0.25rem - 0.1875rem); pointer-events: none; background-color: var(--guild-badge-surface, var(--background-secondary)); border-radius: var(--radius-full); padding: 0.1875rem; } .guildInvitesPausedBadgeInner { display: flex; align-items: center; justify-content: center; height: 1.125rem; width: 1.125rem; flex-shrink: 0; border-radius: var(--radius-full); background-color: hsl(220, calc(8% * var(--saturation-factor)), 36%); color: white; } .guildInvitesPausedIcon { height: 0.75rem; width: 0.75rem; } :global(.theme-light) .guildsLayoutContainer { --guilds-layout-item-bg: color-mix(in srgb, var(--guild-list-foreground) 72%, var(--background-primary) 28%); } .roundedFull { border-radius: var(--radius-full); } .dropIndicatorTop::before { content: ''; position: absolute; top: 0; left: 50%; width: var(--guild-list-item-box-size); transform: translateX(-50%); height: 0.125rem; background: var(--brand-primary-light); border-radius: 0.0625rem; z-index: 1; } .dropIndicatorBottom::after { content: ''; position: absolute; bottom: 0; left: 50%; width: var(--guild-list-item-box-size); transform: translateX(-50%); height: 0.125rem; background: var(--brand-primary-light); border-radius: 0.0625rem; z-index: 1; } .dropIndicatorCombine .guildIcon { opacity: 0; } .combinePreview { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; z-index: 3; } .combinePreviewGrid { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); gap: 0.125rem; height: var(--guild-icon-size); width: var(--guild-icon-size); padding: 0.25rem; border-radius: 30%; background-color: color-mix(in srgb, var(--background-secondary) 92%, var(--brand-primary-light) 8%); outline: 0.125rem solid var(--brand-primary-light); outline-offset: 0.0625rem; } .combinePreviewIcon { width: 100%; height: 100%; border-radius: 30%; background-size: cover; background-position: center; display: flex; align-items: center; justify-content: center; overflow: hidden; font-size: 0.5rem; font-weight: 600; color: var(--text-primary); line-height: 1; } .combinePreviewIconInitials { background-color: var(--background-secondary); } .combinePreviewIconEmpty { background-color: transparent; } .guildListDropZone { position: absolute; left: 0; right: 0; height: 1.5rem; z-index: 10; pointer-events: none; } .guildListDropZoneTop { top: 0; } .guildListDropZoneBottom { bottom: 0; } .guildListDropZoneEnabled { pointer-events: auto; } .guildListDropZoneActive::after { content: ''; position: absolute; height: 0.125rem; left: 50%; width: var(--guild-list-item-box-size); transform: translateX(-50%); background: var(--brand-primary-light); border-radius: 0.0625rem; } .guildListDropZoneTop.guildListDropZoneActive::after { top: 0; } .guildListDropZoneBottom.guildListDropZoneActive::after { bottom: 0; } :global(.theme-light) .dropIndicatorTop::before, :global(.theme-light) .dropIndicatorBottom::after, :global(.theme-light) .guildListDropZoneActive::after { background: var(--brand-primary); } :global(.theme-light) .combinePreviewGrid { background-color: color-mix(in srgb, var(--background-secondary) 92%, var(--brand-primary) 8%); outline-color: var(--brand-primary); }