From fef6c2407d207841df19862fbb95e79f68cdc1d9 Mon Sep 17 00:00:00 2001 From: Florian Heinz Date: Thu, 21 May 2026 19:00:55 +0200 Subject: [PATCH] Refine iOS mobile controls and sleep progress --- assets/css/app.css | 117 ++++++++++++++++++++-------------- templates/pages/dashboard.php | 4 +- 2 files changed, 69 insertions(+), 52 deletions(-) diff --git a/assets/css/app.css b/assets/css/app.css index 7415c9f..9f1023c 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -1001,12 +1001,12 @@ body.page-dashboard .content { .sleep-phase-bar { position: relative; - height: 2.35rem; + height: 0.74rem; margin-top: 1.55rem; overflow: visible; border-radius: 999px; - border: 1px solid rgba(255, 255, 255, 0.14); - background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.16); + background: rgba(255, 255, 255, 0.16); } .sleep-phase-bar__fill { @@ -1016,15 +1016,15 @@ body.page-dashboard .content { max-width: 100%; overflow: hidden; border-radius: inherit; - background: linear-gradient(135deg, rgba(90, 188, 242, 0.92), rgba(44, 126, 190, 0.92)); - box-shadow: 0 10px 22px rgba(44, 126, 190, 0.22); + background: linear-gradient(90deg, #64d2ff, #0a84ff); + box-shadow: 0 0 18px rgba(10, 132, 255, 0.38); } .sleep-phase-bar__target { position: absolute; left: min(var(--sleep-optimal-left, 100%), calc(100% - 2px)); - top: -1.28rem; - bottom: 0; + top: -0.48rem; + bottom: -0.48rem; width: 0; border-left: 2px solid rgba(255, 255, 255, 0.92); filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45)); @@ -1034,7 +1034,7 @@ body.page-dashboard .content { .sleep-phase-bar__target span { position: absolute; - top: 0; + top: -1.1rem; left: 0.28rem; padding: 0.08rem 0.34rem; border-radius: 999px; @@ -1044,6 +1044,16 @@ body.page-dashboard .content { white-space: nowrap; } +.sleep-phase-summary { + display: flex; + justify-content: space-between; + gap: 0.75rem; + margin-top: 0.55rem; + color: rgba(239, 247, 255, 0.64); + font-size: 0.78rem; + font-weight: 650; +} + .sleep-phase-bar__segment { box-sizing: border-box; position: relative; @@ -4730,22 +4740,23 @@ input[type="range"] { .ios-tabbar { position: fixed; - left: 0.65rem; - right: 0.65rem; - bottom: max(0.55rem, env(safe-area-inset-bottom)); + left: 0; + right: 0; + bottom: 0; z-index: 120; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 0.18rem; - min-height: 5rem; - padding: 0.42rem; - border: 1px solid rgba(255, 255, 255, 0.34); - border-radius: 2.15rem; + gap: 0; + min-height: calc(5.05rem + env(safe-area-inset-bottom)); + padding: 0.42rem 0.75rem calc(0.42rem + env(safe-area-inset-bottom)); + border: 0; + border-top: 1px solid rgba(255, 255, 255, 0.24); + border-radius: 1.8rem 1.8rem 0 0; background: 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); + box-shadow: 0 -18px 70px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.26); backdrop-filter: blur(38px) saturate(1.8) contrast(1.06); -webkit-backdrop-filter: blur(38px) saturate(1.8) contrast(1.06); } @@ -4754,44 +4765,42 @@ input[type="range"] { display: grid; place-items: center; align-content: center; - gap: 0.22rem; - min-height: 3.55rem; - border-radius: 1.45rem; + gap: 0.18rem; + min-height: 3.7rem; + border-radius: 1.25rem; color: rgba(239, 247, 255, 0.68); font-size: 0.72rem; - font-weight: 650; + font-weight: 590; text-decoration: none; transition: background 160ms ease, color 160ms ease, transform 160ms ease; } .ios-tabbar a.active { - 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; + background: transparent; + color: #64d2ff; transform: translateY(-1px); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.24), 0 8px 24px rgba(0, 0, 0, 0.16); + box-shadow: none; } .ios-tabbar__icon { display: grid; place-items: center; - width: 1.48rem; - height: 1.48rem; - border-radius: 0.72rem; - background: rgba(255, 255, 255, 0.1); + width: 1.6rem; + height: 1.6rem; + border-radius: 0; + background: transparent; opacity: 0.96; } .ios-tabbar__icon img { - width: 1.04rem; - height: 1.04rem; + width: 1.28rem; + height: 1.28rem; filter: brightness(0) invert(1); opacity: 0.92; } .ios-tabbar a.active .ios-tabbar__icon { - background: rgba(255, 255, 255, 0.18); + background: transparent; } body.is-authenticated .content, @@ -4912,32 +4921,44 @@ input[type="range"] { .timeline-card__time-chip { position: absolute; - top: 0.85rem; - right: 4.8rem; + top: 0.9rem; + right: 4.45rem; left: auto; display: inline-flex; - min-height: 2.35rem; - padding: 0 0.78rem; + min-height: 2.15rem; + padding: 0 0.72rem; border-radius: 999px; - background: rgba(8, 18, 30, 0.42); + background: rgba(20, 20, 26, 0.38); border: 1px solid rgba(255, 255, 255, 0.16); color: rgba(255, 255, 255, 0.86); } .timeline-card__delete, .timeline-card--with-image .timeline-card__delete { - top: 0.75rem; - right: 0.75rem; + top: 0.68rem; + right: 0.68rem; + } + + .timeline-card__delete .ghost-button { + width: 2.85rem; + height: 2.85rem; + min-width: 2.85rem; + min-height: 2.85rem; + border-radius: 999px; + background: rgba(242, 242, 247, 0.92); + color: rgba(28, 28, 30, 0.86); + font-size: 1.05rem; + font-weight: 560; } .timeline-card--with-image .timeline-card__time-chip { - top: 1.25rem; - right: 4.9rem; + top: 1.18rem; + right: 4.7rem; } .timeline-card--with-image .timeline-card__delete { - top: 1.05rem; - right: 1.05rem; + top: 0.95rem; + right: 0.95rem; } .sleep-phase-bar { @@ -4970,7 +4991,7 @@ input[type="range"] { 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); + box-shadow: 0 -18px 54px rgba(78, 105, 130, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.86); } .ios-tabbar a { @@ -4978,10 +4999,8 @@ input[type="range"] { } .ios-tabbar a.active { - background: - radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 0.92), transparent 55%), - rgba(20, 148, 222, 0.12); - color: #12304b; + background: transparent; + color: #007aff; } .ios-tabbar__icon { diff --git a/templates/pages/dashboard.php b/templates/pages/dashboard.php index 0203365..7661aae 100644 --- a/templates/pages/dashboard.php +++ b/templates/pages/dashboard.php @@ -224,10 +224,8 @@ $formatBalanceValue = static function (?array $entry) use ($settings): string {
- 0): ?> - noch bis Skalenende -
+
Ziel
0): ?>
['Tief', 'deep'], 'rem' => ['REM', 'rem'], 'core' => ['Kern', 'core']] as $phase => [$label, $class]): ?>