From 93bc82bd36f5046bc829e119c047ba7abc270bf9 Mon Sep 17 00:00:00 2001 From: rzmk <30333942+rzmk@users.noreply.github.com> Date: Thu, 20 Jun 2024 20:13:34 -0400 Subject: [PATCH] docs: add WASM library demo using Vite & React --- README.md | 2 +- czv-wasm/README.md | 4 +- czv-wasm/examples/web-demo/.eslintrc.cjs | 18 ++++ czv-wasm/examples/web-demo/.gitignore | 24 ++++++ czv-wasm/examples/web-demo/README.md | 24 +++++- czv-wasm/examples/web-demo/bun.lockb | Bin 0 -> 115286 bytes czv-wasm/examples/web-demo/components.json | 17 ++++ czv-wasm/examples/web-demo/index.html | 48 ++--------- czv-wasm/examples/web-demo/package.json | 40 +++++++++ czv-wasm/examples/web-demo/pico.min.css | 4 - czv-wasm/examples/web-demo/postcss.config.js | 6 ++ czv-wasm/examples/web-demo/preview.png | Bin 0 -> 28910 bytes czv-wasm/examples/web-demo/script.js | 27 ------ czv-wasm/examples/web-demo/script.ts | 34 -------- czv-wasm/examples/web-demo/src/App.css | 42 +++++++++ czv-wasm/examples/web-demo/src/App.tsx | 80 ++++++++++++++++++ .../web-demo/src/components/ui/input.tsx | 25 ++++++ .../web-demo/src/components/ui/label.tsx | 24 ++++++ czv-wasm/examples/web-demo/src/index.css | 76 +++++++++++++++++ czv-wasm/examples/web-demo/src/lib/utils.ts | 6 ++ czv-wasm/examples/web-demo/src/main.tsx | 10 +++ czv-wasm/examples/web-demo/src/vite-env.d.ts | 1 + czv-wasm/examples/web-demo/tailwind.config.js | 77 +++++++++++++++++ czv-wasm/examples/web-demo/tsconfig.json | 30 +++++++ czv-wasm/examples/web-demo/tsconfig.node.json | 11 +++ czv-wasm/examples/web-demo/vite.config.ts | 13 +++ czv-wasm/src/lib.rs | 2 +- 27 files changed, 534 insertions(+), 111 deletions(-) create mode 100644 czv-wasm/examples/web-demo/.eslintrc.cjs create mode 100644 czv-wasm/examples/web-demo/.gitignore create mode 100755 czv-wasm/examples/web-demo/bun.lockb create mode 100644 czv-wasm/examples/web-demo/components.json create mode 100644 czv-wasm/examples/web-demo/package.json delete mode 100644 czv-wasm/examples/web-demo/pico.min.css create mode 100644 czv-wasm/examples/web-demo/postcss.config.js create mode 100644 czv-wasm/examples/web-demo/preview.png delete mode 100644 czv-wasm/examples/web-demo/script.js delete mode 100644 czv-wasm/examples/web-demo/script.ts create mode 100644 czv-wasm/examples/web-demo/src/App.css create mode 100644 czv-wasm/examples/web-demo/src/App.tsx create mode 100644 czv-wasm/examples/web-demo/src/components/ui/input.tsx create mode 100644 czv-wasm/examples/web-demo/src/components/ui/label.tsx create mode 100644 czv-wasm/examples/web-demo/src/index.css create mode 100644 czv-wasm/examples/web-demo/src/lib/utils.ts create mode 100644 czv-wasm/examples/web-demo/src/main.tsx create mode 100644 czv-wasm/examples/web-demo/src/vite-env.d.ts create mode 100644 czv-wasm/examples/web-demo/tailwind.config.js create mode 100644 czv-wasm/examples/web-demo/tsconfig.json create mode 100644 czv-wasm/examples/web-demo/tsconfig.node.json create mode 100644 czv-wasm/examples/web-demo/vite.config.ts diff --git a/README.md b/README.md index 7946a60..eb785ca 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Or use `npm`, `pnpm`, or `yarn` instead of `bun`. The following example is written in TypeScript: ```ts -import init, * as czv from "czv"; +import init, * as czv from "czv-wasm"; // Must run `await init()` or `initSync()` first for web use await init(); diff --git a/czv-wasm/README.md b/czv-wasm/README.md index e256a0d..6e5cbde 100644 --- a/czv-wasm/README.md +++ b/czv-wasm/README.md @@ -20,7 +20,7 @@ Or use `npm`, `pnpm`, or `yarn` instead of `bun`. The following example is written in TypeScript: ```ts -import init, * as czv from "czv"; +import init, * as czv from "czv-wasm"; // Must run `await init()` or `initSync()` first for web use await init(); @@ -48,7 +48,7 @@ cargo install wasm-pack ### Build WASM for web ```bash -wasm-pack build --release --target web --out-name czv +wasm-pack build --release --target web ``` **Note**: Currently you must modify the `pkg/package.json` by replacing the name from `czv-wasm` to `czv`. diff --git a/czv-wasm/examples/web-demo/.eslintrc.cjs b/czv-wasm/examples/web-demo/.eslintrc.cjs new file mode 100644 index 0000000..d6c9537 --- /dev/null +++ b/czv-wasm/examples/web-demo/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/czv-wasm/examples/web-demo/.gitignore b/czv-wasm/examples/web-demo/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/czv-wasm/examples/web-demo/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/czv-wasm/examples/web-demo/README.md b/czv-wasm/examples/web-demo/README.md index 7427c8e..e682378 100644 --- a/czv-wasm/examples/web-demo/README.md +++ b/czv-wasm/examples/web-demo/README.md @@ -1,7 +1,25 @@ -# czv for WebAssembly web demo +# czv - web-demo -View `index.html` in a web browser and import a CSV file. +Demo website for the [czv](https://github.com/rzmk/czv) WebAssembly library built with Vite & React. + +![Preview image](preview.png) ## Development -If you want to modify the TypeScript code then after you save your modifications you must run `tsc script.ts --module es2022 --target es2022` to generate a compatible `script.js` file. +1. Install the packages: + +```bash +bun install +``` + +2. Build the site: + +```bash +bun run build +``` + +3. Serve the site: + +```bash +bun preview +``` diff --git a/czv-wasm/examples/web-demo/bun.lockb b/czv-wasm/examples/web-demo/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..9404cafa8081637eb4e0aa99b9fa506a146d46a7 GIT binary patch literal 115286 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 - + + - - - - czv demo + + + + czv - WebAssembly library demo (using Vite & React) - -
-

czv playground

- -
-

Import a CSV file and get statistical data from running czv in your - browser using WASM.

