The /logs.html header puts a flex:1 sub-tab strip (`.logs-tabbar`) next to the ← home back-link inside the flex `.page-header`. The strip is itself a flex container, so its default `min-width: auto` keeps it at its intrinsic content width and — without an explicit nowrap on the parent — it gets pushed onto its own row under the back-link. Mirror the working dashboard chrome (`.dashboard-chrome` / `.tabbar`, which sets `flex-wrap: nowrap`): make `.page-header` explicitly nowrap and give `.logs-tabbar` `min-width: 0` so it shrinks to share the row instead of wrapping. Affects every standalone page that uses `.page-header` (flow / logs / stats / settings); the nowrap is correct for all of them.
51 lines
1.9 KiB
CSS
51 lines
1.9 KiB
CSS
/* ─── page chrome: back-link header ────────────────────────────────
|
|
The minimal sticky "frosted bar" header used by every standalone page
|
|
reached from the H0M3 hub — /flow, /logs, /stats, /settings. A back
|
|
link to H0M3 on the left, then either a page title or (on /logs) a
|
|
createTabStrip sub-tab nav. The operator dashboard uses its own richer
|
|
sticky chrome (`.dashboard-chrome`); these classes cover the simple
|
|
pages.
|
|
|
|
Shared across packages via @hive/shared so a new page only links the
|
|
stylesheet + writes the three-element header markup:
|
|
|
|
<header class="page-header">
|
|
<a class="page-back" href="/">← home</a>
|
|
<span class="page-title">TITLE</span>
|
|
</header>
|
|
*/
|
|
.page-header {
|
|
/* Stickiness lives on the `.sticky-top` wrapper (common.css) that
|
|
common.js wraps this header in, alongside the server-warning banner,
|
|
so the two stack instead of colliding. */
|
|
background: color-mix(in srgb, var(--bg) 92%, transparent);
|
|
-webkit-backdrop-filter: blur(8px) saturate(120%);
|
|
backdrop-filter: blur(8px) saturate(120%);
|
|
border-bottom: 1px solid var(--purple-dim);
|
|
display: flex;
|
|
/* Keep the back-link + sub-tab nav on one row. Without an explicit
|
|
nowrap a flex:1 sub-tab strip (e.g. /logs.html's `.logs-tabbar`)
|
|
whose intrinsic min-content width can't shrink (default
|
|
`min-width: auto`) gets pushed onto its own line. The strip pairs
|
|
this with `min-width: 0` so it can shrink instead of wrapping. */
|
|
flex-wrap: nowrap;
|
|
align-items: center;
|
|
gap: 1.5em;
|
|
padding: 0.5em 1.5em;
|
|
}
|
|
|
|
.page-back {
|
|
color: var(--purple);
|
|
text-decoration: none;
|
|
font-size: 0.88em;
|
|
white-space: nowrap;
|
|
flex: none;
|
|
}
|
|
.page-back:hover { text-decoration: underline; }
|
|
|
|
.page-title {
|
|
color: var(--subtext0);
|
|
font-size: 0.85em;
|
|
letter-spacing: 0.05em;
|
|
flex: none;
|
|
}
|