framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
1,741 lines (1,740 loc) • 569 kB
CSS
/**
* Framework7 9.0.2
* Full featured mobile HTML framework for building iOS & Android apps
* https://framework7.io/
*
* Copyright 2014-2025 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: December 5, 2025
*/
/*====================
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 (min-resolution: 2dppx) {
:root {
--f7-device-pixel-ratio: 2;
}
}
@media (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-border-color: transparent;
/*
--f7-bars-link-color: var(--f7-theme-color);
*/
--f7-glass-bg-color: rgba(255, 255, 255, 0.75);
--f7-glass-shadow: inset -1px -1px 0px -0.5px #ffffff, inset 1px 1px 0px -0.5px #ffffff, inset 3px 3px 10px -3px #ddd, inset -3px -3px 10px -3px #ddd, inset 0 0 5px 1px #fff, inset 0 0 0 0.5px rgba(0, 0, 0, 0.25), inset 0 0 24px 0 rgba(0, 0, 0, 0.1), 0 0 25px 0 rgba(0, 0, 0, 0.2);
--f7-glass-shadow-thumb: inset -3px -3px 0px -3.5px #ffffff, inset 3px 3px 0px -3.5px #ffffff, inset 0px 0px 0px 0.5px rgba(255, 255, 255, 0.5), inset 3px 3px 10px -2px #eee, inset -3px -3px 10px -2px #eee, inset 0 0 5px 1px #fff;
--f7-bars-text-color: #000;
--f7-text-color: #000;
--f7-bars-bg-color: #efeff4;
}
.ios .dark,
.ios.dark {
--f7-glass-bg-color: rgba(50, 50, 50, 0.5);
--f7-glass-shadow: inset -2px -2px 0.5px -2.5px rgba(255, 255, 255, 0.4), inset 3px 3px 0.5px -3.5px rgba(255, 255, 255, 0.4), inset 2px 2px 0.5px -2px #262626, inset -2px -2px 0.5px -2px #262626, inset 0 0 5px 1px #141414, inset 0 0 0 1px rgba(255, 255, 255, 0.15), inset 0 0 10px 0 rgba(255, 255, 255, 0.075), inset 0 0 24px 0 rgba(255, 255, 255, 0.05), 0 0 25px 0 rgba(0, 0, 0, 0.15);
--f7-glass-shadow-thumb: inset 3px 3px 0px -3.5px #ffffff, inset -3px -3px 0px -3.5px #ffffff, inset -0.5px -0.5px 0px rgba(255, 255, 255, 0.5), inset 0.5px 0.5px 0px rgba(255, 255, 255, 0.1), inset -3px 3px 0px -3.5px rgba(255, 255, 255, 0.25), inset 0px -5px 0px -3.5px rgba(255, 255, 255, 0.25), inset 0px -5px 5px rgba(255, 255, 255, 0.25);
--f7-bars-text-color: #fff;
--f7-text-color: #fff;
--f7-bars-bg-color: rgba(0, 0, 0, 0.5);
}
.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 {
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-transparent {
background-color: transparent;
}
.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-previous .page-opacity-effect {
opacity: 1;
}
.page-previous:after {
opacity: 1;
}
.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-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(-24px, 0px, 0);
}
.md .page-next {
pointer-events: none;
transform: translate3d(128px, 0px, 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) / 2) forwards cubic-bezier(0, 1, 0.8, 1), md-page-current-to-next-opacity calc(var(--f7-page-transition-duration) / 2) forwards;
}
.md .router-transition-backward .page-previous {
animation: md-page-previous-to-current calc(var(--f7-page-transition-duration) / 2) forwards cubic-bezier(0, 1, 0.8, 1);
}
@keyframes md-page-next-to-current {
from {
transform: translate3d(128px, 0px, 0);
}
to {
transform: translate3d(0px, 0px, 0);
}
}
@keyframes md-page-current-to-next {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(128px, 0px, 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(-24px, 0px, 0);
}
}
@keyframes md-page-previous-to-current {
from {
transform: translate3d(-24px, 0px, 0);
}
to {
transform: translate3d(0, 0px, 0);
}
}
.view:not(.view-master-detail) .page-master-stacked {
display: none;
}
.view-master-detail .page-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 {
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 {
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 {
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-link-color: var(--f7-bars-text-color);
--f7-navbar-height: 76px;
--f7-navbar-font-size: 17px;
--f7-navbar-title-font-size: inherit;
--f7-navbar-inner-padding-left: 16px;
--f7-navbar-inner-padding-right: 16px;
--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;
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;
}
.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: center;
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;
transition-property: transform;
}
.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-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 {
position: absolute;
}
.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-large-collapsed .title-large-text {
opacity: 0;
}
.navbar .title-large {
box-sizing: border-box;
position: absolute;
left: 0;
right: 0;
top: 100%;
display: flex;
white-space: nowrap;
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 ~ * {
--f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));
}
.navbar ~ * .page-with-navbar-large,
.navbar ~ .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);
}
.ios .navbar .title-large {
align-items: flex-end;
}
.ios .navbar a.link {
height: 100%;
padding: 0 12px;
}
.ios .navbar a:is(.icon-only, :has(i:only-child), :has(svg:only-child)) {
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-bg {
height: 100%;
}
.ios .navbar-bg::before {
content: '';
position: absolute;
inset: 0;
backdrop-filter: blur(2px);
mask-image: linear-gradient(to bottom, black calc(50% + var(--f7-safe-area-top, 0px)), transparent 100%);
}
.ios .navbar-bg::after {
content: '';
position: absolute;
inset: 0;
background-image: linear-gradient(to bottom, var(--f7-navbar-bg-color, var(--f7-bars-bg-color)) var(--f7-safe-area-top, 0px), transparent 100%);
}
.ios .navbar-inner {
justify-content: space-between;
padding-top: calc(16px + var(--f7-safe-area-top));
padding-bottom: 16px;
}
.ios .navbar .left,
.ios .navbar .right,
.ios .navbar .navbar-pane {
height: 100%;
backdrop-filter: saturate(180%) blur(16px);
box-shadow: var(--f7-glass-shadow);
background-color: var(--f7-glass-bg-color);
border-radius: 64px;
min-width: 44px;
}
.ios .navbar-pane {
display: flex;
align-items: center;
justify-content: center;
}
.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 .navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(
.with-searchbar-expandable-enabled
) .title {
opacity: 0;
}
.view-master-detail .page-master {
z-index: 525;
}
.md .navbar .title-large {
align-items: center;
overflow: hidden;
}
.md .navbar .left {
margin-left: 4px;
margin-right: 4px;
}
.md .navbar a.link {
padding: 0 12px;
min-width: 48px;
height: var(--f7-navbar-link-height, var(--f7-navbar-height));
}
.md .navbar a:is(.icon-only, :has(i:only-child), :has(svg:only-child)) {
min-width: 0;
flex-shrink: 0;
width: 48px;
}
.md .navbar .right {
margin-left: 4px;
margin-right: auto;
}
.md .navbar .right:first-child {
left: var(--f7-safe-area-left);
}
.md .navbar-pane {
display: contents;
}
.md .navbar-bg {
background: var(--f7-navbar-bg-color);
background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));
}
.md .navbar-bg:after,
.md .navbar-bg:before {
backface-visibility: hidden;
}
.md .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)));
}
.md .navbar-bg:after {
z-index: 1;
}
.md .navbar-inner {
justify-content: flex-start;
overflow: hidden;
}
.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner {
overflow: visible;
}
.md .page.page-with-subnavbar .navbar-inner {
overflow: visible;
}
.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child {
margin-left: 16px;
}
.md .navbar-inner-centered-title {
justify-content: space-between;
}
.md .navbar-inner-centered-title .right {
margin-right: 0;
}
.md .navbar-inner-centered-title .title {
text-align: center;
}
.md .navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(
.with-searchbar-expandable-enabled
) .navbar-bg,
.md .navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(
.with-searchbar-expandable-enabled
) .title {
opacity: 0;
}
.md .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);
}
.md .navbar-large-transparent .navbar-bg,
.md .navbar-large.navbar-transparent .navbar-bg {
opacity: var(--f7-navbar-large-collapse-progress);
}
/* === Toolbar === */
:root {
/*
--f7-toolbar-bg-color: var(--f7-bars-bg-color);
--f7-toolbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);
--f7-toolbar-border-color: var(--f7-bars-border-color);
--f7-toolbar-text-color: var(--f7-bars-text-color);
*/
--f7-tabbar-link-active-bg-color: transparent;
--f7-tabbar-label-text-transform: none;
--f7-toolbar-hide-show-transition-duration: 400ms;
}
.ios {
--f7-toolbar-height: 64px;
--f7-toolbar-font-size: 17px;
--f7-toolbar-inner-padding-left: 16px;
--f7-toolbar-inner-padding-right: 16px;
--f7-toolbar-link-font-weight: 400;
--f7-toolbar-link-color: var(--f7-bars-text-color);
--f7-tabbar-link-inactive-color: var(--f7-bars-text-color);
/*
--f7-toolbar-link-height: var(--f7-toolbar-height);
--f7-toolbar-link-line-height: var(--f7-toolbar-height);
--f7-tabbar-link-active-color: var(--f7-theme-color);
*/
--f7-tabbar-icons-height: 80px;
--f7-tabbar-icons-tablet-height: 80px;
--f7-tabbar-icon-size: 28px;
--f7-tabbar-link-text-transform: none;
--f7-tabbar-link-font-weight: 400;
--f7-tabbar-link-letter-spacing: 0;
--f7-tabbar-label-font-size: 12px;
--f7-tabbar-label-tablet-font-size: 14px;
--f7-tabbar-label-font-weight: 500;
--f7-tabbar-label-letter-spacing: 0.01;
--f7-tabbar-link-highlight-bg-color: rgba(0, 0, 0, 0.1);
--f7-tabbar-link-highlight-active-bg-color: rgba(0, 0, 0, 0.05);
}
.ios .dark,
.ios.dark {
--f7-tabbar-link-highlight-bg-color: rgba(255, 255, 255, 0.15);
--f7-tabbar-link-highlight-active-bg-color: rgba(255, 255, 255, 0.1);
}
.md {
--f7-toolbar-height: 56px;
--f7-toolbar-font-size: 14px;
--f7-toolbar-inner-padding-left: 0px;
--f7-toolbar-inner-padding-right: 0px;
/*
--f7-toolbar-link-color: var(--f7-bars-link-color);
--f7-toolbar-link-height: var(--f7-toolbar-height);
--f7-toolbar-link-line-height: var(--f7-toolbar-height);
*/
--f7-tabbar-icons-height: 80px;
--f7-tabbar-icons-tablet-height: 80px;
--f7-tabbar-icon-size: 24px;
--f7-tabbar-link-text-transform: none;
--f7-tabbar-link-font-weight: 500;
--f7-tabbar-link-letter-spacing: 0;
--f7-toolbar-link-font-weight: 500;
--f7-tabbar-label-font-size: 12px;
--f7-tabbar-label-tablet-font-size: 12px;
--f7-tabbar-label-font-weight: 500;
--f7-tabbar-label-letter-spacing: 0;
}
.md,
.md .dark,
.md [class*='color-'] {
--f7-tabbar-link-active-color: var(--f7-md-on-secondary-container);
--f7-tabbar-link-active-border-color: var(--f7-md-primary);
--f7-tabbar-link-inactive-color: var(--f7-md-on-surface-variant);
--f7-tabbar-link-active-icon-bg-color: var(--f7-md-second