- - - - - - - - - - - - - - - - - - - -
Output typeOutput
Row count
Column count
- + +
+ \ No newline at end of file diff --git a/czv-wasm/examples/web-demo/package.json b/czv-wasm/examples/web-demo/package.json new file mode 100644 index 0000000..035a632 --- /dev/null +++ b/czv-wasm/examples/web-demo/package.json @@ -0,0 +1,40 @@ +{ + "name": "web-demo", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@radix-ui/react-label": "^2.1.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "czv-wasm": "^0.0.0", + "lucide-react": "^0.395.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@types/node": "^20.14.7", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "autoprefixer": "^10.4.19", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "postcss": "^8.4.38", + "tailwindcss": "^3.4.4", + "typescript": "^5.2.2", + "vite": "^5.2.0", + "vite-plugin-wasm-pack": "0.1.11" + } +} diff --git a/czv-wasm/examples/web-demo/pico.min.css b/czv-wasm/examples/web-demo/pico.min.css deleted file mode 100644 index 5928ed7..0000000 --- a/czv-wasm/examples/web-demo/pico.min.css +++ /dev/null @@ -1,4 +0,0 @@ -@charset "UTF-8";/*! - * Pico CSS ✨ v2.0.6 (https://picocss.com) - * Copyright 2019-2024 - Licensed under MIT - */:root{--pico-font-family-emoji:"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--pico-font-family-sans-serif:system-ui,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,Helvetica,Arial,"Helvetica Neue",sans-serif,var(--pico-font-family-emoji);--pico-font-family-monospace:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace,var(--pico-font-family-emoji);--pico-font-family:var(--pico-font-family-sans-serif);--pico-line-height:1.5;--pico-font-weight:400;--pico-font-size:100%;--pico-text-underline-offset:0.1rem;--pico-border-radius:0.25rem;--pico-border-width:0.0625rem;--pico-outline-width:0.125rem;--pico-transition:0.2s ease-in-out;--pico-spacing:1rem;--pico-typography-spacing-vertical:1rem;--pico-block-spacing-vertical:var(--pico-spacing);--pico-block-spacing-horizontal:var(--pico-spacing);--pico-grid-column-gap:var(--pico-spacing);--pico-grid-row-gap:var(--pico-spacing);--pico-form-element-spacing-vertical:0.75rem;--pico-form-element-spacing-horizontal:1rem;--pico-group-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-primary-focus);--pico-group-box-shadow-focus-with-input:0 0 0 0.0625rem var(--pico-form-element-border-color);--pico-modal-overlay-backdrop-filter:blur(0.375rem);--pico-nav-element-spacing-vertical:1rem;--pico-nav-element-spacing-horizontal:0.5rem;--pico-nav-link-spacing-vertical:0.5rem;--pico-nav-link-spacing-horizontal:0.5rem;--pico-nav-breadcrumb-divider:">";--pico-icon-checkbox:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-minus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");--pico-icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-date:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");--pico-icon-time:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");--pico-icon-close:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--pico-icon-loading:url("data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='rgb(136, 145, 164)' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E")}@media (min-width:576px){:root{--pico-font-size:106.25%}}@media (min-width:768px){:root{--pico-font-size:112.5%}}@media (min-width:1024px){:root{--pico-font-size:118.75%}}@media (min-width:1280px){:root{--pico-font-size:125%}}@media (min-width:1536px){:root{--pico-font-size:131.25%}}a{--pico-text-decoration:underline}a.contrast,a.secondary{--pico-text-decoration:underline}small{--pico-font-size:0.875em}h1,h2,h3,h4,h5,h6{--pico-font-weight:700}h1{--pico-font-size:2rem;--pico-line-height:1.125;--pico-typography-spacing-top:3rem}h2{--pico-font-size:1.75rem;--pico-line-height:1.15;--pico-typography-spacing-top:2.625rem}h3{--pico-font-size:1.5rem;--pico-line-height:1.175;--pico-typography-spacing-top:2.25rem}h4{--pico-font-size:1.25rem;--pico-line-height:1.2;--pico-typography-spacing-top:1.874rem}h5{--pico-font-size:1.125rem;--pico-line-height:1.225;--pico-typography-spacing-top:1.6875rem}h6{--pico-font-size:1rem;--pico-line-height:1.25;--pico-typography-spacing-top:1.5rem}tfoot td,tfoot th,thead td,thead th{--pico-font-weight:600;--pico-border-width:0.1875rem}code,kbd,pre,samp{--pico-font-family:var(--pico-font-family-monospace)}kbd{--pico-font-weight:bolder}:where(select,textarea),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-outline-width:0.0625rem}[type=search]{--pico-border-radius:5rem}[type=checkbox],[type=radio]{--pico-border-width:0.125rem}[type=checkbox][role=switch]{--pico-border-width:0.1875rem}details.dropdown summary:not([role=button]){--pico-outline-width:0.0625rem}nav details.dropdown summary:focus-visible{--pico-outline-width:0.125rem}[role=search]{--pico-border-radius:5rem}[role=group]:has(button.secondary:focus,[type=submit].secondary:focus,[type=button].secondary:focus,[role=button].secondary:focus),[role=search]:has(button.secondary:focus,[type=submit].secondary:focus,[type=button].secondary:focus,[role=button].secondary:focus){--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}[role=group]:has(button.contrast:focus,[type=submit].contrast:focus,[type=button].contrast:focus,[role=button].contrast:focus),[role=search]:has(button.contrast:focus,[type=submit].contrast:focus,[type=button].contrast:focus,[role=button].contrast:focus){--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-contrast-focus)}[role=group] [role=button],[role=group] [type=button],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=submit],[role=search] button{--pico-form-element-spacing-horizontal:2rem}details summary[role=button]:not(.outline)::after{filter:brightness(0) invert(1)}[aria-busy=true]:not(input,select,textarea):is(button,[type=submit],[type=button],[type=reset],[role=button]):not(.outline)::before{filter:brightness(0) invert(1)}:root:not([data-theme=dark]),[data-theme=light]{--pico-background-color:#fff;--pico-color:#373c44;--pico-text-selection-color:rgba(2, 154, 232, 0.25);--pico-muted-color:#646b79;--pico-muted-border-color:#e7eaf0;--pico-primary:#0172ad;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 114, 173, 0.5);--pico-primary-hover:#015887;--pico-primary-hover-background:#02659a;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(2, 154, 232, 0.5);--pico-primary-inverse:#fff;--pico-secondary:#5d6b89;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(93, 107, 137, 0.5);--pico-secondary-hover:#48536b;--pico-secondary-hover-background:#48536b;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(93, 107, 137, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#181c25;--pico-contrast-background:#181c25;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(24, 28, 37, 0.5);--pico-contrast-hover:#000;--pico-contrast-hover-background:#000;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-secondary-hover);--pico-contrast-focus:rgba(93, 107, 137, 0.25);--pico-contrast-inverse:#fff;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698),0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024),0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03),0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036),0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302),0.5rem 1rem 6rem rgba(129, 145, 181, 0.06),0 0 0 0.0625rem rgba(129, 145, 181, 0.015);--pico-h1-color:#2d3138;--pico-h2-color:#373c44;--pico-h3-color:#424751;--pico-h4-color:#4d535e;--pico-h5-color:#5c6370;--pico-h6-color:#646b79;--pico-mark-background-color:#fde7c0;--pico-mark-color:#0f1114;--pico-ins-color:#1d6a54;--pico-del-color:#883935;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#f3f5f7;--pico-code-color:#646b79;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#fbfcfc;--pico-form-element-selected-background-color:#dfe3eb;--pico-form-element-border-color:#cfd5e2;--pico-form-element-color:#23262c;--pico-form-element-placeholder-color:var(--pico-muted-color);--pico-form-element-active-background-color:#fff;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#b86a6b;--pico-form-element-invalid-active-border-color:#c84f48;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#4c9b8a;--pico-form-element-valid-active-border-color:#279977;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#bfc7d9;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#dfe3eb;--pico-range-active-border-color:#bfc7d9;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:var(--pico-background-color);--pico-card-border-color:var(--pico-muted-border-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#fbfcfc;--pico-dropdown-background-color:#fff;--pico-dropdown-border-color:#eff1f4;--pico-dropdown-box-shadow:var(--pico-box-shadow);--pico-dropdown-color:var(--pico-color);--pico-dropdown-hover-background-color:#eff1f4;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(232, 234, 237, 0.75);--pico-progress-background-color:#dfe3eb;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 155, 138)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200, 79, 72)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:light}:root:not([data-theme=dark]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]),[data-theme=light] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}@media only screen and (prefers-color-scheme:dark){:root:not([data-theme]){--pico-background-color:#13171f;--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 9, 12, 0.06),0 0 0 0.0625rem rgba(7, 9, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:#ce7e7b;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#1a1f28;--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#1c212c;--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:#1a1f28;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#964a50;--pico-form-element-invalid-active-border-color:#b7403b;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:#16896a;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#1a1f28;--pico-dropdown-background-color:#181c25;--pico-dropdown-border-color:#202632;--pico-dropdown-box-shadow:var(--pico-box-shadow);--pico-dropdown-color:var(--pico-color);--pico-dropdown-hover-background-color:#202632;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(8, 9, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:dark}:root:not([data-theme]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}:root:not([data-theme]) details summary[role=button].contrast:not(.outline)::after{filter:brightness(0)}:root:not([data-theme]) [aria-busy=true]:not(input,select,textarea).contrast:is(button,[type=submit],[type=button],[type=reset],[role=button]):not(.outline)::before{filter:brightness(0)}}[data-theme=dark]{--pico-background-color:#13171f;--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 9, 12, 0.06),0 0 0 0.0625rem rgba(7, 9, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:#ce7e7b;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#1a1f28;--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#1c212c;--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:#1a1f28;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#964a50;--pico-form-element-invalid-active-border-color:#b7403b;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:#16896a;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#1a1f28;--pico-dropdown-background-color:#181c25;--pico-dropdown-border-color:#202632;--pico-dropdown-box-shadow:var(--pico-box-shadow);--pico-dropdown-color:var(--pico-color);--pico-dropdown-hover-background-color:#202632;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(8, 9, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:dark}[data-theme=dark] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}[data-theme=dark] details summary[role=button].contrast:not(.outline)::after{filter:brightness(0)}[data-theme=dark] [aria-busy=true]:not(input,select,textarea).contrast:is(button,[type=submit],[type=button],[type=reset],[role=button]):not(.outline)::before{filter:brightness(0)}[type=checkbox],[type=radio],[type=range],progress{accent-color:var(--pico-primary)}*,::after,::before{box-sizing:border-box;background-repeat:no-repeat}::after,::before{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family);text-underline-offset:var(--pico-text-underline-offset);text-rendering:optimizeLegibility;overflow-wrap:break-word;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{width:100%;margin:0}main{display:block}body>footer,body>header,body>main{padding-block:var(--pico-block-spacing-vertical)}section{margin-bottom:var(--pico-block-spacing-vertical)}.container,.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--pico-spacing);padding-left:var(--pico-spacing)}@media (min-width:576px){.container{max-width:510px;padding-right:0;padding-left:0}}@media (min-width:768px){.container{max-width:700px}}@media (min-width:1024px){.container{max-width:950px}}@media (min-width:1280px){.container{max-width:1200px}}@media (min-width:1536px){.container{max-width:1450px}}.grid{grid-column-gap:var(--pico-grid-column-gap);grid-row-gap:var(--pico-grid-row-gap);display:grid;grid-template-columns:1fr}@media (min-width:768px){.grid{grid-template-columns:repeat(auto-fit,minmax(0%,1fr))}}.grid>*{min-width:0}.overflow-auto{overflow:auto}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-style:normal;font-weight:var(--pico-font-weight)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family)}h1{--pico-color:var(--pico-h1-color)}h2{--pico-color:var(--pico-h2-color)}h3{--pico-color:var(--pico-h3-color)}h4{--pico-color:var(--pico-h4-color)}h5{--pico-color:var(--pico-h5-color)}h6{--pico-color:var(--pico-h6-color)}:where(article,address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--pico-typography-spacing-top)}p{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup>*{margin-top:0;margin-bottom:0}hgroup>:not(:first-child):last-child{--pico-color:var(--pico-muted-color);--pico-font-weight:unset;font-size:1rem}:where(ol,ul) li{margin-bottom:calc(var(--pico-typography-spacing-vertical) * .25)}:where(dl,ol,ul) :where(dl,ol,ul){margin:0;margin-top:calc(var(--pico-typography-spacing-vertical) * .25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--pico-mark-background-color);color:var(--pico-mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--pico-typography-spacing-vertical) 0;padding:var(--pico-spacing);border-right:none;border-left:.25rem solid var(--pico-blockquote-border-color);border-inline-start:0.25rem solid var(--pico-blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--pico-typography-spacing-vertical) * .5);color:var(--pico-blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--pico-ins-color);text-decoration:none}del{color:var(--pico-del-color)}::-moz-selection{background-color:var(--pico-text-selection-color)}::selection{background-color:var(--pico-text-selection-color)}:where(a:not([role=button])),[role=link]{--pico-color:var(--pico-primary);--pico-background-color:transparent;--pico-underline:var(--pico-primary-underline);outline:0;background-color:var(--pico-background-color);color:var(--pico-color);-webkit-text-decoration:var(--pico-text-decoration);text-decoration:var(--pico-text-decoration);text-decoration-color:var(--pico-underline);text-underline-offset:0.125em;transition:background-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition)}:where(a:not([role=button])):is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-primary-hover);--pico-underline:var(--pico-primary-hover-underline);--pico-text-decoration:underline}:where(a:not([role=button])):focus-visible,[role=link]:focus-visible{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}:where(a:not([role=button])).secondary,[role=link].secondary{--pico-color:var(--pico-secondary);--pico-underline:var(--pico-secondary-underline)}:where(a:not([role=button])).secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link].secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-secondary-hover);--pico-underline:var(--pico-secondary-hover-underline)}:where(a:not([role=button])).contrast,[role=link].contrast{--pico-color:var(--pico-contrast);--pico-underline:var(--pico-contrast-underline)}:where(a:not([role=button])).contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link].contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-contrast-hover);--pico-underline:var(--pico-contrast-hover-underline)}a[role=button]{display:inline-block}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[role=button],[type=button],[type=file]::file-selector-button,[type=reset],[type=submit],button{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);--pico-color:var(--pico-primary-inverse);--pico-box-shadow:var(--pico-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:1rem;line-height:var(--pico-line-height);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}[role=button]:is(:hover,:active,:focus),[role=button]:is([aria-current]:not([aria-current=false])),[type=button]:is(:hover,:active,:focus),[type=button]:is([aria-current]:not([aria-current=false])),[type=file]::file-selector-button:is(:hover,:active,:focus),[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])),[type=reset]:is(:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false])),[type=submit]:is(:hover,:active,:focus),[type=submit]:is([aria-current]:not([aria-current=false])),button:is(:hover,:active,:focus),button:is([aria-current]:not([aria-current=false])){--pico-background-color:var(--pico-primary-hover-background);--pico-border-color:var(--pico-primary-hover-border);--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--pico-color:var(--pico-primary-inverse)}[role=button]:focus,[role=button]:is([aria-current]:not([aria-current=false])):focus,[type=button]:focus,[type=button]:is([aria-current]:not([aria-current=false])):focus,[type=file]::file-selector-button:focus,[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,[type=reset]:focus,[type=reset]:is([aria-current]:not([aria-current=false])):focus,[type=submit]:focus,[type=submit]:is([aria-current]:not([aria-current=false])):focus,button:focus,button:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}[type=button],[type=reset],[type=submit]{margin-bottom:var(--pico-spacing)}:is(button,[type=submit],[type=button],[role=button]).secondary,[type=file]::file-selector-button,[type=reset]{--pico-background-color:var(--pico-secondary-background);--pico-border-color:var(--pico-secondary-border);--pico-color:var(--pico-secondary-inverse);cursor:pointer}:is(button,[type=submit],[type=button],[role=button]).secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border);--pico-color:var(--pico-secondary-inverse)}:is(button,[type=submit],[type=button],[role=button]).secondary:focus,:is(button,[type=submit],[type=button],[role=button]).secondary:is([aria-current]:not([aria-current=false])):focus,[type=file]::file-selector-button:focus,[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,[type=reset]:focus,[type=reset]:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}:is(button,[type=submit],[type=button],[role=button]).contrast{--pico-background-color:var(--pico-contrast-background);--pico-border-color:var(--pico-contrast-border);--pico-color:var(--pico-contrast-inverse)}:is(button,[type=submit],[type=button],[role=button]).contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:var(--pico-contrast-hover-background);--pico-border-color:var(--pico-contrast-hover-border);--pico-color:var(--pico-contrast-inverse)}:is(button,[type=submit],[type=button],[role=button]).contrast:focus,:is(button,[type=submit],[type=button],[role=button]).contrast:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-contrast-focus)}:is(button,[type=submit],[type=button],[role=button]).outline,[type=reset].outline{--pico-background-color:transparent;--pico-color:var(--pico-primary);--pico-border-color:var(--pico-primary)}:is(button,[type=submit],[type=button],[role=button]).outline:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset].outline:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:transparent;--pico-color:var(--pico-primary-hover);--pico-border-color:var(--pico-primary-hover)}:is(button,[type=submit],[type=button],[role=button]).outline.secondary,[type=reset].outline{--pico-color:var(--pico-secondary);--pico-border-color:var(--pico-secondary)}:is(button,[type=submit],[type=button],[role=button]).outline.secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset].outline:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-secondary-hover);--pico-border-color:var(--pico-secondary-hover)}:is(button,[type=submit],[type=button],[role=button]).outline.contrast{--pico-color:var(--pico-contrast);--pico-border-color:var(--pico-contrast)}:is(button,[type=submit],[type=button],[role=button]).outline.contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-contrast-hover);--pico-border-color:var(--pico-contrast-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]){opacity:.5;pointer-events:none}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}td,th{padding:calc(var(--pico-spacing)/ 2) var(--pico-spacing);border-bottom:var(--pico-border-width) solid var(--pico-table-border-color);background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);text-align:left;text-align:start}tfoot td,tfoot th{border-top:var(--pico-border-width) solid var(--pico-table-border-color);border-bottom:0}table.striped tbody tr:nth-child(odd) td,table.striped tbody tr:nth-child(odd) th{background-color:var(--pico-table-row-stripped-background-color)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-size:.875em;font-family:var(--pico-font-family)}pre code{font-size:inherit;font-family:inherit}pre{-ms-overflow-style:scrollbar;overflow:auto}code,kbd,pre{border-radius:var(--pico-border-radius);background:var(--pico-code-background-color);color:var(--pico-code-color);font-weight:var(--pico-font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem}pre{display:block;margin-bottom:var(--pico-spacing);overflow-x:auto}pre>code{display:block;padding:var(--pico-spacing);background:0 0;line-height:var(--pico-line-height)}kbd{background-color:var(--pico-code-kbd-background-color);color:var(--pico-code-kbd-color);vertical-align:baseline}figure{display:block;margin:0;padding:0}figure figcaption{padding:calc(var(--pico-spacing) * .5) 0;color:var(--pico-muted-color)}hr{height:0;margin:var(--pico-typography-spacing-vertical) 0;border:0;border-top:1px solid var(--pico-muted-border-color);color:inherit}[hidden],template{display:none!important}canvas{display:inline-block}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--pico-line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:0}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2)}fieldset{width:100%;margin:0;margin-bottom:var(--pico-spacing);padding:0;border:0}fieldset legend,label{display:block;margin-bottom:calc(var(--pico-spacing) * .375);color:var(--pico-color);font-weight:var(--pico-form-label-font-weight,var(--pico-font-weight))}fieldset legend{margin-bottom:calc(var(--pico-spacing) * .5)}button[type=submit],input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal)}input,select,textarea{--pico-background-color:var(--pico-form-element-background-color);--pico-border-color:var(--pico-form-element-border-color);--pico-color:var(--pico-form-element-color);--pico-box-shadow:none;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus){--pico-background-color:var(--pico-form-element-active-background-color)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus){--pico-border-color:var(--pico-form-element-active-border-color)}:where(select,textarea):not([readonly]):focus,input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus{--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color)}:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea),input:not([type=submit],[type=button],[type=reset])[disabled],label[aria-disabled=true],select[disabled],textarea[disabled]{opacity:var(--pico-form-element-disabled-opacity);pointer-events:none}label[aria-disabled=true] input[disabled]{opacity:1}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid]{padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal)!important;padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=false]:not(select){background-image:var(--pico-icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=true]:not(select){background-image:var(--pico-icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--pico-border-color:var(--pico-form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--pico-border-color:var(--pico-form-element-valid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-valid-focus-color)!important}:where(input,select,textarea)[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--pico-border-color:var(--pico-form-element-invalid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-invalid-focus-color)!important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::-webkit-input-placeholder,input::placeholder,select:invalid,textarea::-webkit-input-placeholder,textarea::placeholder{color:var(--pico-form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--pico-spacing)}select::-ms-expand{border:0;background-color:transparent}select:not([multiple],[size]){padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal);padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);background-image:var(--pico-icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}select[multiple] option:checked{background:var(--pico-form-element-selected-background-color);color:var(--pico-form-element-color)}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}textarea{display:block;resize:vertical}textarea[aria-invalid]{--pico-icon-height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);background-position:top right .75rem!important;background-size:1rem var(--pico-icon-height)!important}:where(input,select,textarea,fieldset,.grid)+small{display:block;width:100%;margin-top:calc(var(--pico-spacing) * -.75);margin-bottom:var(--pico-spacing);color:var(--pico-muted-color)}:where(input,select,textarea,fieldset,.grid)[aria-invalid=false]+small{color:var(--pico-ins-color)}:where(input,select,textarea,fieldset,.grid)[aria-invalid=true]+small{color:var(--pico-del-color)}label>:where(input,select,textarea){margin-top:calc(var(--pico-spacing) * .25)}label:has([type=checkbox],[type=radio]){width:-moz-fit-content;width:fit-content;cursor:pointer}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-inline-end:.5em;border-width:var(--pico-border-width);vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-bottom:0;cursor:pointer}[type=checkbox]~label:not(:last-of-type),[type=radio]~label:not(:last-of-type){margin-inline-end:1em}[type=checkbox]:indeterminate{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--pico-background-color:var(--pico-switch-background-color);--pico-color:var(--pico-switch-color);width:2.25em;height:1.25em;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:1.25em;background-color:var(--pico-background-color);line-height:1.25em}[type=checkbox][role=switch]:not([aria-invalid]){--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:before{display:block;aspect-ratio:1;height:100%;border-radius:50%;background-color:var(--pico-color);box-shadow:var(--pico-switch-thumb-box-shadow);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:focus{--pico-background-color:var(--pico-switch-background-color);--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:checked{--pico-background-color:var(--pico-switch-checked-background-color);--pico-border-color:var(--pico-switch-checked-background-color);background-image:none}[type=checkbox][role=switch]:checked::before{margin-inline-start:calc(2.25em - 1.25em)}[type=checkbox][role=switch][disabled]{--pico-background-color:var(--pico-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus{--pico-background-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--pico-background-color:var(--pico-form-element-invalid-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus,[type=radio][aria-invalid=false]:checked,[type=radio][aria-invalid=false]:checked:active,[type=radio][aria-invalid=false]:checked:focus{--pico-border-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true],[type=radio]:checked:active[aria-invalid=true],[type=radio]:checked:focus[aria-invalid=true],[type=radio]:checked[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--pico-icon-position:0.75rem;--pico-icon-width:1rem;padding-right:calc(var(--pico-icon-width) + var(--pico-icon-position));background-image:var(--pico-icon-date);background-position:center right var(--pico-icon-position);background-size:var(--pico-icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--pico-icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--pico-icon-width);margin-right:calc(var(--pico-icon-width) * -1);margin-left:var(--pico-icon-position);opacity:0}@-moz-document url-prefix(){[type=date],[type=datetime-local],[type=month],[type=time],[type=week]{padding-right:var(--pico-form-element-spacing-horizontal)!important;background-image:none!important}}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}[type=file]{--pico-color:var(--pico-muted-color);margin-left:calc(var(--pico-outline-width) * -1);padding:calc(var(--pico-form-element-spacing-vertical) * .5) 0;padding-left:var(--pico-outline-width);border:0;border-radius:0;background:0 0}[type=file]::file-selector-button{margin-right:calc(var(--pico-spacing)/ 2);padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal)}[type=file]:is(:hover,:active,:focus)::file-selector-button{--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border)}[type=file]:focus::file-selector-button{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:0 0}[type=range]::-webkit-slider-runnable-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-webkit-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-moz-range-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-moz-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-ms-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-ms-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-webkit-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-moz-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-ms-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]:active,[type=range]:focus-within{--pico-range-border-color:var(--pico-range-active-border-color);--pico-range-thumb-color:var(--pico-range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem);background-image:var(--pico-icon-search);background-position:center left calc(var(--pico-form-element-spacing-horizontal) + .125rem);background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem)!important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--pico-icon-search),var(--pico-icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--pico-icon-search),var(--pico-icon-invalid)}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}details{display:block;margin-bottom:var(--pico-spacing)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--pico-transition)}details summary:not([role]){color:var(--pico-accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;margin-inline-start:calc(var(--pico-spacing,1rem) * .5);float:right;transform:rotate(-90deg);background-image:var(--pico-icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--pico-transition)}details summary:focus{outline:0}details summary:focus:not([role]){color:var(--pico-accordion-active-summary-color)}details summary:focus-visible:not([role]){outline:var(--pico-outline-width) solid var(--pico-primary-focus);outline-offset:calc(var(--pico-spacing,1rem) * 0.5);color:var(--pico-primary)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem * var(--pico-line-height,1.5))}details[open]>summary{margin-bottom:var(--pico-spacing)}details[open]>summary:not([role]):not(:focus){color:var(--pico-accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin-bottom:var(--pico-block-spacing-vertical);padding:var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);border-radius:var(--pico-border-radius);background:var(--pico-card-background-color);box-shadow:var(--pico-card-box-shadow)}article>footer,article>header{margin-right:calc(var(--pico-block-spacing-horizontal) * -1);margin-left:calc(var(--pico-block-spacing-horizontal) * -1);padding:calc(var(--pico-block-spacing-vertical) * .66) var(--pico-block-spacing-horizontal);background-color:var(--pico-card-sectioning-background-color)}article>header{margin-top:calc(var(--pico-block-spacing-vertical) * -1);margin-bottom:var(--pico-block-spacing-vertical);border-bottom:var(--pico-border-width) solid var(--pico-card-border-color);border-top-right-radius:var(--pico-border-radius);border-top-left-radius:var(--pico-border-radius)}article>footer{margin-top:var(--pico-block-spacing-vertical);margin-bottom:calc(var(--pico-block-spacing-vertical) * -1);border-top:var(--pico-border-width) solid var(--pico-card-border-color);border-bottom-right-radius:var(--pico-border-radius);border-bottom-left-radius:var(--pico-border-radius)}details.dropdown{position:relative;border-bottom:none}details.dropdown summary::after,details.dropdown>a::after,details.dropdown>button::after{display:block;width:1rem;height:calc(1rem * var(--pico-line-height,1.5));margin-inline-start:.25rem;float:right;transform:rotate(0) translateX(.2rem);background-image:var(--pico-icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:""}nav details.dropdown{margin-bottom:0}details.dropdown summary:not([role]){height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);border:var(--pico-border-width) solid var(--pico-form-element-border-color);border-radius:var(--pico-border-radius);background-color:var(--pico-form-element-background-color);color:var(--pico-form-element-placeholder-color);line-height:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}details.dropdown summary:not([role]):active,details.dropdown summary:not([role]):focus{border-color:var(--pico-form-element-active-border-color);background-color:var(--pico-form-element-active-background-color)}details.dropdown summary:not([role]):focus{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color)}details.dropdown summary:not([role]):focus-visible{outline:0}details.dropdown summary:not([role])[aria-invalid=false]{--pico-form-element-border-color:var(--pico-form-element-valid-border-color);--pico-form-element-active-border-color:var(--pico-form-element-valid-focus-color);--pico-form-element-focus-color:var(--pico-form-element-valid-focus-color)}details.dropdown summary:not([role])[aria-invalid=true]{--pico-form-element-border-color:var(--pico-form-element-invalid-border-color);--pico-form-element-active-border-color:var(--pico-form-element-invalid-focus-color);--pico-form-element-focus-color:var(--pico-form-element-invalid-focus-color)}nav details.dropdown{display:inline;margin:calc(var(--pico-nav-element-spacing-vertical) * -1) 0}nav details.dropdown summary::after{transform:rotate(0) translateX(0)}nav details.dropdown summary:not([role]){height:calc(1rem * var(--pico-line-height) + var(--pico-nav-link-spacing-vertical) * 2);padding:calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal)}nav details.dropdown summary:not([role]):focus-visible{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}details.dropdown summary+ul{display:flex;z-index:99;position:absolute;left:0;flex-direction:column;width:100%;min-width:-moz-fit-content;min-width:fit-content;margin:0;margin-top:var(--pico-outline-width);padding:0;border:var(--pico-border-width) solid var(--pico-dropdown-border-color);border-radius:var(--pico-border-radius);background-color:var(--pico-dropdown-background-color);box-shadow:var(--pico-dropdown-box-shadow);color:var(--pico-dropdown-color);white-space:nowrap;opacity:0;transition:opacity var(--pico-transition),transform 0s ease-in-out 1s}details.dropdown summary+ul[dir=rtl]{right:0;left:auto}details.dropdown summary+ul li{width:100%;margin-bottom:0;padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal);list-style:none}details.dropdown summary+ul li:first-of-type{margin-top:calc(var(--pico-form-element-spacing-vertical) * .5)}details.dropdown summary+ul li:last-of-type{margin-bottom:calc(var(--pico-form-element-spacing-vertical) * .5)}details.dropdown summary+ul li a{display:block;margin:calc(var(--pico-form-element-spacing-vertical) * -.5) calc(var(--pico-form-element-spacing-horizontal) * -1);padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal);overflow:hidden;border-radius:0;color:var(--pico-dropdown-color);text-decoration:none;text-overflow:ellipsis}details.dropdown summary+ul li a:active,details.dropdown summary+ul li a:focus,details.dropdown summary+ul li a:focus-visible,details.dropdown summary+ul li a:hover,details.dropdown summary+ul li a[aria-current]:not([aria-current=false]){background-color:var(--pico-dropdown-hover-background-color)}details.dropdown summary+ul li label{width:100%}details.dropdown summary+ul li:has(label):hover{background-color:var(--pico-dropdown-hover-background-color)}details.dropdown[open] summary{margin-bottom:0}details.dropdown[open] summary+ul{transform:scaleY(1);opacity:1;transition:opacity var(--pico-transition),transform 0s ease-in-out 0s}details.dropdown[open] summary::before{display:block;z-index:1;position:fixed;width:100vw;height:100vh;inset:0;background:0 0;content:"";cursor:default}label>details.dropdown{margin-top:calc(var(--pico-spacing) * .25)}[role=group],[role=search]{display:inline-flex;position:relative;width:100%;margin-bottom:var(--pico-spacing);border-radius:var(--pico-border-radius);box-shadow:var(--pico-group-box-shadow,0 0 0 transparent);vertical-align:middle;transition:box-shadow var(--pico-transition)}[role=group] input:not([type=checkbox],[type=radio]),[role=group] select,[role=group]>*,[role=search] input:not([type=checkbox],[type=radio]),[role=search] select,[role=search]>*{position:relative;flex:1 1 auto;margin-bottom:0}[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=group]>:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child),[role=search]>:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}[role=group] input:not([type=checkbox],[type=radio]):not(:last-child),[role=group] select:not(:last-child),[role=group]>:not(:last-child),[role=search] input:not([type=checkbox],[type=radio]):not(:last-child),[role=search] select:not(:last-child),[role=search]>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}[role=group] input:not([type=checkbox],[type=radio]):focus,[role=group] select:focus,[role=group]>:focus,[role=search] input:not([type=checkbox],[type=radio]):focus,[role=search] select:focus,[role=search]>:focus{z-index:2}[role=group] [role=button]:not(:first-child),[role=group] [type=button]:not(:first-child),[role=group] [type=reset]:not(:first-child),[role=group] [type=submit]:not(:first-child),[role=group] button:not(:first-child),[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=search] [role=button]:not(:first-child),[role=search] [type=button]:not(:first-child),[role=search] [type=reset]:not(:first-child),[role=search] [type=submit]:not(:first-child),[role=search] button:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child){margin-left:calc(var(--pico-border-width) * -1)}[role=group] [role=button],[role=group] [type=button],[role=group] [type=reset],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=reset],[role=search] [type=submit],[role=search] button{width:auto}@supports selector(:has(*)){[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-button)}[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select,[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select{border-color:transparent}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus),[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-input)}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) button,[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) button{--pico-button-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-border);--pico-button-hover-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-hover-border)}[role=group] [role=button]:focus,[role=group] [type=button]:focus,[role=group] [type=reset]:focus,[role=group] [type=submit]:focus,[role=group] button:focus,[role=search] [role=button]:focus,[role=search] [type=button]:focus,[role=search] [type=reset]:focus,[role=search] [type=submit]:focus,[role=search] button:focus{box-shadow:none}}[role=search]>:first-child{border-top-left-radius:5rem;border-bottom-left-radius:5rem}[role=search]>:last-child{border-top-right-radius:5rem;border-bottom-right-radius:5rem}[aria-busy=true]:not(input,select,textarea,html){white-space:nowrap}[aria-busy=true]:not(input,select,textarea,html)::before{display:inline-block;width:1em;height:1em;background-image:var(--pico-icon-loading);background-size:1em auto;background-repeat:no-repeat;content:"";vertical-align:-.125em}[aria-busy=true]:not(input,select,textarea,html):not(:empty)::before{margin-inline-end:calc(var(--pico-spacing) * .5)}[aria-busy=true]:not(input,select,textarea,html):empty{text-align:center}[role=button][aria-busy=true],[type=button][aria-busy=true],[type=reset][aria-busy=true],[type=submit][aria-busy=true],a[aria-busy=true],button[aria-busy=true]{pointer-events:none}:root{--pico-scrollbar-width:0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:0;border:0;-webkit-backdrop-filter:var(--pico-modal-overlay-backdrop-filter);backdrop-filter:var(--pico-modal-overlay-backdrop-filter);background-color:var(--pico-modal-overlay-background-color);color:var(--pico-color)}dialog article{width:100%;max-height:calc(100vh - var(--pico-spacing) * 2);margin:var(--pico-spacing);overflow:auto}@media (min-width:576px){dialog article{max-width:510px}}@media (min-width:768px){dialog article{max-width:700px}}dialog article>header>*{margin-bottom:0}dialog article>header .close,dialog article>header :is(a,button)[rel=prev]{margin:0;margin-left:var(--pico-spacing);padding:0;float:right}dialog article>footer{text-align:right}dialog article>footer [role=button],dialog article>footer button{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type),dialog article>footer button:not(:first-of-type){margin-left:calc(var(--pico-spacing) * .5)}dialog article .close,dialog article :is(a,button)[rel=prev]{display:block;width:1rem;height:1rem;margin-top:calc(var(--pico-spacing) * -1);margin-bottom:var(--pico-spacing);margin-left:auto;border:none;background-image:var(--pico-icon-close);background-position:center;background-size:auto 1rem;background-repeat:no-repeat;background-color:transparent;opacity:.5;transition:opacity var(--pico-transition)}dialog article .close:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),dialog article :is(a,button)[rel=prev]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){opacity:1}dialog:not([open]),dialog[open=false]{display:none}.modal-is-open{padding-right:var(--pico-scrollbar-width,0);overflow:hidden;pointer-events:none;touch-action:none}.modal-is-open dialog{pointer-events:auto;touch-action:auto}:where(.modal-is-opening,.modal-is-closing) dialog,:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:both}:where(.modal-is-opening,.modal-is-closing) dialog{animation-duration:.8s;animation-name:modal-overlay}:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-delay:.2s;animation-name:modal}.modal-is-closing dialog,.modal-is-closing dialog>article{animation-delay:0s;animation-direction:reverse}@keyframes modal-overlay{from{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:transparent}}@keyframes modal{from{transform:translateY(-100%);opacity:0}}:where(nav li)::before{float:left;content:"​"}nav,nav ul{display:flex}nav{justify-content:space-between;overflow:visible}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav li{display:inline-block;margin:0;padding:var(--pico-nav-element-spacing-vertical) var(--pico-nav-element-spacing-horizontal)}nav li :where(a,[role=link]){display:inline-block;margin:calc(var(--pico-nav-link-spacing-vertical) * -1) calc(var(--pico-nav-link-spacing-horizontal) * -1);padding:var(--pico-nav-link-spacing-vertical) var(--pico-nav-link-spacing-horizontal);border-radius:var(--pico-border-radius)}nav li :where(a,[role=link]):not(:hover){text-decoration:none}nav li [role=button],nav li [type=button],nav li button,nav li input:not([type=checkbox],[type=radio],[type=range],[type=file]),nav li select{height:auto;margin-right:inherit;margin-bottom:0;margin-left:inherit;padding:calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li a{margin:calc(var(--pico-nav-link-spacing-vertical) * -1) 0;margin-inline-start:calc(var(--pico-nav-link-spacing-horizontal) * -1)}nav[aria-label=breadcrumb] ul li:not(:last-child)::after{display:inline-block;position:absolute;width:calc(var(--pico-nav-link-spacing-horizontal) * 4);margin:0 calc(var(--pico-nav-link-spacing-horizontal) * -1);content:var(--pico-nav-breadcrumb-divider);color:var(--pico-muted-color);text-align:center;text-decoration:none;white-space:nowrap}nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]){background-color:transparent;color:inherit;text-decoration:none;pointer-events:none}aside li,aside nav,aside ol,aside ul{display:block}aside li{padding:calc(var(--pico-nav-element-spacing-vertical) * .5) var(--pico-nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--pico-spacing) * .5);overflow:hidden;border:0;border-radius:var(--pico-border-radius);background-color:var(--pico-progress-background-color);color:var(--pico-progress-color)}progress::-webkit-progress-bar{border-radius:var(--pico-border-radius);background:0 0}progress[value]::-webkit-progress-value{background-color:var(--pico-progress-color);-webkit-transition:inline-size var(--pico-transition);transition:inline-size var(--pico-transition)}progress::-moz-progress-bar{background-color:var(--pico-progress-color)}@media (prefers-reduced-motion:no-preference){progress:indeterminate{background:var(--pico-progress-background-color) linear-gradient(to right,var(--pico-progress-color) 30%,var(--pico-progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:transparent}progress:indeterminate::-moz-progress-bar{background-color:transparent}}@media (prefers-reduced-motion:no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip]::after,[data-tooltip]::before,[data-tooltip][data-placement=top]::after,[data-tooltip][data-placement=top]::before{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%,-.25rem);border-radius:var(--pico-border-radius);background:var(--pico-tooltip-background-color);content:attr(data-tooltip);color:var(--pico-tooltip-color);font-style:normal;font-weight:var(--pico-font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip]::after,[data-tooltip][data-placement=top]::after{padding:0;transform:translate(-50%,0);border-top:.3rem solid;border-right:.3rem solid transparent;border-left:.3rem solid transparent;border-radius:0;background-color:transparent;content:"";color:var(--pico-tooltip-background-color)}[data-tooltip][data-placement=bottom]::after,[data-tooltip][data-placement=bottom]::before{top:100%;bottom:auto;transform:translate(-50%,.25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%,-.3rem);border:.3rem solid transparent;border-bottom:.3rem solid}[data-tooltip][data-placement=left]::after,[data-tooltip][data-placement=left]::before{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem,-50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem,-50%);border:.3rem solid transparent;border-left:.3rem solid}[data-tooltip][data-placement=right]::after,[data-tooltip][data-placement=right]::before{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem,-50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem,-50%);border:.3rem solid transparent;border-right:.3rem solid}[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{opacity:1}@media (hover:hover) and (pointer:fine){[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{--pico-tooltip-slide-to:translate(-50%, -0.25rem);transform:translate(-50%,.75rem);animation-duration:.2s;animation-fill-mode:forwards;animation-name:tooltip-slide;opacity:0}[data-tooltip]:focus::after,[data-tooltip]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, 0rem);transform:translate(-50%,-.25rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:hover::after,[data-tooltip][data-placement=bottom]:hover::before{--pico-tooltip-slide-to:translate(-50%, 0.25rem);transform:translate(-50%,-.75rem);animation-name:tooltip-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, -0.3rem);transform:translate(-50%,-.5rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:hover::after,[data-tooltip][data-placement=left]:hover::before{--pico-tooltip-slide-to:translate(-0.25rem, -50%);transform:translate(.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{--pico-tooltip-caret-slide-to:translate(0.3rem, -50%);transform:translate(.05rem,-50%);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:hover::after,[data-tooltip][data-placement=right]:hover::before{--pico-tooltip-slide-to:translate(0.25rem, -50%);transform:translate(-.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{--pico-tooltip-caret-slide-to:translate(-0.3rem, -50%);transform:translate(-.05rem,-50%);animation-name:tooltip-caret-slide}}@keyframes tooltip-slide{to{transform:var(--pico-tooltip-slide-to);opacity:1}}@keyframes tooltip-caret-slide{50%{opacity:0}to{transform:var(--pico-tooltip-caret-slide-to);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion:reduce){:not([aria-busy=true]),:not([aria-busy=true])::after,:not([aria-busy=true])::before{background-attachment:initial!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important}} \ No newline at end of file diff --git a/czv-wasm/examples/web-demo/postcss.config.js b/czv-wasm/examples/web-demo/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/czv-wasm/examples/web-demo/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/czv-wasm/examples/web-demo/preview.png b/czv-wasm/examples/web-demo/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7a6642566afdef45e5bb91812b83df75af27bc GIT binary patch literal 28910 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ⅇ^_vr62@=It+;}Y&+6X^Wee%e0)c|i<jiEF>}5^W!1EU`wonNu#gtCce9-?ikgWXa@{Z?eqarXOTrr4sN=X{H0mKtv+74nP5f9!G}9$#B_xxV zL`+|IjO3zLyeO<4@1W136fFS7j>_>LdjDLj%<*A($IH8Y!Tc1@VSI#KchUTOQ~C9gXZf(4iscMoJAO-x7yI8#6#Q744F4_Rh1r3iU9=$7p$ zgPy7M)}4Lx5)nS=lll48MrtH)d5A{Bi_i#(unc|wyzg3|&P`@#UQmc^QT)u5-bvZ< zRO2p$@RD+v`vrpgIyPty78lX<`kVHgN+jnFJpluA$D5yVvxQ5!5=A9eFl|C02SAH+ z@Pmwhk0?DTcI)LjNP&;AK!3v6d{jCfSXTFhf;KP({m{yTBT$3xt=l3cM8|ZupOE!S zkvX4_avs8{@B!x-!EeZn6(>ZA^`@O3%V&<;Z|G+4Dn^wQ_s7o``ngB)h${8YRS-xf zkv`9ier5Ue-nejcaZBXYweJoXy*#r>6$R=Z`=J2gA1}BJeF{hJnk=TqI@Jz1^WIFQ zO~&KSx0A$xzr}G%{9AC&6Vf&Y8mg92NU24kG?iVk_Ndm`;Q&D87I&8FIz&r9(6V$;BW!M}Wi+%c}`(`Z7%L zs$SdvEJng1rly7XOX(M{s1xLRuUP@DyV~-YwryDLbiKvP!@UEv3gM%SkovZL*3oKo#yP&w@qZ1vgl~ZEj5lJSw_Qfs2)+*S;!B%|y zy`S&V%>{BRV!F%^ZYaCOQd-blhAVS_=o=r|Ei5&ztsCWY`%Ver-arf{TV$qIMp1wA z*CQiSc%HKB$gom3rpWp!*{L_;ht?)nPm5u%omlFr&a!GopV^uKT2Svf%-Yi_W>f4tf%3G)|J`vpw!s~z?KjI29H$g|*v zU!j0i0>5*dM2`Ke3-!-s8CCY3(AN(!bN`x#UrdKT!}?7m%iTnqF%B1$41z5 zq6B6LF{$@T)=KOA;R40Ko9)83ujB*K_hrrv{EMK?zsrlj_tD~7VKcOp^Za4`vk8%Z zQG>pd>*6UB4+iGY{yM0au>QR6Px5Ly aCChSDSTyCM6}^Q0Q&rMbEV=vO<^KbxGM}CR literal 0 HcmV?d00001 diff --git a/czv-wasm/examples/web-demo/script.js b/czv-wasm/examples/web-demo/script.js deleted file mode 100644 index b7ed97c..0000000 --- a/czv-wasm/examples/web-demo/script.js +++ /dev/null @@ -1,27 +0,0 @@ -const progress = document.getElementById("progress"); -import init, * as czv from "../../pkg/czv.js"; -// Must run `await init()` or `initSync()` first for web use -await init(); -const fileReader = new FileReader(); -fileReader.onloadstart = () => { - if (progress) - progress.style.display = "block"; -}; -fileReader.onloadend = () => { - const rowCountElement = document.getElementById("row-count"); - const columnCountElement = document.getElementById("column-count"); - if (rowCountElement) - rowCountElement.innerText = String(czv.rowCount({ - file_data: fileReader.result, - })); - if (columnCountElement) - columnCountElement.innerText = String(czv.columnCount({ file_data: fileReader.result })); - if (progress) - progress.style.display = "none"; -}; -const input = document.getElementById("upload"); -if (input) - input.addEventListener("change", () => { - // @ts-ignore - fileReader.readAsText(input.files[0]); - }); diff --git a/czv-wasm/examples/web-demo/script.ts b/czv-wasm/examples/web-demo/script.ts deleted file mode 100644 index cac3762..0000000 --- a/czv-wasm/examples/web-demo/script.ts +++ /dev/null @@ -1,34 +0,0 @@ -const progress = document.getElementById("progress"); - -import init, * as czv from "../../pkg/czv.js"; -// Must run `await init()` or `initSync()` first for web use -await init(); - -const fileReader = new FileReader(); - -fileReader.onloadstart = () => { - if (progress) progress.style.display = "block"; -}; - -fileReader.onloadend = () => { - const rowCountElement = document.getElementById("row-count"); - const columnCountElement = document.getElementById("column-count"); - if (rowCountElement) - rowCountElement.innerText = String( - czv.rowCount({ - file_data: fileReader.result as string, - }) - ); - if (columnCountElement) - columnCountElement.innerText = String( - czv.columnCount({ file_data: fileReader.result as string }) - ); - if (progress) progress.style.display = "none"; -}; - -const input = document.getElementById("upload"); -if (input) - input.addEventListener("change", () => { - // @ts-ignore - fileReader.readAsText(input.files[0]); - }); diff --git a/czv-wasm/examples/web-demo/src/App.css b/czv-wasm/examples/web-demo/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/czv-wasm/examples/web-demo/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/czv-wasm/examples/web-demo/src/App.tsx b/czv-wasm/examples/web-demo/src/App.tsx new file mode 100644 index 0000000..e6694da --- /dev/null +++ b/czv-wasm/examples/web-demo/src/App.tsx @@ -0,0 +1,80 @@ +import "./App.css"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import init, * as czv from "czv-wasm"; +import React, { useState } from "react"; + +function App() { + const [initDone, setInitDone] = useState(false); + const [loading, setLoading] = useState(false); + const [rowCount, setRowCount] = useState(undefined); + const [columnCount, setColumnCount] = useState( + undefined + ); + + const handleFile = async (e: React.ChangeEvent) => { + setLoading(true); + if (!initDone) { + await init(); + setInitDone(true); + } + if (e.target.files && e.target.files.length === 1) { + const rowCountOutput = czv.rowCount({ + file_data: await e.target.files[0].text(), + }); + setRowCount(rowCountOutput); + const columnCountOutput = czv.columnCount({ + file_data: await e.target.files[0].text(), + }); + setColumnCount(columnCountOutput); + } + setLoading(false); + }; + + return ( + <> +
+
+

+ czv - WebAssembly library demo using Vite & React +

+

+ Visit{" "} + + here + {" "} + for the czv source code and{" "} + + here + {" "} + for this site's source code. +

+
+ + + + {loading &&

Loading...

} + + {rowCount && ( +

+ Row count (excluding header row):{" "} + {rowCount} +

+ )} + {columnCount && ( +

+ Column count: {columnCount} +

+ )} +
+ + ); +} + +export default App; diff --git a/czv-wasm/examples/web-demo/src/components/ui/input.tsx b/czv-wasm/examples/web-demo/src/components/ui/input.tsx new file mode 100644 index 0000000..677d05f --- /dev/null +++ b/czv-wasm/examples/web-demo/src/components/ui/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/czv-wasm/examples/web-demo/src/components/ui/label.tsx b/czv-wasm/examples/web-demo/src/components/ui/label.tsx new file mode 100644 index 0000000..683faa7 --- /dev/null +++ b/czv-wasm/examples/web-demo/src/components/ui/label.tsx @@ -0,0 +1,24 @@ +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const labelVariants = cva( + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" +) + +const Label = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)) +Label.displayName = LabelPrimitive.Root.displayName + +export { Label } diff --git a/czv-wasm/examples/web-demo/src/index.css b/czv-wasm/examples/web-demo/src/index.css new file mode 100644 index 0000000..916a232 --- /dev/null +++ b/czv-wasm/examples/web-demo/src/index.css @@ -0,0 +1,76 @@ +@tailwind base; + @tailwind components; + @tailwind utilities; + + @layer base { + :root { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + --ring: 240 10% 3.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 240 10% 3.9%; + --foreground: 0 0% 98%; + + --card: 240 10% 3.9%; + --card-foreground: 0 0% 98%; + + --popover: 240 10% 3.9%; + --popover-foreground: 0 0% 98%; + + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + + --accent: 240 3.7% 15.9%; + --accent-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + --ring: 240 4.9% 83.9%; + } + } + + @layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } + } \ No newline at end of file diff --git a/czv-wasm/examples/web-demo/src/lib/utils.ts b/czv-wasm/examples/web-demo/src/lib/utils.ts new file mode 100644 index 0000000..d084cca --- /dev/null +++ b/czv-wasm/examples/web-demo/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/czv-wasm/examples/web-demo/src/main.tsx b/czv-wasm/examples/web-demo/src/main.tsx new file mode 100644 index 0000000..3d7150d --- /dev/null +++ b/czv-wasm/examples/web-demo/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/czv-wasm/examples/web-demo/src/vite-env.d.ts b/czv-wasm/examples/web-demo/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/czv-wasm/examples/web-demo/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/czv-wasm/examples/web-demo/tailwind.config.js b/czv-wasm/examples/web-demo/tailwind.config.js new file mode 100644 index 0000000..7cb7e37 --- /dev/null +++ b/czv-wasm/examples/web-demo/tailwind.config.js @@ -0,0 +1,77 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + darkMode: ["class"], + content: [ + './pages/**/*.{ts,tsx}', + './components/**/*.{ts,tsx}', + './app/**/*.{ts,tsx}', + './src/**/*.{ts,tsx}', + ], + prefix: "", + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +} \ No newline at end of file diff --git a/czv-wasm/examples/web-demo/tsconfig.json b/czv-wasm/examples/web-demo/tsconfig.json new file mode 100644 index 0000000..a9b6e19 --- /dev/null +++ b/czv-wasm/examples/web-demo/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/czv-wasm/examples/web-demo/tsconfig.node.json b/czv-wasm/examples/web-demo/tsconfig.node.json new file mode 100644 index 0000000..97ede7e --- /dev/null +++ b/czv-wasm/examples/web-demo/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/czv-wasm/examples/web-demo/vite.config.ts b/czv-wasm/examples/web-demo/vite.config.ts new file mode 100644 index 0000000..1e43737 --- /dev/null +++ b/czv-wasm/examples/web-demo/vite.config.ts @@ -0,0 +1,13 @@ +import path from "path"; +import react from "@vitejs/plugin-react-swc"; +import wasmPack from "vite-plugin-wasm-pack"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [react(), wasmPack([], ["czv-wasm"])], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +}); diff --git a/czv-wasm/src/lib.rs b/czv-wasm/src/lib.rs index b803d42..f51340d 100644 --- a/czv-wasm/src/lib.rs +++ b/czv-wasm/src/lib.rs @@ -7,7 +7,7 @@ //! Let's say we want to print the total number of non-header rows in our data: //! //! ```js -//! import init, * as czv from "czv"; +//! import init, * as czv from "czv-wasm"; //! // Must run `await init()` or `initSync()` first for web use //! await init(); //!