web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

commit c195821520bceb72d1cae1fbe760e27016c4b337
parent eaf21000d361c56981cfb5ca1157774d86479c64
Author: triesap <137732411+triesap@users.noreply.github.com>
Date:   Fri, 14 Feb 2025 06:29:04 +0000

apps-lib: edit farms add view, add window safari listener, edit components, css, stores

Diffstat:
Mapps-lib/src/lib/components/button/button-layout-pair.svelte | 2+-
Mapps-lib/src/lib/components/layout/layout-bottom-button.svelte | 22++++++++++++++++------
Mapps-lib/src/lib/components/lib/css.svelte | 4++--
Mapps-lib/src/lib/components/lib/toast.svelte | 4++--
Aapps-lib/src/lib/components/window/window-safari-listener.svelte | 38++++++++++++++++++++++++++++++++++++++
Mapps-lib/src/lib/features/farm/farms-add-casli-detail.svelte | 2+-
Mapps-lib/src/lib/features/farm/farms-add-casli-map.svelte | 11++++++++---
Mapps-lib/src/lib/index.ts | 2++
Mapps-lib/src/lib/store/app.ts | 3++-
Aapps-lib/src/lib/store/layout.ts | 3+++
Mapps-lib/src/lib/view/farms-add.svelte | 80++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Mapps-lib/src/lib/view/farms-products-add.svelte | 4+---
12 files changed, 143 insertions(+), 32 deletions(-)

