framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
1,709 lines (1,708 loc) • 167 kB
CSS
/**
* Framework7 8.3.4
* Full featured mobile HTML framework for building iOS & Android apps
* https://framework7.io/
*
* Copyright 2014-2024 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: September 18, 2024
*/
/*====================
Core
==================== */
:root {
--f7-safe-area-left: 0px;
--f7-safe-area-right: 0px;
--f7-safe-area-top: 0px;
--f7-safe-area-bottom: 0px;
--f7-safe-area-outer-left: 0px;
--f7-safe-area-outer-right: 0px;
--f7-device-pixel-ratio: 1;
}
@supports (left: env(safe-area-inset-left)) {
:root {
--f7-safe-area-top: env(safe-area-inset-top);
--f7-safe-area-bottom: env(safe-area-inset-bottom);
}
:root .ios-left-edge,
:root .ios-edges,
:root .safe-area-left,
:root .safe-areas,
:root .popup,
:root .sheet-modal,
:root .panel-left {
--f7-safe-area-left: env(safe-area-inset-left);
--f7-safe-area-outer-left: env(safe-area-inset-left);
}
:root .ios-right-edge,
:root .ios-edges,
:root .safe-area-right,
:root .safe-areas,
:root .popup,
:root .sheet-modal,
:root .panel-right {
--f7-safe-area-right: env(safe-area-inset-right);
--f7-safe-area-outer-right: env(safe-area-inset-right);
}
:root .no-safe-areas,
:root .no-safe-area-left,
:root .no-ios-edges,
:root .no-ios-left-edge {
--f7-safe-area-left: 0px;
--f7-safe-area-outer-left: 0px;
}
:root .no-safe-areas,
:root .no-safe-area-right,
:root .no-ios-edges,
:root .no-ios-right-edge {
--f7-safe-area-right: 0px;
--f7-safe-area-outer-right: 0px;
}
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {
:root {
--f7-device-pixel-ratio: 2;
}
}
@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {
:root {
--f7-device-pixel-ratio: 3;
}
}
/*====================
Fonts & Bars
==================== */
:root {
--f7-font-size: 14px;
--f7-bars-translucent-opacity: 0.8;
--f7-bars-translucent-blur: 20px;
}
.ios {
--f7-font-family: -apple-system, SF Pro Text, SF UI Text, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif;
--f7-line-height: 1.4;
/*
--f7-bars-link-color: var(--f7-theme-color);
*/
--f7-bars-text-color: #000;
--f7-text-color: #000;
--f7-bars-bg-color: #f7f7f8;
--f7-bars-bg-color-rgb: 247, 247, 248;
--f7-bars-border-color: rgba(0, 0, 0, 0.25);
}
.ios .dark,
.ios.dark {
--f7-bars-text-color: #fff;
--f7-text-color: #fff;
--f7-bars-bg-color: #121212;
--f7-bars-bg-color-rgb: 22, 22, 22;
--f7-bars-border-color: rgba(255, 255, 255, 0.16);
}
.md {
--f7-font-family: Roboto, system-ui, Noto, Helvetica, Arial, sans-serif;
--f7-line-height: 1.5;
--f7-bars-border-color: transparent;
--f7-text-color: #212121;
}
.md .dark,
.md.dark {
--f7-text-color: rgba(255, 255, 255, 0.87);
}
.md,
.md .dark,
.md [class*='color-'] {
--f7-bars-link-color: var(--f7-md-on-surface);
--f7-bars-bg-color: var(--f7-md-surface-2);
--f7-bars-bg-color-rgb: var(--f7-md-surface-2-rgb);
}
/*====================
Color Themes
==================== */
.text-color-primary {
--f7-theme-color-text-color: var(--f7-theme-color);
}
.bg-color-primary {
--f7-theme-color-bg-color: var(--f7-theme-color);
}
.border-color-primary {
--f7-theme-color-border-color: var(--f7-theme-color);
}
.ripple-color-primary {
--f7-theme-color-ripple-color: rgba(var(--f7-theme-color-rgb), 0.3);
}
@font-face {
font-family: 'framework7-core-icons';
src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');
font-weight: 400;
font-style: normal;
}
html {
overscroll-behavior: none;
}
html {
direction: rtl;
}
html,
body,
.framework7-root {
position: relative;
height: 100%;
width: 100%;
overflow-x: hidden;
}
body {
margin: 0;
padding: 0;
width: 100%;
background: #fff;
overflow: hidden;
overflow-y: scroll;
-webkit-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
font-family: var(--f7-font-family);
font-size: var(--f7-font-size);
line-height: var(--f7-line-height);
color: var(--f7-text-color);
scrollbar-width: none;
scrollbar-color: transparent;
}
body::-webkit-scrollbar {
-webkit-appearance: none;
appearance: none;
width: 0px;
display: none;
opacity: 0;
background: transparent;
}
body::-webkit-scrollbar-track {
box-shadow: none;
background: transparent;
}
body::-webkit-scrollbar-thumb {
background-color: transparent;
outline: none;
border-radius: 9999px;
position: relative;
}
.dark body,
body.dark {
background: #000;
}
.dark {
color: var(--f7-text-color);
}
.framework7-root {
overflow: hidden;
box-sizing: border-box;
}
.framework7-initializing *,
.framework7-initializing *:before,
.framework7-initializing *:after {
transition-duration: 0ms !important;
}
.device-ios,
.device-android {
cursor: pointer;
}
.device-ios {
touch-action: manipulation;
}
@media (width: 1024px) and (height: 691px) and (orientation: landscape) {
html,
body,
.framework7-root {
height: 671px;
}
}
@media (width: 1024px) and (height: 692px) and (orientation: landscape) {
html,
body,
.framework7-root {
height: 672px;
}
}
* {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-touch-callout: none;
}
a,
input,
textarea,
select {
outline: 0;
}
a {
cursor: pointer;
text-decoration: none;
color: var(--f7-theme-color);
}
.link,
.item-link {
cursor: pointer;
}
p {
margin: 1em 0;
}
.disabled {
opacity: 0.55 !important;
pointer-events: none !important;
}
html.device-full-viewport,
html.device-full-viewport body {
height: 100vh;
}
.ios .md-only,
.ios .if-md,
.ios .if-not-ios,
.ios .not-ios {
display: none !important;
}
@media (width: 1024px) and (height: 691px) and (orientation: landscape) {
.ios,
.ios body,
.ios .framework7-root {
height: 671px;
}
}
@media (width: 1024px) and (height: 692px) and (orientation: landscape) {
.ios,
.ios body,
.ios .framework7-root {
height: 672px;
}
}
.md .ios-only,
.md .if-ios,
.md .if-not-md,
.md .not-md {
display: none !important;
}
/* === Statusbar === */
/* === Views === */
.views,
.view {
position: relative;
height: 100%;
z-index: 5000;
overflow: hidden;
box-sizing: border-box;
}
.framework7-root > .view,
.framework7-root > .views {
height: 100%;
}
.view-resize-handler {
width: 6px;
height: 100%;
position: absolute;
left: var(--f7-page-master-width);
margin-left: -3px;
top: 0;
cursor: col-resize;
z-index: 1000;
display: none;
}
.view-master-detail .view-resize-handler {
display: block;
}
/* === Pages === */
:root {
--f7-page-master-width: 320px;
--f7-page-master-border-color: rgba(0, 0, 0, 0.1);
--f7-page-master-border-width: 1px;
--f7-page-swipeback-transition-duration: 300ms;
--f7-page-parallax-transition-duration: 500ms;
--f7-page-cover-transition-duration: 450ms;
--f7-page-dive-transition-duration: 500ms;
--f7-page-fade-transition-duration: 500ms;
--f7-page-flip-transition-duration: 700ms;
--f7-page-push-transition-duration: 500ms;
/*
--f7-page-content-extra-padding-top: 0px;
--f7-page-content-extra-padding-bottom: 0px;
*/
--f7-page-title-line-height: 1.2;
--f7-page-title-text-color: inherit;
--f7-page-title-padding-left: 16px;
--f7-page-title-padding-right: 16px;
}
.ios {
--f7-page-transition-duration: 400ms;
--f7-page-title-font-size: 34px;
--f7-page-title-font-weight: 700;
--f7-page-title-letter-spacing: -0.03em;
--f7-page-title-padding-vertical: 6px;
--f7-page-bg-color: #efeff4;
}
.ios .dark,
.ios.dark {
--f7-page-bg-color: #000;
}
.md {
--f7-page-transition-duration: 400ms;
--f7-page-title-font-size: 34px;
--f7-page-title-font-weight: 500;
--f7-page-title-letter-spacing: 0;
--f7-page-title-padding-vertical: 8px;
}
.md,
.md .dark,
.md [class*='color-'] {
--f7-page-bg-color: var(--f7-md-surface);
}
.dark {
--f7-page-master-border-color: rgba(255, 255, 255, 0.2);
}
.pages {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
}
.page {
box-sizing: border-box;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
transform: none;
background-color: var(--f7-page-bg-color);
z-index: 1;
}
.page-with-navbar-large-collapsed {
--f7-navbar-large-collapse-progress: 1;
}
.page-previous {
pointer-events: none;
}
.page-content {
overflow: auto;
-webkit-overflow-scrolling: touch;
box-sizing: border-box;
height: 100%;
position: relative;
z-index: 1;
padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));
padding-bottom: calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));
}
.page-transitioning,
.page-transitioning .page-shadow-effect,
.page-transitioning .page-opacity-effect {
transition-duration: var(--f7-page-transition-duration);
}
.page-transitioning-swipeback,
.page-transitioning-swipeback .page-shadow-effect,
.page-transitioning-swipeback .page-opacity-effect {
transition-duration: var(--f7-page-swipeback-transition-duration);
}
.router-transition-forward .page-next,
.router-transition-backward .page-next,
.router-transition-forward .page-current,
.router-transition-backward .page-current {
pointer-events: none;
}
.page-shadow-effect {
position: absolute;
top: 0;
width: 16px;
bottom: 0;
z-index: -1;
content: '';
opacity: 0;
left: 100%;
background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);
}
.page-opacity-effect {
position: absolute;
left: 0;
top: 0;
background: rgba(0, 0, 0, 0.1);
width: 100%;
bottom: 0;
content: '';
opacity: 0;
z-index: 10000;
}
.ios .page-previous {
transform: translate3d(20%, 0, 0);
}
.ios .page-next {
transform: translate3d(-100%, 0, 0);
}
.ios .page-previous .page-opacity-effect {
opacity: 1;
}
.ios .page-previous:after {
opacity: 1;
}
.ios .page-current .page-shadow-effect {
opacity: 1;
}
.ios .router-transition-forward .page-next {
animation: ios-page-next-to-current var(--f7-page-transition-duration) forwards;
}
.ios .router-transition-forward .page-next:before {
position: absolute;
top: 0;
width: 16px;
bottom: 0;
z-index: -1;
content: '';
opacity: 0;
left: 100%;
background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);
animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;
}
.ios .router-transition-forward .page-current {
animation: ios-page-current-to-previous var(--f7-page-transition-duration) forwards;
}
.ios .router-transition-forward .page-current:after {
position: absolute;
left: 0;
top: 0;
background: rgba(0, 0, 0, 0.1);
width: 100%;
bottom: 0;
content: '';
opacity: 0;
z-index: 10000;
animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;
}
.ios .router-transition-backward .page-previous {
animation: ios-page-previous-to-current var(--f7-page-transition-duration) forwards;
}
.ios .router-transition-backward .page-previous:after {
position: absolute;
left: 0;
top: 0;
background: rgba(0, 0, 0, 0.1);
width: 100%;
bottom: 0;
content: '';
opacity: 0;
z-index: 10000;
animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;
}
.ios .router-transition-backward .page-current {
animation: ios-page-current-to-next var(--f7-page-transition-duration) forwards;
}
.ios .router-transition-backward .page-current:before {
position: absolute;
top: 0;
width: 16px;
bottom: 0;
z-index: -1;
content: '';
opacity: 0;
left: 100%;
background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);
animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;
}
@keyframes ios-page-next-to-current {
from {
transform: translate3d(-100%, 0, 0);
}
to {
transform: translate3d(0%, 0, 0);
}
}
@keyframes ios-page-previous-to-current {
from {
transform: translate3d(20%, 0, 0);
}
to {
transform: translate3d(0%, 0, 0);
}
}
@keyframes ios-page-current-to-previous {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(20%, 0, 0);
}
}
@keyframes ios-page-current-to-next {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(-100%, 0, 0);
}
}
@keyframes ios-page-element-fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes ios-page-element-fade-out {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.md .page-previous {
transform: translate3d(0, -20px, 0);
}
.md .page-next {
pointer-events: none;
transform: translate3d(0, 128px, 0);
opacity: 0;
}
.md .page-next.page-next-on-right {
transform: translate3d(-100%, 0, 0);
opacity: 1;
}
.md .router-transition-forward .page-next {
opacity: 1;
animation: md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);
}
.md .router-transition-forward .page-current {
animation: md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);
}
.md .router-transition-backward .page-current {
animation: md-page-current-to-next calc(var(--f7-page-transition-duration) / 4) forwards cubic-bezier(0.8, 0, 1, 0.3), md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration) / 4) forwards;
}
.md .router-transition-backward .page-previous {
animation: md-page-previous-to-current var(--f7-page-transition-duration) forwards;
}
@keyframes md-page-next-to-current {
from {
transform: translate3d(0, 128px, 0);
}
to {
transform: translate3d(0, 0px, 0);
}
}
@keyframes md-page-current-to-next {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, 128px, 0);
}
}
@keyframes md-page-current-to-next-opacity {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes md-page-current-to-previous {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, -20px, 0);
}
}
@keyframes md-page-previous-to-current {
from {
transform: translate3d(0, -20px, 0);
}
to {
transform: translate3d(0, 0px, 0);
}
}
.view:not(.view-master-detail) .page-master-stacked {
display: none;
}
.view:not(.view-master-detail) .navbar-master-stacked {
display: none;
}
.view-master-detail .page-master,
.view-master-detail .navbar-master {
width: var(--f7-page-master-width);
left: auto;
right: 0;
--f7-safe-area-left: 0px;
--f7-safe-area-outer-left: 0px;
border-left: var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);
}
.view-master-detail .page-master-detail,
.view-master-detail .navbar-master-detail {
width: calc(100% - var(--f7-page-master-width));
--f7-safe-area-right: 0px;
--f7-safe-area-outer-right: 0px;
right: var(--f7-page-master-width);
}
.view-master-detail .page-master-detail > .navbar-master-detail {
left: 0;
right: 0;
width: 100%;
}
.view-master-detail .page-master {
z-index: 2;
transform: none;
pointer-events: auto;
}
.view-master-detail .page-master:before,
.view-master-detail .page-master:after {
display: none;
}
.view-master-detail.router-transition .page-master {
animation: none;
}
.md .router-transition-custom .page-previous,
.ios .router-transition-custom .page-previous,
.md .router-transition-custom .page-next,
.ios .router-transition-custom .page-next {
opacity: 1;
transform: none;
}
.md .router-transition-custom.view-master-detail .page-master,
.ios .router-transition-custom.view-master-detail .page-master {
animation: none;
}
.page-title {
position: relative;
z-index: 10;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--f7-page-title-text-color);
letter-spacing: var(--f7-page-title-letter-spacing);
font-size: var(--f7-page-title-font-size);
font-weight: var(--f7-page-title-font-weight);
line-height: var(--f7-page-title-line-height);
padding-left: calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));
padding-right: calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right));
padding-top: var(--f7-page-title-padding-vertical);
padding-bottom: var(--f7-page-title-padding-vertical);
box-sizing: border-box;
overflow: hidden;
width: 100%;
}
.router-transition-f7-circle-forward:after,
.router-transition-f7-circle-backward:after {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 100vmax;
height: 100vmax;
margin-left: -50vmax;
margin-top: -50vmax;
background: var(--f7-page-bg-color);
z-index: 100;
}
.router-transition-f7-circle-forward .page,
.router-transition-f7-circle-backward .page {
pointer-events: none;
}
.router-transition-f7-circle-forward:after {
transform: scale(0);
border-radius: 50%;
animation: f7-circle-circle-in 400ms forwards;
}
.ios .router-transition-f7-circle-forward .page-next,
.md .router-transition-f7-circle-forward .page-next {
opacity: 0;
transform: scale(0.9);
animation: f7-circle-next-to-current 300ms forwards;
animation-delay: 300ms;
z-index: 150;
}
.router-transition-f7-circle-backward:after {
animation: f7-circle-circle-out 300ms forwards;
animation-delay: 350ms;
}
.ios .router-transition-f7-circle-backward .page-current,
.md .router-transition-f7-circle-backward .page-current {
animation: f7-circle-current-to-next 700ms forwards;
z-index: 150;
}
@keyframes f7-circle-circle-in {
from {
transform: scale(0);
border-radius: 50%;
}
50% {
border-radius: 50%;
}
to {
transform: scale(1);
border-radius: 0%;
}
}
@keyframes f7-circle-circle-out {
from {
transform: scale(1);
border-radius: 0%;
}
50% {
border-radius: 50%;
}
to {
transform: scale(0);
border-radius: 50%;
}
}
@keyframes f7-circle-next-to-current {
from {
transform: scale(0.9);
opacity: 0;
}
40% {
transform: scale(1.035);
opacity: 1;
}
to {
transform: scale(1);
opacity: 1;
}
}
@keyframes f7-circle-current-to-next {
from {
transform: scale(1);
opacity: 1;
}
34% {
transform: scale(1.035);
opacity: 1;
}
57% {
transform: scale(0.9);
opacity: 0;
}
to {
transform: scale(0.9);
opacity: 0;
}
}
.router-transition-f7-cover-v-forward,
.router-transition-f7-cover-v-backward {
background: #000;
perspective: 1200px;
}
.router-transition-f7-cover-v-forward .page,
.router-transition-f7-cover-v-backward .page {
pointer-events: none;
}
.router-transition-f7-cover-v-forward .page-next {
animation: f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards;
}
.router-transition-f7-cover-v-forward .page-current {
animation: f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards;
}
.router-transition-f7-cover-v-backward .page-current {
animation: f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards;
}
.router-transition-f7-cover-v-backward .page-previous {
animation: f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards;
}
@keyframes f7-cover-v-next-to-current {
from {
transform: translateY(100%);
}
to {
transform: translateY(0%);
}
}
@keyframes f7-cover-v-current-to-next {
from {
transform: translateY(0%);
}
to {
transform: translateY(100%);
}
}
@keyframes f7-cover-v-current-to-prev {
from {
transform: translateZ(0);
opacity: 1;
}
to {
transform: translateZ(-300px);
opacity: 0.5;
}
}
@keyframes f7-cover-v-prev-to-current {
from {
transform: translateZ(-300px);
opacity: 0.5;
}
to {
transform: translateZ(0);
opacity: 1;
}
}
.router-transition-f7-cover-forward,
.router-transition-f7-cover-backward {
background: #000;
perspective: 1200px;
}
.router-transition-f7-cover-forward .page,
.router-transition-f7-cover-backward .page {
pointer-events: none;
}
.router-transition-f7-cover-forward .page-next {
animation: f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards;
}
.router-transition-f7-cover-forward .page-current {
animation: f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards;
}
.router-transition-f7-cover-backward .page-current {
animation: f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards;
}
.router-transition-f7-cover-backward .page-previous {
animation: f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards;
}
@keyframes f7-cover-next-to-current {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0%);
}
}
@keyframes f7-cover-current-to-next {
from {
transform: translateX(0%);
}
to {
transform: translateX(-100%);
}
}
@keyframes f7-cover-current-to-prev {
from {
transform: translateZ(0);
opacity: 1;
}
to {
transform: translateZ(-300px);
opacity: 0.5;
}
}
@keyframes f7-cover-prev-to-current {
from {
transform: translateZ(-300px);
opacity: 0.5;
}
to {
transform: translateZ(0);
opacity: 1;
}
}
.router-transition-f7-dive-forward,
.router-transition-f7-dive-backward {
background: var(--f7-page-bg-color);
perspective: 1200px;
}
.router-transition-f7-dive-forward .page,
.router-transition-f7-dive-backward .page {
pointer-events: none;
}
.router-transition-f7-dive-forward .page-next {
animation: f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards;
}
.router-transition-f7-dive-forward .page-current {
animation: f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards;
}
.router-transition-f7-dive-backward .page-current {
animation: f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards;
}
.router-transition-f7-dive-backward .page-previous {
animation: f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards;
}
@keyframes f7-dive-next-to-current {
from {
opacity: 0;
transform: translateZ(-150px);
}
50% {
opacity: 0;
}
to {
opacity: 1;
transform: translateZ(0px);
}
}
@keyframes f7-dive-current-to-next {
from {
opacity: 1;
transform: translateZ(0px);
}
50% {
opacity: 0;
}
to {
opacity: 0;
transform: translateZ(-150px);
}
}
@keyframes f7-dive-current-to-prev {
from {
transform: translateZ(0px);
opacity: 1;
}
50% {
opacity: 0;
}
to {
opacity: 0;
transform: translateZ(150px);
}
}
@keyframes f7-dive-prev-to-current {
from {
opacity: 0;
transform: translateZ(150px);
}
50% {
opacity: 0;
}
to {
opacity: 1;
transform: translateZ(0px);
}
}
.router-transition-f7-fade-forward,
.router-transition-f7-fade-backward {
background: var(--f7-page-bg-color);
}
.router-transition-f7-fade-forward .page,
.router-transition-f7-fade-backward .page {
pointer-events: none;
}
.ios .router-transition-f7-fade-forward .page-next,
.md .router-transition-f7-fade-forward .page-next {
opacity: 0;
animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;
}
.ios .router-transition-f7-fade-forward .page-current,
.md .router-transition-f7-fade-forward .page-current {
animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;
}
.ios .router-transition-f7-fade-backward .page-current,
.md .router-transition-f7-fade-backward .page-current {
animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;
}
.ios .router-transition-f7-fade-backward .page-previous,
.md .router-transition-f7-fade-backward .page-previous {
animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;
}
@keyframes f7-fade-in {
from {
opacity: 0;
}
50% {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes f7-fade-out {
from {
opacity: 1;
}
50% {
opacity: 0;
}
to {
opacity: 0;
}
}
.router-transition-f7-flip-forward,
.router-transition-f7-flip-backward {
background: #000;
perspective: 1200px;
}
.router-transition-f7-flip-forward .page,
.router-transition-f7-flip-backward .page {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
overflow: hidden;
pointer-events: none;
}
.router-transition-f7-flip-forward .page-next {
transform-style: preserve-3d;
animation: f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;
}
.router-transition-f7-flip-forward .page-current {
transform-style: preserve-3d;
animation: f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;
}
.router-transition-f7-flip-backward .page-current {
transform-style: preserve-3d;
animation: f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;
}
.router-transition-f7-flip-backward .page-previous {
transform-style: preserve-3d;
animation: f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;
}
@keyframes f7-flip-next-to-current {
from {
border-radius: 32px;
transform: translateZ(-100vmax) rotateY(-180deg);
}
to {
border-radius: 0;
transform: translateZ(0px) rotateY(0deg);
}
}
@keyframes f7-flip-current-to-next {
from {
border-radius: 0px;
transform: translateZ(0px) rotateY(0deg);
}
to {
border-radius: 32px;
transform: translateZ(-100vmax) rotateY(-180deg);
}
}
@keyframes f7-flip-current-to-prev {
from {
border-radius: 0px;
transform: translateZ(0px) rotateY(0deg);
}
to {
border-radius: 32px;
transform: translateZ(-100vmax) rotateY(180deg);
}
}
@keyframes f7-flip-prev-to-current {
from {
border-radius: 32px;
transform: translateZ(-100vmax) rotateY(180deg);
}
to {
border-radius: 0px;
transform: translateZ(0px) rotateY(0deg);
}
}
.router-transition-f7-parallax-forward .page {
pointer-events: none;
}
.router-transition-f7-parallax-forward .page-next {
animation: f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards;
}
.router-transition-f7-parallax-forward .page-current {
animation: f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards;
}
.router-transition-f7-parallax-backward .page {
pointer-events: none;
}
.router-transition-f7-parallax-backward .page-current {
animation: f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards;
}
.router-transition-f7-parallax-backward .page-previous {
animation: f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards;
}
@keyframes f7-parallax-next-to-current {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0%);
}
}
@keyframes f7-parallax-current-to-next {
from {
transform: translateX(0%);
}
to {
transform: translateX(-100%);
}
}
@keyframes f7-parallax-current-to-prev {
from {
transform: translateX(0%);
}
to {
transform: translateX(20%);
}
}
@keyframes f7-parallax-prev-to-current {
from {
transform: translateX(20%);
}
to {
transform: translateX(0%);
}
}
.router-transition-f7-push-forward .page {
pointer-events: none;
}
.router-transition-f7-push-forward .page-next {
animation: f7-push-next-to-current var(--f7-page-push-transition-duration) forwards;
}
.router-transition-f7-push-forward .page-current {
animation: f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards;
}
.router-transition-f7-push-backward .page {
pointer-events: none;
}
.router-transition-f7-push-backward .page-current {
animation: f7-push-current-to-next var(--f7-page-push-transition-duration) forwards;
}
.router-transition-f7-push-backward .page-previous {
animation: f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards;
}
@keyframes f7-push-next-to-current {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0%);
}
}
@keyframes f7-push-current-to-next {
from {
transform: translateX(0%);
}
to {
transform: translateX(-100%);
}
}
@keyframes f7-push-current-to-prev {
from {
transform: translateX(0%);
}
to {
transform: translateX(100%);
}
}
@keyframes f7-push-prev-to-current {
from {
transform: translateX(100%);
}
to {
transform: translateX(0%);
}
}
/* === Link === */
:root {
--f7-link-highlight-black: rgba(0, 0, 0, 0.1);
--f7-link-highlight-white: rgba(255, 255, 255, 0.15);
--f7-link-highlight-color: rgba(var(--f7-theme-color-rgb), 0.15);
}
.ios {
--f7-link-pressed-opacity: 0.3;
}
.link,
.tab-link {
display: inline-flex;
align-items: center;
align-content: center;
justify-content: center;
position: relative;
box-sizing: border-box;
z-index: 1;
--f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));
}
.link i + span,
.link i + i,
.link span + i,
.link span + span {
margin-right: 4px;
}
.link[class*='color-'] {
color: var(--f7-theme-color);
}
.ios .link {
transition: opacity 300ms;
}
.ios .link.active-state {
opacity: var(--f7-link-pressed-opacity);
transition-duration: 0ms;
}
/* === Navbar === */
:root {
/*
--f7-navbar-bg-color: var(--f7-bars-bg-color);
--f7-navbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);
--f7-navbar-border-color: var(--f7-bars-border-color);
*/
--f7-navbar-hide-show-transition-duration: 400ms;
--f7-navbar-title-line-height: 1.2;
--f7-navbar-subtitle-text-align: inherit;
--f7-navbar-large-title-line-height: 1.2;
--f7-navbar-large-title-text-color: inherit;
--f7-navbar-large-title-padding-left: 16px;
--f7-navbar-large-title-padding-right: 16px;
}
.ios {
/*
--f7-navbar-link-color: var(--f7-bars-link-color);
--f7-navbar-text-color: var(--f7-bars-text-color);
*/
--f7-navbar-height: 44px;
--f7-navbar-font-size: 17px;
--f7-navbar-title-font-size: inherit;
--f7-navbar-inner-padding-left: 8px;
--f7-navbar-inner-padding-right: 8px;
--f7-navbar-title-font-weight: 600;
--f7-navbar-title-margin-left: 0;
--f7-navbar-title-margin-right: 0;
--f7-navbar-title-text-align: center;
--f7-navbar-subtitle-font-size: 10px;
--f7-navbar-subtitle-line-height: 1;
--f7-navbar-large-title-height: 52px;
--f7-navbar-large-title-font-size: 34px;
--f7-navbar-large-title-font-weight: 700;
--f7-navbar-large-title-letter-spacing: -0.03em;
--f7-navbar-large-title-padding-vertical: 6px;
/*
--f7-navbar-link-height: var(--f7-navbar-height);
--f7-navbar-link-line-height: var(--f7-navbar-height);
*/
--f7-navbar-subtitle-text-color: rgba(0, 0, 0, 0.55);
}
.ios .dark,
.ios.dark {
--f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.55);
}
.md {
--f7-navbar-height: 64px;
--f7-navbar-font-size: 16px;
--f7-navbar-title-font-size: 22px;
--f7-navbar-inner-padding-left: 0px;
--f7-navbar-inner-padding-right: 0px;
--f7-navbar-title-font-weight: 400;
--f7-navbar-title-margin-left: 0px;
--f7-navbar-title-margin-right: 16px;
--f7-navbar-title-text-align: left;
--f7-navbar-subtitle-font-size: 14px;
--f7-navbar-subtitle-line-height: 1.2;
--f7-navbar-large-title-font-size: 28px;
--f7-navbar-large-title-height: 88px;
--f7-navbar-large-title-font-weight: 400;
--f7-navbar-large-title-letter-spacing: 0;
--f7-navbar-large-title-padding-vertical: 8px;
--f7-navbar-link-height: 48px;
--f7-navbar-link-line-height: 48px;
}
.md,
.md .dark,
.md [class*='color-'] {
--f7-navbar-link-color: var(--f7-md-on-surface);
--f7-navbar-text-color: var(--f7-md-on-surface);
--f7-navbar-subtitle-text-color: var(--f7-md-on-surface-variant);
}
.navbars,
.navbar {
z-index: 500;
left: 0;
top: 0;
width: 100%;
}
.navbars {
position: absolute;
}
.navbars .navbar {
z-index: auto;
}
.navbars .navbar-transitioning {
z-index: 500;
}
.navbar {
--f7-navbar-large-collapse-progress: 0;
position: relative;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
box-sizing: border-box;
margin: 0;
height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));
color: var(--f7-navbar-text-color, var(--f7-bars-text-color));
font-size: var(--f7-navbar-font-size);
}
.navbar b {
font-weight: 500;
}
.navbar a {
color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));
}
.navbar a.link {
display: flex;
justify-content: flex-start;
line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));
height: var(--f7-navbar-link-height, var(--f7-navbar-height));
}
.navbar .title,
.navbar .left,
.navbar .right {
position: relative;
z-index: 10;
}
.navbar .title {
position: relative;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex-shrink: 10;
font-weight: var(--f7-navbar-title-font-weight);
display: inline-block;
line-height: var(--f7-navbar-title-line-height);
text-align: var(--f7-navbar-title-text-align);
font-size: var(--f7-navbar-title-font-size);
margin-right: var(--f7-navbar-title-margin-left);
margin-left: var(--f7-navbar-title-margin-left);
}
.navbar .subtitle {
display: block;
color: var(--f7-navbar-subtitle-text-color);
font-weight: normal;
font-size: var(--f7-navbar-subtitle-font-size);
line-height: var(--f7-navbar-subtitle-line-height);
text-align: var(--f7-navbar-subtitle-text-align);
}
.navbar .left,
.navbar .right {
flex-shrink: 0;
display: flex;
justify-content: flex-start;
align-items: center;
}
.navbar .right:first-child {
position: absolute;
height: 100%;
}
.navbar.no-outline .navbar-bg:after,
.navbar .no-outline .navbar-bg:after {
display: none !important;
}
.navbar.no-outline .title-large:after,
.navbar .no-outline .title-large:after {
display: none !important;
}
.navbar.navbar-hidden .navbar-bg:before,
.navbar-hidden .navbar .navbar-bg:before {
opacity: 0 !important;
}
.navbar-bg {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 0;
background: var(--f7-navbar-bg-color);
background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));
transition-property: transform;
}
@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {
.ios-translucent-bars .navbar-bg {
background-color: rgba(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));
-webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));
backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));
}
}
.navbar-bg:after,
.navbar-bg:before {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
.navbar-bg:after {
content: '';
position: absolute;
background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));
display: block;
z-index: 15;
top: auto;
right: auto;
bottom: 0;
left: 0;
height: 1px;
width: 100%;
transform-origin: 50% 100%;
transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));
}
.navbar-bg:after {
z-index: 1;
}
.navbar-transitioning,
.navbar-transitioning .left,
.navbar-transitioning .title,
.navbar-transitioning .right,
.navbar-transitioning .title-large-text,
.navbar-transitioning .navbar-bg,
.navbar-transitioning .subnavbar,
.navbar-transitioning .navbar-bg:before {
transition-duration: var(--f7-navbar-hide-show-transition-duration);
}
.navbar-page-transitioning {
transition-duration: var(--f7-page-swipeback-transition-duration) !important;
}
.navbar-page-transitioning .title-large-text,
.navbar-page-transitioning .navbar-bg {
transition-duration: var(--f7-page-swipeback-transition-duration) !important;
}
.navbar-hidden {
transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);
}
.navbar-hidden .navbar-inner {
pointer-events: none;
}
.navbar-hidden .navbar-inner > .left,
.navbar-hidden .navbar-inner > .title,
.navbar-hidden .navbar-inner > .right {
opacity: 0 !important;
}
.navbar-hidden .subnavbar {
pointer-events: auto;
}
.navbar-hidden-statusbar {
transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);
}
.navbar-large-hidden .navbar-large {
--f7-navbar-large-collapse-progress: 1;
}
.navbar-inner {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
box-sizing: border-box;
padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));
transform: translate3d(0, 0, 0);
z-index: 10;
}
.views > .navbar,
.view > .navbar,
.page > .navbar,
.navbars > .navbar {
position: absolute;
}
.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(
.with-searchbar-expandable-enabled
) .navbar-bg,
.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(
.with-searchbar-expandable-enabled
) .title {
opacity: 0;
}
.navbar-large .navbar-bg {
height: calc(100% + var(--f7-navbar-large-title-height));
transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);
}
.navbar-large-transparent .navbar-bg,
.navbar-large.navbar-transparent .navbar-bg {
opacity: var(--f7-navbar-large-collapse-progress);
}
.ios .router-navbar-transition-to-large .navbar-bg,
.ios .router-navbar-transition-from-large .navbar-bg,
.navbar-bg.ios-swipeback-navbar-bg-large,
.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,
.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {
height: calc(100% + var(--f7-navbar-large-title-height));
transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);
}
.ios .navbar:not(.navbar-large) .navbar-bg {
--f7-navbar-large-collapse-progress: 1;
}
.navbar-large .title {
opacity: var(--f7-navbar-large-collapse-progress);
}
.navbar-large-collapsed {
--f7-navbar-large-collapse-progress: 1;
}
.navbar-large-collapsed .title-large {
pointer-events: none;
}
.navbar .title-large {
box-sizing: border-box;
position: absolute;
left: 0;
right: 0;
top: 100%;
display: flex;
white-space: nowrap;
overflow: hidden;
height: var(--f7-navbar-large-title-height);
z-index: 5;
}
.navbar .title-large-text {
text-overflow: ellipsis;
white-space: nowrap;
color: var(--f7-navbar-large-title-text-color);
letter-spacing: var(--f7-navbar-large-title-letter-spacing);
font-size: var(--f7-navbar-large-title-font-size);
font-weight: var(--f7-navbar-large-title-font-weight);
line-height: var(--f7-navbar-large-title-line-height);
padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));
padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));
padding-top: var(--f7-navbar-large-title-padding-vertical);
padding-bottom: var(--f7-navbar-large-title-padding-vertical);
box-sizing: border-box;
overflow: hidden;
width: 100%;
transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);
transform-origin: calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;
}
.navbar-no-title-large-transition .title-large-text {
transition-duration: 0ms;
}
.navbar ~ *,
.navbars ~ * {
--f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));
}
.navbar ~ * .page-with-navbar-large,
.navbar ~ .page-with-navbar-large,
.navbars ~ * .page-with-navbar-large,
.navbars ~ .page-with-navbar-large,
.page-with-navbar-large .navbar ~ * {
--f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));
}
.page.no-navbar,
.page.no-navbar .navbar ~ * {
--f7-page-navbar-offset: var(--f7-safe-area-top);
}
.ios {
--f7-navbarLeftTextOffset: calc(4px + 12px + var(--f7-navbar-inner-padding-left));
--f7-navbarTitleLargeOffset: var(--f7-navbar-large-title-padding-left);
--f7-navbar-large-bg-center-top: translateX(0) translateY(calc(-1 * var(--f7-navbar-large-title-height)));
--f7-navbar-large-bg-center-bottom: translateX(0) translateY(0);
--f7-navbar-large-bg-left-top: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));
--f7-navbar-large-bg-left-bottom: translateX(100%) translateY(0);
--f7-navbar-large-bg-right-top: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));
--f7-navbar-large-bg-right-bottom: translateX(-100%) translateY(0);
}
.ios .navbar .title-large {
align-items: flex-end;
}
.ios .navbar a.icon-only {
width: 44px;
margin: 0;
justify-content: center;
}
.ios .navbar .left a + a,
.ios .navbar .right a + a {
margin-right: 16px;
}
.ios .navbar b {
font-weight: 600;
}
.ios .navbar .left {
margin-left: 10px;
}
.ios .navbar .right {
margin-right: 10px;
}
.ios .navbar .right:first-child {
left: calc(8px + var(--f7-safe-area-left));
}
.ios .navbar-inner {
justify-content: space-between;
}
.ios .navbar-inner-left-title {
justify-content: flex-start;
}
.ios .navbar-inner-left-title .right {
margin-right: auto;
}
.ios .navbar-inner-left-title .title {
text-align: left;
margin-left: 10px;
}
.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,
.ios .view:not(.view-master-detail) .navbar-previous .left,
.ios .navbar-next .left,
.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,
.ios .view:not(.view-master-detail) .navbar-previous .title,
.ios .navbar-next .title,
.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,
.ios .view:not(.view-master-detail) .navbar-previous .right,
.ios .navbar-next .right,
.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,
.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,
.ios .navbar-next .subnavbar,
.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,
.ios .view:not(.view-master-detail) .navbar-previous .fading,
.ios .navbar-next .fading {
opacity: 0;
}
.ios .view-master-detail .navbar-previous:not(.navbar-master),
.ios .view:not(.view-master-detail) .navbar-previous {
pointer-events: none;
}
.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,
.ios .view:not(.view-master-detail) .navbar-previous .title-large {
opacity: 0;
transition-duration: 0ms;
}
.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,
.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text {
transform: scale(0.5);
transition-duration: 0ms;
}
.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,
.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding,
.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,
.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar {
opacity: 1;
transform: translate3d(100%, 0, 0);
}
.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg,
.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg {
transform: translateX(-100%);
}
.ios .navbar-next {
pointer-events: none;
}
.ios .navbar-next .navbar-bg {
transform: translateX(-100%);
}
.ios .navbar-next .title-large .title-large-text {
transition-duration: 0ms;
transform: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));
}
.ios .navbar-next .subnavbar.sliding,
.ios .navbar-next .sliding .subnavbar {
opacity: 1;
transform: translate3d(-100%, 0, 0);
}
.ios .router-transition .navbar,
.ios .router-transition .navbar-bg {
transition-duration: var(--f7-page-transition-duration);
}
.ios .router-transition .navbar-bg {
animation-duration: var(--f7-page-transition-duration);
animation-fill-mode: forwards;
}
.ios .router-transition .title-large,
.ios .router-transition .title-large-text {
transition-duration: 0ms;
}
.ios .router-transition .navbar-current .left,
.ios .router-transition .navbar-current .title,
.ios .router-transition .navbar-current .right,
.ios .router-transition .navbar-current .subnavbar {
animation: ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards;
}
.ios .router-transition .navbar-current .sliding.left,
.ios .router-transition .navbar-current .sliding.left .icon + span,
.ios .router-transition .navbar-current .sliding.title,
.ios .router-transition .navbar-current .sliding.right,
.ios .router-transition .navbar-current .sliding .left,
.ios .router-transition .navbar-current .sliding .left .icon + span,
.ios .router-transition .navbar-current .sliding .title,
.ios .router-transition .navbar-current .sliding .right {
transition-duration: var(--f7-page-transition-duration);
opacity: 0 !important;
animation: none;
}
.ios .router-transition .navbar-current .sliding .subnavbar,
.ios .router-transition .navbar-current .sliding.subnavbar {
transition-duration: var(--f7-page-transition-duration);
animation: none;
opacity: 1;
}
.ios .router-transition-forward .navbar-next .left,
.ios .router-transition-backward .navbar-previous .left,
.ios .router-transition-forward .navbar-next .title,
.ios .router-transition-backward .navbar-previous .title,
.ios .router-transition-for