From 2a3eaafabbc1c0547f39b887bc1f409947d8819b Mon Sep 17 00:00:00 2001 From: Florian Heinz Date: Thu, 21 May 2026 18:49:18 +0200 Subject: [PATCH] Polish mobile glass navigation and signal icons --- assets/css/app.css | 111 ++++++++++++++++++++++++++++--------------- templates/layout.php | 8 ++-- 2 files changed, 76 insertions(+), 43 deletions(-) diff --git a/assets/css/app.css b/assets/css/app.css index 0a20279..2c3a1b9 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -540,6 +540,11 @@ body.page-dashboard .content { position: relative; z-index: 1; margin-bottom: 0; + border: 1px solid rgba(143, 191, 255, 0.22); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.025)), + rgba(6, 17, 30, 0.18); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 18px 54px rgba(0, 0, 0, 0.14); touch-action: pan-y; transform: translate3d(var(--day-slider-offset, 0), 0, 0) scale(var(--day-slider-scale, 1)); transition: transform 260ms cubic-bezier(0.2, 0.8, 0.2, 1); @@ -4722,32 +4727,33 @@ input[type="range"] { .ios-tabbar { position: fixed; - left: 0.75rem; - right: 0.75rem; - bottom: max(0.65rem, env(safe-area-inset-bottom)); + left: 0.65rem; + right: 0.65rem; + bottom: max(0.55rem, env(safe-area-inset-bottom)); z-index: 120; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 0.25rem; - min-height: 4.8rem; - padding: 0.48rem; - border: 1px solid rgba(255, 255, 255, 0.28); - border-radius: 2rem; + gap: 0.18rem; + min-height: 5rem; + padding: 0.42rem; + border: 1px solid rgba(255, 255, 255, 0.34); + border-radius: 2.15rem; background: - linear-gradient(180deg, rgba(255, 255, 255, 0.22), rgba(255, 255, 255, 0.08)), - rgba(16, 25, 38, 0.58); - box-shadow: 0 24px 70px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.22); - backdrop-filter: blur(32px) saturate(1.6); - -webkit-backdrop-filter: blur(32px) saturate(1.6); + radial-gradient(circle at 18% 0%, rgba(255, 255, 255, 0.34), transparent 38%), + linear-gradient(180deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.07)), + rgba(13, 22, 35, 0.5); + box-shadow: 0 26px 80px rgba(0, 0, 0, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.28), inset 0 -1px 0 rgba(255, 255, 255, 0.08); + backdrop-filter: blur(38px) saturate(1.8) contrast(1.06); + -webkit-backdrop-filter: blur(38px) saturate(1.8) contrast(1.06); } .ios-tabbar a { display: grid; place-items: center; align-content: center; - gap: 0.24rem; + gap: 0.22rem; min-height: 3.55rem; - border-radius: 1.35rem; + border-radius: 1.45rem; color: rgba(239, 247, 255, 0.68); font-size: 0.72rem; font-weight: 650; @@ -4756,24 +4762,34 @@ input[type="range"] { } .ios-tabbar a.active { - background: linear-gradient(180deg, rgba(255, 255, 255, 0.22), rgba(255, 255, 255, 0.1)); + background: + radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 0.3), transparent 52%), + linear-gradient(180deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.08)); color: #fff; transform: translateY(-1px); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.24), 0 8px 24px rgba(0, 0, 0, 0.16); } .ios-tabbar__icon { - width: 1.35rem; - height: 1.35rem; - border-radius: 0.45rem; - border: 2px solid currentColor; - opacity: 0.9; + display: grid; + place-items: center; + width: 1.48rem; + height: 1.48rem; + border-radius: 0.72rem; + background: rgba(255, 255, 255, 0.1); + opacity: 0.96; } - .ios-tabbar a:nth-child(1) .ios-tabbar__icon { border-radius: 50%; } - .ios-tabbar a:nth-child(2) .ios-tabbar__icon { border-radius: 0.35rem; box-shadow: inset 0 -0.35rem 0 currentColor; } - .ios-tabbar a:nth-child(3) .ios-tabbar__icon { border-radius: 0.3rem; box-shadow: inset 0 0 0 0.22rem rgba(255, 255, 255, 0.18); } - .ios-tabbar a:nth-child(4) .ios-tabbar__icon { border-radius: 50%; box-shadow: inset 0 0 0 0.28rem currentColor; } + .ios-tabbar__icon img { + width: 1.04rem; + height: 1.04rem; + filter: brightness(0) invert(1); + opacity: 0.92; + } + + .ios-tabbar a.active .ios-tabbar__icon { + background: rgba(255, 255, 255, 0.18); + } body.is-authenticated .content, body.page-dashboard.is-authenticated .content, @@ -4813,6 +4829,8 @@ input[type="range"] { } .timeline-card__body { + display: flex; + flex-direction: column; min-width: 0; } @@ -4848,28 +4866,32 @@ input[type="range"] { position: static; display: flex; flex-wrap: wrap; - gap: 0.5rem; - margin-top: 1rem; + order: -1; + gap: 0.45rem; + margin: 0 0 0.85rem; } .timeline-card .signal-pill { - width: auto; - min-width: 0; - height: auto; + width: 2.55rem; + min-width: 2.55rem; + height: 2.55rem; min-height: 2.55rem; - padding: 0.42rem 0.72rem; + padding: 0; justify-content: center; + border-radius: 999px; + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.26); } .timeline-card .signal-pill strong, .timeline-card .signal-pill span { - display: inline; + display: none; } .timeline-card .signal-pill__icon { display: block; - width: 1rem; - height: 1rem; + width: 1.12rem; + height: 1.12rem; + filter: brightness(0) invert(1) drop-shadow(0 1px 3px rgba(0, 0, 0, 0.55)); } .timeline-card__time-chip { @@ -4929,9 +4951,10 @@ input[type="range"] { .ios-tabbar { border-color: rgba(120, 146, 172, 0.22); background: - linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(255, 255, 255, 0.56)), - rgba(248, 251, 255, 0.7); - box-shadow: 0 24px 64px rgba(78, 105, 130, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.8); + radial-gradient(circle at 18% 0%, rgba(255, 255, 255, 0.95), transparent 42%), + linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(255, 255, 255, 0.48)), + rgba(248, 251, 255, 0.68); + box-shadow: 0 24px 64px rgba(78, 105, 130, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.86); } .ios-tabbar a { @@ -4939,10 +4962,20 @@ input[type="range"] { } .ios-tabbar a.active { - background: rgba(20, 148, 222, 0.12); + background: + radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 0.92), transparent 55%), + rgba(20, 148, 222, 0.12); color: #12304b; } + .ios-tabbar__icon { + background: rgba(18, 48, 75, 0.06); + } + + .ios-tabbar__icon img { + filter: none; + } + .sleep-phase-legend__item { color: rgba(18, 48, 75, 0.9); } diff --git a/templates/layout.php b/templates/layout.php index 6bf02c4..3b0454e 100644 --- a/templates/layout.php +++ b/templates/layout.php @@ -128,19 +128,19 @@ $jsVersion = is_file(base_path('assets/js/app.js')) ? (string) filemtime(base_pa