:root { --app-topbar-base-height: 64px; --app-topbar-title-size: 18px; --app-topbar-bg: #05070A; --app-topbar-fg: #F7FBFF; --app-topbar-gold: var(--app-topbar-fg); --app-topbar-blue-glow: rgba(92, 190, 255, 0.72); --app-topbar-blue-glow-soft: rgba(72, 145, 255, 0.34); } .topbar { width: 100%; min-height: calc(var(--app-topbar-base-height) + env(safe-area-inset-top)); margin: 0 0 14px; padding: calc(10px + env(safe-area-inset-top)) 0 10px; box-sizing: border-box; display: grid; grid-template-columns: minmax(44px, 1fr) minmax(0, auto) minmax(44px, 1fr); align-items: center; gap: 8px; } .topbar-slot .topbar { height: calc(var(--app-topbar-base-height) + env(safe-area-inset-top)); min-height: calc(var(--app-topbar-base-height) + env(safe-area-inset-top)); max-height: calc(var(--app-topbar-base-height) + env(safe-area-inset-top)); margin: 0; padding-top: env(safe-area-inset-top); padding-bottom: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; } .topbar__left, .topbar__center, .topbar__right { min-width: 0; display: flex; align-items: center; } .topbar__left { width: 100%; justify-content: flex-start; gap: 8px; } .topbar__center { justify-content: center; overflow: hidden; text-align: center; } .topbar__right { width: 100%; justify-content: flex-end; gap: 8px; } .topbar__title { margin: 0; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-main); font-size: var(--app-topbar-title-size); font-weight: 700; line-height: 22px; letter-spacing: 0; color: var(--app-topbar-fg); text-align: center; text-shadow: 0 0 5px var(--app-topbar-blue-glow), 0 0 14px var(--app-topbar-blue-glow-soft); } .topbar__left-label { display: inline-block; max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: #a8bcdf; } .topbar__back { width: 40px; height: 40px; min-width: 40px; min-height: 40px; padding: 0; display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-main); font-size: 24px; line-height: 1; font-weight: 500; } .topbar-slot .topbar__action, .topbar-slot .topbar__back { min-height: 40px; height: 40px; color: var(--app-topbar-fg); text-shadow: 0 0 5px var(--app-topbar-blue-glow), 0 0 12px var(--app-topbar-blue-glow-soft); } .topbar-slot .topbar__action svg, .topbar-slot .topbar__back svg { filter: drop-shadow(0 0 3px var(--app-topbar-blue-glow)) drop-shadow(0 0 7px var(--app-topbar-blue-glow-soft)); } .topbar--profile .topbar__left { visibility: hidden; } @media (prefers-reduced-motion: reduce) { .topbar__action, .topbar__back { transition: none; } } /* Custom center content used by chat/channel/list screens still follows the same TopBar rhythm. */ .topbar-slot { padding: 0 12px; background: var(--app-topbar-bg); } .topbar__center .app-topbar-title-action, .topbar__center .channels-top-title, .topbar__center .dm-head-filter-title { margin: 0; min-width: 0; max-width: 100%; min-height: 40px; padding: 0 4px; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-main); font-size: var(--app-topbar-title-size); font-weight: 700; line-height: 22px; text-align: center; } .topbar__center .app-topbar-title-action::before, .topbar__center .app-topbar-title-action::after, .topbar__center .channels-top-title::before, .topbar__center .channels-top-title::after, .topbar__center .dm-head-filter-title::before, .topbar__center .dm-head-filter-title::after { background: transparent; background-image: none; border-color: transparent; box-shadow: none; } .topbar-slot .topbar__center button, .topbar-slot .topbar__center button:hover, .topbar-slot .topbar__center button:focus, .topbar-slot .topbar__center button:active, .topbar-slot .topbar__center button:focus-visible { color: #f7fbff; background: transparent; background-image: none; border: 0; box-shadow: none; text-shadow: 0 0 5px rgba(92, 190, 255, 0.72), 0 0 12px rgba(72, 145, 255, 0.34); backdrop-filter: none; -webkit-backdrop-filter: none; filter: drop-shadow(0 0 4px rgba(92, 190, 255, 0.56)); } .topbar-slot .topbar__center button::before, .topbar-slot .topbar__center button::after { background: transparent; background-image: none; border-color: transparent; box-shadow: none; } /* TopBar owns its button interaction states. */ .topbar-slot .topbar__action, .topbar-slot .topbar__back { filter: drop-shadow(0 0 4px rgba(92, 190, 255, 0.56)); } .topbar-slot .topbar__action:active, .topbar-slot .topbar__back:active, .topbar-slot .topbar__center button:active { background: rgba(0, 0, 0, 0.12); box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.58), inset 0 -1px 2px rgba(255, 255, 255, 0.08); transform: translateY(1px) scale(0.97); } .topbar-slot .topbar__action:focus-visible, .topbar-slot .topbar__back:focus-visible, .topbar-slot .topbar__center button:focus-visible { color: #ffffff; outline: none; filter: drop-shadow(0 0 5px rgba(110, 205, 255, 0.82)) drop-shadow(0 0 10px rgba(72, 145, 255, 0.42)); } .topbar-slot .topbar__action[aria-expanded='true'], .topbar-slot .topbar__action[data-open='true'], .topbar-slot .topbar__center button[aria-expanded='true'], .topbar-slot .topbar__center button[data-open='true'] { background: rgba(0, 0, 0, 0.16); box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.58), inset 0 -1px 2px rgba(255, 255, 255, 0.08); transform: translateY(1px) scale(0.97); filter: brightness(0.9); } /* Migrated from legacy components.css during Stage 3 ownership split. */ .header-icon-svg { display: block; width: 1em; height: 1em; } .header-icon-svg--phone, .header-icon-svg--search { width: 22px; height: 22px; }