diff --git a/index.css b/index.css index a96a84e..ff712ff 100644 --- a/index.css +++ b/index.css @@ -11,8 +11,12 @@ --safe-bottom: 0px; --safe-left: 0px; --safe-right: 0px; - /* Height actually consumed by the fixed header, safe-area included. */ - --header-offset: calc(var(--header-h) + var(--safe-top)); + /* Height actually consumed by the fixed header, safe-area included. + `--header-measured` is published at runtime by HeaderComponent via a + ResizeObserver: the header grows when the mobile search sheet opens, when + an iOS safe area applies, or at high zoom, and a hardcoded value would let + the sticky themes bar slide under it (it was fully hidden in that case). */ + --header-offset: var(--header-measured, calc(var(--header-h) + var(--safe-top))); /* Usable viewport height that follows the mobile browser chrome. */ --app-vh: 100vh; } @@ -181,18 +185,27 @@ body { } .app-avatar-btn:hover { background-color: var(--panel-2); } +/* Circular user badge ("pastille"). Belt and braces: `rounded-full` from the + markup plus these rules, so the badge can never degrade into a rectangle if + a theme stylesheet overrides the radius. */ .avatar-circle { display: inline-flex; align-items: center; justify-content: center; + flex-shrink: 0; width: 2rem; height: 2rem; - border-radius: 9999px; - border-width: 1px; + min-width: 2rem; + min-height: 2rem; + aspect-ratio: 1 / 1; + border-radius: 9999px !important; + border-width: 2px; border-style: solid; font-size: 0.875rem; font-weight: 600; - flex-shrink: 0; + line-height: 1; + overflow: hidden; + text-transform: uppercase; } /* The fixed app header: honours the safe area and never overflows. */ diff --git a/src/components/header/header.component.html b/src/components/header/header.component.html index 0e5ddc0..2f8488b 100644 --- a/src/components/header/header.component.html +++ b/src/components/header/header.component.html @@ -1,9 +1,17 @@ -
+ + +
@@ -93,7 +101,7 @@
@if (userMenuOpen()) {