diff --git a/apps-lib/src/lib/components/button/button-layout-pair.svelte b/apps-lib/src/lib/components/button/button-layout-pair.svelte @@ -33,7 +33,7 @@ label: basis.continue.label, callback: basis.continue.callback, }} - ></ButtonLayout> + /> {#if basis.back} <div class={`flex flex-col justify-center items-center el-re`}> {#if basis.back.visible} diff --git a/apps-lib/src/lib/components/layout/layout-bottom-button.svelte b/apps-lib/src/lib/components/layout/layout-bottom-button.svelte @@ -2,11 +2,21 @@ import { app_lo } from "$lib/store/app"; import type { Snippet } from "svelte"; - let { children }: { children: Snippet } = $props(); + let { + basis, + children, + }: { + basis?: { + hidden: boolean; + }; + children: Snippet; + } = $props(); </script> -<div - class={`z-10 absolute bottom-0 h-lo_bottom_button_${$app_lo} flex flex-row w-full px-4 justify-center items-center`} -> - {@render children()} -</div> +{#if !basis?.hidden} + <div + class={`z-10 absolute bottom-0 h-lo_bottom_button_${$app_lo} flex flex-col w-full px-4 gap-1 justify-start items-center`} + > + {@render children()} + </div> +{/if} diff --git a/apps-lib/src/lib/components/lib/css.svelte b/apps-lib/src/lib/components/lib/css.svelte @@ -1 +1 @@ -<div class="hidden -bottom-lo_bottom_button_ios0 -bottom-lo_bottom_button_ios1 -bottom-lo_bottom_button_web_desktop -bottom-lo_bottom_button_web_mobile -bottom-nav_page_header_ios0 -bottom-nav_page_header_ios1 -bottom-nav_page_header_web_desktop -bottom-nav_page_header_web_mobile -bottom-nav_page_toolbar_ios0 -bottom-nav_page_toolbar_ios1 -bottom-nav_page_toolbar_web_desktop -bottom-nav_page_toolbar_web_mobile -bottom-nav_tabs_ios0 -bottom-nav_tabs_ios1 -bottom-nav_tabs_web_desktop -bottom-nav_tabs_web_mobile -left-lo_ios0 -left-lo_ios1 -left-lo_textdesc_ios0 -left-lo_textdesc_ios1 -left-lo_textdesc_web_desktop -left-lo_textdesc_web_mobile -left-lo_web_desktop -left-lo_web_mobile -right-lo_ios0 -right-lo_ios1 -right-lo_textdesc_ios0 -right-lo_textdesc_ios1 -right-lo_textdesc_web_desktop -right-lo_textdesc_web_mobile -right-lo_web_desktop -right-lo_web_mobile -top-lo_bottom_button_ios0 -top-lo_bottom_button_ios1 -top-lo_bottom_button_web_desktop -top-lo_bottom_button_web_mobile -top-nav_page_header_ios0 -top-nav_page_header_ios1 -top-nav_page_header_web_desktop -top-nav_page_header_web_mobile -top-nav_page_toolbar_ios0 -top-nav_page_toolbar_ios1 -top-nav_page_toolbar_web_desktop -top-nav_page_toolbar_web_mobile -top-nav_tabs_ios0 -top-nav_tabs_ios1 -top-nav_tabs_web_desktop -top-nav_tabs_web_mobile -translate-x-w_lo_ios0 -translate-x-w_lo_ios1 -translate-x-w_lo_textdesc_ios0 -translate-x-w_lo_textdesc_ios1 -translate-x-w_lo_textdesc_web_desktop -translate-x-w_lo_textdesc_web_mobile -translate-x-w_lo_web_desktop -translate-x-w_lo_web_mobile -translate-y-h_lo_bottom_button_ios0 -translate-y-h_lo_bottom_button_ios1 -translate-y-h_lo_bottom_button_web_desktop -translate-y-h_lo_bottom_button_web_mobile -translate-y-h_nav_page_header_ios0 -translate-y-h_nav_page_header_ios1 -translate-y-h_nav_page_header_web_desktop -translate-y-h_nav_page_header_web_mobile -translate-y-h_nav_page_toolbar_ios0 -translate-y-h_nav_page_toolbar_ios1 -translate-y-h_nav_page_toolbar_web_desktop -translate-y-h_nav_page_toolbar_web_mobile -translate-y-h_nav_tabs_ios0 -translate-y-h_nav_tabs_ios1 -translate-y-h_nav_tabs_web_desktop -translate-y-h_nav_tabs_web_mobile active:bg-layer-0-glyph active:bg-layer-0-glyph-hl active:bg-layer-0-glyph-hl_a active:bg-layer-0-glyph-label active:bg-layer-0-glyph-shade active:bg-layer-0-glyph_a active:bg-layer-0-glyph_pl active:bg-layer-0-surface active:bg-layer-0-surface-blur active:bg-layer-0-surface-edge active:bg-layer-0-surface_a active:bg-layer-0-surface_w active:bg-layer-1-glyph active:bg-layer-1-glyph-hl active:bg-layer-1-glyph-hl_a active:bg-layer-1-glyph-label active:bg-layer-1-glyph-shade active:bg-layer-1-glyph_a active:bg-layer-1-glyph_d active:bg-layer-1-glyph_pl active:bg-layer-1-surface active:bg-layer-1-surface-edge active:bg-layer-1-surface-err active:bg-layer-1-surface-focus active:bg-layer-1-surface_a active:bg-layer-2-glyph active:bg-layer-2-glyph-hl active:bg-layer-2-glyph-hl_a active:bg-layer-2-glyph-shade active:bg-layer-2-glyph_a active:bg-layer-2-glyph_d active:bg-layer-2-glyph_pl active:bg-layer-2-surface active:bg-layer-2-surface-edge active:bg-layer-2-surface_a active:bg-radroots-accent-focus active:border-layer-0-glyph active:border-layer-0-glyph-hl active:border-layer-0-glyph-hl_a active:border-layer-0-glyph-label active:border-layer-0-glyph-shade active:border-layer-0-glyph_a active:border-layer-0-glyph_pl active:border-layer-0-surface active:border-layer-0-surface-blur active:border-layer-0-surface-edge active:border-layer-0-surface_a active:border-layer-0-surface_w active:border-layer-1-glyph active:border-layer-1-glyph-hl active:border-layer-1-glyph-hl_a active:border-layer-1-glyph-label active:border-layer-1-glyph-shade active:border-layer-1-glyph_a active:border-layer-1-glyph_d active:border-layer-1-glyph_pl active:border-layer-1-surface active:border-layer-1-surface-edge active:border-layer-1-surface-err active:border-layer-1-surface-focus active:border-layer-1-surface_a active:border-layer-2-glyph active:border-layer-2-glyph-hl active:border-layer-2-glyph-hl_a active:border-layer-2-glyph-shade active:border-layer-2-glyph_a active:border-layer-2-glyph_d active:border-layer-2-glyph_pl active:border-layer-2-surface active:border-layer-2-surface-edge active:border-layer-2-surface_a active:border-radroots-accent-focus active:text-layer-0-glyph active:text-layer-0-glyph-hl active:text-layer-0-glyph-hl_a active:text-layer-0-glyph-label active:text-layer-0-glyph-shade active:text-layer-0-glyph_a active:text-layer-0-glyph_pl active:text-layer-0-surface active:text-layer-0-surface-blur active:text-layer-0-surface-edge active:text-layer-0-surface_a active:text-layer-0-surface_w active:text-layer-1-glyph active:text-layer-1-glyph-hl active:text-layer-1-glyph-hl_a active:text-layer-1-glyph-label active:text-layer-1-glyph-shade active:text-layer-1-glyph_a active:text-layer-1-glyph_d active:text-layer-1-glyph_pl active:text-layer-1-surface active:text-layer-1-surface-edge active:text-layer-1-surface-err active:text-layer-1-surface-focus active:text-layer-1-surface_a active:text-layer-2-glyph active:text-layer-2-glyph-hl active:text-layer-2-glyph-hl_a active:text-layer-2-glyph-shade active:text-layer-2-glyph_a active:text-layer-2-glyph_d active:text-layer-2-glyph_pl active:text-layer-2-surface active:text-layer-2-surface-edge active:text-layer-2-surface_a active:text-radroots-accent-focus bg-layer-0-glyph bg-layer-0-glyph-hl bg-layer-0-glyph-hl_a bg-layer-0-glyph-label bg-layer-0-glyph-shade bg-layer-0-glyph_a bg-layer-0-glyph_pl bg-layer-0-surface bg-layer-0-surface-blur bg-layer-0-surface-edge bg-layer-0-surface_a bg-layer-0-surface_w bg-layer-1-glyph bg-layer-1-glyph-hl bg-layer-1-glyph-hl_a bg-layer-1-glyph-label bg-layer-1-glyph-shade bg-layer-1-glyph_a bg-layer-1-glyph_d bg-layer-1-glyph_pl bg-layer-1-surface bg-layer-1-surface-edge bg-layer-1-surface-err bg-layer-1-surface-focus bg-layer-1-surface_a bg-layer-2-glyph bg-layer-2-glyph-hl bg-layer-2-glyph-hl_a bg-layer-2-glyph-shade bg-layer-2-glyph_a bg-layer-2-glyph_d bg-layer-2-glyph_pl bg-layer-2-surface bg-layer-2-surface-edge bg-layer-2-surface_a bg-radroots-accent-focus border-layer-0-glyph border-layer-0-glyph-hl border-layer-0-glyph-hl_a border-layer-0-glyph-label border-layer-0-glyph-shade border-layer-0-glyph_a border-layer-0-glyph_pl border-layer-0-surface border-layer-0-surface-blur border-layer-0-surface-edge border-layer-0-surface_a border-layer-0-surface_w border-layer-1-glyph border-layer-1-glyph-hl border-layer-1-glyph-hl_a border-layer-1-glyph-label border-layer-1-glyph-shade border-layer-1-glyph_a border-layer-1-glyph_d border-layer-1-glyph_pl border-layer-1-surface border-layer-1-surface-edge border-layer-1-surface-err border-layer-1-surface-focus border-layer-1-surface_a border-layer-2-glyph border-layer-2-glyph-hl border-layer-2-glyph-hl_a border-layer-2-glyph-shade border-layer-2-glyph_a border-layer-2-glyph_d border-layer-2-glyph_pl border-layer-2-surface border-layer-2-surface-edge border-layer-2-surface_a border-radroots-accent-focus bottom-lo_bottom_button_ios0 bottom-lo_bottom_button_ios1 bottom-lo_bottom_button_web_desktop bottom-lo_bottom_button_web_mobile bottom-nav_page_header_ios0 bottom-nav_page_header_ios1 bottom-nav_page_header_web_desktop bottom-nav_page_header_web_mobile bottom-nav_page_toolbar_ios0 bottom-nav_page_toolbar_ios1 bottom-nav_page_toolbar_web_desktop bottom-nav_page_toolbar_web_mobile bottom-nav_tabs_ios0 bottom-nav_tabs_ios1 bottom-nav_tabs_web_desktop bottom-nav_tabs_web_mobile focus:bg-layer-0-glyph focus:bg-layer-0-glyph-hl focus:bg-layer-0-glyph-hl_a focus:bg-layer-0-glyph-label focus:bg-layer-0-glyph-shade focus:bg-layer-0-glyph_a focus:bg-layer-0-glyph_pl focus:bg-layer-0-surface focus:bg-layer-0-surface-blur focus:bg-layer-0-surface-edge focus:bg-layer-0-surface_a focus:bg-layer-0-surface_w focus:bg-layer-1-glyph focus:bg-layer-1-glyph-hl focus:bg-layer-1-glyph-hl_a focus:bg-layer-1-glyph-label focus:bg-layer-1-glyph-shade focus:bg-layer-1-glyph_a focus:bg-layer-1-glyph_d focus:bg-layer-1-glyph_pl focus:bg-layer-1-surface focus:bg-layer-1-surface-edge focus:bg-layer-1-surface-err focus:bg-layer-1-surface-focus focus:bg-layer-1-surface_a focus:bg-layer-2-glyph focus:bg-layer-2-glyph-hl focus:bg-layer-2-glyph-hl_a focus:bg-layer-2-glyph-shade focus:bg-layer-2-glyph_a focus:bg-layer-2-glyph_d focus:bg-layer-2-glyph_pl focus:bg-layer-2-surface focus:bg-layer-2-surface-edge focus:bg-layer-2-surface_a focus:bg-radroots-accent-focus focus:border-layer-0-glyph focus:border-layer-0-glyph-hl focus:border-layer-0-glyph-hl_a focus:border-layer-0-glyph-label focus:border-layer-0-glyph-shade focus:border-layer-0-glyph_a focus:border-layer-0-glyph_pl focus:border-layer-0-surface focus:border-layer-0-surface-blur focus:border-layer-0-surface-edge focus:border-layer-0-surface_a focus:border-layer-0-surface_w focus:border-layer-1-glyph focus:border-layer-1-glyph-hl focus:border-layer-1-glyph-hl_a focus:border-layer-1-glyph-label focus:border-layer-1-glyph-shade focus:border-layer-1-glyph_a focus:border-layer-1-glyph_d focus:border-layer-1-glyph_pl focus:border-layer-1-surface focus:border-layer-1-surface-edge focus:border-layer-1-surface-err focus:border-layer-1-surface-focus focus:border-layer-1-surface_a focus:border-layer-2-glyph focus:border-layer-2-glyph-hl focus:border-layer-2-glyph-hl_a focus:border-layer-2-glyph-shade focus:border-layer-2-glyph_a focus:border-layer-2-glyph_d focus:border-layer-2-glyph_pl focus:border-layer-2-surface focus:border-layer-2-surface-edge focus:border-layer-2-surface_a focus:border-radroots-accent-focus focus:text-layer-0-glyph focus:text-layer-0-glyph-hl focus:text-layer-0-glyph-hl_a focus:text-layer-0-glyph-label focus:text-layer-0-glyph-shade focus:text-layer-0-glyph_a focus:text-layer-0-glyph_pl focus:text-layer-0-surface focus:text-layer-0-surface-blur focus:text-layer-0-surface-edge focus:text-layer-0-surface_a focus:text-layer-0-surface_w focus:text-layer-1-glyph focus:text-layer-1-glyph-hl focus:text-layer-1-glyph-hl_a focus:text-layer-1-glyph-label focus:text-layer-1-glyph-shade focus:text-layer-1-glyph_a focus:text-layer-1-glyph_d focus:text-layer-1-glyph_pl focus:text-layer-1-surface focus:text-layer-1-surface-edge focus:text-layer-1-surface-err focus:text-layer-1-surface-focus focus:text-layer-1-surface_a focus:text-layer-2-glyph focus:text-layer-2-glyph-hl focus:text-layer-2-glyph-hl_a focus:text-layer-2-glyph-shade focus:text-layer-2-glyph_a focus:text-layer-2-glyph_d focus:text-layer-2-glyph_pl focus:text-layer-2-surface focus:text-layer-2-surface-edge focus:text-layer-2-surface_a focus:text-radroots-accent-focus group-active:bg-layer-0-glyph group-active:bg-layer-0-glyph-hl group-active:bg-layer-0-glyph-hl_a group-active:bg-layer-0-glyph-label group-active:bg-layer-0-glyph-shade group-active:bg-layer-0-glyph_a group-active:bg-layer-0-glyph_pl group-active:bg-layer-0-surface group-active:bg-layer-0-surface-blur group-active:bg-layer-0-surface-edge group-active:bg-layer-0-surface_a group-active:bg-layer-0-surface_w group-active:bg-layer-1-glyph group-active:bg-layer-1-glyph-hl group-active:bg-layer-1-glyph-hl_a group-active:bg-layer-1-glyph-label group-active:bg-layer-1-glyph-shade group-active:bg-layer-1-glyph_a group-active:bg-layer-1-glyph_d group-active:bg-layer-1-glyph_pl group-active:bg-layer-1-surface group-active:bg-layer-1-surface-edge group-active:bg-layer-1-surface-err group-active:bg-layer-1-surface-focus group-active:bg-layer-1-surface_a group-active:bg-layer-2-glyph group-active:bg-layer-2-glyph-hl group-active:bg-layer-2-glyph-hl_a group-active:bg-layer-2-glyph-shade group-active:bg-layer-2-glyph_a group-active:bg-layer-2-glyph_d group-active:bg-layer-2-glyph_pl group-active:bg-layer-2-surface group-active:bg-layer-2-surface-edge group-active:bg-layer-2-surface_a group-active:bg-radroots-accent-focus group-active:border-layer-0-glyph group-active:border-layer-0-glyph-hl group-active:border-layer-0-glyph-hl_a group-active:border-layer-0-glyph-label group-active:border-layer-0-glyph-shade group-active:border-layer-0-glyph_a group-active:border-layer-0-glyph_pl group-active:border-layer-0-surface group-active:border-layer-0-surface-blur group-active:border-layer-0-surface-edge group-active:border-layer-0-surface_a group-active:border-layer-0-surface_w group-active:border-layer-1-glyph group-active:border-layer-1-glyph-hl group-active:border-layer-1-glyph-hl_a group-active:border-layer-1-glyph-label group-active:border-layer-1-glyph-shade group-active:border-layer-1-glyph_a group-active:border-layer-1-glyph_d group-active:border-layer-1-glyph_pl group-active:border-layer-1-surface group-active:border-layer-1-surface-edge group-active:border-layer-1-surface-err group-active:border-layer-1-surface-focus group-active:border-layer-1-surface_a group-active:border-layer-2-glyph group-active:border-layer-2-glyph-hl group-active:border-layer-2-glyph-hl_a group-active:border-layer-2-glyph-shade group-active:border-layer-2-glyph_a group-active:border-layer-2-glyph_d group-active:border-layer-2-glyph_pl group-active:border-layer-2-surface group-active:border-layer-2-surface-edge group-active:border-layer-2-surface_a group-active:border-radroots-accent-focus group-active:text-layer-0-glyph group-active:text-layer-0-glyph-hl group-active:text-layer-0-glyph-hl_a group-active:text-layer-0-glyph-label group-active:text-layer-0-glyph-shade group-active:text-layer-0-glyph_a group-active:text-layer-0-glyph_pl group-active:text-layer-0-surface group-active:text-layer-0-surface-blur group-active:text-layer-0-surface-edge group-active:text-layer-0-surface_a group-active:text-layer-0-surface_w group-active:text-layer-1-glyph group-active:text-layer-1-glyph-hl group-active:text-layer-1-glyph-hl_a group-active:text-layer-1-glyph-label group-active:text-layer-1-glyph-shade group-active:text-layer-1-glyph_a group-active:text-layer-1-glyph_d group-active:text-layer-1-glyph_pl group-active:text-layer-1-surface group-active:text-layer-1-surface-edge group-active:text-layer-1-surface-err group-active:text-layer-1-surface-focus group-active:text-layer-1-surface_a group-active:text-layer-2-glyph group-active:text-layer-2-glyph-hl group-active:text-layer-2-glyph-hl_a group-active:text-layer-2-glyph-shade group-active:text-layer-2-glyph_a group-active:text-layer-2-glyph_d group-active:text-layer-2-glyph_pl group-active:text-layer-2-surface group-active:text-layer-2-surface-edge group-active:text-layer-2-surface_a group-active:text-radroots-accent-focus group-focus:bg-layer-0-glyph group-focus:bg-layer-0-glyph-hl group-focus:bg-layer-0-glyph-hl_a group-focus:bg-layer-0-glyph-label group-focus:bg-layer-0-glyph-shade group-focus:bg-layer-0-glyph_a group-focus:bg-layer-0-glyph_pl group-focus:bg-layer-0-surface group-focus:bg-layer-0-surface-blur group-focus:bg-layer-0-surface-edge group-focus:bg-layer-0-surface_a group-focus:bg-layer-0-surface_w group-focus:bg-layer-1-glyph group-focus:bg-layer-1-glyph-hl group-focus:bg-layer-1-glyph-hl_a group-focus:bg-layer-1-glyph-label group-focus:bg-layer-1-glyph-shade group-focus:bg-layer-1-glyph_a group-focus:bg-layer-1-glyph_d group-focus:bg-layer-1-glyph_pl group-focus:bg-layer-1-surface group-focus:bg-layer-1-surface-edge group-focus:bg-layer-1-surface-err group-focus:bg-layer-1-surface-focus group-focus:bg-layer-1-surface_a group-focus:bg-layer-2-glyph group-focus:bg-layer-2-glyph-hl group-focus:bg-layer-2-glyph-hl_a group-focus:bg-layer-2-glyph-shade group-focus:bg-layer-2-glyph_a group-focus:bg-layer-2-glyph_d group-focus:bg-layer-2-glyph_pl group-focus:bg-layer-2-surface group-focus:bg-layer-2-surface-edge group-focus:bg-layer-2-surface_a group-focus:bg-radroots-accent-focus group-focus:border-layer-0-glyph group-focus:border-layer-0-glyph-hl group-focus:border-layer-0-glyph-hl_a group-focus:border-layer-0-glyph-label group-focus:border-layer-0-glyph-shade group-focus:border-layer-0-glyph_a group-focus:border-layer-0-glyph_pl group-focus:border-layer-0-surface group-focus:border-layer-0-surface-blur group-focus:border-layer-0-surface-edge group-focus:border-layer-0-surface_a group-focus:border-layer-0-surface_w group-focus:border-layer-1-glyph group-focus:border-layer-1-glyph-hl group-focus:border-layer-1-glyph-hl_a group-focus:border-layer-1-glyph-label group-focus:border-layer-1-glyph-shade group-focus:border-layer-1-glyph_a group-focus:border-layer-1-glyph_d group-focus:border-layer-1-glyph_pl group-focus:border-layer-1-surface group-focus:border-layer-1-surface-edge group-focus:border-layer-1-surface-err group-focus:border-layer-1-surface-focus group-focus:border-layer-1-surface_a group-focus:border-layer-2-glyph group-focus:border-layer-2-glyph-hl group-focus:border-layer-2-glyph-hl_a group-focus:border-layer-2-glyph-shade group-focus:border-layer-2-glyph_a group-focus:border-layer-2-glyph_d group-focus:border-layer-2-glyph_pl group-focus:border-layer-2-surface group-focus:border-layer-2-surface-edge group-focus:border-layer-2-surface_a group-focus:border-radroots-accent-focus group-focus:text-layer-0-glyph group-focus:text-layer-0-glyph-hl group-focus:text-layer-0-glyph-hl_a group-focus:text-layer-0-glyph-label group-focus:text-layer-0-glyph-shade group-focus:text-layer-0-glyph_a group-focus:text-layer-0-glyph_pl group-focus:text-layer-0-surface group-focus:text-layer-0-surface-blur group-focus:text-layer-0-surface-edge group-focus:text-layer-0-surface_a group-focus:text-layer-0-surface_w group-focus:text-layer-1-glyph group-focus:text-layer-1-glyph-hl group-focus:text-layer-1-glyph-hl_a group-focus:text-layer-1-glyph-label group-focus:text-layer-1-glyph-shade group-focus:text-layer-1-glyph_a group-focus:text-layer-1-glyph_d group-focus:text-layer-1-glyph_pl group-focus:text-layer-1-surface group-focus:text-layer-1-surface-edge group-focus:text-layer-1-surface-err group-focus:text-layer-1-surface-focus group-focus:text-layer-1-surface_a group-focus:text-layer-2-glyph group-focus:text-layer-2-glyph-hl group-focus:text-layer-2-glyph-hl_a group-focus:text-layer-2-glyph-shade group-focus:text-layer-2-glyph_a group-focus:text-layer-2-glyph_d group-focus:text-layer-2-glyph_pl group-focus:text-layer-2-surface group-focus:text-layer-2-surface-edge group-focus:text-layer-2-surface_a group-focus:text-radroots-accent-focus h-[12px] h-[16px] h-[17px] h-[18px] h-[20px] h-[22px] h-[24px] h-[28px] h-[36px] h-lo_bottom_button_ios0 h-lo_bottom_button_ios1 h-lo_bottom_button_web_desktop h-lo_bottom_button_web_mobile h-nav_page_header_ios0 h-nav_page_header_ios1 h-nav_page_header_web_desktop h-nav_page_header_web_mobile h-nav_page_toolbar_ios0 h-nav_page_toolbar_ios1 h-nav_page_toolbar_web_desktop h-nav_page_toolbar_web_mobile h-nav_tabs_ios0 h-nav_tabs_ios1 h-nav_tabs_web_desktop h-nav_tabs_web_mobile left-lo_ios0 left-lo_ios1 left-lo_textdesc_ios0 left-lo_textdesc_ios1 left-lo_textdesc_web_desktop left-lo_textdesc_web_mobile left-lo_web_desktop left-lo_web_mobile max-h-lo_bottom_button_ios0 max-h-lo_bottom_button_ios1 max-h-lo_bottom_button_web_desktop max-h-lo_bottom_button_web_mobile max-h-nav_page_header_ios0 max-h-nav_page_header_ios1 max-h-nav_page_header_web_desktop max-h-nav_page_header_web_mobile max-h-nav_page_toolbar_ios0 max-h-nav_page_toolbar_ios1 max-h-nav_page_toolbar_web_desktop max-h-nav_page_toolbar_web_mobile max-h-nav_tabs_ios0 max-h-nav_tabs_ios1 max-h-nav_tabs_web_desktop max-h-nav_tabs_web_mobile max-w-lo_ios0 max-w-lo_ios1 max-w-lo_textdesc_ios0 max-w-lo_textdesc_ios1 max-w-lo_textdesc_web_desktop max-w-lo_textdesc_web_mobile max-w-lo_web_desktop max-w-lo_web_mobile min-h-lo_bottom_button_ios0 min-h-lo_bottom_button_ios1 min-h-lo_bottom_button_web_desktop min-h-lo_bottom_button_web_mobile min-h-nav_page_header_ios0 min-h-nav_page_header_ios1 min-h-nav_page_header_web_desktop min-h-nav_page_header_web_mobile min-h-nav_page_toolbar_ios0 min-h-nav_page_toolbar_ios1 min-h-nav_page_toolbar_web_desktop min-h-nav_page_toolbar_web_mobile min-h-nav_tabs_ios0 min-h-nav_tabs_ios1 min-h-nav_tabs_web_desktop min-h-nav_tabs_web_mobile min-w-lo_ios0 min-w-lo_ios1 min-w-lo_textdesc_ios0 min-w-lo_textdesc_ios1 min-w-lo_textdesc_web_desktop min-w-lo_textdesc_web_mobile min-w-lo_web_desktop min-w-lo_web_mobile pb-h_lo_bottom_button_ios0 pb-h_lo_bottom_button_ios1 pb-h_lo_bottom_button_web_desktop pb-h_lo_bottom_button_web_mobile pb-h_nav_page_header_ios0 pb-h_nav_page_header_ios1 pb-h_nav_page_header_web_desktop pb-h_nav_page_header_web_mobile pb-h_nav_page_toolbar_ios0 pb-h_nav_page_toolbar_ios1 pb-h_nav_page_toolbar_web_desktop pb-h_nav_page_toolbar_web_mobile pb-h_nav_tabs_ios0 pb-h_nav_tabs_ios1 pb-h_nav_tabs_web_desktop pb-h_nav_tabs_web_mobile pl-w_lo_ios0 pl-w_lo_ios1 pl-w_lo_textdesc_ios0 pl-w_lo_textdesc_ios1 pl-w_lo_textdesc_web_desktop pl-w_lo_textdesc_web_mobile pl-w_lo_web_desktop pl-w_lo_web_mobile pr-w_lo_ios0 pr-w_lo_ios1 pr-w_lo_textdesc_ios0 pr-w_lo_textdesc_ios1 pr-w_lo_textdesc_web_desktop pr-w_lo_textdesc_web_mobile pr-w_lo_web_desktop pr-w_lo_web_mobile pt-h_lo_bottom_button_ios0 pt-h_lo_bottom_button_ios1 pt-h_lo_bottom_button_web_desktop pt-h_lo_bottom_button_web_mobile pt-h_nav_page_header_ios0 pt-h_nav_page_header_ios1 pt-h_nav_page_header_web_desktop pt-h_nav_page_header_web_mobile pt-h_nav_page_toolbar_ios0 pt-h_nav_page_toolbar_ios1 pt-h_nav_page_toolbar_web_desktop pt-h_nav_page_toolbar_web_mobile pt-h_nav_tabs_ios0 pt-h_nav_tabs_ios1 pt-h_nav_tabs_web_desktop pt-h_nav_tabs_web_mobile right-lo_ios0 right-lo_ios1 right-lo_textdesc_ios0 right-lo_textdesc_ios1 right-lo_textdesc_web_desktop right-lo_textdesc_web_mobile right-lo_web_desktop right-lo_web_mobile text-[12px] text-[15px] text-[16px] text-[18px] text-[19px] text-[20px] text-[21px] text-[23px] text-[24px] text-[26px] text-[27px] text-[28px] text-[30px] text-[36px] text-[40px] text-layer-0-glyph text-layer-0-glyph-hl text-layer-0-glyph-hl_a text-layer-0-glyph-label text-layer-0-glyph-shade text-layer-0-glyph_a text-layer-0-glyph_pl text-layer-0-surface text-layer-0-surface-blur text-layer-0-surface-edge text-layer-0-surface_a text-layer-0-surface_w text-layer-1-glyph text-layer-1-glyph-hl text-layer-1-glyph-hl_a text-layer-1-glyph-label text-layer-1-glyph-shade text-layer-1-glyph_a text-layer-1-glyph_d text-layer-1-glyph_pl text-layer-1-surface text-layer-1-surface-edge text-layer-1-surface-err text-layer-1-surface-focus text-layer-1-surface_a text-layer-2-glyph text-layer-2-glyph-hl text-layer-2-glyph-hl_a text-layer-2-glyph-shade text-layer-2-glyph_a text-layer-2-glyph_d text-layer-2-glyph_pl text-layer-2-surface text-layer-2-surface-edge text-layer-2-surface_a text-radroots-accent-focus top-lo_bottom_button_ios0 top-lo_bottom_button_ios1 top-lo_bottom_button_web_desktop top-lo_bottom_button_web_mobile top-nav_page_header_ios0 top-nav_page_header_ios1 top-nav_page_header_web_desktop top-nav_page_header_web_mobile top-nav_page_toolbar_ios0 top-nav_page_toolbar_ios1 top-nav_page_toolbar_web_desktop top-nav_page_toolbar_web_mobile top-nav_tabs_ios0 top-nav_tabs_ios1 top-nav_tabs_web_desktop top-nav_tabs_web_mobile translate-x-w_lo_ios0 translate-x-w_lo_ios1 translate-x-w_lo_textdesc_ios0 translate-x-w_lo_textdesc_ios1 translate-x-w_lo_textdesc_web_desktop translate-x-w_lo_textdesc_web_mobile translate-x-w_lo_web_desktop translate-x-w_lo_web_mobile translate-y-h_lo_bottom_button_ios0 translate-y-h_lo_bottom_button_ios1 translate-y-h_lo_bottom_button_web_desktop translate-y-h_lo_bottom_button_web_mobile translate-y-h_nav_page_header_ios0 translate-y-h_nav_page_header_ios1 translate-y-h_nav_page_header_web_desktop translate-y-h_nav_page_header_web_mobile translate-y-h_nav_page_toolbar_ios0 translate-y-h_nav_page_toolbar_ios1 translate-y-h_nav_page_toolbar_web_desktop translate-y-h_nav_page_toolbar_web_mobile translate-y-h_nav_tabs_ios0 translate-y-h_nav_tabs_ios1 translate-y-h_nav_tabs_web_desktop translate-y-h_nav_tabs_web_mobile w-[12px] w-[16px] w-[17px] w-[18px] w-[20px] w-[22px] w-[24px] w-[28px] w-[36px] w-lo_ios0 w-lo_ios1 w-lo_textdesc_ios0 w-lo_textdesc_ios1 w-lo_textdesc_web_desktop w-lo_textdesc_web_mobile w-lo_web_desktop w-lo_web_mobile"></div> -\ No newline at end of file +<div class="hidden -bottom-lo_bottom_button_ios0 -bottom-lo_bottom_button_ios1 -bottom-lo_bottom_button_web0 -bottom-lo_bottom_button_web_desktop -bottom-lo_bottom_button_web_ios0 -bottom-lo_bottom_button_web_ios1 -bottom-lo_bottom_button_web_mobile -bottom-lo_view_main_ios0 -bottom-lo_view_main_ios1 -bottom-lo_view_main_web0 -bottom-lo_view_main_web_desktop -bottom-lo_view_main_web_ios0 -bottom-lo_view_main_web_ios1 -bottom-lo_view_main_web_mobile -bottom-nav_page_header_ios0 -bottom-nav_page_header_ios1 -bottom-nav_page_header_web0 -bottom-nav_page_header_web_desktop -bottom-nav_page_header_web_ios0 -bottom-nav_page_header_web_ios1 -bottom-nav_page_header_web_mobile -bottom-nav_page_toolbar_ios0 -bottom-nav_page_toolbar_ios1 -bottom-nav_page_toolbar_web0 -bottom-nav_page_toolbar_web_desktop -bottom-nav_page_toolbar_web_ios0 -bottom-nav_page_toolbar_web_ios1 -bottom-nav_page_toolbar_web_mobile -bottom-nav_tabs_ios0 -bottom-nav_tabs_ios1 -bottom-nav_tabs_web0 -bottom-nav_tabs_web_desktop -bottom-nav_tabs_web_ios0 -bottom-nav_tabs_web_ios1 -bottom-nav_tabs_web_mobile -left-lo_ios0 -left-lo_ios1 -left-lo_textdesc_ios0 -left-lo_textdesc_ios1 -left-lo_textdesc_web0 -left-lo_textdesc_web_desktop -left-lo_textdesc_web_ios0 -left-lo_textdesc_web_ios1 -left-lo_textdesc_web_mobile -left-lo_web0 -left-lo_web_desktop -left-lo_web_ios0 -left-lo_web_ios1 -left-lo_web_mobile -right-lo_ios0 -right-lo_ios1 -right-lo_textdesc_ios0 -right-lo_textdesc_ios1 -right-lo_textdesc_web0 -right-lo_textdesc_web_desktop -right-lo_textdesc_web_ios0 -right-lo_textdesc_web_ios1 -right-lo_textdesc_web_mobile -right-lo_web0 -right-lo_web_desktop -right-lo_web_ios0 -right-lo_web_ios1 -right-lo_web_mobile -top-lo_bottom_button_ios0 -top-lo_bottom_button_ios1 -top-lo_bottom_button_web0 -top-lo_bottom_button_web_desktop -top-lo_bottom_button_web_ios0 -top-lo_bottom_button_web_ios1 -top-lo_bottom_button_web_mobile -top-lo_view_main_ios0 -top-lo_view_main_ios1 -top-lo_view_main_web0 -top-lo_view_main_web_desktop -top-lo_view_main_web_ios0 -top-lo_view_main_web_ios1 -top-lo_view_main_web_mobile -top-nav_page_header_ios0 -top-nav_page_header_ios1 -top-nav_page_header_web0 -top-nav_page_header_web_desktop -top-nav_page_header_web_ios0 -top-nav_page_header_web_ios1 -top-nav_page_header_web_mobile -top-nav_page_toolbar_ios0 -top-nav_page_toolbar_ios1 -top-nav_page_toolbar_web0 -top-nav_page_toolbar_web_desktop -top-nav_page_toolbar_web_ios0 -top-nav_page_toolbar_web_ios1 -top-nav_page_toolbar_web_mobile -top-nav_tabs_ios0 -top-nav_tabs_ios1 -top-nav_tabs_web0 -top-nav_tabs_web_desktop -top-nav_tabs_web_ios0 -top-nav_tabs_web_ios1 -top-nav_tabs_web_mobile -translate-x-w_lo_ios0 -translate-x-w_lo_ios1 -translate-x-w_lo_textdesc_ios0 -translate-x-w_lo_textdesc_ios1 -translate-x-w_lo_textdesc_web0 -translate-x-w_lo_textdesc_web_desktop -translate-x-w_lo_textdesc_web_ios0 -translate-x-w_lo_textdesc_web_ios1 -translate-x-w_lo_textdesc_web_mobile -translate-x-w_lo_web0 -translate-x-w_lo_web_desktop -translate-x-w_lo_web_ios0 -translate-x-w_lo_web_ios1 -translate-x-w_lo_web_mobile -translate-y-h_lo_bottom_button_ios0 -translate-y-h_lo_bottom_button_ios1 -translate-y-h_lo_bottom_button_web0 -translate-y-h_lo_bottom_button_web_desktop -translate-y-h_lo_bottom_button_web_ios0 -translate-y-h_lo_bottom_button_web_ios1 -translate-y-h_lo_bottom_button_web_mobile -translate-y-h_lo_view_main_ios0 -translate-y-h_lo_view_main_ios1 -translate-y-h_lo_view_main_web0 -translate-y-h_lo_view_main_web_desktop -translate-y-h_lo_view_main_web_ios0 -translate-y-h_lo_view_main_web_ios1 -translate-y-h_lo_view_main_web_mobile -translate-y-h_nav_page_header_ios0 -translate-y-h_nav_page_header_ios1 -translate-y-h_nav_page_header_web0 -translate-y-h_nav_page_header_web_desktop -translate-y-h_nav_page_header_web_ios0 -translate-y-h_nav_page_header_web_ios1 -translate-y-h_nav_page_header_web_mobile -translate-y-h_nav_page_toolbar_ios0 -translate-y-h_nav_page_toolbar_ios1 -translate-y-h_nav_page_toolbar_web0 -translate-y-h_nav_page_toolbar_web_desktop -translate-y-h_nav_page_toolbar_web_ios0 -translate-y-h_nav_page_toolbar_web_ios1 -translate-y-h_nav_page_toolbar_web_mobile -translate-y-h_nav_tabs_ios0 -translate-y-h_nav_tabs_ios1 -translate-y-h_nav_tabs_web0 -translate-y-h_nav_tabs_web_desktop -translate-y-h_nav_tabs_web_ios0 -translate-y-h_nav_tabs_web_ios1 -translate-y-h_nav_tabs_web_mobile active:bg-layer-0-glyph active:bg-layer-0-glyph-hl active:bg-layer-0-glyph-hl_a active:bg-layer-0-glyph-label active:bg-layer-0-glyph-shade active:bg-layer-0-glyph_a active:bg-layer-0-glyph_pl active:bg-layer-0-surface active:bg-layer-0-surface-blur active:bg-layer-0-surface-edge active:bg-layer-0-surface_a active:bg-layer-0-surface_w active:bg-layer-1-glyph active:bg-layer-1-glyph-hl active:bg-layer-1-glyph-hl_a active:bg-layer-1-glyph-label active:bg-layer-1-glyph-shade active:bg-layer-1-glyph_a active:bg-layer-1-glyph_d active:bg-layer-1-glyph_pl active:bg-layer-1-surface active:bg-layer-1-surface-edge active:bg-layer-1-surface-err active:bg-layer-1-surface-focus active:bg-layer-1-surface_a active:bg-layer-2-glyph active:bg-layer-2-glyph-hl active:bg-layer-2-glyph-hl_a active:bg-layer-2-glyph-shade active:bg-layer-2-glyph_a active:bg-layer-2-glyph_d active:bg-layer-2-glyph_pl active:bg-layer-2-surface active:bg-layer-2-surface-edge active:bg-layer-2-surface_a active:bg-radroots-accent-focus active:border-layer-0-glyph active:border-layer-0-glyph-hl active:border-layer-0-glyph-hl_a active:border-layer-0-glyph-label active:border-layer-0-glyph-shade active:border-layer-0-glyph_a active:border-layer-0-glyph_pl active:border-layer-0-surface active:border-layer-0-surface-blur active:border-layer-0-surface-edge active:border-layer-0-surface_a active:border-layer-0-surface_w active:border-layer-1-glyph active:border-layer-1-glyph-hl active:border-layer-1-glyph-hl_a active:border-layer-1-glyph-label active:border-layer-1-glyph-shade active:border-layer-1-glyph_a active:border-layer-1-glyph_d active:border-layer-1-glyph_pl active:border-layer-1-surface active:border-layer-1-surface-edge active:border-layer-1-surface-err active:border-layer-1-surface-focus active:border-layer-1-surface_a active:border-layer-2-glyph active:border-layer-2-glyph-hl active:border-layer-2-glyph-hl_a active:border-layer-2-glyph-shade active:border-layer-2-glyph_a active:border-layer-2-glyph_d active:border-layer-2-glyph_pl active:border-layer-2-surface active:border-layer-2-surface-edge active:border-layer-2-surface_a active:border-radroots-accent-focus active:text-layer-0-glyph active:text-layer-0-glyph-hl active:text-layer-0-glyph-hl_a active:text-layer-0-glyph-label active:text-layer-0-glyph-shade active:text-layer-0-glyph_a active:text-layer-0-glyph_pl active:text-layer-0-surface active:text-layer-0-surface-blur active:text-layer-0-surface-edge active:text-layer-0-surface_a active:text-layer-0-surface_w active:text-layer-1-glyph active:text-layer-1-glyph-hl active:text-layer-1-glyph-hl_a active:text-layer-1-glyph-label active:text-layer-1-glyph-shade active:text-layer-1-glyph_a active:text-layer-1-glyph_d active:text-layer-1-glyph_pl active:text-layer-1-surface active:text-layer-1-surface-edge active:text-layer-1-surface-err active:text-layer-1-surface-focus active:text-layer-1-surface_a active:text-layer-2-glyph active:text-layer-2-glyph-hl active:text-layer-2-glyph-hl_a active:text-layer-2-glyph-shade active:text-layer-2-glyph_a active:text-layer-2-glyph_d active:text-layer-2-glyph_pl active:text-layer-2-surface active:text-layer-2-surface-edge active:text-layer-2-surface_a active:text-radroots-accent-focus bg-layer-0-glyph bg-layer-0-glyph-hl bg-layer-0-glyph-hl_a bg-layer-0-glyph-label bg-layer-0-glyph-shade bg-layer-0-glyph_a bg-layer-0-glyph_pl bg-layer-0-surface bg-layer-0-surface-blur bg-layer-0-surface-edge bg-layer-0-surface_a bg-layer-0-surface_w bg-layer-1-glyph bg-layer-1-glyph-hl bg-layer-1-glyph-hl_a bg-layer-1-glyph-label bg-layer-1-glyph-shade bg-layer-1-glyph_a bg-layer-1-glyph_d bg-layer-1-glyph_pl bg-layer-1-surface bg-layer-1-surface-edge bg-layer-1-surface-err bg-layer-1-surface-focus bg-layer-1-surface_a bg-layer-2-glyph bg-layer-2-glyph-hl bg-layer-2-glyph-hl_a bg-layer-2-glyph-shade bg-layer-2-glyph_a bg-layer-2-glyph_d bg-layer-2-glyph_pl bg-layer-2-surface bg-layer-2-surface-edge bg-layer-2-surface_a bg-radroots-accent-focus border-layer-0-glyph border-layer-0-glyph-hl border-layer-0-glyph-hl_a border-layer-0-glyph-label border-layer-0-glyph-shade border-layer-0-glyph_a border-layer-0-glyph_pl border-layer-0-surface border-layer-0-surface-blur border-layer-0-surface-edge border-layer-0-surface_a border-layer-0-surface_w border-layer-1-glyph border-layer-1-glyph-hl border-layer-1-glyph-hl_a border-layer-1-glyph-label border-layer-1-glyph-shade border-layer-1-glyph_a border-layer-1-glyph_d border-layer-1-glyph_pl border-layer-1-surface border-layer-1-surface-edge border-layer-1-surface-err border-layer-1-surface-focus border-layer-1-surface_a border-layer-2-glyph border-layer-2-glyph-hl border-layer-2-glyph-hl_a border-layer-2-glyph-shade border-layer-2-glyph_a border-layer-2-glyph_d border-layer-2-glyph_pl border-layer-2-surface border-layer-2-surface-edge border-layer-2-surface_a border-radroots-accent-focus bottom-lo_bottom_button_ios0 bottom-lo_bottom_button_ios1 bottom-lo_bottom_button_web0 bottom-lo_bottom_button_web_desktop bottom-lo_bottom_button_web_ios0 bottom-lo_bottom_button_web_ios1 bottom-lo_bottom_button_web_mobile bottom-lo_view_main_ios0 bottom-lo_view_main_ios1 bottom-lo_view_main_web0 bottom-lo_view_main_web_desktop bottom-lo_view_main_web_ios0 bottom-lo_view_main_web_ios1 bottom-lo_view_main_web_mobile bottom-nav_page_header_ios0 bottom-nav_page_header_ios1 bottom-nav_page_header_web0 bottom-nav_page_header_web_desktop bottom-nav_page_header_web_ios0 bottom-nav_page_header_web_ios1 bottom-nav_page_header_web_mobile bottom-nav_page_toolbar_ios0 bottom-nav_page_toolbar_ios1 bottom-nav_page_toolbar_web0 bottom-nav_page_toolbar_web_desktop bottom-nav_page_toolbar_web_ios0 bottom-nav_page_toolbar_web_ios1 bottom-nav_page_toolbar_web_mobile bottom-nav_tabs_ios0 bottom-nav_tabs_ios1 bottom-nav_tabs_web0 bottom-nav_tabs_web_desktop bottom-nav_tabs_web_ios0 bottom-nav_tabs_web_ios1 bottom-nav_tabs_web_mobile focus:bg-layer-0-glyph focus:bg-layer-0-glyph-hl focus:bg-layer-0-glyph-hl_a focus:bg-layer-0-glyph-label focus:bg-layer-0-glyph-shade focus:bg-layer-0-glyph_a focus:bg-layer-0-glyph_pl focus:bg-layer-0-surface focus:bg-layer-0-surface-blur focus:bg-layer-0-surface-edge focus:bg-layer-0-surface_a focus:bg-layer-0-surface_w focus:bg-layer-1-glyph focus:bg-layer-1-glyph-hl focus:bg-layer-1-glyph-hl_a focus:bg-layer-1-glyph-label focus:bg-layer-1-glyph-shade focus:bg-layer-1-glyph_a focus:bg-layer-1-glyph_d focus:bg-layer-1-glyph_pl focus:bg-layer-1-surface focus:bg-layer-1-surface-edge focus:bg-layer-1-surface-err focus:bg-layer-1-surface-focus focus:bg-layer-1-surface_a focus:bg-layer-2-glyph focus:bg-layer-2-glyph-hl focus:bg-layer-2-glyph-hl_a focus:bg-layer-2-glyph-shade focus:bg-layer-2-glyph_a focus:bg-layer-2-glyph_d focus:bg-layer-2-glyph_pl focus:bg-layer-2-surface focus:bg-layer-2-surface-edge focus:bg-layer-2-surface_a focus:bg-radroots-accent-focus focus:border-layer-0-glyph focus:border-layer-0-glyph-hl focus:border-layer-0-glyph-hl_a focus:border-layer-0-glyph-label focus:border-layer-0-glyph-shade focus:border-layer-0-glyph_a focus:border-layer-0-glyph_pl focus:border-layer-0-surface focus:border-layer-0-surface-blur focus:border-layer-0-surface-edge focus:border-layer-0-surface_a focus:border-layer-0-surface_w focus:border-layer-1-glyph focus:border-layer-1-glyph-hl focus:border-layer-1-glyph-hl_a focus:border-layer-1-glyph-label focus:border-layer-1-glyph-shade focus:border-layer-1-glyph_a focus:border-layer-1-glyph_d focus:border-layer-1-glyph_pl focus:border-layer-1-surface focus:border-layer-1-surface-edge focus:border-layer-1-surface-err focus:border-layer-1-surface-focus focus:border-layer-1-surface_a focus:border-layer-2-glyph focus:border-layer-2-glyph-hl focus:border-layer-2-glyph-hl_a focus:border-layer-2-glyph-shade focus:border-layer-2-glyph_a focus:border-layer-2-glyph_d focus:border-layer-2-glyph_pl focus:border-layer-2-surface focus:border-layer-2-surface-edge focus:border-layer-2-surface_a focus:border-radroots-accent-focus focus:text-layer-0-glyph focus:text-layer-0-glyph-hl focus:text-layer-0-glyph-hl_a focus:text-layer-0-glyph-label focus:text-layer-0-glyph-shade focus:text-layer-0-glyph_a focus:text-layer-0-glyph_pl focus:text-layer-0-surface focus:text-layer-0-surface-blur focus:text-layer-0-surface-edge focus:text-layer-0-surface_a focus:text-layer-0-surface_w focus:text-layer-1-glyph focus:text-layer-1-glyph-hl focus:text-layer-1-glyph-hl_a focus:text-layer-1-glyph-label focus:text-layer-1-glyph-shade focus:text-layer-1-glyph_a focus:text-layer-1-glyph_d focus:text-layer-1-glyph_pl focus:text-layer-1-surface focus:text-layer-1-surface-edge focus:text-layer-1-surface-err focus:text-layer-1-surface-focus focus:text-layer-1-surface_a focus:text-layer-2-glyph focus:text-layer-2-glyph-hl focus:text-layer-2-glyph-hl_a focus:text-layer-2-glyph-shade focus:text-layer-2-glyph_a focus:text-layer-2-glyph_d focus:text-layer-2-glyph_pl focus:text-layer-2-surface focus:text-layer-2-surface-edge focus:text-layer-2-surface_a focus:text-radroots-accent-focus group-active:bg-layer-0-glyph group-active:bg-layer-0-glyph-hl group-active:bg-layer-0-glyph-hl_a group-active:bg-layer-0-glyph-label group-active:bg-layer-0-glyph-shade group-active:bg-layer-0-glyph_a group-active:bg-layer-0-glyph_pl group-active:bg-layer-0-surface group-active:bg-layer-0-surface-blur group-active:bg-layer-0-surface-edge group-active:bg-layer-0-surface_a group-active:bg-layer-0-surface_w group-active:bg-layer-1-glyph group-active:bg-layer-1-glyph-hl group-active:bg-layer-1-glyph-hl_a group-active:bg-layer-1-glyph-label group-active:bg-layer-1-glyph-shade group-active:bg-layer-1-glyph_a group-active:bg-layer-1-glyph_d group-active:bg-layer-1-glyph_pl group-active:bg-layer-1-surface group-active:bg-layer-1-surface-edge group-active:bg-layer-1-surface-err group-active:bg-layer-1-surface-focus group-active:bg-layer-1-surface_a group-active:bg-layer-2-glyph group-active:bg-layer-2-glyph-hl group-active:bg-layer-2-glyph-hl_a group-active:bg-layer-2-glyph-shade group-active:bg-layer-2-glyph_a group-active:bg-layer-2-glyph_d group-active:bg-layer-2-glyph_pl group-active:bg-layer-2-surface group-active:bg-layer-2-surface-edge group-active:bg-layer-2-surface_a group-active:bg-radroots-accent-focus group-active:border-layer-0-glyph group-active:border-layer-0-glyph-hl group-active:border-layer-0-glyph-hl_a group-active:border-layer-0-glyph-label group-active:border-layer-0-glyph-shade group-active:border-layer-0-glyph_a group-active:border-layer-0-glyph_pl group-active:border-layer-0-surface group-active:border-layer-0-surface-blur group-active:border-layer-0-surface-edge group-active:border-layer-0-surface_a group-active:border-layer-0-surface_w group-active:border-layer-1-glyph group-active:border-layer-1-glyph-hl group-active:border-layer-1-glyph-hl_a group-active:border-layer-1-glyph-label group-active:border-layer-1-glyph-shade group-active:border-layer-1-glyph_a group-active:border-layer-1-glyph_d group-active:border-layer-1-glyph_pl group-active:border-layer-1-surface group-active:border-layer-1-surface-edge group-active:border-layer-1-surface-err group-active:border-layer-1-surface-focus group-active:border-layer-1-surface_a group-active:border-layer-2-glyph group-active:border-layer-2-glyph-hl group-active:border-layer-2-glyph-hl_a group-active:border-layer-2-glyph-shade group-active:border-layer-2-glyph_a group-active:border-layer-2-glyph_d group-active:border-layer-2-glyph_pl group-active:border-layer-2-surface group-active:border-layer-2-surface-edge group-active:border-layer-2-surface_a group-active:border-radroots-accent-focus group-active:text-layer-0-glyph group-active:text-layer-0-glyph-hl group-active:text-layer-0-glyph-hl_a group-active:text-layer-0-glyph-label group-active:text-layer-0-glyph-shade group-active:text-layer-0-glyph_a group-active:text-layer-0-glyph_pl group-active:text-layer-0-surface group-active:text-layer-0-surface-blur group-active:text-layer-0-surface-edge group-active:text-layer-0-surface_a group-active:text-layer-0-surface_w group-active:text-layer-1-glyph group-active:text-layer-1-glyph-hl group-active:text-layer-1-glyph-hl_a group-active:text-layer-1-glyph-label group-active:text-layer-1-glyph-shade group-active:text-layer-1-glyph_a group-active:text-layer-1-glyph_d group-active:text-layer-1-glyph_pl group-active:text-layer-1-surface group-active:text-layer-1-surface-edge group-active:text-layer-1-surface-err group-active:text-layer-1-surface-focus group-active:text-layer-1-surface_a group-active:text-layer-2-glyph group-active:text-layer-2-glyph-hl group-active:text-layer-2-glyph-hl_a group-active:text-layer-2-glyph-shade group-active:text-layer-2-glyph_a group-active:text-layer-2-glyph_d group-active:text-layer-2-glyph_pl group-active:text-layer-2-surface group-active:text-layer-2-surface-edge group-active:text-layer-2-surface_a group-active:text-radroots-accent-focus group-focus:bg-layer-0-glyph group-focus:bg-layer-0-glyph-hl group-focus:bg-layer-0-glyph-hl_a group-focus:bg-layer-0-glyph-label group-focus:bg-layer-0-glyph-shade group-focus:bg-layer-0-glyph_a group-focus:bg-layer-0-glyph_pl group-focus:bg-layer-0-surface group-focus:bg-layer-0-surface-blur group-focus:bg-layer-0-surface-edge group-focus:bg-layer-0-surface_a group-focus:bg-layer-0-surface_w group-focus:bg-layer-1-glyph group-focus:bg-layer-1-glyph-hl group-focus:bg-layer-1-glyph-hl_a group-focus:bg-layer-1-glyph-label group-focus:bg-layer-1-glyph-shade group-focus:bg-layer-1-glyph_a group-focus:bg-layer-1-glyph_d group-focus:bg-layer-1-glyph_pl group-focus:bg-layer-1-surface group-focus:bg-layer-1-surface-edge group-focus:bg-layer-1-surface-err group-focus:bg-layer-1-surface-focus group-focus:bg-layer-1-surface_a group-focus:bg-layer-2-glyph group-focus:bg-layer-2-glyph-hl group-focus:bg-layer-2-glyph-hl_a group-focus:bg-layer-2-glyph-shade group-focus:bg-layer-2-glyph_a group-focus:bg-layer-2-glyph_d group-focus:bg-layer-2-glyph_pl group-focus:bg-layer-2-surface group-focus:bg-layer-2-surface-edge group-focus:bg-layer-2-surface_a group-focus:bg-radroots-accent-focus group-focus:border-layer-0-glyph group-focus:border-layer-0-glyph-hl group-focus:border-layer-0-glyph-hl_a group-focus:border-layer-0-glyph-label group-focus:border-layer-0-glyph-shade group-focus:border-layer-0-glyph_a group-focus:border-layer-0-glyph_pl group-focus:border-layer-0-surface group-focus:border-layer-0-surface-blur group-focus:border-layer-0-surface-edge group-focus:border-layer-0-surface_a group-focus:border-layer-0-surface_w group-focus:border-layer-1-glyph group-focus:border-layer-1-glyph-hl group-focus:border-layer-1-glyph-hl_a group-focus:border-layer-1-glyph-label group-focus:border-layer-1-glyph-shade group-focus:border-layer-1-glyph_a group-focus:border-layer-1-glyph_d group-focus:border-layer-1-glyph_pl group-focus:border-layer-1-surface group-focus:border-layer-1-surface-edge group-focus:border-layer-1-surface-err group-focus:border-layer-1-surface-focus group-focus:border-layer-1-surface_a group-focus:border-layer-2-glyph group-focus:border-layer-2-glyph-hl group-focus:border-layer-2-glyph-hl_a group-focus:border-layer-2-glyph-shade group-focus:border-layer-2-glyph_a group-focus:border-layer-2-glyph_d group-focus:border-layer-2-glyph_pl group-focus:border-layer-2-surface group-focus:border-layer-2-surface-edge group-focus:border-layer-2-surface_a group-focus:border-radroots-accent-focus group-focus:text-layer-0-glyph group-focus:text-layer-0-glyph-hl group-focus:text-layer-0-glyph-hl_a group-focus:text-layer-0-glyph-label group-focus:text-layer-0-glyph-shade group-focus:text-layer-0-glyph_a group-focus:text-layer-0-glyph_pl group-focus:text-layer-0-surface group-focus:text-layer-0-surface-blur group-focus:text-layer-0-surface-edge group-focus:text-layer-0-surface_a group-focus:text-layer-0-surface_w group-focus:text-layer-1-glyph group-focus:text-layer-1-glyph-hl group-focus:text-layer-1-glyph-hl_a group-focus:text-layer-1-glyph-label group-focus:text-layer-1-glyph-shade group-focus:text-layer-1-glyph_a group-focus:text-layer-1-glyph_d group-focus:text-layer-1-glyph_pl group-focus:text-layer-1-surface group-focus:text-layer-1-surface-edge group-focus:text-layer-1-surface-err group-focus:text-layer-1-surface-focus group-focus:text-layer-1-surface_a group-focus:text-layer-2-glyph group-focus:text-layer-2-glyph-hl group-focus:text-layer-2-glyph-hl_a group-focus:text-layer-2-glyph-shade group-focus:text-layer-2-glyph_a group-focus:text-layer-2-glyph_d group-focus:text-layer-2-glyph_pl group-focus:text-layer-2-surface group-focus:text-layer-2-surface-edge group-focus:text-layer-2-surface_a group-focus:text-radroots-accent-focus h-[12px] h-[16px] h-[17px] h-[18px] h-[20px] h-[22px] h-[24px] h-[28px] h-[36px] h-lo_bottom_button_ios0 h-lo_bottom_button_ios1 h-lo_bottom_button_web0 h-lo_bottom_button_web_desktop h-lo_bottom_button_web_ios0 h-lo_bottom_button_web_ios1 h-lo_bottom_button_web_mobile h-lo_view_main_ios0 h-lo_view_main_ios1 h-lo_view_main_web0 h-lo_view_main_web_desktop h-lo_view_main_web_ios0 h-lo_view_main_web_ios1 h-lo_view_main_web_mobile h-nav_page_header_ios0 h-nav_page_header_ios1 h-nav_page_header_web0 h-nav_page_header_web_desktop h-nav_page_header_web_ios0 h-nav_page_header_web_ios1 h-nav_page_header_web_mobile h-nav_page_toolbar_ios0 h-nav_page_toolbar_ios1 h-nav_page_toolbar_web0 h-nav_page_toolbar_web_desktop h-nav_page_toolbar_web_ios0 h-nav_page_toolbar_web_ios1 h-nav_page_toolbar_web_mobile h-nav_tabs_ios0 h-nav_tabs_ios1 h-nav_tabs_web0 h-nav_tabs_web_desktop h-nav_tabs_web_ios0 h-nav_tabs_web_ios1 h-nav_tabs_web_mobile left-lo_ios0 left-lo_ios1 left-lo_textdesc_ios0 left-lo_textdesc_ios1 left-lo_textdesc_web0 left-lo_textdesc_web_desktop left-lo_textdesc_web_ios0 left-lo_textdesc_web_ios1 left-lo_textdesc_web_mobile left-lo_web0 left-lo_web_desktop left-lo_web_ios0 left-lo_web_ios1 left-lo_web_mobile max-h-lo_bottom_button_ios0 max-h-lo_bottom_button_ios1 max-h-lo_bottom_button_web0 max-h-lo_bottom_button_web_desktop max-h-lo_bottom_button_web_ios0 max-h-lo_bottom_button_web_ios1 max-h-lo_bottom_button_web_mobile max-h-lo_view_main_ios0 max-h-lo_view_main_ios1 max-h-lo_view_main_web0 max-h-lo_view_main_web_desktop max-h-lo_view_main_web_ios0 max-h-lo_view_main_web_ios1 max-h-lo_view_main_web_mobile max-h-nav_page_header_ios0 max-h-nav_page_header_ios1 max-h-nav_page_header_web0 max-h-nav_page_header_web_desktop max-h-nav_page_header_web_ios0 max-h-nav_page_header_web_ios1 max-h-nav_page_header_web_mobile max-h-nav_page_toolbar_ios0 max-h-nav_page_toolbar_ios1 max-h-nav_page_toolbar_web0 max-h-nav_page_toolbar_web_desktop max-h-nav_page_toolbar_web_ios0 max-h-nav_page_toolbar_web_ios1 max-h-nav_page_toolbar_web_mobile max-h-nav_tabs_ios0 max-h-nav_tabs_ios1 max-h-nav_tabs_web0 max-h-nav_tabs_web_desktop max-h-nav_tabs_web_ios0 max-h-nav_tabs_web_ios1 max-h-nav_tabs_web_mobile max-w-lo_ios0 max-w-lo_ios1 max-w-lo_textdesc_ios0 max-w-lo_textdesc_ios1 max-w-lo_textdesc_web0 max-w-lo_textdesc_web_desktop max-w-lo_textdesc_web_ios0 max-w-lo_textdesc_web_ios1 max-w-lo_textdesc_web_mobile max-w-lo_web0 max-w-lo_web_desktop max-w-lo_web_ios0 max-w-lo_web_ios1 max-w-lo_web_mobile min-h-lo_bottom_button_ios0 min-h-lo_bottom_button_ios1 min-h-lo_bottom_button_web0 min-h-lo_bottom_button_web_desktop min-h-lo_bottom_button_web_ios0 min-h-lo_bottom_button_web_ios1 min-h-lo_bottom_button_web_mobile min-h-lo_view_main_ios0 min-h-lo_view_main_ios1 min-h-lo_view_main_web0 min-h-lo_view_main_web_desktop min-h-lo_view_main_web_ios0 min-h-lo_view_main_web_ios1 min-h-lo_view_main_web_mobile min-h-nav_page_header_ios0 min-h-nav_page_header_ios1 min-h-nav_page_header_web0 min-h-nav_page_header_web_desktop min-h-nav_page_header_web_ios0 min-h-nav_page_header_web_ios1 min-h-nav_page_header_web_mobile min-h-nav_page_toolbar_ios0 min-h-nav_page_toolbar_ios1 min-h-nav_page_toolbar_web0 min-h-nav_page_toolbar_web_desktop min-h-nav_page_toolbar_web_ios0 min-h-nav_page_toolbar_web_ios1 min-h-nav_page_toolbar_web_mobile min-h-nav_tabs_ios0 min-h-nav_tabs_ios1 min-h-nav_tabs_web0 min-h-nav_tabs_web_desktop min-h-nav_tabs_web_ios0 min-h-nav_tabs_web_ios1 min-h-nav_tabs_web_mobile min-w-lo_ios0 min-w-lo_ios1 min-w-lo_textdesc_ios0 min-w-lo_textdesc_ios1 min-w-lo_textdesc_web0 min-w-lo_textdesc_web_desktop min-w-lo_textdesc_web_ios0 min-w-lo_textdesc_web_ios1 min-w-lo_textdesc_web_mobile min-w-lo_web0 min-w-lo_web_desktop min-w-lo_web_ios0 min-w-lo_web_ios1 min-w-lo_web_mobile pb-h_lo_bottom_button_ios0 pb-h_lo_bottom_button_ios1 pb-h_lo_bottom_button_web0 pb-h_lo_bottom_button_web_desktop pb-h_lo_bottom_button_web_ios0 pb-h_lo_bottom_button_web_ios1 pb-h_lo_bottom_button_web_mobile pb-h_lo_view_main_ios0 pb-h_lo_view_main_ios1 pb-h_lo_view_main_web0 pb-h_lo_view_main_web_desktop pb-h_lo_view_main_web_ios0 pb-h_lo_view_main_web_ios1 pb-h_lo_view_main_web_mobile pb-h_nav_page_header_ios0 pb-h_nav_page_header_ios1 pb-h_nav_page_header_web0 pb-h_nav_page_header_web_desktop pb-h_nav_page_header_web_ios0 pb-h_nav_page_header_web_ios1 pb-h_nav_page_header_web_mobile pb-h_nav_page_toolbar_ios0 pb-h_nav_page_toolbar_ios1 pb-h_nav_page_toolbar_web0 pb-h_nav_page_toolbar_web_desktop pb-h_nav_page_toolbar_web_ios0 pb-h_nav_page_toolbar_web_ios1 pb-h_nav_page_toolbar_web_mobile pb-h_nav_tabs_ios0 pb-h_nav_tabs_ios1 pb-h_nav_tabs_web0 pb-h_nav_tabs_web_desktop pb-h_nav_tabs_web_ios0 pb-h_nav_tabs_web_ios1 pb-h_nav_tabs_web_mobile pl-w_lo_ios0 pl-w_lo_ios1 pl-w_lo_textdesc_ios0 pl-w_lo_textdesc_ios1 pl-w_lo_textdesc_web0 pl-w_lo_textdesc_web_desktop pl-w_lo_textdesc_web_ios0 pl-w_lo_textdesc_web_ios1 pl-w_lo_textdesc_web_mobile pl-w_lo_web0 pl-w_lo_web_desktop pl-w_lo_web_ios0 pl-w_lo_web_ios1 pl-w_lo_web_mobile pr-w_lo_ios0 pr-w_lo_ios1 pr-w_lo_textdesc_ios0 pr-w_lo_textdesc_ios1 pr-w_lo_textdesc_web0 pr-w_lo_textdesc_web_desktop pr-w_lo_textdesc_web_ios0 pr-w_lo_textdesc_web_ios1 pr-w_lo_textdesc_web_mobile pr-w_lo_web0 pr-w_lo_web_desktop pr-w_lo_web_ios0 pr-w_lo_web_ios1 pr-w_lo_web_mobile pt-h_lo_bottom_button_ios0 pt-h_lo_bottom_button_ios1 pt-h_lo_bottom_button_web0 pt-h_lo_bottom_button_web_desktop pt-h_lo_bottom_button_web_ios0 pt-h_lo_bottom_button_web_ios1 pt-h_lo_bottom_button_web_mobile pt-h_lo_view_main_ios0 pt-h_lo_view_main_ios1 pt-h_lo_view_main_web0 pt-h_lo_view_main_web_desktop pt-h_lo_view_main_web_ios0 pt-h_lo_view_main_web_ios1 pt-h_lo_view_main_web_mobile pt-h_nav_page_header_ios0 pt-h_nav_page_header_ios1 pt-h_nav_page_header_web0 pt-h_nav_page_header_web_desktop pt-h_nav_page_header_web_ios0 pt-h_nav_page_header_web_ios1 pt-h_nav_page_header_web_mobile pt-h_nav_page_toolbar_ios0 pt-h_nav_page_toolbar_ios1 pt-h_nav_page_toolbar_web0 pt-h_nav_page_toolbar_web_desktop pt-h_nav_page_toolbar_web_ios0 pt-h_nav_page_toolbar_web_ios1 pt-h_nav_page_toolbar_web_mobile pt-h_nav_tabs_ios0 pt-h_nav_tabs_ios1 pt-h_nav_tabs_web0 pt-h_nav_tabs_web_desktop pt-h_nav_tabs_web_ios0 pt-h_nav_tabs_web_ios1 pt-h_nav_tabs_web_mobile right-lo_ios0 right-lo_ios1 right-lo_textdesc_ios0 right-lo_textdesc_ios1 right-lo_textdesc_web0 right-lo_textdesc_web_desktop right-lo_textdesc_web_ios0 right-lo_textdesc_web_ios1 right-lo_textdesc_web_mobile right-lo_web0 right-lo_web_desktop right-lo_web_ios0 right-lo_web_ios1 right-lo_web_mobile text-[12px] text-[15px] text-[16px] text-[18px] text-[19px] text-[20px] text-[21px] text-[23px] text-[24px] text-[26px] text-[27px] text-[28px] text-[30px] text-[36px] text-[40px] text-layer-0-glyph text-layer-0-glyph-hl text-layer-0-glyph-hl_a text-layer-0-glyph-label text-layer-0-glyph-shade text-layer-0-glyph_a text-layer-0-glyph_pl text-layer-0-surface text-layer-0-surface-blur text-layer-0-surface-edge text-layer-0-surface_a text-layer-0-surface_w text-layer-1-glyph text-layer-1-glyph-hl text-layer-1-glyph-hl_a text-layer-1-glyph-label text-layer-1-glyph-shade text-layer-1-glyph_a text-layer-1-glyph_d text-layer-1-glyph_pl text-layer-1-surface text-layer-1-surface-edge text-layer-1-surface-err text-layer-1-surface-focus text-layer-1-surface_a text-layer-2-glyph text-layer-2-glyph-hl text-layer-2-glyph-hl_a text-layer-2-glyph-shade text-layer-2-glyph_a text-layer-2-glyph_d text-layer-2-glyph_pl text-layer-2-surface text-layer-2-surface-edge text-layer-2-surface_a text-radroots-accent-focus top-lo_bottom_button_ios0 top-lo_bottom_button_ios1 top-lo_bottom_button_web0 top-lo_bottom_button_web_desktop top-lo_bottom_button_web_ios0 top-lo_bottom_button_web_ios1 top-lo_bottom_button_web_mobile top-lo_view_main_ios0 top-lo_view_main_ios1 top-lo_view_main_web0 top-lo_view_main_web_desktop top-lo_view_main_web_ios0 top-lo_view_main_web_ios1 top-lo_view_main_web_mobile top-nav_page_header_ios0 top-nav_page_header_ios1 top-nav_page_header_web0 top-nav_page_header_web_desktop top-nav_page_header_web_ios0 top-nav_page_header_web_ios1 top-nav_page_header_web_mobile top-nav_page_toolbar_ios0 top-nav_page_toolbar_ios1 top-nav_page_toolbar_web0 top-nav_page_toolbar_web_desktop top-nav_page_toolbar_web_ios0 top-nav_page_toolbar_web_ios1 top-nav_page_toolbar_web_mobile top-nav_tabs_ios0 top-nav_tabs_ios1 top-nav_tabs_web0 top-nav_tabs_web_desktop top-nav_tabs_web_ios0 top-nav_tabs_web_ios1 top-nav_tabs_web_mobile translate-x-w_lo_ios0 translate-x-w_lo_ios1 translate-x-w_lo_textdesc_ios0 translate-x-w_lo_textdesc_ios1 translate-x-w_lo_textdesc_web0 translate-x-w_lo_textdesc_web_desktop translate-x-w_lo_textdesc_web_ios0 translate-x-w_lo_textdesc_web_ios1 translate-x-w_lo_textdesc_web_mobile translate-x-w_lo_web0 translate-x-w_lo_web_desktop translate-x-w_lo_web_ios0 translate-x-w_lo_web_ios1 translate-x-w_lo_web_mobile translate-y-h_lo_bottom_button_ios0 translate-y-h_lo_bottom_button_ios1 translate-y-h_lo_bottom_button_web0 translate-y-h_lo_bottom_button_web_desktop translate-y-h_lo_bottom_button_web_ios0 translate-y-h_lo_bottom_button_web_ios1 translate-y-h_lo_bottom_button_web_mobile translate-y-h_lo_view_main_ios0 translate-y-h_lo_view_main_ios1 translate-y-h_lo_view_main_web0 translate-y-h_lo_view_main_web_desktop translate-y-h_lo_view_main_web_ios0 translate-y-h_lo_view_main_web_ios1 translate-y-h_lo_view_main_web_mobile translate-y-h_nav_page_header_ios0 translate-y-h_nav_page_header_ios1 translate-y-h_nav_page_header_web0 translate-y-h_nav_page_header_web_desktop translate-y-h_nav_page_header_web_ios0 translate-y-h_nav_page_header_web_ios1 translate-y-h_nav_page_header_web_mobile translate-y-h_nav_page_toolbar_ios0 translate-y-h_nav_page_toolbar_ios1 translate-y-h_nav_page_toolbar_web0 translate-y-h_nav_page_toolbar_web_desktop translate-y-h_nav_page_toolbar_web_ios0 translate-y-h_nav_page_toolbar_web_ios1 translate-y-h_nav_page_toolbar_web_mobile translate-y-h_nav_tabs_ios0 translate-y-h_nav_tabs_ios1 translate-y-h_nav_tabs_web0 translate-y-h_nav_tabs_web_desktop translate-y-h_nav_tabs_web_ios0 translate-y-h_nav_tabs_web_ios1 translate-y-h_nav_tabs_web_mobile w-[12px] w-[16px] w-[17px] w-[18px] w-[20px] w-[22px] w-[24px] w-[28px] w-[36px] w-lo_ios0 w-lo_ios1 w-lo_textdesc_ios0 w-lo_textdesc_ios1 w-lo_textdesc_web0 w-lo_textdesc_web_desktop w-lo_textdesc_web_ios0 w-lo_textdesc_web_ios1 w-lo_textdesc_web_mobile w-lo_web0 w-lo_web_desktop w-lo_web_ios0 w-lo_web_ios1 w-lo_web_mobile"></div> +\ No newline at end of file diff --git a/apps-lib/src/lib/components/lib/toast.svelte b/apps-lib/src/lib/components/lib/toast.svelte @@ -2,7 +2,7 @@ import { app_lo } from "$root"; import { fmt_cl, - get_layout, + get_layout_default, parse_layer, toast_layout_map, toast_style_map, @@ -15,7 +15,7 @@ const styles: IToastKind[] = $derived( basis?.styles ? basis.styles : [`simple`], ); - const layout = $derived(get_layout($app_lo)); + const layout = $derived(get_layout_default($app_lo)); const layer = $derived(basis.layer ? parse_layer(basis.layer) : 1); </script> diff --git a/apps-lib/src/lib/components/window/window-safari-listener.svelte b/apps-lib/src/lib/components/window/window-safari-listener.svelte @@ -0,0 +1,38 @@ +<script lang="ts"> + import { browser } from "$app/environment"; + import { lo_browser_safarinav } from "$lib/store/layout"; + import { handle_err } from "$root"; + import { onDestroy, onMount } from "svelte"; + + const HEIGHT_THRESHOLD = 60; + let h_prev = $state(0); + + onMount(async () => { + try { + handle_resize(); + if (browser) window.addEventListener(`resize`, handle_resize); + } catch (e) { + handle_err(e, `on_mount`); + } + }); + + onDestroy(async () => { + try { + if (browser) window.removeEventListener(`resize`, handle_resize); + } catch (e) { + handle_err(e, `on_destroy`); + } + }); + + const handle_resize = (): void => { + if (!browser) return; + const { innerHeight: h_curr } = window; + if (h_prev !== undefined) { + const h_del = Math.abs(h_curr - h_prev); + if (h_del > HEIGHT_THRESHOLD) { + lo_browser_safarinav.set(h_curr < h_prev); + } + } + h_prev = h_curr; + }; +</script> diff --git a/apps-lib/src/lib/features/farm/farms-add-casli-detail.svelte b/apps-lib/src/lib/features/farm/farms-add-casli-detail.svelte @@ -21,7 +21,7 @@ <CarouselItem> <div - class={`flex flex-col h-[100vh] w-full px-6 gap-4 justify-start items-center`} + class={`flex flex-col h-[100vh] w-full px-6 pt-2 gap-4 justify-start items-center`} > <FormLineLedger basis={{ diff --git a/apps-lib/src/lib/features/farm/farms-add-casli-map.svelte b/apps-lib/src/lib/features/farm/farms-add-casli-map.svelte @@ -4,6 +4,7 @@ Map, MapMarkerArea, WrapBorder, + app_lo, handle_err, } from "$root"; import { @@ -52,7 +53,7 @@ <div class={`flex flex-col h-[100vh] w-full px-6 gap-4 justify-start items-center`} > - <WrapBorder basis={{ classes: `h-[24rem] m_1:h-[80%]` }}> + <WrapBorder basis={{ classes: `h-lo_view_main_${$app_lo}` }}> <Map bind:map> {#if map_geop} <MapMarkerArea @@ -73,10 +74,14 @@ <div class={`flex flex-row w-full gap-2 justify-center items-center`} > - <p class={`font-sans font-[500] text-layer-0-glyph`}> + <p + class={`font-sans font-[500] text-layer-0-glyph tracking-tightest`} + > {farm_geop_lat} </p> - <p class={`font-sans font-[500] text-layer-0-glyph`}> + <p + class={`font-sans font-[500] text-layer-0-glyph tracking-tightest`} + > {farm_geop_lng} </p> </div> diff --git a/apps-lib/src/lib/index.ts b/apps-lib/src/lib/index.ts @@ -82,6 +82,7 @@ export { default as ImageUploadAddPhoto } from "./components/upload/image-upload export { default as ImageUploadButtonsAspect } from "./components/upload/image-upload-buttons-aspect.svelte" export { default as ImageUploadSimple } from "./components/upload/image-upload-simple.svelte" export { default as WindowResizeListener } from "./components/window/window-resize-listener.svelte" +export { default as WindowSafariListener } from "./components/window/window-safari-listener.svelte" export { default as FarmsAddCasliDetail } from "./features/farm/farms-add-casli-detail.svelte" export { default as FarmsAddCasliMap } from "./features/farm/farms-add-casli-map.svelte" export { default as FarmsDisplayLiEl } from "./features/farm/farms-display-li-el.svelte" @@ -92,6 +93,7 @@ export * from "./locale/i18n.js" export * from "./store/app.js" export * from "./store/client.js" export * from "./store/component.js" +export * from "./store/layout.js" export * from "./store/ndk.js" export * from "./util/carousel.js" export * from "./util/casl.js" diff --git a/apps-lib/src/lib/store/app.ts b/apps-lib/src/lib/store/app.ts @@ -1,8 +1,9 @@ import type { ColorMode, ThemeKey } from "@radroots/theme"; -import type { AppConfigType, AppLayoutKey, IToast } from "@radroots/util"; +import type { AppConfigType, AppLayoutKey, BrowserPlatformInfo, IToast } from "@radroots/util"; import { writable } from "svelte/store"; export const app_lo = writable<AppLayoutKey>(); +export const app_platform = writable<BrowserPlatformInfo | undefined>(undefined); export const app_cfg_type = writable<AppConfigType>(`personal`); export const app_init = writable<boolean>(false); export const app_tilt = writable<boolean>(false); diff --git a/apps-lib/src/lib/store/layout.ts b/apps-lib/src/lib/store/layout.ts @@ -0,0 +1,3 @@ +import { writable } from "svelte/store"; + +export const lo_browser_safarinav = writable<boolean>(false); diff --git a/apps-lib/src/lib/view/farms-add.svelte b/apps-lib/src/lib/view/farms-add.svelte @@ -1,5 +1,8 @@ <script lang="ts"> + import LayoutBottomButton from "$lib/components/layout/layout-bottom-button.svelte"; + import Fade from "$lib/components/lib/fade.svelte"; import { + app_platform, ButtonLayoutPair, Carousel, casl_dec, @@ -8,6 +11,7 @@ casl_init, FarmsAddCasliDetail, FarmsAddCasliMap, + Glyph, handle_err, LayoutView, liblocale, @@ -78,9 +82,15 @@ parse_geocode_address(map_geoc), ); + const handle_continue_0 = async (): Promise<void> => { + await casl_inc(); + }; + const handle_continue_1 = async (): Promise<void> => { - if (!map_geop) return; //@todo - if (!farm_geolocation_address) return; //@todo + if (!map_geop) + return void basis.lc_gui_alert(`No farm location provided.`); //@todo + if (!farm_geolocation_address) + return void basis.lc_gui_alert(`No farm address provided.`); //@todo const vp_obj_submit = vs_view_farms_add_submission.safeParse({ farm_name: val_farmname, @@ -94,7 +104,7 @@ if (!vp_obj_submit.success) { return void basis.lc_gui_alert( `Please correct the following errors: ${vp_obj_submit.error}`, - ); + ); //@todo } loading = true; await basis.lc_submit({ data_s: vp_obj_submit.data }); @@ -103,15 +113,18 @@ const handle_continue = async (): Promise<void> => { switch ($casl_i) { + case 0: + return await handle_continue_0(); case 1: - return handle_continue_1(); - default: - return await casl_inc(); + return await handle_continue_1(); } }; const handle_back = async (): Promise<void> => { - await casl_dec(); + switch ($casl_i) { + default: + return await casl_dec(); + } }; </script> @@ -123,7 +136,43 @@ callback_route: basis.callback_route, }, }} - /> + > + {#snippet header_option()} + {#if $casl_i > 0} + <Fade> + <button + class={`flex flex-row pr-3 justify-center items-center`} + onclick={async () => { + await handle_back(); + }} + > + <p + class={`font-sans font-[600] text-lg text-layer-0-glyph`} + > + {`${$lls(`common.back`)}`} + </p> + </button> + </Fade> + {/if} + <button + class={`flex flex-row justify-center items-center`} + onclick={async () => { + await handle_continue(); + }} + > + <p class={`font-sans font-[600] text-lg text-layer-0-glyph-hl`}> + {`${$lls(`common.details`)}`} + </p> + <Glyph + basis={{ + classes: `text-layer-0-glyph-hl`, + dim: `md`, + key: `caret-right`, + }} + /> + </button> + {/snippet} + </PageToolbar> <Carousel> <FarmsAddCasliMap bind:map_geop @@ -144,9 +193,9 @@ {farm_geop_lng} /> </Carousel> - <div - class="absolute bottom-4 left-0 flex flex-row w-full gap-1 justify-center items-center" - > +</LayoutView> +{#if $app_platform?.browser !== `safari`} + <LayoutBottomButton> <ButtonLayoutPair basis={{ continue: { @@ -161,5 +210,10 @@ }, }} /> - </div> -</LayoutView> + </LayoutBottomButton> +{/if} +<!--<div + class={`absolute bottom-lo_bottom_button_${$app_lo} left-0 flex flex-row w-full gap-1 justify-center items-center`} + > + + </div>--> diff --git a/apps-lib/src/lib/view/farms-products-add.svelte b/apps-lib/src/lib/view/farms-products-add.svelte @@ -1,6 +1,5 @@ <script lang="ts"> import { - app_lo, ButtonHorizontalPairSlide, ButtonRound, Carousel, @@ -385,7 +384,7 @@ }; </script> -<LayoutView basis={{ classes: `pb-h_lo_bottom_button_${$app_lo}` }}> +<LayoutView basis={{ classes: `` }}> <PageToolbar basis={{ header: { @@ -441,7 +440,6 @@ }} /> </div> - <Carousel> <CarouselItem basis={{ classes: `gap-4` }}> <FormEntrySelectInput