diff --git a/pipekit/web/static/style.css b/pipekit/web/static/style.css index 02d2315..3e2b550 100644 --- a/pipekit/web/static/style.css +++ b/pipekit/web/static/style.css @@ -5,6 +5,7 @@ - Layout directs flow; nothing floats. */ :root { + --topbar-h: 2.65rem; --bg: #111418; --surface: #181c22; --border: #2a3038; @@ -39,6 +40,9 @@ header.topbar { padding: 0.6rem 1.2rem; background: var(--surface); border-bottom: 1px solid var(--border-strong); + position: sticky; + top: 0; + z-index: 100; } header.topbar .brand { font-weight: 700; @@ -62,7 +66,6 @@ header.topbar nav a:hover { header.topbar .right { margin-left: auto; color: var(--text-muted); font-size: 12px; } main { - max-width: 1200px; margin: 1rem auto; padding: 0 1.2rem; } @@ -83,6 +86,9 @@ main { display: flex; align-items: center; gap: 0.6rem; + position: sticky; + top: var(--topbar-h); + z-index: 99; } .panel > header .subtitle { color: var(--text-muted); @@ -252,6 +258,10 @@ label.field { margin-bottom: 0.6rem; } label.field .help { grid-column: 2; color: var(--text-muted); font-size: 12px; } +/* Inputs inside label.field must not overflow their grid cell — the global + min-width:14rem is correct for standalone use but blows past narrow containers. */ +label.field input[type="text"], label.field input[type="number"], label.field input[type="password"], +label.field select, label.field textarea { min-width: 0; width: 100%; } /* Step indicator */ .steps { diff --git a/pipekit/web/templates/modules_index.html b/pipekit/web/templates/modules_index.html index 3435fa6..81b65a7 100644 --- a/pipekit/web/templates/modules_index.html +++ b/pipekit/web/templates/modules_index.html @@ -18,14 +18,14 @@
| name | -strategy | -dest | -groups | -last run | -status | -rows | -+ | name | +strategy | +dest | +groups | +last run | +status | +rows | +{{ m.last_run_at | localtime }} | +{{ m.last_run_at | localtime }} | {% with module=m %}{% include "_module_status_pill.html" %}{% endwith %}{{ m.last_row_count if m.last_row_count is not none else "—" }} |
|---|