|
|
|
|
@@ -42,7 +42,19 @@ body {
|
|
|
|
|
#app {
|
|
|
|
|
max-width: 30rem;
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
padding: 1.5rem 1rem calc(2rem + env(safe-area-inset-bottom));
|
|
|
|
|
/* Sicherheitsabstände von iOS mit einrechnen.
|
|
|
|
|
Zusammen mit viewport-fit=cover und
|
|
|
|
|
apple-mobile-web-app-status-bar-style=black-translucent zeichnet
|
|
|
|
|
die installierte App UNTER Uhrzeit, WLAN- und Batteriesymbol.
|
|
|
|
|
Ohne den oberen Abstand liegt die Kopfleiste darunter und ist
|
|
|
|
|
nicht mehr antippbar.
|
|
|
|
|
|
|
|
|
|
Die Seitenabstände sind für das Querformat: Dort liegt die
|
|
|
|
|
Aussparung der Frontkamera links oder rechts. */
|
|
|
|
|
padding-top: calc(1.5rem + env(safe-area-inset-top));
|
|
|
|
|
padding-right: calc(1rem + env(safe-area-inset-right));
|
|
|
|
|
padding-bottom: calc(2rem + env(safe-area-inset-bottom));
|
|
|
|
|
padding-left: calc(1rem + env(safe-area-inset-left));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.loading { color: var(--muted); text-align: center; padding: 3rem 0; }
|
|
|
|
|
@@ -139,6 +151,31 @@ a { color: var(--accent); }
|
|
|
|
|
gap: .75rem;
|
|
|
|
|
margin-bottom: 1rem;
|
|
|
|
|
min-height: 2.6rem;
|
|
|
|
|
|
|
|
|
|
/* Beim Scrollen oben stehen bleiben.
|
|
|
|
|
Bei installierten iOS-Apps ist die Statusleiste durchsichtig -
|
|
|
|
|
ohne diese Regel liefe der Listeninhalt sichtbar hinter Uhrzeit
|
|
|
|
|
und Batteriesymbol durch. Der negative Versatz und das Auffüllen
|
|
|
|
|
darüber sorgen dafür, dass die Fläche bis zum oberen Bildschirmrand
|
|
|
|
|
eingefärbt bleibt. */
|
|
|
|
|
position: sticky;
|
|
|
|
|
top: 0;
|
|
|
|
|
z-index: 20;
|
|
|
|
|
margin-top: calc(-1 * env(safe-area-inset-top));
|
|
|
|
|
padding-top: env(safe-area-inset-top);
|
|
|
|
|
background: var(--bg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Ein weicher Übergang statt einer harten Kante beim Scrollen. */
|
|
|
|
|
.app-bar::after {
|
|
|
|
|
content: "";
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
bottom: -.6rem;
|
|
|
|
|
height: .6rem;
|
|
|
|
|
background: linear-gradient(to bottom, var(--bg), transparent);
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Drei Bereiche mit festem Verhalten: links zurück, Mitte der Titel
|
|
|
|
|
@@ -239,6 +276,10 @@ ul.menu-panel {
|
|
|
|
|
z-index: 30;
|
|
|
|
|
top: calc(100% + .3rem);
|
|
|
|
|
right: 0;
|
|
|
|
|
/* Bei sehr langen Menüs nicht über den unteren Bildschirmrand
|
|
|
|
|
hinauslaufen. */
|
|
|
|
|
max-height: calc(100vh - 8rem - env(safe-area-inset-top));
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
min-width: 15rem;
|
|
|
|
|
max-width: min(20rem, calc(100vw - 2rem));
|
|
|
|
|
list-style: none;
|
|
|
|
|
@@ -898,7 +939,8 @@ body.scanning { overflow: hidden; }
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
gap: 1rem;
|
|
|
|
|
padding: 1rem calc(1rem + env(safe-area-inset-right))
|
|
|
|
|
padding: calc(1rem + env(safe-area-inset-top))
|
|
|
|
|
calc(1rem + env(safe-area-inset-right))
|
|
|
|
|
calc(1rem + env(safe-area-inset-bottom))
|
|
|
|
|
calc(1rem + env(safe-area-inset-left));
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
@@ -1477,7 +1519,9 @@ button.archive-head .chev { color: var(--muted); }
|
|
|
|
|
.app-footer {
|
|
|
|
|
max-width: 30rem;
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
padding: 1.5rem 1rem calc(1.5rem + env(safe-area-inset-bottom));
|
|
|
|
|
padding: 1.5rem calc(1rem + env(safe-area-inset-right))
|
|
|
|
|
calc(1.5rem + env(safe-area-inset-bottom))
|
|
|
|
|
calc(1rem + env(safe-area-inset-left));
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-size: .82rem;
|
|
|
|
|
color: var(--muted);
|
|
|
|
|
@@ -1586,8 +1630,8 @@ select.category-select:not([data-empty]) { border-color: var(--accent); }
|
|
|
|
|
.update-banner {
|
|
|
|
|
position: fixed;
|
|
|
|
|
z-index: 80;
|
|
|
|
|
left: 1rem;
|
|
|
|
|
right: 1rem;
|
|
|
|
|
left: calc(1rem + env(safe-area-inset-left));
|
|
|
|
|
right: calc(1rem + env(safe-area-inset-right));
|
|
|
|
|
bottom: calc(1rem + env(safe-area-inset-bottom));
|
|
|
|
|
max-width: 28rem;
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|