UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

1,740 lines (1,739 loc) 150 kB
/** * 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, 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; right: 100%; background: linear-gradient(to right, 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; right: 100%; background: linear-gradient(to right, 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; right: 100%; background: linear-gradient(to right, 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); --f7-safe-area-right: 0px; --f7-safe-area-outer-right: 0px; border-right: 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-left: 0px; --f7-safe-area-outer-left: 0px; left: 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-left: 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-left: var(--f7-navbar-title-margin-left); margin-right: 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(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-left: 16px; } .ios .navbar b { font-weight: 600; } .ios .navbar .left { margin-right: 10px; } .ios .navbar .right { margin-left: 10px; } .ios .navbar .right:first-child { right: calc(8px + var(--f7-safe-area-right)); } .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-left: auto; } .ios .navbar-inner-left-title .title { text-align: left; margin-right: 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: auto; margin-right: 4px; } .md .navbar .right:first-child { right: var(--f7-safe-area-right); } .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-left: 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-secondary-container); } .toolbar { width: 100%; position: