UI: шапка вплотную к верхнему краю — снят viewport-fit=cover

В DuckDuckGo шапка держала отступ от адресной строки — тот же safe-area,
что раньше отодвигал подвал снизу. Insets браузер отдаёт именно из-за
viewport-fit=cover: он передаёт управление безопасной зоной странице.
После отказа от отступов сверху и снизу компенсировать нечего, поэтому
cover снят — вьюпорт снова размещает браузер, а env() везде даёт ноль.

Следом убран --safe-top и три его использования (.top-bar, .side-menu,
.toast-top-wrap): без cover переменная всегда нулевая. Токенов safe-area
в проекте больше нет.

#4

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ps52xzuUXnWrJ5SRnEeaLk
This commit is contained in:
2026-09-07 15:40:51 +03:00
co-authored by Claude Opus 5
parent 81ad2a0403
commit 2a4c5d9d25
4 changed files with 3 additions and 9 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta <meta
name="viewport" name="viewport"
content="width=device-width, initial-scale=1.0, viewport-fit=cover, maximum-scale=1.0, user-scalable=no" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/> />
<meta name="theme-color" content="#0f1115" /> <meta name="theme-color" content="#0f1115" />
<title>Forbidden Stars — учёт партий</title> <title>Forbidden Stars — учёт партий</title>
+1 -1
View File
@@ -448,7 +448,7 @@ input:focus, select:focus, textarea:focus { border-color: var(--accent); }
/* Всплывашки сверху экрана в момент прихода */ /* Всплывашки сверху экрана в момент прихода */
.toast-top-wrap { .toast-top-wrap {
position: fixed; position: fixed;
top: calc(var(--safe-top) + 10px); top: 10px;
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
width: min(var(--app-max-w), 94vw); width: min(var(--app-max-w), 94vw);
+1 -2
View File
@@ -15,7 +15,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: calc(var(--safe-top) + 12px) 16px 12px; padding: 12px 16px;
background: var(--surface); background: var(--surface);
border-bottom: 1px solid var(--border); border-bottom: 1px solid var(--border);
} }
@@ -231,7 +231,6 @@
z-index: 61; z-index: 61;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding-top: var(--safe-top);
} }
.side-menu.open { transform: translateX(0); } .side-menu.open { transform: translateX(0); }
-5
View File
@@ -20,11 +20,6 @@
--fab-height: 62.5px; --fab-height: 62.5px;
--radius: 14px; --radius: 14px;
--radius-sm: 10px; --radius-sm: 10px;
/* Safe-area с потолком: часть мобильных браузеров (DuckDuckGo, Firefox Focus) при
viewport-fit=cover отдаёт inset поверх уже смещённого вьюпорта — без ограничения
шапка раздувается вдвое, а её содержимое съезжает вниз. Снизу отступ не нужен:
подвал и купол FAB прижаты вплотную к нижнему краю экрана. */
--safe-top: min(env(safe-area-inset-top, 0px), 24px);
/* Брейкпоинты (для справки) */ /* Брейкпоинты (для справки) */
--bp-lg: 768px; --bp-lg: 768px;