From c97759b04cf6b35d418d65cb28f4e06d0d532fa3 Mon Sep 17 00:00:00 2001 From: didier amyot Date: Thu, 22 Oct 2026 21:18:32 -0400 Subject: [PATCH] Build flashsharp flashcard app --- .gitignore | 488 ++++++ Flashsharp.slnx | 8 + flake.lock | 61 + flake.nix | 159 ++ global.json | 6 + nuget-deps.json | 62 + src/Flashsharp/Auth/AuthClaims.cs | 22 + src/Flashsharp/Auth/SessionCookie.cs | 26 + .../Auth/TokenAuthenticationHandler.cs | 80 + src/Flashsharp/Configuration/AppOptions.cs | 77 + src/Flashsharp/Data/Database.cs | 25 + .../Data/Migrations/0001_initial.sql | 217 +++ src/Flashsharp/Data/Migrator.cs | 67 + src/Flashsharp/Data/Store.Auth.cs | 272 ++++ src/Flashsharp/Data/Store.Cards.cs | 467 ++++++ src/Flashsharp/Data/Store.Catalog.cs | 339 ++++ src/Flashsharp/Data/Store.Stats.cs | 188 +++ src/Flashsharp/Data/Store.Study.cs | 161 ++ src/Flashsharp/Data/Store.cs | 17 + src/Flashsharp/Domain/Models.cs | 211 +++ src/Flashsharp/Flashsharp.csproj | 25 + src/Flashsharp/Mcp/FlashcardTools.cs | 361 +++++ src/Flashsharp/Pages/Courses/Details.cshtml | 54 + .../Pages/Courses/Details.cshtml.cs | 28 + src/Flashsharp/Pages/Decks/Details.cshtml | 76 + src/Flashsharp/Pages/Decks/Details.cshtml.cs | 37 + src/Flashsharp/Pages/Error.cshtml | 13 + src/Flashsharp/Pages/Error.cshtml.cs | 22 + src/Flashsharp/Pages/Index.cshtml | 79 + src/Flashsharp/Pages/Index.cshtml.cs | 22 + src/Flashsharp/Pages/Lessons/Details.cshtml | 58 + .../Pages/Lessons/Details.cshtml.cs | 37 + src/Flashsharp/Pages/Login.cshtml | 35 + src/Flashsharp/Pages/Login.cshtml.cs | 59 + src/Flashsharp/Pages/Logout.cshtml | 2 + src/Flashsharp/Pages/Logout.cshtml.cs | 23 + src/Flashsharp/Pages/Search.cshtml | 99 ++ src/Flashsharp/Pages/Search.cshtml.cs | 63 + .../Pages/Shared/_AuthLayout.cshtml | 15 + .../Pages/Shared/_Breadcrumb.cshtml | 27 + src/Flashsharp/Pages/Shared/_Layout.cshtml | 46 + src/Flashsharp/Pages/Shared/_StudyCard.cshtml | 125 ++ src/Flashsharp/Pages/Shared/_StudyDone.cshtml | 16 + src/Flashsharp/Pages/Stats.cshtml | 140 ++ src/Flashsharp/Pages/Stats.cshtml.cs | 29 + src/Flashsharp/Pages/Study.cshtml | 38 + src/Flashsharp/Pages/Study.cshtml.cs | 192 +++ src/Flashsharp/Pages/Tokens.cshtml | 85 + src/Flashsharp/Pages/Tokens.cshtml.cs | 49 + src/Flashsharp/Pages/Users.cshtml | 85 + src/Flashsharp/Pages/Users.cshtml.cs | 99 ++ src/Flashsharp/Pages/_ViewImports.cshtml | 6 + src/Flashsharp/Pages/_ViewStart.cshtml | 3 + src/Flashsharp/Program.cs | 99 ++ src/Flashsharp/Properties/launchSettings.json | 23 + src/Flashsharp/Scheduling/Scheduler.cs | 58 + src/Flashsharp/Ui/Display.cs | 63 + src/Flashsharp/Ui/MarkdownRenderer.cs | 17 + src/Flashsharp/Ui/StudyViews.cs | 21 + src/Flashsharp/appsettings.Development.json | 9 + src/Flashsharp/appsettings.json | 9 + src/Flashsharp/wwwroot/css/site.css | 1444 +++++++++++++++++ src/Flashsharp/wwwroot/favicon.ico | Bin 0 -> 5430 bytes src/Flashsharp/wwwroot/js/site.js | 71 + src/Flashsharp/wwwroot/vendor/bulma.min.css | 3 + src/Flashsharp/wwwroot/vendor/htmx.min.js | 1 + .../Flashsharp.Tests/Flashsharp.Tests.csproj | 25 + .../Flashsharp.Tests/MarkdownRendererTests.cs | 38 + tests/Flashsharp.Tests/SchedulerTests.cs | 77 + 69 files changed, 6959 insertions(+) create mode 100644 .gitignore create mode 100644 Flashsharp.slnx create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 global.json create mode 100644 nuget-deps.json create mode 100644 src/Flashsharp/Auth/AuthClaims.cs create mode 100644 src/Flashsharp/Auth/SessionCookie.cs create mode 100644 src/Flashsharp/Auth/TokenAuthenticationHandler.cs create mode 100644 src/Flashsharp/Configuration/AppOptions.cs create mode 100644 src/Flashsharp/Data/Database.cs create mode 100644 src/Flashsharp/Data/Migrations/0001_initial.sql create mode 100644 src/Flashsharp/Data/Migrator.cs create mode 100644 src/Flashsharp/Data/Store.Auth.cs create mode 100644 src/Flashsharp/Data/Store.Cards.cs create mode 100644 src/Flashsharp/Data/Store.Catalog.cs create mode 100644 src/Flashsharp/Data/Store.Stats.cs create mode 100644 src/Flashsharp/Data/Store.Study.cs create mode 100644 src/Flashsharp/Data/Store.cs create mode 100644 src/Flashsharp/Domain/Models.cs create mode 100644 src/Flashsharp/Flashsharp.csproj create mode 100644 src/Flashsharp/Mcp/FlashcardTools.cs create mode 100644 src/Flashsharp/Pages/Courses/Details.cshtml create mode 100644 src/Flashsharp/Pages/Courses/Details.cshtml.cs create mode 100644 src/Flashsharp/Pages/Decks/Details.cshtml create mode 100644 src/Flashsharp/Pages/Decks/Details.cshtml.cs create mode 100644 src/Flashsharp/Pages/Error.cshtml create mode 100644 src/Flashsharp/Pages/Error.cshtml.cs create mode 100644 src/Flashsharp/Pages/Index.cshtml create mode 100644 src/Flashsharp/Pages/Index.cshtml.cs create mode 100644 src/Flashsharp/Pages/Lessons/Details.cshtml create mode 100644 src/Flashsharp/Pages/Lessons/Details.cshtml.cs create mode 100644 src/Flashsharp/Pages/Login.cshtml create mode 100644 src/Flashsharp/Pages/Login.cshtml.cs create mode 100644 src/Flashsharp/Pages/Logout.cshtml create mode 100644 src/Flashsharp/Pages/Logout.cshtml.cs create mode 100644 src/Flashsharp/Pages/Search.cshtml create mode 100644 src/Flashsharp/Pages/Search.cshtml.cs create mode 100644 src/Flashsharp/Pages/Shared/_AuthLayout.cshtml create mode 100644 src/Flashsharp/Pages/Shared/_Breadcrumb.cshtml create mode 100644 src/Flashsharp/Pages/Shared/_Layout.cshtml create mode 100644 src/Flashsharp/Pages/Shared/_StudyCard.cshtml create mode 100644 src/Flashsharp/Pages/Shared/_StudyDone.cshtml create mode 100644 src/Flashsharp/Pages/Stats.cshtml create mode 100644 src/Flashsharp/Pages/Stats.cshtml.cs create mode 100644 src/Flashsharp/Pages/Study.cshtml create mode 100644 src/Flashsharp/Pages/Study.cshtml.cs create mode 100644 src/Flashsharp/Pages/Tokens.cshtml create mode 100644 src/Flashsharp/Pages/Tokens.cshtml.cs create mode 100644 src/Flashsharp/Pages/Users.cshtml create mode 100644 src/Flashsharp/Pages/Users.cshtml.cs create mode 100644 src/Flashsharp/Pages/_ViewImports.cshtml create mode 100644 src/Flashsharp/Pages/_ViewStart.cshtml create mode 100644 src/Flashsharp/Program.cs create mode 100644 src/Flashsharp/Properties/launchSettings.json create mode 100644 src/Flashsharp/Scheduling/Scheduler.cs create mode 100644 src/Flashsharp/Ui/Display.cs create mode 100644 src/Flashsharp/Ui/MarkdownRenderer.cs create mode 100644 src/Flashsharp/Ui/StudyViews.cs create mode 100644 src/Flashsharp/appsettings.Development.json create mode 100644 src/Flashsharp/appsettings.json create mode 100644 src/Flashsharp/wwwroot/css/site.css create mode 100644 src/Flashsharp/wwwroot/favicon.ico create mode 100644 src/Flashsharp/wwwroot/js/site.js create mode 100644 src/Flashsharp/wwwroot/vendor/bulma.min.css create mode 100644 src/Flashsharp/wwwroot/vendor/htmx.min.js create mode 100644 tests/Flashsharp.Tests/Flashsharp.Tests.csproj create mode 100644 tests/Flashsharp.Tests/MarkdownRendererTests.cs create mode 100644 tests/Flashsharp.Tests/SchedulerTests.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8989456 --- /dev/null +++ b/.gitignore @@ -0,0 +1,488 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from `dotnet new gitignore` + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +# but not Directory.Build.rsp, as it configures directory-level build defaults +!Directory.Build.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea/ + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# content below from: https://github.com/github/gitignore/blob/main/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/main/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp + +# local runtime data +/data/ +.flashsharp-data/ +.env +/result diff --git a/Flashsharp.slnx b/Flashsharp.slnx new file mode 100644 index 0000000..8bfe7ab --- /dev/null +++ b/Flashsharp.slnx @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..b0b97ab --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1791914995, + "narHash": "sha256-Zf/xfQEAasnwnmEfHqW/4hjDE/s44yn2hD4RuVIZRjA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b7a79d3fea1e214f6d668d521cecec0c01e26544", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1792502884, + "narHash": "sha256-IoNisKcGbUjdd45qCqywGMCYmZ5EnkxezvLII0FWwNA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "02c087f3fe673c9e317f206a627cb6b910336dbe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..ef9ff14 --- /dev/null +++ b/flake.nix @@ -0,0 +1,159 @@ +{ + description = "flashsharp — self-hosted flashcards with a remote MCP surface"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + (flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + flashsharp = pkgs.buildDotnetModule { + pname = "flashsharp"; + version = "0.1.0"; + src = ./.; + projectFile = "src/Flashsharp/Flashsharp.csproj"; + nugetDeps = ./nuget-deps.json; + dotnet-sdk = pkgs.dotnet-sdk_10; + dotnet-runtime = pkgs.dotnetCorePackages.aspnetcore_10_0; + selfContainedBuild = false; + executables = [ "flashsharp" ]; + meta.mainProgram = "flashsharp"; + }; + in + { + packages.default = flashsharp; + packages.flashsharp = flashsharp; + + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + dotnet-sdk_10 + postgresql + curl + jq + ]; + }; + } + )) // { + nixosModules.default = { config, pkgs, lib, ... }: + let + cfg = config.services.flashsharp; + package = cfg.package; + in + { + options.services.flashsharp = { + enable = lib.mkEnableOption "flashsharp"; + + package = lib.mkOption { + type = lib.types.package; + default = self.packages.${pkgs.stdenv.hostPlatform.system}.default; + description = "flashsharp package to run."; + }; + + host = lib.mkOption { + type = lib.types.str; + default = "127.0.0.1"; + description = "Address Kestrel binds to."; + }; + + port = lib.mkOption { + type = lib.types.port; + default = 7015; + description = "HTTP port."; + }; + + databaseUrl = lib.mkOption { + type = lib.types.str; + default = "Host=/run/postgresql;Database=flashsharp;Username=flashsharp"; + description = '' + Npgsql connection string. The database and role must already exist; + add them to services.postgresql.ensureDatabases / ensureUsers. + ''; + }; + + seedUsername = lib.mkOption { + type = lib.types.str; + default = "admin"; + description = "Username created on the first run when no users exist."; + }; + + seedPasswordHash = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + description = '' + Bcrypt hash of the seed password. Preferred over a plaintext file. + Generate with: htpasswd -bnBC 12 "" 'your-password' | cut -d: -f2 + ''; + }; + + seedPasswordFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = '' + Runtime file containing the plaintext seed password. Only needed on + the first run, when the user table is empty. It is read through + systemd credentials. Do not point this at a path inside the Nix + store, because store paths are world-readable. + ''; + }; + + environmentFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = "Optional extra environment file for the service."; + }; + }; + + config = lib.mkIf cfg.enable { + users.groups.flashsharp = { }; + + users.users.flashsharp = { + isSystemUser = true; + group = "flashsharp"; + home = "/var/lib/flashsharp"; + }; + + systemd.services.flashsharp = { + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" "postgresql.service" ]; + requires = [ "postgresql.service" ]; + + environment = + { + FLASHSHARP_DB = cfg.databaseUrl; + FLASHSHARP_HOST = cfg.host; + FLASHSHARP_PORT = toString cfg.port; + FLASHSHARP_SEED_USERNAME = cfg.seedUsername; + FLASHSHARP_DATA_DIR = "/var/lib/flashsharp"; + } + // lib.optionalAttrs (cfg.seedPasswordHash != null) { + FLASHSHARP_SEED_PASSWORD_HASH = cfg.seedPasswordHash; + } + // lib.optionalAttrs (cfg.seedPasswordFile != null) { + FLASHSHARP_SEED_PASSWORD_FILE = "%d/seed-password"; + }; + + serviceConfig = { + User = "flashsharp"; + Group = "flashsharp"; + StateDirectory = "flashsharp"; + StateDirectoryMode = "0700"; + UMask = "0077"; + WorkingDirectory = "/var/lib/flashsharp"; + ExecStart = "${package}/bin/flashsharp"; + Restart = "always"; + RestartSec = 2; + } + // lib.optionalAttrs (cfg.seedPasswordFile != null) { + LoadCredential = "seed-password:${cfg.seedPasswordFile}"; + } + // lib.optionalAttrs (cfg.environmentFile != null) { + EnvironmentFile = cfg.environmentFile; + }; + }; + }; + }; + }; +} diff --git a/global.json b/global.json new file mode 100644 index 0000000..163a6e1 --- /dev/null +++ b/global.json @@ -0,0 +1,6 @@ +{ + "sdk": { + "version": "10.0.401", + "rollForward": "latestFeature" + } +} diff --git a/nuget-deps.json b/nuget-deps.json new file mode 100644 index 0000000..886974e --- /dev/null +++ b/nuget-deps.json @@ -0,0 +1,62 @@ +[ + { + "pname": "AngleSharp", + "version": "1.5.0", + "hash": "sha256-290+oGXJRDf3q06rRrcQmg3XbKYhgIa6xjn5vUJWRJ4=" + }, + { + "pname": "AngleSharp", + "version": "1.7.2", + "hash": "sha256-1X13CsRhBZUnovpom/1x2uNYJwoNLQO7gLs/L3x1szw=" + }, + { + "pname": "AngleSharp.Css", + "version": "1.0.2", + "hash": "sha256-vfAKu0IE5hx5QJXMSB3lK2ds6poeDsse4rOOS2yAXmI=" + }, + { + "pname": "BCrypt.Net-Next", + "version": "4.2.0", + "hash": "sha256-dqDg0iQQUjncCN+bIASlsrxt4oEfyg/JkPu34wSRpc4=" + }, + { + "pname": "Dapper", + "version": "2.1.89", + "hash": "sha256-NJlK2Rg5N0+KH3mKTHngFsylHqJd42csa5HtEXZjI+8=" + }, + { + "pname": "HtmlSanitizer", + "version": "9.2.1039", + "hash": "sha256-QetNfjswzKEpL5gFco7k1C6eVztyhnahkn8IM8cmzrw=" + }, + { + "pname": "Markdig", + "version": "1.4.2", + "hash": "sha256-SxNzvROEvNgkA4cFW/GcJpQ9hZ3ev+Ci19Z+jMtOshs=" + }, + { + "pname": "Microsoft.Extensions.AI.Abstractions", + "version": "10.11.0", + "hash": "sha256-h+E2f4nYpJV/8oHfCXA8hgqTeGgwkw+yuh9dCvOtIkU=" + }, + { + "pname": "ModelContextProtocol", + "version": "2.3.0", + "hash": "sha256-QzQlT6jC9A494E2kzE7zbiLAHgdV+eEIr/caP/SJmpU=" + }, + { + "pname": "ModelContextProtocol.AspNetCore", + "version": "2.3.0", + "hash": "sha256-uD0DUpZvGAa5utUgjj473fUb+XoSI6vsce7REasgd/8=" + }, + { + "pname": "ModelContextProtocol.Core", + "version": "2.3.0", + "hash": "sha256-2lgZzQXBkHx9a37shyI7dEsKxHpuMcqdLE6YUv5YyBU=" + }, + { + "pname": "Npgsql", + "version": "10.0.3", + "hash": "sha256-ddCXCSOoyfy7035OvnL+4LEDYqHjZyPoZ3ffG2coMW0=" + } +] diff --git a/src/Flashsharp/Auth/AuthClaims.cs b/src/Flashsharp/Auth/AuthClaims.cs new file mode 100644 index 0000000..41913e2 --- /dev/null +++ b/src/Flashsharp/Auth/AuthClaims.cs @@ -0,0 +1,22 @@ +using System.Globalization; +using System.Security.Claims; + +namespace Flashsharp.Auth; + +public static class AuthClaims +{ + public const string TokenId = "flashsharp:token_id"; + + public static long GetUserId(this ClaimsPrincipal principal) + { + var value = principal.FindFirstValue(ClaimTypes.NameIdentifier) + ?? throw new InvalidOperationException("Missing user id claim."); + return long.Parse(value, CultureInfo.InvariantCulture); + } + + public static long? GetTokenId(this ClaimsPrincipal principal) + { + var value = principal.FindFirstValue(TokenId); + return value is null ? null : long.Parse(value, CultureInfo.InvariantCulture); + } +} diff --git a/src/Flashsharp/Auth/SessionCookie.cs b/src/Flashsharp/Auth/SessionCookie.cs new file mode 100644 index 0000000..171f228 --- /dev/null +++ b/src/Flashsharp/Auth/SessionCookie.cs @@ -0,0 +1,26 @@ +namespace Flashsharp.Auth; + +public static class SessionCookie +{ + public static void Set(HttpResponse response, string token, bool secure, int days) + { + response.Cookies.Append( + TokenAuthenticationHandler.CookieName, + token, + Options(secure, DateTimeOffset.UtcNow.AddDays(days))); + } + + public static void Clear(HttpResponse response, bool secure) + { + response.Cookies.Delete(TokenAuthenticationHandler.CookieName, Options(secure, expires: null)); + } + + static CookieOptions Options(bool secure, DateTimeOffset? expires) => new() + { + HttpOnly = true, + Secure = secure, + SameSite = SameSiteMode.Lax, + Path = "/", + Expires = expires + }; +} diff --git a/src/Flashsharp/Auth/TokenAuthenticationHandler.cs b/src/Flashsharp/Auth/TokenAuthenticationHandler.cs new file mode 100644 index 0000000..d651491 --- /dev/null +++ b/src/Flashsharp/Auth/TokenAuthenticationHandler.cs @@ -0,0 +1,80 @@ +using System.Globalization; +using System.Security.Claims; +using System.Text.Encodings.Web; +using Flashsharp.Data; +using Microsoft.AspNetCore.Authentication; +using Microsoft.Extensions.Options; + +namespace Flashsharp.Auth; + +public sealed class TokenAuthenticationHandler : AuthenticationHandler +{ + public const string SchemeName = "FlashsharpToken"; + public const string CookieName = "flashsharp_session"; + + readonly Store store; + + public TokenAuthenticationHandler( + IOptionsMonitor options, + ILoggerFactory logger, + UrlEncoder encoder, + Store store) + : base(options, logger, encoder) + { + this.store = store; + } + + protected override async Task HandleAuthenticateAsync() + { + var rawToken = ReadBearerToken() ?? Request.Cookies[CookieName]; + if (string.IsNullOrWhiteSpace(rawToken)) + { + return AuthenticateResult.NoResult(); + } + + var result = await store.AuthenticateTokenAsync(rawToken, Context.RequestAborted); + if (result is null) + { + return AuthenticateResult.Fail("Invalid or expired token."); + } + + var (user, token) = result.Value; + try + { + await store.TouchTokenAsync(token.Id, Context.RequestAborted); + } + catch (Exception exception) + { + Logger.LogWarning(exception, "Could not update token usage"); + } + + var identity = new ClaimsIdentity( + [ + new Claim(ClaimTypes.NameIdentifier, user.Id.ToString(CultureInfo.InvariantCulture)), + new Claim(ClaimTypes.Name, user.Username), + new Claim(AuthClaims.TokenId, token.Id.ToString(CultureInfo.InvariantCulture)) + ], + SchemeName); + return AuthenticateResult.Success(new AuthenticationTicket(new ClaimsPrincipal(identity), SchemeName)); + } + + protected override Task HandleChallengeAsync(AuthenticationProperties properties) + { + if (Context.Request.Path.StartsWithSegments("/mcp")) + { + return base.HandleChallengeAsync(properties); + } + + var returnUrl = Context.Request.Path + Context.Request.QueryString; + Context.Response.Redirect("/Login?returnUrl=" + Uri.EscapeDataString(returnUrl)); + return Task.CompletedTask; + } + + string? ReadBearerToken() + { + var header = Request.Headers.Authorization.ToString(); + return header.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase) + ? header["Bearer ".Length..].Trim() + : null; + } +} diff --git a/src/Flashsharp/Configuration/AppOptions.cs b/src/Flashsharp/Configuration/AppOptions.cs new file mode 100644 index 0000000..424b629 --- /dev/null +++ b/src/Flashsharp/Configuration/AppOptions.cs @@ -0,0 +1,77 @@ +namespace Flashsharp.Configuration; + +public sealed record AppOptions( + string DatabaseUrl, + string Host, + int Port, + string? SeedUsername, + string? SeedPassword, + string? SeedPasswordHash, + int SessionDays, + string DataDirectory) +{ + public static AppOptions FromEnvironment() + { + var databaseUrl = Env("FLASHSHARP_DB") ?? Env("DATABASE_URL") + ?? throw new InvalidOperationException( + "FLASHSHARP_DB is required (for example: Host=localhost;Database=flashsharp;Username=flashsharp)."); + + var host = Env("FLASHSHARP_HOST") ?? "127.0.0.1"; + var portText = Env("FLASHSHARP_PORT") ?? Env("PORT") ?? "8080"; + if (!int.TryParse(portText, out var port) || port is < 1 or > 65535) + { + throw new InvalidOperationException($"Invalid port: {portText}."); + } + + var sessionDaysText = Env("FLASHSHARP_SESSION_DAYS") ?? "30"; + if (!int.TryParse(sessionDaysText, out var sessionDays) || sessionDays < 1) + { + throw new InvalidOperationException($"Invalid FLASHSHARP_SESSION_DAYS: {sessionDaysText}."); + } + + return new AppOptions( + databaseUrl, + host, + port, + Env("FLASHSHARP_SEED_USERNAME"), + ReadPassword(), + ReadHash(), + sessionDays, + Env("FLASHSHARP_DATA_DIR") ?? ".flashsharp-data"); + } + + static string? ReadHash() + { + var direct = Env("FLASHSHARP_SEED_PASSWORD_HASH"); + if (!string.IsNullOrEmpty(direct)) + { + return direct; + } + + var path = Env("FLASHSHARP_SEED_PASSWORD_HASH_FILE"); + return string.IsNullOrEmpty(path) ? null : File.ReadAllText(path).Trim(); + } + + static string? ReadPassword() + { + var direct = Env("FLASHSHARP_SEED_PASSWORD"); + if (!string.IsNullOrEmpty(direct)) + { + return direct; + } + + var path = Env("FLASHSHARP_SEED_PASSWORD_FILE"); + if (string.IsNullOrEmpty(path)) + { + return null; + } + + return File.ReadAllText(path).TrimEnd('\r', '\n'); + } + + static string? Env(string name) + { + var value = Environment.GetEnvironmentVariable(name); + return string.IsNullOrWhiteSpace(value) ? null : value.Trim(); + } +} diff --git a/src/Flashsharp/Data/Database.cs b/src/Flashsharp/Data/Database.cs new file mode 100644 index 0000000..530e69d --- /dev/null +++ b/src/Flashsharp/Data/Database.cs @@ -0,0 +1,25 @@ +using Flashsharp.Domain; +using Npgsql; + +namespace Flashsharp.Data; + +public sealed class Db +{ + public Db(NpgsqlDataSource dataSource) + { + DataSource = dataSource; + } + + public NpgsqlDataSource DataSource { get; } + + public ValueTask OpenAsync(CancellationToken cancellationToken = default) + => DataSource.OpenConnectionAsync(cancellationToken); + + public static NpgsqlDataSource Build(string connectionString) + { + var builder = new NpgsqlDataSourceBuilder(connectionString); + builder.MapEnum("card_side_kind"); + builder.MapEnum("review_rating"); + return builder.Build(); + } +} diff --git a/src/Flashsharp/Data/Migrations/0001_initial.sql b/src/Flashsharp/Data/Migrations/0001_initial.sql new file mode 100644 index 0000000..bb9f85b --- /dev/null +++ b/src/Flashsharp/Data/Migrations/0001_initial.sql @@ -0,0 +1,217 @@ +create extension if not exists pg_trgm; + +create type card_side_kind as enum ('front', 'back', 'extra'); +create type review_rating as enum ('again', 'hard', 'good', 'easy'); + +create table app_user ( + id bigint generated always as identity primary key, + username text not null check (username = btrim(username)), + password_hash text not null, + is_active boolean not null default true, + created_at timestamptz not null default now() +); + +create unique index app_user_username_key on app_user(lower(username)); + +create table auth_token ( + id bigint generated always as identity primary key, + user_id bigint not null references app_user(id) on delete cascade, + label text not null check (length(label) > 0 and label = btrim(label)), + kind text not null check (kind in ('browser', 'api')), + token_hash bytea not null unique, + created_at timestamptz not null default now(), + last_used_at timestamptz, + expires_at timestamptz, + revoked_at timestamptz +); + +create index auth_token_user_idx on auth_token(user_id, kind) where revoked_at is null; + +create table course ( + id bigint generated always as identity primary key, + name text not null check (length(name) > 0 and name = btrim(name)), + description text not null default '', + position integer not null default 0, + created_at timestamptz not null default now(), + updated_at timestamptz not null default now() +); + +create unique index course_name_key on course(lower(name)); + +create table lesson ( + id bigint generated always as identity primary key, + course_id bigint not null references course(id) on delete cascade, + name text not null check (length(name) > 0 and name = btrim(name)), + description text not null default '', + position integer not null default 0, + created_at timestamptz not null default now(), + updated_at timestamptz not null default now() +); + +create index lesson_course_idx on lesson(course_id, position, id); +create unique index lesson_name_key on lesson(course_id, lower(name)); + +create table deck ( + id bigint generated always as identity primary key, + lesson_id bigint not null references lesson(id) on delete cascade, + name text not null check (length(name) > 0 and name = btrim(name)), + description text not null default '', + position integer not null default 0, + created_at timestamptz not null default now(), + updated_at timestamptz not null default now() +); + +create index deck_lesson_idx on deck(lesson_id, position, id); +create unique index deck_name_key on deck(lesson_id, lower(name)); + +create table card ( + id bigint generated always as identity primary key, + created_by bigint references app_user(id) on delete set null, + search_text text not null default '', + search_vector tsvector generated always as (to_tsvector('simple', search_text)) stored, + created_at timestamptz not null default now(), + updated_at timestamptz not null default now(), + deleted_at timestamptz +); + +create index card_search_vector_idx on card using gin(search_vector); +create index card_search_trgm_idx on card using gin(search_text gin_trgm_ops); +create index card_active_idx on card(id) where deleted_at is null; + +create table card_side ( + id bigint generated always as identity primary key, + card_id bigint not null references card(id) on delete cascade, + kind card_side_kind not null, + label text not null default '' check (label = btrim(label)), + body text not null check (length(trim(body)) > 0), + position integer not null default 0, + created_at timestamptz not null default now(), + updated_at timestamptz not null default now() +); + +create unique index card_side_one_front on card_side(card_id) where kind = 'front'; +create unique index card_side_one_back on card_side(card_id) where kind = 'back'; +create index card_side_card_idx on card_side(card_id, kind, position, id); + +create table card_deck ( + card_id bigint not null references card(id) on delete cascade, + deck_id bigint not null references deck(id) on delete cascade, + added_at timestamptz not null default now(), + primary key (card_id, deck_id) +); + +create index card_deck_deck_idx on card_deck(deck_id, card_id); + +create table tag ( + id bigint generated always as identity primary key, + name text not null check (name = btrim(name)), + description text not null default '', + created_at timestamptz not null default now() +); + +create unique index tag_name_key on tag(lower(name)); + +create table card_tag ( + card_id bigint not null references card(id) on delete cascade, + tag_id bigint not null references tag(id) on delete cascade, + primary key (card_id, tag_id) +); + +create index card_tag_tag_idx on card_tag(tag_id, card_id); + +create table review ( + id bigint generated always as identity primary key, + user_id bigint not null references app_user(id) on delete cascade, + card_id bigint not null references card(id), + deck_id bigint references deck(id) on delete set null, + rating review_rating not null, + duration_ms integer not null default 0 check (duration_ms >= 0), + reviewed_at timestamptz not null default now() +); + +create index review_user_reviewed_idx on review(user_id, reviewed_at desc); +create index review_card_reviewed_idx on review(card_id, reviewed_at desc); +create index review_deck_idx on review(deck_id) where deck_id is not null; +create index review_reviewed_brin on review using brin(reviewed_at); + +create table card_schedule ( + user_id bigint not null references app_user(id) on delete cascade, + card_id bigint not null references card(id) on delete cascade, + due_at timestamptz not null, + interval_seconds integer not null default 0 check (interval_seconds >= 0), + ease double precision not null default 2.5 check (ease >= 1.3), + repetitions integer not null default 0 check (repetitions >= 0), + lapses integer not null default 0 check (lapses >= 0), + last_review_id bigint references review(id) on delete set null, + updated_at timestamptz not null default now(), + primary key (user_id, card_id) +); + +create index card_schedule_due_idx on card_schedule(user_id, due_at); + +create function touch_updated_at() returns trigger +language plpgsql as $$ +begin + new.updated_at = now(); + return new; +end; +$$; + +create trigger course_touch_updated_at before update on course +for each row execute function touch_updated_at(); + +create trigger lesson_touch_updated_at before update on lesson +for each row execute function touch_updated_at(); + +create trigger deck_touch_updated_at before update on deck +for each row execute function touch_updated_at(); + +create trigger card_touch_updated_at before update on card +for each row execute function touch_updated_at(); + +create trigger card_side_touch_updated_at before update on card_side +for each row execute function touch_updated_at(); + +create function refresh_card_search_text() returns trigger +language plpgsql as $$ +declare + target_card bigint; +begin + target_card := coalesce(new.card_id, old.card_id); + update card + set search_text = coalesce(( + select string_agg(side.body, E'\n\n' order by side.position, side.id) + from card_side side + where side.card_id = target_card + ), '') + where id = target_card; + return null; +end; +$$; + +create trigger card_side_refresh_search +after insert or update or delete on card_side +for each row execute function refresh_card_search_text(); + +create function ensure_card_has_front() returns trigger +language plpgsql as $$ +declare + target_card bigint; +begin + target_card := coalesce(new.card_id, old.card_id); + if not exists (select 1 from card where id = target_card) then + return null; + end if; + if not exists ( + select 1 from card_side where card_id = target_card and kind = 'front' + ) then + raise exception 'card % must have a front side', target_card; + end if; + return null; +end; +$$; + +create constraint trigger card_requires_front +after insert or update or delete on card_side +deferrable initially deferred +for each row execute function ensure_card_has_front(); diff --git a/src/Flashsharp/Data/Migrator.cs b/src/Flashsharp/Data/Migrator.cs new file mode 100644 index 0000000..5a418cb --- /dev/null +++ b/src/Flashsharp/Data/Migrator.cs @@ -0,0 +1,67 @@ +using System.Reflection; +using Dapper; + +namespace Flashsharp.Data; + +public static class Migrator +{ + const string LockName = "flashsharp:migrations"; + + public static async Task RunAsync(Db db, ILogger logger, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync("select pg_advisory_lock(hashtext(@name))", new { name = LockName }); + + try + { + await connection.ExecuteAsync( + """ + create table if not exists schema_migration ( + version text primary key, + applied_at timestamptz not null default now() + ) + """); + + var applied = (await connection.QueryAsync("select version from schema_migration")) + .ToHashSet(StringComparer.Ordinal); + + foreach (var migration in LoadMigrations()) + { + if (applied.Contains(migration.Version)) + { + continue; + } + + logger.LogInformation("Applying migration {Version}", migration.Version); + await using var transaction = await connection.BeginTransactionAsync(cancellationToken); + await connection.ExecuteAsync(migration.Sql, transaction: transaction); + await connection.ExecuteAsync( + "insert into schema_migration (version) values (@version)", + new { migration.Version }, + transaction); + await transaction.CommitAsync(cancellationToken); + } + } + finally + { + await connection.ExecuteAsync("select pg_advisory_unlock(hashtext(@name))", new { name = LockName }); + } + } + + static IEnumerable<(string Version, string Sql)> LoadMigrations() + { + var assembly = Assembly.GetExecutingAssembly(); + var prefix = "Flashsharp.Data.Migrations."; + var names = assembly.GetManifestResourceNames() + .Where(name => name.StartsWith(prefix, StringComparison.Ordinal) && name.EndsWith(".sql", StringComparison.Ordinal)) + .OrderBy(name => name, StringComparer.Ordinal); + + foreach (var name in names) + { + using var stream = assembly.GetManifestResourceStream(name) + ?? throw new InvalidOperationException($"Missing migration resource {name}."); + using var reader = new StreamReader(stream); + yield return (name[prefix.Length..^4], reader.ReadToEnd()); + } + } +} diff --git a/src/Flashsharp/Data/Store.Auth.cs b/src/Flashsharp/Data/Store.Auth.cs new file mode 100644 index 0000000..a55f0eb --- /dev/null +++ b/src/Flashsharp/Data/Store.Auth.cs @@ -0,0 +1,272 @@ +using System.Security.Cryptography; +using System.Text; +using Dapper; +using Flashsharp.Domain; +using Microsoft.AspNetCore.WebUtilities; + +namespace Flashsharp.Data; + +public sealed partial class Store +{ + const int PasswordWorkFactor = 12; + const string TokenPrefix = "fsh_"; + + public async Task CountUsersAsync(CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.ExecuteScalarAsync("select count(*) from app_user"); + } + + public async Task SeedAsync( + string? username, + string? password, + string? passwordHash, + CancellationToken cancellationToken = default) + { + if (await CountUsersAsync(cancellationToken) > 0) + { + return; + } + + if (string.IsNullOrWhiteSpace(username) + || (string.IsNullOrEmpty(password) && string.IsNullOrWhiteSpace(passwordHash))) + { + throw new InvalidOperationException( + "No users exist yet. Set FLASHSHARP_SEED_USERNAME and one of " + + "FLASHSHARP_SEED_PASSWORD, FLASHSHARP_SEED_PASSWORD_FILE, " + + "FLASHSHARP_SEED_PASSWORD_HASH or FLASHSHARP_SEED_PASSWORD_HASH_FILE " + + "to create the first user."); + } + + var normalized = username.Trim(); + var hash = string.IsNullOrWhiteSpace(passwordHash) + ? BCrypt.Net.BCrypt.HashPassword(password!, PasswordWorkFactor) + : passwordHash.Trim(); + + if (!hash.StartsWith("$2", StringComparison.Ordinal)) + { + throw new InvalidOperationException("The seed password hash must be a bcrypt hash."); + } + + await InsertUserAsync(normalized, hash, cancellationToken); + } + + public async Task CreateUserAsync( + string username, + string password, + CancellationToken cancellationToken = default) + { + var normalized = username.Trim(); + if (normalized.Length == 0) + { + throw new ArgumentException("Username must not be empty.", nameof(username)); + } + if (password.Length < 8) + { + throw new ArgumentException("Password must be at least 8 characters.", nameof(password)); + } + + var hash = BCrypt.Net.BCrypt.HashPassword(password, PasswordWorkFactor); + return await InsertUserAsync(normalized, hash, cancellationToken); + } + + async Task InsertUserAsync(string username, string passwordHash, CancellationToken cancellationToken) + { + await using var connection = await db.OpenAsync(cancellationToken); + var id = await connection.ExecuteScalarAsync( + """ + insert into app_user (username, password_hash) + values (@username, @passwordHash) + returning id + """, + new { username, passwordHash }); + return new User(id, username); + } + + public async Task GetUserByUsernameAsync(string username, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleOrDefaultAsync( + """select id as "Id", username as "Username" from app_user where lower(username) = lower(@username) and is_active""", + new { username }); + } + + public async Task GetUserAsync(long id, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleOrDefaultAsync( + """select id as "Id", username as "Username" from app_user where id = @id and is_active""", + new { id }); + } + + public async Task> ListUsersAsync(CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + """select id as "Id", username as "Username" from app_user where is_active order by lower(username)"""); + return rows.ToList(); + } + + public async Task DeactivateUserAsync(long id, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync("update app_user set is_active = false where id = @id", new { id }); + } + + public async Task VerifyPasswordAsync(string username, string password, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var hash = await connection.QuerySingleOrDefaultAsync( + """select password_hash from app_user where lower(username) = lower(@username) and is_active""", + new { username }); + return hash is not null && BCrypt.Net.BCrypt.Verify(password, hash); + } + + public async Task ChangePasswordAsync(long userId, string newPassword, CancellationToken cancellationToken = default) + { + if (newPassword.Length < 8) + { + throw new ArgumentException("Password must be at least 8 characters.", nameof(newPassword)); + } + + var hash = BCrypt.Net.BCrypt.HashPassword(newPassword, PasswordWorkFactor); + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync( + "update app_user set password_hash = @hash where id = @userId", + new { hash, userId }); + } + + public async Task<(AuthToken Token, string Raw)> CreateTokenAsync( + long userId, + string label, + string kind, + TimeSpan? lifetime, + CancellationToken cancellationToken = default) + { + var raw = TokenPrefix + WebEncoders.Base64UrlEncode(RandomNumberGenerator.GetBytes(32)); + var hash = HashToken(raw); + var expiresAt = lifetime is null ? (DateTime?)null : DateTime.UtcNow.Add(lifetime.Value); + + await using var connection = await db.OpenAsync(cancellationToken); + var row = await connection.QuerySingleAsync( + """ + insert into auth_token (user_id, label, kind, token_hash, expires_at) + values (@userId, @label, @kind, @hash, @expiresAt) + returning id as "Id", label as "Label", kind as "Kind", + created_at as "CreatedAt", last_used_at as "LastUsedAt", expires_at as "ExpiresAt" + """, + new { userId, label = label.Trim(), kind, hash, expiresAt }); + return (row, raw); + } + + public async Task> ListTokensAsync( + long userId, + string kind, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + """ + select id as "Id", label as "Label", kind as "Kind", + created_at as "CreatedAt", last_used_at as "LastUsedAt", expires_at as "ExpiresAt" + from auth_token + where user_id = @userId and kind = @kind and revoked_at is null + order by created_at desc + """, + new { userId, kind }); + return rows.ToList(); + } + + public async Task RevokeTokenAsync(long userId, long tokenId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var affected = await connection.ExecuteAsync( + """ + update auth_token set revoked_at = now() + where id = @tokenId and user_id = @userId and revoked_at is null + """, + new { tokenId, userId }); + return affected > 0; + } + + public async Task RevokeOtherBrowserTokensAsync( + long userId, + long? exceptTokenId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync( + """ + update auth_token set revoked_at = now() + where user_id = @userId + and kind = 'browser' + and revoked_at is null + and (@exceptTokenId::bigint is null or id <> @exceptTokenId) + """, + new { userId, exceptTokenId }); + } + + public async Task<(User User, AuthToken Token)?> AuthenticateTokenAsync( + string rawToken, + CancellationToken cancellationToken = default) + { + var hash = HashToken(rawToken); + await using var connection = await db.OpenAsync(cancellationToken); + var row = await connection.QuerySingleOrDefaultAsync( + """ + select t.id as "TokenId", t.label as "Label", t.kind as "Kind", + t.created_at as "TokenCreatedAt", t.last_used_at as "LastUsedAt", t.expires_at as "ExpiresAt", + u.id as "UserId", u.username as "Username" + from auth_token t + join app_user u on u.id = t.user_id + where t.token_hash = @hash + and t.revoked_at is null + and (t.expires_at is null or t.expires_at > now()) + and u.is_active + """, + new { hash }); + + if (row is null) + { + return null; + } + + var token = new AuthToken + { + Id = row.TokenId, + Label = row.Label, + Kind = row.Kind, + CreatedAt = row.TokenCreatedAt, + LastUsedAt = row.LastUsedAt, + ExpiresAt = row.ExpiresAt + }; + return (new User(row.UserId, row.Username), token); + } + + public async Task TouchTokenAsync(long tokenId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync( + """ + update auth_token + set last_used_at = now() + where id = @tokenId + and (last_used_at is null or last_used_at < now() - interval '5 minutes') + """, + new { tokenId }); + } + + static byte[] HashToken(string rawToken) => SHA256.HashData(Encoding.UTF8.GetBytes(rawToken)); + + sealed class AuthLookup + { + public long TokenId { get; init; } + public string Label { get; init; } = ""; + public string Kind { get; init; } = ""; + public DateTime TokenCreatedAt { get; init; } + public DateTime? LastUsedAt { get; init; } + public DateTime? ExpiresAt { get; init; } + public long UserId { get; init; } + public string Username { get; init; } = ""; + } +} diff --git a/src/Flashsharp/Data/Store.Cards.cs b/src/Flashsharp/Data/Store.Cards.cs new file mode 100644 index 0000000..89e997b --- /dev/null +++ b/src/Flashsharp/Data/Store.Cards.cs @@ -0,0 +1,467 @@ +using System.Data; +using Dapper; +using Flashsharp.Domain; +using Npgsql; + +namespace Flashsharp.Data; + +public sealed partial class Store +{ + public async Task CreateCardAsync( + long deckId, + long userId, + CardDraft draft, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await using var transaction = await connection.BeginTransactionAsync(cancellationToken); + var cardId = await InsertCardAsync(connection, transaction, deckId, userId, draft, cancellationToken); + await transaction.CommitAsync(cancellationToken); + return cardId; + } + + public async Task> CreateCardsAsync( + long deckId, + long userId, + IReadOnlyList drafts, + CancellationToken cancellationToken = default) + { + if (drafts.Count == 0) + { + return []; + } + if (drafts.Count > 200) + { + throw new ArgumentException("At most 200 cards can be created in one call.", nameof(drafts)); + } + + await using var connection = await db.OpenAsync(cancellationToken); + await using var transaction = await connection.BeginTransactionAsync(cancellationToken); + var ids = new List(drafts.Count); + foreach (var draft in drafts) + { + ids.Add(await InsertCardAsync(connection, transaction, deckId, userId, draft, cancellationToken)); + } + await transaction.CommitAsync(cancellationToken); + return ids; + } + + static async Task InsertCardAsync( + NpgsqlConnection connection, + NpgsqlTransaction transaction, + long deckId, + long userId, + CardDraft draft, + CancellationToken cancellationToken) + { + var front = RequireBody(draft.Front, "front"); + var back = string.IsNullOrWhiteSpace(draft.Back) ? null : draft.Back.Trim(); + var extras = (draft.Extras ?? []) + .Where(extra => !string.IsNullOrWhiteSpace(extra.Body)) + .Select(extra => new ExtraSide((extra.Label ?? "").Trim(), extra.Body.Trim())) + .ToList(); + + var cardId = await connection.ExecuteScalarAsync( + "insert into card (created_by) values (@userId) returning id", + new { userId }, + transaction); + + await InsertSideAsync(connection, transaction, cardId, SideKind.Front, "", front, 0); + if (back is not null) + { + await InsertSideAsync(connection, transaction, cardId, SideKind.Back, "", back, 0); + } + for (var index = 0; index < extras.Count; index++) + { + await InsertSideAsync(connection, transaction, cardId, SideKind.Extra, extras[index].Label, extras[index].Body, index + 1); + } + + await connection.ExecuteAsync( + "insert into card_deck (card_id, deck_id) values (@cardId, @deckId)", + new { cardId, deckId }, + transaction); + + await SetTagsAsync(connection, transaction, cardId, draft.Tags); + return cardId; + } + + static Task InsertSideAsync( + NpgsqlConnection connection, + NpgsqlTransaction transaction, + long cardId, + SideKind kind, + string label, + string body, + int position) + => connection.ExecuteAsync( + """ + insert into card_side (card_id, kind, label, body, position) + values (@cardId, @kind::card_side_kind, @label, @body, @position) + """, + new { cardId, kind = kind.ToString().ToLowerInvariant(), label, body, position }, + transaction); + + public async Task GetCardAsync(long cardId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var header = await connection.QuerySingleOrDefaultAsync( + """select id as "Id", created_at as "CreatedAt" from card where id = @cardId and deleted_at is null""", + new { cardId }); + if (header is null) + { + return null; + } + + var sides = await connection.QueryAsync( + """ + select id as "Id", kind as "Kind", label as "Label", body as "Body", position as "Position" + from card_side + where card_id = @cardId + order by case kind when 'front' then 0 when 'back' then 1 else 2 end, position, id + """, + new { cardId }); + return new Card(header.Id, header.CreatedAt, sides.ToList()); + } + + public async Task CardExistsAsync(long cardId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.ExecuteScalarAsync( + "select exists(select 1 from card where id = @cardId and deleted_at is null)", + new { cardId }); + } + + public async Task GetCardRefAsync(long cardId, CancellationToken cancellationToken = default) + { + var refs = await LoadCardRefsAsync([cardId], cancellationToken); + return refs.GetValueOrDefault(cardId); + } + + public async Task> ListDeckCardsAsync( + long deckId, + int limit, + int offset, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var ids = (await connection.QueryAsync( + """ + select c.id + from card_deck cd + join card c on c.id = cd.card_id + where cd.deck_id = @deckId and c.deleted_at is null + order by c.created_at desc, c.id desc + limit @limit offset @offset + """, + new { deckId, limit, offset })).ToList(); + + var refs = await LoadCardRefsAsync(ids, cancellationToken); + return ids.Where(refs.ContainsKey).Select(id => refs[id]).ToList(); + } + + public async Task> SearchCardsAsync( + string? query, + long? courseId, + long? lessonId, + long? deckId, + string? tag, + int limit, + CancellationToken cancellationToken = default) + { + var q = (query ?? "").Trim(); + var tagFilter = (tag ?? "").Trim(); + + await using var connection = await db.OpenAsync(cancellationToken); + var ids = (await connection.QueryAsync( + """ + select c.id + from card c + where c.deleted_at is null + and (@q = '' + or c.search_vector @@ websearch_to_tsquery('simple', @q) + or c.search_text ilike '%' || @q || '%') + and (@tag = '' + or exists ( + select 1 from card_tag ct + join tag t on t.id = ct.tag_id + where ct.card_id = c.id and lower(t.name) = lower(@tag))) + and (@courseId::bigint is null + or exists ( + select 1 from card_deck cd + join deck d on d.id = cd.deck_id + join lesson l on l.id = d.lesson_id + where cd.card_id = c.id and l.course_id = @courseId)) + and (@lessonId::bigint is null + or exists ( + select 1 from card_deck cd + join deck d on d.id = cd.deck_id + where cd.card_id = c.id and d.lesson_id = @lessonId)) + and (@deckId::bigint is null + or exists ( + select 1 from card_deck cd + where cd.card_id = c.id and cd.deck_id = @deckId)) + order by + case when @q = '' then 0 else + ts_rank(c.search_vector, websearch_to_tsquery('simple', @q)) + similarity(c.search_text, @q) + end desc, + c.created_at desc, + c.id desc + limit @limit + """, + new { q, tag = tagFilter, courseId, lessonId, deckId, limit })).ToList(); + + var refs = await LoadCardRefsAsync(ids, cancellationToken); + return ids.Where(refs.ContainsKey).Select(id => refs[id]).ToList(); + } + + public async Task> ListTagsAsync(CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + """ + select t.name as "Name", + t.description as "Description", + count(c.id)::int as "CardCount" + from tag t + left join card_tag ct on ct.tag_id = t.id + left join card c on c.id = ct.card_id and c.deleted_at is null + group by t.id + order by lower(t.name) + """); + return rows.ToList(); + } + + public async Task CreateTagAsync( + string name, + string description = "", + CancellationToken cancellationToken = default) + { + var clean = (name ?? "").Trim(); + if (clean.Length == 0) + { + throw new ArgumentException("Tag name must not be empty.", nameof(name)); + } + + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleAsync( + """ + insert into tag (name, description) + values (@clean, @description) + on conflict (lower(name)) do update + set description = case when excluded.description = '' then tag.description else excluded.description end + returning name + """, + new { clean, description = description ?? "" }); + } + + public async Task UpdateCardAsync( + long cardId, + CardDraft draft, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await using var transaction = await connection.BeginTransactionAsync(cancellationToken); + + var exists = await connection.ExecuteScalarAsync( + """select exists(select 1 from card where id = @cardId and deleted_at is null)""", + new { cardId }, + transaction); + if (!exists) + { + throw new InvalidOperationException($"Card {cardId} does not exist."); + } + + await connection.ExecuteAsync("delete from card_side where card_id = @cardId", new { cardId }, transaction); + await connection.ExecuteAsync("delete from card_tag where card_id = @cardId", new { cardId }, transaction); + + var front = RequireBody(draft.Front, "front"); + var back = string.IsNullOrWhiteSpace(draft.Back) ? null : draft.Back.Trim(); + var extras = (draft.Extras ?? []) + .Where(extra => !string.IsNullOrWhiteSpace(extra.Body)) + .Select(extra => new ExtraSide((extra.Label ?? "").Trim(), extra.Body.Trim())) + .ToList(); + + await InsertSideAsync(connection, transaction, cardId, SideKind.Front, "", front, 0); + if (back is not null) + { + await InsertSideAsync(connection, transaction, cardId, SideKind.Back, "", back, 0); + } + for (var index = 0; index < extras.Count; index++) + { + await InsertSideAsync(connection, transaction, cardId, SideKind.Extra, extras[index].Label, extras[index].Body, index + 1); + } + + await SetTagsAsync(connection, transaction, cardId, draft.Tags); + await transaction.CommitAsync(cancellationToken); + } + + public async Task DeleteCardAsync(long cardId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync( + "update card set deleted_at = now() where id = @cardId and deleted_at is null", + new { cardId }); + } + + public async Task AddCardToDeckAsync(long cardId, long deckId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync( + """ + insert into card_deck (card_id, deck_id) + select c.id, d.id from card c, deck d + where c.id = @cardId and d.id = @deckId and c.deleted_at is null + on conflict (card_id, deck_id) do nothing + """, + new { cardId, deckId }); + } + + public async Task RemoveCardFromDeckAsync(long cardId, long deckId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync( + "delete from card_deck where card_id = @cardId and deck_id = @deckId", + new { cardId, deckId }); + } + + static async Task SetTagsAsync( + NpgsqlConnection connection, + NpgsqlTransaction transaction, + long cardId, + IReadOnlyList? tags) + { + var clean = (tags ?? []) + .Select(tag => (tag ?? "").Trim()) + .Where(tag => tag.Length > 0) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); + + foreach (var tag in clean) + { + var tagId = await connection.ExecuteScalarAsync( + """ + insert into tag (name) values (@tag) + on conflict (lower(name)) do update set name = excluded.name + returning id + """, + new { tag }, + transaction); + await connection.ExecuteAsync( + "insert into card_tag (card_id, tag_id) values (@cardId, @tagId) on conflict do nothing", + new { cardId, tagId }, + transaction); + } + } + + async Task> LoadCardRefsAsync( + IReadOnlyList ids, + CancellationToken cancellationToken) + { + if (ids.Count == 0) + { + return new Dictionary(); + } + + await using var connection = await db.OpenAsync(cancellationToken); + + var sides = (await connection.QueryAsync( + """ + select card_id as "CardId", kind as "Kind", label as "Label", body as "Body", position as "Position" + from card_side + where card_id = any(@ids) + order by case kind when 'front' then 0 when 'back' then 1 else 2 end, position, id + """, + new { ids })).ToList(); + + var tags = (await connection.QueryAsync( + """ + select ct.card_id as "CardId", t.name as "Name" + from card_tag ct + join tag t on t.id = ct.tag_id + where ct.card_id = any(@ids) + order by lower(t.name) + """, + new { ids })).ToList(); + + var decks = (await connection.QueryAsync( + """ + select cd.card_id as "CardId", + d.id as "Id", d.name as "Name", + l.id as "LessonId", l.name as "LessonName", + co.id as "CourseId", co.name as "CourseName" + from card_deck cd + join deck d on d.id = cd.deck_id + join lesson l on l.id = d.lesson_id + join course co on co.id = l.course_id + where cd.card_id = any(@ids) + order by lower(co.name), lower(l.name), lower(d.name) + """, + new { ids })).ToList(); + + var sidesByCard = sides.GroupBy(row => row.CardId).ToDictionary(group => group.Key, group => group.ToList()); + var tagsByCard = tags.GroupBy(row => row.CardId).ToDictionary(group => group.Key, group => group.Select(row => row.Name).ToList()); + var decksByCard = decks.GroupBy(row => row.CardId).ToDictionary(group => group.Key, group => group + .Select(row => new DeckRef(row.Id, row.Name, row.LessonId, row.LessonName, row.CourseId, row.CourseName)) + .ToList()); + + var result = new Dictionary(ids.Count); + foreach (var id in ids) + { + if (!sidesByCard.TryGetValue(id, out var cardSides)) + { + continue; + } + var front = cardSides.FirstOrDefault(side => side.Kind == SideKind.Front)?.Body ?? ""; + var back = cardSides.FirstOrDefault(side => side.Kind == SideKind.Back)?.Body; + result[id] = new CardRef( + id, + front, + back, + tagsByCard.GetValueOrDefault(id, []), + decksByCard.GetValueOrDefault(id, [])); + } + return result; + } + + static string RequireBody(string body, string label) + { + var clean = (body ?? "").Trim(); + if (clean.Length == 0) + { + throw new ArgumentException($"The {label} side must not be empty."); + } + return clean; + } + + sealed class CardHeader + { + public long Id { get; init; } + public DateTime CreatedAt { get; init; } + } + + sealed class SideRow + { + public long CardId { get; init; } + public SideKind Kind { get; init; } + public string Label { get; init; } = ""; + public string Body { get; init; } = ""; + public int Position { get; init; } + } + + sealed class TagRow + { + public long CardId { get; init; } + public string Name { get; init; } = ""; + } + + sealed class CardDeckRow + { + public long CardId { get; init; } + public long Id { get; init; } + public string Name { get; init; } = ""; + public long LessonId { get; init; } + public string LessonName { get; init; } = ""; + public long CourseId { get; init; } + public string CourseName { get; init; } = ""; + } +} diff --git a/src/Flashsharp/Data/Store.Catalog.cs b/src/Flashsharp/Data/Store.Catalog.cs new file mode 100644 index 0000000..2a3599c --- /dev/null +++ b/src/Flashsharp/Data/Store.Catalog.cs @@ -0,0 +1,339 @@ +using Dapper; +using Flashsharp.Domain; + +namespace Flashsharp.Data; + +public sealed partial class Store +{ + const string CourseSummarySql = + """ + select co.id as "Id", + co.name as "Name", + co.description as "Description", + co.position as "Position", + (select count(*) from lesson l where l.course_id = co.id)::int as "LessonCount", + (select count(*) from deck d join lesson l on l.id = d.lesson_id where l.course_id = co.id)::int as "DeckCount", + (select count(distinct c.id) + from card_deck cd + join deck d on d.id = cd.deck_id + join lesson l on l.id = d.lesson_id + join card c on c.id = cd.card_id + where l.course_id = co.id and c.deleted_at is null)::int as "CardCount", + (select count(distinct c.id) + from card_deck cd + join deck d on d.id = cd.deck_id + join lesson l on l.id = d.lesson_id + join card c on c.id = cd.card_id + left join card_schedule s on s.card_id = c.id and s.user_id = @userId + where l.course_id = co.id + and c.deleted_at is null + and (s.user_id is null or s.due_at <= now()))::int as "DueCount" + from course co + """; + + const string LessonSummarySql = + """ + select l.id as "Id", + l.course_id as "CourseId", + l.name as "Name", + l.description as "Description", + l.position as "Position", + (select count(*) from deck d where d.lesson_id = l.id)::int as "DeckCount", + (select count(distinct c.id) + from card_deck cd + join deck d on d.id = cd.deck_id + join card c on c.id = cd.card_id + where d.lesson_id = l.id and c.deleted_at is null)::int as "CardCount", + (select count(distinct c.id) + from card_deck cd + join deck d on d.id = cd.deck_id + join card c on c.id = cd.card_id + left join card_schedule s on s.card_id = c.id and s.user_id = @userId + where d.lesson_id = l.id + and c.deleted_at is null + and (s.user_id is null or s.due_at <= now()))::int as "DueCount" + from lesson l + """; + + const string DeckSummarySql = + """ + select d.id as "Id", + d.lesson_id as "LessonId", + l.course_id as "CourseId", + l.name as "LessonName", + co.name as "CourseName", + d.name as "Name", + d.description as "Description", + d.position as "Position", + (select count(*) from card_deck cd join card c on c.id = cd.card_id + where cd.deck_id = d.id and c.deleted_at is null)::int as "CardCount", + (select count(*) + from card_deck cd + join card c on c.id = cd.card_id + left join card_schedule s on s.card_id = c.id and s.user_id = @userId + where cd.deck_id = d.id + and c.deleted_at is null + and (s.user_id is null or s.due_at <= now()))::int as "DueCount" + from deck d + join lesson l on l.id = d.lesson_id + join course co on co.id = l.course_id + """; + + public async Task> ListCoursesAsync( + long userId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + $"{CourseSummarySql} order by co.position, lower(co.name), co.id", + new { userId }); + return rows.ToList(); + } + + public async Task GetCourseAsync( + long courseId, + long userId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleOrDefaultAsync( + $"{CourseSummarySql} where co.id = @courseId", + new { courseId, userId }); + } + + public async Task> ListLessonsAsync( + long courseId, + long userId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + $"{LessonSummarySql} where l.course_id = @courseId order by l.position, lower(l.name), l.id", + new { courseId, userId }); + return rows.ToList(); + } + + public async Task GetLessonAsync( + long lessonId, + long userId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleOrDefaultAsync( + $"{LessonSummarySql} where l.id = @lessonId", + new { lessonId, userId }); + } + + public async Task> ListDecksAsync( + long lessonId, + long userId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + $"{DeckSummarySql} where d.lesson_id = @lessonId order by d.position, lower(d.name), d.id", + new { lessonId, userId }); + return rows.ToList(); + } + + public async Task GetDeckAsync( + long deckId, + long userId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleOrDefaultAsync( + $"{DeckSummarySql} where d.id = @deckId", + new { deckId, userId }); + } + + public async Task CourseExistsAsync(long courseId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.ExecuteScalarAsync( + "select exists(select 1 from course where id = @courseId)", + new { courseId }); + } + + public async Task LessonExistsAsync(long lessonId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.ExecuteScalarAsync( + "select exists(select 1 from lesson where id = @lessonId)", + new { lessonId }); + } + + public async Task GetDeckContextAsync( + long deckId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleOrDefaultAsync( + """ + select d.id as "Id", d.name as "Name", + l.id as "LessonId", l.name as "LessonName", + co.id as "CourseId", co.name as "CourseName" + from deck d + join lesson l on l.id = d.lesson_id + join course co on co.id = l.course_id + where d.id = @deckId + """, + new { deckId }); + } + + public async Task> GetTreeAsync(CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var courses = (await connection.QueryAsync( + """select id as "Id", name as "Name", description as "Description", position as "Position" from course order by position, lower(name), id""" + )).ToList(); + + var lessons = (await connection.QueryAsync( + """select id as "Id", course_id as "CourseId", name as "Name", description as "Description", position as "Position" from lesson order by position, lower(name), id""" + )).ToList(); + + var decks = (await connection.QueryAsync( + """ + select d.id as "Id", d.lesson_id as "LessonId", d.name as "Name", d.description as "Description", + d.position as "Position", + (select count(*) from card_deck cd join card c on c.id = cd.card_id + where cd.deck_id = d.id and c.deleted_at is null)::int as "CardCount" + from deck d + order by d.position, lower(d.name), d.id + """ + )).ToList(); + + var decksByLesson = decks + .GroupBy(deck => deck.LessonId) + .ToDictionary(group => group.Key, group => (IReadOnlyList)group + .Select(deck => new DeckNode(deck.Id, deck.Name, deck.Description, deck.Position, deck.CardCount)) + .ToList()); + + var lessonsByCourse = lessons + .GroupBy(lesson => lesson.CourseId) + .ToDictionary(group => group.Key, group => (IReadOnlyList)group + .Select(lesson => new LessonNode( + lesson.Id, + lesson.Name, + lesson.Description, + lesson.Position, + decksByLesson.GetValueOrDefault(lesson.Id, []))) + .ToList()); + + return courses + .Select(course => new CourseNode( + course.Id, + course.Name, + course.Description, + course.Position, + lessonsByCourse.GetValueOrDefault(course.Id, []))) + .ToList(); + } + + sealed class CourseRow + { + public long Id { get; init; } + public string Name { get; init; } = ""; + public string Description { get; init; } = ""; + public int Position { get; init; } + } + + public async Task CreateCourseAsync( + string name, + string description = "", + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleAsync( + """ + insert into course (name, description, position) + values (@name, @description, coalesce((select max(position) + 1 from course), 0)) + on conflict (lower(name)) do update set name = excluded.name + returning id as "Id", name as "Name" + """, + new { name = CleanName(name), description = description ?? "" }); + } + + public async Task CreateLessonAsync( + long courseId, + string name, + string description = "", + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleAsync( + """ + insert into lesson (course_id, name, description, position) + values (@courseId, @name, @description, + coalesce((select max(position) + 1 from lesson where course_id = @courseId), 0)) + on conflict (course_id, lower(name)) do update set name = excluded.name + returning id as "Id", name as "Name" + """, + new { courseId, name = CleanName(name), description = description ?? "" }); + } + + public async Task CreateDeckAsync( + long lessonId, + string name, + string description = "", + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + return await connection.QuerySingleAsync( + """ + insert into deck (lesson_id, name, description, position) + values (@lessonId, @name, @description, + coalesce((select max(position) + 1 from deck where lesson_id = @lessonId), 0)) + on conflict (lesson_id, lower(name)) do update set name = excluded.name + returning id as "Id", name as "Name" + """, + new { lessonId, name = CleanName(name), description = description ?? "" }); + } + + public async Task RenameCourseAsync(long courseId, string name, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync("update course set name = @name where id = @courseId", new { courseId, name = CleanName(name) }); + } + + public async Task RenameLessonAsync(long lessonId, string name, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync("update lesson set name = @name where id = @lessonId", new { lessonId, name = CleanName(name) }); + } + + public async Task RenameDeckAsync(long deckId, string name, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteAsync("update deck set name = @name where id = @deckId", new { deckId, name = CleanName(name) }); + } + + static string CleanName(string name) + { + var trimmed = name.Trim(); + if (trimmed.Length == 0) + { + throw new ArgumentException("Name must not be empty.", nameof(name)); + } + return trimmed; + } + + sealed class LessonRow + { + public long Id { get; init; } + public long CourseId { get; init; } + public string Name { get; init; } = ""; + public string Description { get; init; } = ""; + public int Position { get; init; } + } + + sealed class DeckRow + { + public long Id { get; init; } + public long LessonId { get; init; } + public string Name { get; init; } = ""; + public string Description { get; init; } = ""; + public int Position { get; init; } + public int CardCount { get; init; } + } +} diff --git a/src/Flashsharp/Data/Store.Stats.cs b/src/Flashsharp/Data/Store.Stats.cs new file mode 100644 index 0000000..cb0ddc6 --- /dev/null +++ b/src/Flashsharp/Data/Store.Stats.cs @@ -0,0 +1,188 @@ +using Dapper; +using Flashsharp.Domain; + +namespace Flashsharp.Data; + +public sealed partial class Store +{ + public async Task GetStatsSummaryAsync(long userId, CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var row = await connection.QuerySingleAsync( + """ + select (select count(*) from review where user_id = @userId)::int as "TotalReviews", + (select count(*) from review + where user_id = @userId + and (reviewed_at at time zone 'UTC')::date = (now() at time zone 'UTC')::date)::int as "ReviewsToday", + (select count(distinct card_id) from review where user_id = @userId)::int as "CardsSeen", + (select count(*) + from card c + where c.deleted_at is null + and exists (select 1 from card_deck cd where cd.card_id = c.id) + and (not exists (select 1 from card_schedule s + where s.card_id = c.id and s.user_id = @userId) + or exists (select 1 from card_schedule s + where s.card_id = c.id and s.user_id = @userId and s.due_at <= now())))::int as "DueNow", + (select count(*) from review + where user_id = @userId and reviewed_at >= now() - interval '30 days')::int as "Reviews30", + (select count(*) from review + where user_id = @userId + and reviewed_at >= now() - interval '30 days' + and rating in ('good', 'easy'))::int as "Good30", + (select coalesce(sum(duration_ms), 0) from review where user_id = @userId)::bigint as "TimeSpentMs" + """, + new { userId }); + + var days = (await connection.QueryAsync( + """ + select distinct (reviewed_at at time zone 'UTC')::date as day + from review + where user_id = @userId + order by day desc + """, + new { userId })).ToList(); + + var retention = row.Reviews30 == 0 ? 0 : (int)Math.Round(row.Good30 * 100.0 / row.Reviews30); + return new StatsSummary( + row.TotalReviews, + row.ReviewsToday, + Streak(days), + row.CardsSeen, + row.DueNow, + retention, + row.TimeSpentMs); + } + + public async Task> GetDailyStatsAsync( + long userId, + int days, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + """ + select day::date as "Day", + count(r.id)::int as "Total", + count(r.id) filter (where r.rating = 'again')::int as "Again", + count(r.id) filter (where r.rating = 'hard')::int as "Hard", + count(r.id) filter (where r.rating = 'good')::int as "Good", + count(r.id) filter (where r.rating = 'easy')::int as "Easy", + coalesce(sum(r.duration_ms), 0)::bigint as "DurationMs" + from generate_series((now() at time zone 'UTC')::date - (@days - 1) * interval '1 day', + (now() at time zone 'UTC')::date, + interval '1 day') day + left join review r + on r.user_id = @userId + and (r.reviewed_at at time zone 'UTC')::date = day::date + group by day + order by day + """, + new { userId, days }); + return rows.ToList(); + } + + public async Task> GetRatingStatsAsync( + long userId, + int days, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + """ + select rating as "Rating", count(*)::int as "Count" + from review + where user_id = @userId and reviewed_at >= now() - (@days * interval '1 day') + group by rating + """, + new { userId, days }); + return rows.ToList(); + } + + public async Task> GetHardCardsAsync( + long userId, + int limit, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + """ + select c.id as "CardId", + coalesce((select body from card_side where card_id = c.id and kind = 'front' limit 1), '') as "Front", + count(r.id)::int as "Reviews", + coalesce(max((select lapses from card_schedule where card_id = c.id and user_id = @userId)), 0)::int as "Lapses", + avg(case when r.rating = 'again' then 1.0 else 0.0 end)::double precision as "AgainRate" + from review r + join card c on c.id = r.card_id + where r.user_id = @userId and c.deleted_at is null + group by c.id + having count(r.id) >= 2 + order by avg(case when r.rating = 'again' then 1.0 else 0.0 end) desc, count(r.id) desc + limit @limit + """, + new { userId, limit }); + return rows.ToList(); + } + + public async Task> GetDeckStatsAsync( + long userId, + int days, + int limit, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var rows = await connection.QueryAsync( + """ + select d.id as "DeckId", d.name as "DeckName", l.name as "LessonName", co.name as "CourseName", + count(r.id)::int as "Reviews", + round(100.0 * count(r.id) filter (where r.rating in ('good', 'easy')) / count(r.id))::int as "Retention" + from review r + join deck d on d.id = r.deck_id + join lesson l on l.id = d.lesson_id + join course co on co.id = l.course_id + where r.user_id = @userId and r.reviewed_at >= now() - (@days * interval '1 day') + group by d.id, l.id, co.id + order by count(r.id) desc + limit @limit + """, + new { userId, days, limit }); + return rows.ToList(); + } + + static int Streak(IReadOnlyList days) + { + if (days.Count == 0) + { + return 0; + } + + var today = DateOnly.FromDateTime(DateTime.UtcNow); + var expected = days[0] == today ? today : today.AddDays(-1); + if (days[0] != expected) + { + return 0; + } + + var streak = 0; + foreach (var day in days) + { + if (day != expected) + { + break; + } + streak++; + expected = expected.AddDays(-1); + } + return streak; + } + + sealed class SummaryRow + { + public int TotalReviews { get; init; } + public int ReviewsToday { get; init; } + public int CardsSeen { get; init; } + public int DueNow { get; init; } + public int Reviews30 { get; init; } + public int Good30 { get; init; } + public long TimeSpentMs { get; init; } + } +} diff --git a/src/Flashsharp/Data/Store.Study.cs b/src/Flashsharp/Data/Store.Study.cs new file mode 100644 index 0000000..deb1fd2 --- /dev/null +++ b/src/Flashsharp/Data/Store.Study.cs @@ -0,0 +1,161 @@ +using Dapper; +using Flashsharp.Domain; +using Flashsharp.Scheduling; + +namespace Flashsharp.Data; + +public sealed partial class Store +{ + public async Task GetNextStudyCardAsync( + long userId, + long deckId, + string mode, + IReadOnlyList exclude, + CancellationToken cancellationToken = default) + { + if (mode is not ("due" or "all" or "new")) + { + throw new ArgumentException($"Unknown study mode: {mode}.", nameof(mode)); + } + + await using var connection = await db.OpenAsync(cancellationToken); + var row = await connection.QuerySingleOrDefaultAsync( + """ + select c.id as "CardId", s.due_at as "DueAt", s.repetitions as "Repetitions", s.lapses as "Lapses", + (s.user_id is null) as "IsNew" + from card_deck cd + join card c on c.id = cd.card_id + left join card_schedule s on s.card_id = c.id and s.user_id = @userId + where cd.deck_id = @deckId + and c.deleted_at is null + and not (c.id = any(@exclude)) + and ( + @mode = 'all' + or (@mode = 'new' and s.user_id is null) + or (@mode = 'due' and (s.user_id is null or s.due_at <= now())) + ) + order by s.due_at nulls first, c.id + limit 1 + """, + new { userId, deckId, mode, exclude = exclude.ToArray() }); + + if (row is null) + { + return null; + } + + var card = await GetCardAsync(row.CardId, cancellationToken); + if (card is null) + { + return null; + } + + return new StudyCard(card, row.IsNew, row.DueAt, row.Repetitions, row.Lapses); + } + + public async Task GetStudyCardAsync( + long userId, + long cardId, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + var row = await connection.QuerySingleOrDefaultAsync( + """ + select c.id as "CardId", s.due_at as "DueAt", s.repetitions as "Repetitions", s.lapses as "Lapses", + (s.user_id is null) as "IsNew" + from card c + left join card_schedule s on s.card_id = c.id and s.user_id = @userId + where c.id = @cardId and c.deleted_at is null + """, + new { userId, cardId }); + + if (row is null) + { + return null; + } + + var card = await GetCardAsync(row.CardId, cancellationToken); + return card is null ? null : new StudyCard(card, row.IsNew, row.DueAt, row.Repetitions, row.Lapses); + } + + public async Task RecordReviewAsync( + long userId, + long cardId, + long? deckId, + ReviewRating rating, + int durationMs, + CancellationToken cancellationToken = default) + { + await using var connection = await db.OpenAsync(cancellationToken); + await using var transaction = await connection.BeginTransactionAsync(cancellationToken); + + var reviewId = await connection.ExecuteScalarAsync( + """ + insert into review (user_id, card_id, deck_id, rating, duration_ms) + values (@userId, @cardId, @deckId, @rating::review_rating, @durationMs) + returning id + """, + new + { + userId, + cardId, + deckId, + rating = rating.ToString().ToLowerInvariant(), + durationMs = Math.Max(0, durationMs) + }, + transaction); + + var current = await connection.QuerySingleOrDefaultAsync( + """ + select due_at as "DueAt", interval_seconds as "IntervalSeconds", ease as "Ease", + repetitions as "Repetitions", lapses as "Lapses" + from card_schedule + where user_id = @userId and card_id = @cardId + for update + """, + new { userId, cardId }, + transaction); + + var next = Scheduler.Next(current, rating, DateTime.UtcNow); + + await connection.ExecuteAsync( + """ + insert into card_schedule + (user_id, card_id, due_at, interval_seconds, ease, repetitions, lapses, last_review_id, updated_at) + values + (@userId, @cardId, @dueAt, @intervalSeconds, @ease, @repetitions, @lapses, @reviewId, now()) + on conflict (user_id, card_id) do update + set due_at = excluded.due_at, + interval_seconds = excluded.interval_seconds, + ease = excluded.ease, + repetitions = excluded.repetitions, + lapses = excluded.lapses, + last_review_id = excluded.last_review_id, + updated_at = now() + """, + new + { + userId, + cardId, + dueAt = next.DueAt, + intervalSeconds = next.IntervalSeconds, + ease = next.Ease, + repetitions = next.Repetitions, + lapses = next.Lapses, + reviewId + }, + transaction); + + await transaction.CommitAsync(cancellationToken); + return new ReviewOutcome(next.DueAt, next.IntervalSeconds, next.Ease, next.Repetitions, next.Lapses); + } + + sealed class StudyRow + { + public long CardId { get; init; } + public DateTime? DueAt { get; init; } + public int Repetitions { get; init; } + public int Lapses { get; init; } + public bool IsNew { get; init; } + } +} diff --git a/src/Flashsharp/Data/Store.cs b/src/Flashsharp/Data/Store.cs new file mode 100644 index 0000000..29ca670 --- /dev/null +++ b/src/Flashsharp/Data/Store.cs @@ -0,0 +1,17 @@ +namespace Flashsharp.Data; + +public sealed partial class Store +{ + readonly Db db; + + public Store(Db db) + { + this.db = db; + } + + public static class TokenKinds + { + public const string Browser = "browser"; + public const string Api = "api"; + } +} diff --git a/src/Flashsharp/Domain/Models.cs b/src/Flashsharp/Domain/Models.cs new file mode 100644 index 0000000..666aa56 --- /dev/null +++ b/src/Flashsharp/Domain/Models.cs @@ -0,0 +1,211 @@ +using NpgsqlTypes; + +namespace Flashsharp.Domain; + +public enum SideKind +{ + [PgName("front")] Front, + [PgName("back")] Back, + [PgName("extra")] Extra +} + +public enum ReviewRating +{ + [PgName("again")] Again, + [PgName("hard")] Hard, + [PgName("good")] Good, + [PgName("easy")] Easy +} + +public static class ReviewRatingExtensions +{ + public static string ToLabel(this ReviewRating rating) => rating switch + { + ReviewRating.Again => "Again", + ReviewRating.Hard => "Hard", + ReviewRating.Good => "Good", + ReviewRating.Easy => "Easy", + _ => throw new ArgumentOutOfRangeException(nameof(rating)) + }; +} + +public sealed record User(long Id, string Username); + +public sealed class AuthToken +{ + public long Id { get; set; } + public string Label { get; set; } = ""; + public string Kind { get; set; } = ""; + public DateTime CreatedAt { get; set; } + public DateTime? LastUsedAt { get; set; } + public DateTime? ExpiresAt { get; set; } +} + +public sealed record CourseSummary( + long Id, + string Name, + string Description, + int Position, + int LessonCount, + int DeckCount, + int CardCount, + int DueCount); + +public sealed record LessonSummary( + long Id, + long CourseId, + string Name, + string Description, + int Position, + int DeckCount, + int CardCount, + int DueCount); + +public sealed record DeckSummary( + long Id, + long LessonId, + long CourseId, + string LessonName, + string CourseName, + string Name, + string Description, + int Position, + int CardCount, + int DueCount); + +public sealed record DeckContext( + long Id, + string Name, + long LessonId, + string LessonName, + long CourseId, + string CourseName); + +public sealed record CourseNode( + long Id, + string Name, + string Description, + int Position, + IReadOnlyList Lessons); + +public sealed record LessonNode( + long Id, + string Name, + string Description, + int Position, + IReadOnlyList Decks); + +public sealed record DeckNode( + long Id, + string Name, + string Description, + int Position, + int CardCount); + +public sealed record Side( + long Id, + SideKind Kind, + string Label, + string Body, + int Position); + +public sealed record Card( + long Id, + DateTime CreatedAt, + IReadOnlyList Sides) +{ + public Side? Front => Sides.FirstOrDefault(side => side.Kind == SideKind.Front); + public Side? Back => Sides.FirstOrDefault(side => side.Kind == SideKind.Back); + public IReadOnlyList Extras => Sides.Where(side => side.Kind == SideKind.Extra).ToList(); +} + +public sealed record CardRef( + long Id, + string Front, + string? Back, + IReadOnlyList Tags, + IReadOnlyList Decks); + +public sealed record DeckRef( + long Id, + string Name, + long LessonId, + string LessonName, + long CourseId, + string CourseName); + +public sealed record TagInfo(string Name, string Description, int CardCount); + +public sealed record StudyCard( + Card Card, + bool IsNew, + DateTime? DueAt, + int Repetitions, + int Lapses); + +public sealed record ReviewOutcome( + DateTime DueAt, + int IntervalSeconds, + double Ease, + int Repetitions, + int Lapses); + +public sealed record ScheduleState( + DateTime DueAt, + int IntervalSeconds, + double Ease, + int Repetitions, + int Lapses); + +public sealed record DailyStat( + DateOnly Day, + int Total, + int Again, + int Hard, + int Good, + int Easy, + long DurationMs); + +public sealed record RatingStat(ReviewRating Rating, int Count); + +public sealed record HardCardStat( + long CardId, + string Front, + int Reviews, + int Lapses, + double AgainRate); + +public sealed record DeckStat( + long DeckId, + string DeckName, + string LessonName, + string CourseName, + int Reviews, + int Retention); + +public sealed record StatsSummary( + int TotalReviews, + int ReviewsToday, + int StreakDays, + int CardsSeen, + int DueNow, + int Retention30d, + long TimeSpentMs); + +public sealed record Crumb(string Label, string? Href); + +public sealed record EntityRef(long Id, string Name); + +public sealed record ExtraSide(string Label, string Body); + +public sealed record CardDraft( + string Front, + string? Back, + IReadOnlyList? Extras, + IReadOnlyList? Tags); + +public sealed record BreadcrumbView(IReadOnlyList Crumbs, IReadOnlyList Chips) +{ + public static BreadcrumbView Home(params string[] chips) => + new([new Crumb("Courses", "/")], chips); +} diff --git a/src/Flashsharp/Flashsharp.csproj b/src/Flashsharp/Flashsharp.csproj new file mode 100644 index 0000000..1f82ac3 --- /dev/null +++ b/src/Flashsharp/Flashsharp.csproj @@ -0,0 +1,25 @@ + + + + net10.0 + enable + enable + flashsharp + Flashsharp + false + + + + + + + + + + + + + + + + diff --git a/src/Flashsharp/Mcp/FlashcardTools.cs b/src/Flashsharp/Mcp/FlashcardTools.cs new file mode 100644 index 0000000..56633bd --- /dev/null +++ b/src/Flashsharp/Mcp/FlashcardTools.cs @@ -0,0 +1,361 @@ +using System.ComponentModel; +using System.Security.Claims; +using System.Text.Json; +using System.Text.Json.Serialization; +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using ModelContextProtocol; +using ModelContextProtocol.Server; + +namespace Flashsharp.Mcp; + +[McpServerToolType] +public static class FlashcardTools +{ + static readonly JsonSerializerOptions Json = new(JsonSerializerDefaults.Web) + { + Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) } + }; + + [McpServerTool, Description( + "Return the whole course > lesson > deck tree with ids and card counts. " + + "Start here to find the deck id needed by create_card.")] + public static async Task GetTree(Store store, CancellationToken cancellationToken) + => Serialize(await store.GetTreeAsync(cancellationToken)); + + [McpServerTool, Description("List courses with ids, descriptions and positions.")] + public static async Task ListCourses( + Store store, + ClaimsPrincipal user, + CancellationToken cancellationToken) + => Serialize(await store.ListCoursesAsync(user.GetUserId(), cancellationToken)); + + [McpServerTool, Description("List lessons in a course.")] + public static async Task ListLessons( + Store store, + ClaimsPrincipal user, + [Description("Course id from get_tree or list_courses.")] long courseId, + CancellationToken cancellationToken) + => Serialize(await store.ListLessonsAsync(courseId, user.GetUserId(), cancellationToken)); + + [McpServerTool, Description("List decks in a lesson.")] + public static async Task ListDecks( + Store store, + ClaimsPrincipal user, + [Description("Lesson id from get_tree or list_lessons.")] long lessonId, + CancellationToken cancellationToken) + => Serialize(await store.ListDecksAsync(lessonId, user.GetUserId(), cancellationToken)); + + [McpServerTool, Description("Create a course. If a course with the same name already exists, returns it instead.")] + public static Task CreateCourse( + Store store, + [Description("Course name, for example 'Farsi'.")] string name, + [Description("Optional course description.")] string? description = null, + CancellationToken cancellationToken = default) + => Guard(async () => Serialize(await store.CreateCourseAsync(name, description ?? "", cancellationToken))); + + [McpServerTool, Description("Create a lesson inside a course. Reuses an existing lesson with the same name in that course.")] + public static Task CreateLesson( + Store store, + [Description("Course id.")] long courseId, + [Description("Lesson name, for example 'Alphabet'.")] string name, + [Description("Optional lesson description.")] string? description = null, + CancellationToken cancellationToken = default) + => Guard(async () => + { + await EnsureCourseAsync(store, courseId, cancellationToken); + return Serialize(await store.CreateLessonAsync(courseId, name, description ?? "", cancellationToken)); + }); + + [McpServerTool, Description("Create a deck inside a lesson. Reuses an existing deck with the same name in that lesson.")] + public static Task CreateDeck( + Store store, + [Description("Lesson id.")] long lessonId, + [Description("Deck name, for example 'Letters 1'.")] string name, + [Description("Optional deck description.")] string? description = null, + CancellationToken cancellationToken = default) + => Guard(async () => + { + await EnsureLessonAsync(store, lessonId, cancellationToken); + return Serialize(await store.CreateDeckAsync(lessonId, name, description ?? "", cancellationToken)); + }); + + [McpServerTool, Description( + "Create one card in a deck and return its id. The front side is what the learner sees first; " + + "the optional back side is revealed as the answer; extras are optional additional sides such as " + + "pronunciation or notes. Tags are created on demand. Call get_tree first to find the deck id.")] + public static Task CreateCard( + Store store, + ClaimsPrincipal user, + [Description("Deck id from get_tree or list_decks.")] long deckId, + [Description("The front side in Markdown. This is the default side shown first.")] string front, + [Description("Optional answer side in Markdown.")] string? back = null, + [Description("Optional additional sides, each with a label and Markdown body.")] List? extras = null, + [Description("Optional tags, for example ['farsi', 'vocabulary'].")] List? tags = null, + CancellationToken cancellationToken = default) + => Guard(async () => + { + await EnsureDeckAsync(store, deckId, cancellationToken); + var id = await store.CreateCardAsync( + deckId, + user.GetUserId(), + ToDraft(front, back, extras, tags), + cancellationToken); + return Serialize(new { id }); + }); + + [McpServerTool, Description( + "Create up to 200 cards in one deck in a single transaction. Prefer this for bulk imports. " + + "Returns the new card ids in input order.")] + public static Task CreateCards( + Store store, + ClaimsPrincipal user, + [Description("Deck id from get_tree or list_decks.")] long deckId, + [Description("Cards to create.")] List cards, + CancellationToken cancellationToken = default) + => Guard(async () => + { + await EnsureDeckAsync(store, deckId, cancellationToken); + var drafts = cards.Select(card => ToDraft(card.Front, card.Back, card.Extras, card.Tags)).ToList(); + var ids = await store.CreateCardsAsync(deckId, user.GetUserId(), drafts, cancellationToken); + return Serialize(new { ids }); + }); + + [McpServerTool, Description("Get a card with all sides, tags and the decks it belongs to.")] + public static async Task GetCard( + Store store, + [Description("Card id.")] long cardId, + CancellationToken cancellationToken) + { + var card = await store.GetCardAsync(cardId, cancellationToken); + if (card is null) + { + throw new McpException($"Card {cardId} does not exist."); + } + var cardRef = await store.GetCardRefAsync(cardId, cancellationToken); + return Serialize(new + { + card.Id, + card.CreatedAt, + Sides = card.Sides.Select(side => new { side.Kind, side.Label, side.Body }), + cardRef?.Tags, + cardRef?.Decks + }); + } + + [McpServerTool, Description( + "Replace all sides and tags of a card. Omitted back and extras are removed. " + + "Reviews and schedule are preserved.")] + public static Task UpdateCard( + Store store, + [Description("Card id.")] long cardId, + [Description("New front side in Markdown.")] string front, + [Description("New answer side in Markdown, or null to remove it.")] string? back = null, + [Description("New additional sides, or null to remove them.")] List? extras = null, + [Description("New tags. This replaces the existing tags.")] List? tags = null, + CancellationToken cancellationToken = default) + => Guard(async () => + { + await store.UpdateCardAsync(cardId, ToDraft(front, back, extras, tags), cancellationToken); + return Serialize(new { id = cardId, updated = true }); + }); + + [McpServerTool, Description("Soft-delete a card. Its review history is kept.")] + public static async Task DeleteCard( + Store store, + [Description("Card id.")] long cardId, + CancellationToken cancellationToken) + { + await store.DeleteCardAsync(cardId, cancellationToken); + return Serialize(new { id = cardId, deleted = true }); + } + + [McpServerTool, Description("Add an existing card to another deck. Cards can live in several decks.")] + public static Task AddCardToDeck( + Store store, + [Description("Card id.")] long cardId, + [Description("Deck id.")] long deckId, + CancellationToken cancellationToken) + => Guard(async () => + { + await EnsureDeckAsync(store, deckId, cancellationToken); + await EnsureCardAsync(store, cardId, cancellationToken); + await store.AddCardToDeckAsync(cardId, deckId, cancellationToken); + return Serialize(new { cardId, deckId, added = true }); + }); + + [McpServerTool, Description("Remove a card from a deck without deleting the card.")] + public static async Task RemoveCardFromDeck( + Store store, + [Description("Card id.")] long cardId, + [Description("Deck id.")] long deckId, + CancellationToken cancellationToken) + { + await store.RemoveCardFromDeckAsync(cardId, deckId, cancellationToken); + return Serialize(new { cardId, deckId, removed = true }); + } + + [McpServerTool, Description( + "Search cards by text, tag, course, lesson or deck. Text search covers all sides and works " + + "with non-Latin scripts. Returns front, back, tags and deck locations.")] + public static async Task SearchCards( + Store store, + [Description("Text to search for. Optional when filtering by tag or deck.")] string? query = null, + [Description("Only cards with this tag.")] string? tag = null, + [Description("Only cards in this course.")] long? courseId = null, + [Description("Only cards in this lesson.")] long? lessonId = null, + [Description("Only cards in this deck.")] long? deckId = null, + [Description("Maximum number of results, 1-100. Default 20.")] int limit = 20, + CancellationToken cancellationToken = default) + { + var results = await store.SearchCardsAsync( + query, + courseId, + lessonId, + deckId, + tag, + Math.Clamp(limit, 1, 100), + cancellationToken); + return Serialize(results); + } + + [McpServerTool, Description("List the tag vocabulary with card counts. Reuse existing tags instead of inventing near-duplicates.")] + public static async Task ListTags(Store store, CancellationToken cancellationToken) + => Serialize(await store.ListTagsAsync(cancellationToken)); + + [McpServerTool, Description("Create a tag, or update its description if it already exists.")] + public static Task CreateTag( + Store store, + [Description("Tag name.")] string name, + [Description("Optional tag description.")] string? description = null, + CancellationToken cancellationToken = default) + => Guard(async () => Serialize(new + { + name = await store.CreateTagAsync(name, description ?? "", cancellationToken) + })); + + [McpServerTool, Description("Rename a course.")] + public static Task RenameCourse( + Store store, + [Description("Course id.")] long courseId, + [Description("New name.")] string name, + CancellationToken cancellationToken) + => Guard(async () => + { + await EnsureCourseAsync(store, courseId, cancellationToken); + await store.RenameCourseAsync(courseId, name, cancellationToken); + return Serialize(new { id = courseId, name }); + }); + + [McpServerTool, Description("Rename a lesson.")] + public static Task RenameLesson( + Store store, + [Description("Lesson id.")] long lessonId, + [Description("New name.")] string name, + CancellationToken cancellationToken) + => Guard(async () => + { + await EnsureLessonAsync(store, lessonId, cancellationToken); + await store.RenameLessonAsync(lessonId, name, cancellationToken); + return Serialize(new { id = lessonId, name }); + }); + + [McpServerTool, Description("Rename a deck.")] + public static Task RenameDeck( + Store store, + [Description("Deck id.")] long deckId, + [Description("New name.")] string name, + CancellationToken cancellationToken) + => Guard(async () => + { + await EnsureDeckAsync(store, deckId, cancellationToken); + await store.RenameDeckAsync(deckId, name, cancellationToken); + return Serialize(new { id = deckId, name }); + }); + + static async Task EnsureDeckAsync(Store store, long deckId, CancellationToken cancellationToken) + { + if (await store.GetDeckContextAsync(deckId, cancellationToken) is null) + { + throw new McpException($"Deck {deckId} does not exist."); + } + } + + static async Task EnsureCourseAsync(Store store, long courseId, CancellationToken cancellationToken) + { + if (!await store.CourseExistsAsync(courseId, cancellationToken)) + { + throw new McpException($"Course {courseId} does not exist."); + } + } + + static async Task EnsureLessonAsync(Store store, long lessonId, CancellationToken cancellationToken) + { + if (!await store.LessonExistsAsync(lessonId, cancellationToken)) + { + throw new McpException($"Lesson {lessonId} does not exist."); + } + } + + static async Task EnsureCardAsync(Store store, long cardId, CancellationToken cancellationToken) + { + if (!await store.CardExistsAsync(cardId, cancellationToken)) + { + throw new McpException($"Card {cardId} does not exist."); + } + } + + static async Task Guard(Func> action) + { + try + { + return await action(); + } + catch (McpException) + { + throw; + } + catch (Exception exception) when (exception is ArgumentException or InvalidOperationException) + { + throw new McpException(exception.Message); + } + } + + static CardDraft ToDraft( + string front, + string? back, + IReadOnlyList? extras, + IReadOnlyList? tags) + => new( + front, + back, + (extras ?? []).Select(extra => new ExtraSide(extra.Label ?? "", extra.Body)).ToList(), + (tags ?? []).ToList()); + + static string Serialize(T value) => JsonSerializer.Serialize(value, Json); +} + +public sealed record ExtraSideInput +{ + [Description("Short label such as 'Pronunciation' or 'Example'.")] + public string? Label { get; init; } + + [Description("Markdown body of this side.")] + public string Body { get; init; } = ""; +} + +public sealed record CardInput +{ + [Description("Front side in Markdown.")] + public string Front { get; init; } = ""; + + [Description("Optional answer side in Markdown.")] + public string? Back { get; init; } + + [Description("Optional additional sides.")] + public List? Extras { get; init; } + + [Description("Optional tags.")] + public List? Tags { get; init; } +} diff --git a/src/Flashsharp/Pages/Courses/Details.cshtml b/src/Flashsharp/Pages/Courses/Details.cshtml new file mode 100644 index 0000000..3eaed86 --- /dev/null +++ b/src/Flashsharp/Pages/Courses/Details.cshtml @@ -0,0 +1,54 @@ +@page "/courses/{id:long}" +@model Courses.DetailsModel +@{ + ViewData["Title"] = Model.Course.Name; + var breadcrumb = new BreadcrumbView( + [ + new Crumb("Courses", "/"), + new Crumb(Model.Course.Name, null) + ], + []); +} + + + +
+

Course

+

@Model.Course.Name

+ @if (!string.IsNullOrWhiteSpace(Model.Course.Description)) + { +

@Model.Course.Description

+ } +
+ +@if (Model.Lessons.Count == 0) +{ +
+

No lessons yet. Ask your agent to create one in this course.

+
+} +else +{ + +} diff --git a/src/Flashsharp/Pages/Courses/Details.cshtml.cs b/src/Flashsharp/Pages/Courses/Details.cshtml.cs new file mode 100644 index 0000000..487525c --- /dev/null +++ b/src/Flashsharp/Pages/Courses/Details.cshtml.cs @@ -0,0 +1,28 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages.Courses; + +public sealed class DetailsModel(Store store) : PageModel +{ + public CourseSummary Course { get; private set; } = null!; + + public IReadOnlyList Lessons { get; private set; } = []; + + public async Task OnGetAsync(long id, CancellationToken cancellationToken) + { + var userId = User.GetUserId(); + var course = await store.GetCourseAsync(id, userId, cancellationToken); + if (course is null) + { + return NotFound(); + } + + Course = course; + Lessons = await store.ListLessonsAsync(id, userId, cancellationToken); + return Page(); + } +} diff --git a/src/Flashsharp/Pages/Decks/Details.cshtml b/src/Flashsharp/Pages/Decks/Details.cshtml new file mode 100644 index 0000000..a37fbcb --- /dev/null +++ b/src/Flashsharp/Pages/Decks/Details.cshtml @@ -0,0 +1,76 @@ +@page "/decks/{id:long}" +@model Decks.DetailsModel +@{ + ViewData["Title"] = Model.Deck.Name; + var breadcrumb = new BreadcrumbView( + [ + new Crumb("Courses", "/"), + new Crumb(Model.Deck.CourseName, $"/courses/{Model.Deck.CourseId}"), + new Crumb(Model.Deck.LessonName, $"/lessons/{Model.Deck.LessonId}"), + new Crumb(Model.Deck.Name, null) + ], + []); +} + + + +
+

Deck

+

@Model.Deck.Name

+ @if (!string.IsNullOrWhiteSpace(Model.Deck.Description)) + { +

@Model.Deck.Description

+ } + +
+ +@if (Model.Cards.Count == 0) +{ +
+

No cards in this deck yet. Ask your agent to add some over MCP.

+
+} +else +{ +
+ @foreach (var card in Model.Cards) + { +
+
@Display.Preview(card.Front, 220)
+ @if (!string.IsNullOrWhiteSpace(card.Back)) + { +
@Display.Preview(card.Back, 220)
+ } + +
+ } +
+ + @if (Model.TotalPages > 1) + { + + } +} diff --git a/src/Flashsharp/Pages/Decks/Details.cshtml.cs b/src/Flashsharp/Pages/Decks/Details.cshtml.cs new file mode 100644 index 0000000..a24d45b --- /dev/null +++ b/src/Flashsharp/Pages/Decks/Details.cshtml.cs @@ -0,0 +1,37 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages.Decks; + +public sealed class DetailsModel(Store store) : PageModel +{ + const int PageSize = 30; + + public DeckSummary Deck { get; private set; } = null!; + + public IReadOnlyList Cards { get; private set; } = []; + + [BindProperty(SupportsGet = true, Name = "page")] + public int PageNumber { get; set; } = 1; + + public int TotalPages { get; private set; } = 1; + + public async Task OnGetAsync(long id, CancellationToken cancellationToken) + { + var userId = User.GetUserId(); + var deck = await store.GetDeckAsync(id, userId, cancellationToken); + if (deck is null) + { + return NotFound(); + } + + Deck = deck; + TotalPages = Math.Max(1, (int)Math.Ceiling(deck.CardCount / (double)PageSize)); + PageNumber = Math.Clamp(PageNumber, 1, TotalPages); + Cards = await store.ListDeckCardsAsync(id, PageSize, (PageNumber - 1) * PageSize, cancellationToken); + return Page(); + } +} diff --git a/src/Flashsharp/Pages/Error.cshtml b/src/Flashsharp/Pages/Error.cshtml new file mode 100644 index 0000000..5d35d05 --- /dev/null +++ b/src/Flashsharp/Pages/Error.cshtml @@ -0,0 +1,13 @@ +@page +@model ErrorModel +@{ + ViewData["Title"] = "Something went wrong"; +} + +
+

Error @Model.Code

+

Something went wrong

+

The request could not be completed.

+
+ +Back to courses diff --git a/src/Flashsharp/Pages/Error.cshtml.cs b/src/Flashsharp/Pages/Error.cshtml.cs new file mode 100644 index 0000000..0f229fe --- /dev/null +++ b/src/Flashsharp/Pages/Error.cshtml.cs @@ -0,0 +1,22 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +[AllowAnonymous] +[IgnoreAntiforgeryToken] +public sealed class ErrorModel : PageModel +{ + public int Code { get; private set; } + + public void OnGet(int? code) + { + Code = code ?? 500; + } + + public void OnPost(int? code) + { + Code = code ?? 500; + } +} diff --git a/src/Flashsharp/Pages/Index.cshtml b/src/Flashsharp/Pages/Index.cshtml new file mode 100644 index 0000000..179386c --- /dev/null +++ b/src/Flashsharp/Pages/Index.cshtml @@ -0,0 +1,79 @@ +@page +@model IndexModel +@{ + ViewData["Title"] = "Courses"; +} + +
+
+

Your library

+

Remember what matters.

+

+ Courses hold lessons, lessons hold decks, decks hold cards. Cards are written by your agents + over MCP, then reviewed here one card at a time. +

+
+ +
+ +
+
+ @Model.Stats.DueNow + due now +
+
+ @Model.Stats.ReviewsToday + reviewed today +
+
+ @Model.Stats.StreakDays + day streak +
+
+ @Model.Stats.Retention30d% + 30-day retention +
+
+ +@if (Model.Courses.Count == 0) +{ +
+

Nothing here yet

+

Build your first course with an agent.

+

+ Cards are created through the MCP server. Point your agent at + @Model.McpUrl, create a token on the Tokens page, + then ask it to create a course, a lesson and a deck. +

+
+} +else +{ + +} diff --git a/src/Flashsharp/Pages/Index.cshtml.cs b/src/Flashsharp/Pages/Index.cshtml.cs new file mode 100644 index 0000000..8a49a86 --- /dev/null +++ b/src/Flashsharp/Pages/Index.cshtml.cs @@ -0,0 +1,22 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +public sealed class IndexModel(Store store) : PageModel +{ + public IReadOnlyList Courses { get; private set; } = []; + + public StatsSummary Stats { get; private set; } = new(0, 0, 0, 0, 0, 0, 0); + + public string McpUrl => $"{Request.Scheme}://{Request.Host}/mcp"; + + public async Task OnGetAsync(CancellationToken cancellationToken) + { + var userId = User.GetUserId(); + Courses = await store.ListCoursesAsync(userId, cancellationToken); + Stats = await store.GetStatsSummaryAsync(userId, cancellationToken); + } +} diff --git a/src/Flashsharp/Pages/Lessons/Details.cshtml b/src/Flashsharp/Pages/Lessons/Details.cshtml new file mode 100644 index 0000000..1350d75 --- /dev/null +++ b/src/Flashsharp/Pages/Lessons/Details.cshtml @@ -0,0 +1,58 @@ +@page "/lessons/{id:long}" +@model Lessons.DetailsModel +@{ + ViewData["Title"] = Model.Lesson.Name; + var breadcrumb = new BreadcrumbView( + [ + new Crumb("Courses", "/"), + new Crumb(Model.Course.Name, $"/courses/{Model.Course.Id}"), + new Crumb(Model.Lesson.Name, null) + ], + []); +} + + + +
+

Lesson

+

@Model.Lesson.Name

+ @if (!string.IsNullOrWhiteSpace(Model.Lesson.Description)) + { +

@Model.Lesson.Description

+ } +
+ +@if (Model.Decks.Count == 0) +{ +
+

No decks yet. Ask your agent to create one in this lesson.

+
+} +else +{ +
+ @foreach (var deck in Model.Decks) + { +
+ +

@deck.Name

+ @if (!string.IsNullOrWhiteSpace(deck.Description)) + { +

@Display.Preview(deck.Description, 140)

+ } +
+
+ @deck.CardCount cards + @if (deck.DueCount > 0) + { + @deck.DueCount due + } + @if (deck.CardCount > 0) + { + Study + } +
+
+ } +
+} diff --git a/src/Flashsharp/Pages/Lessons/Details.cshtml.cs b/src/Flashsharp/Pages/Lessons/Details.cshtml.cs new file mode 100644 index 0000000..bb692c1 --- /dev/null +++ b/src/Flashsharp/Pages/Lessons/Details.cshtml.cs @@ -0,0 +1,37 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages.Lessons; + +public sealed class DetailsModel(Store store) : PageModel +{ + public LessonSummary Lesson { get; private set; } = null!; + + public CourseSummary Course { get; private set; } = null!; + + public IReadOnlyList Decks { get; private set; } = []; + + public async Task OnGetAsync(long id, CancellationToken cancellationToken) + { + var userId = User.GetUserId(); + var lesson = await store.GetLessonAsync(id, userId, cancellationToken); + if (lesson is null) + { + return NotFound(); + } + + var course = await store.GetCourseAsync(lesson.CourseId, userId, cancellationToken); + if (course is null) + { + return NotFound(); + } + + Lesson = lesson; + Course = course; + Decks = await store.ListDecksAsync(id, userId, cancellationToken); + return Page(); + } +} diff --git a/src/Flashsharp/Pages/Login.cshtml b/src/Flashsharp/Pages/Login.cshtml new file mode 100644 index 0000000..e09742e --- /dev/null +++ b/src/Flashsharp/Pages/Login.cshtml @@ -0,0 +1,35 @@ +@page +@model LoginModel +@{ + Layout = "_AuthLayout"; + ViewData["Title"] = "Sign in"; +} + +
+
+ + flashsharp +
+

Remember what matters.

+ + @if (Model.Error is not null) + { + + } + +
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
diff --git a/src/Flashsharp/Pages/Login.cshtml.cs b/src/Flashsharp/Pages/Login.cshtml.cs new file mode 100644 index 0000000..65ab752 --- /dev/null +++ b/src/Flashsharp/Pages/Login.cshtml.cs @@ -0,0 +1,59 @@ +using Flashsharp.Auth; +using Flashsharp.Configuration; +using Flashsharp.Data; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +[AllowAnonymous] +public sealed class LoginModel(Store store, AppOptions options) : PageModel +{ + [BindProperty] + public string Username { get; set; } = ""; + + [BindProperty] + public string Password { get; set; } = ""; + + public string? Error { get; private set; } + + public IActionResult OnGet() + => User.Identity?.IsAuthenticated == true ? RedirectToPage("/Index") : Page(); + + public async Task OnPostAsync(string? returnUrl, CancellationToken cancellationToken) + { + if (string.IsNullOrWhiteSpace(Username) || string.IsNullOrEmpty(Password)) + { + Error = "Enter a username and password."; + return Page(); + } + + var username = Username.Trim(); + if (!await store.VerifyPasswordAsync(username, Password, cancellationToken)) + { + Error = "Invalid username or password."; + return Page(); + } + + var user = await store.GetUserByUsernameAsync(username, cancellationToken); + if (user is null) + { + Error = "Invalid username or password."; + return Page(); + } + + var (_, rawToken) = await store.CreateTokenAsync( + user.Id, + "Browser session", + Store.TokenKinds.Browser, + TimeSpan.FromDays(options.SessionDays), + cancellationToken); + SessionCookie.Set(Response, rawToken, Request.IsHttps, options.SessionDays); + TempData["Flash"] = $"Signed in as {user.Username}."; + + return returnUrl is not null && Url.IsLocalUrl(returnUrl) + ? LocalRedirect(returnUrl) + : RedirectToPage("/Index"); + } +} diff --git a/src/Flashsharp/Pages/Logout.cshtml b/src/Flashsharp/Pages/Logout.cshtml new file mode 100644 index 0000000..034cee5 --- /dev/null +++ b/src/Flashsharp/Pages/Logout.cshtml @@ -0,0 +1,2 @@ +@page +@model LogoutModel diff --git a/src/Flashsharp/Pages/Logout.cshtml.cs b/src/Flashsharp/Pages/Logout.cshtml.cs new file mode 100644 index 0000000..978d760 --- /dev/null +++ b/src/Flashsharp/Pages/Logout.cshtml.cs @@ -0,0 +1,23 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +public sealed class LogoutModel(Store store) : PageModel +{ + public async Task OnPostAsync(CancellationToken cancellationToken) + { + if (User.Identity?.IsAuthenticated == true) + { + if (User.GetTokenId() is { } tokenId) + { + await store.RevokeTokenAsync(User.GetUserId(), tokenId, cancellationToken); + } + } + + SessionCookie.Clear(Response, Request.IsHttps); + return RedirectToPage("/Login"); + } +} diff --git a/src/Flashsharp/Pages/Search.cshtml b/src/Flashsharp/Pages/Search.cshtml new file mode 100644 index 0000000..e9aa979 --- /dev/null +++ b/src/Flashsharp/Pages/Search.cshtml @@ -0,0 +1,99 @@ +@page +@model SearchModel +@{ + ViewData["Title"] = "Search"; + var chips = new List(); + if (!string.IsNullOrWhiteSpace(Model.Q)) { chips.Add($"q: {Display.Preview(Model.Q, 30)}"); } + if (!string.IsNullOrWhiteSpace(Model.Tag)) { chips.Add($"tag: {Model.Tag}"); } + if (Model.ScopeName is not null) { chips.Add($"in: {Model.ScopeName}"); } + chips.Add($"{Model.Results.Count} result{(Model.Results.Count == 1 ? "" : "s")}"); + var breadcrumb = new BreadcrumbView([new Crumb("Courses", "/"), new Crumb("Search", null)], chips); +} + + + +
+

Search

+

Find a card.

+ @if (Model.ScopeName is not null) + { +

+ Searching inside @Model.ScopeName. + Clear scope +

+ } +
+ +
+ @if (Model.DeckId is not null) + { + + } + @if (Model.LessonId is not null) + { + + } + @if (Model.CourseId is not null) + { + + } +
+
+ +
+
+ +
+
+
+
+ + # +
+
+
+ +@if (Model.Results.Count == 0) +{ +
+

+ @if (string.IsNullOrWhiteSpace(Model.Q) && string.IsNullOrWhiteSpace(Model.Tag)) + { + @:Type something to search across every side of every card. + } + else + { + @:No cards matched. + } +

+
+} +else +{ +
+ @foreach (var card in Model.Results) + { +
+
@Display.Preview(card.Front, 260)
+ @if (!string.IsNullOrWhiteSpace(card.Back)) + { +
@Display.Preview(card.Back, 260)
+ } + +
+ } +
+} diff --git a/src/Flashsharp/Pages/Search.cshtml.cs b/src/Flashsharp/Pages/Search.cshtml.cs new file mode 100644 index 0000000..3a25a74 --- /dev/null +++ b/src/Flashsharp/Pages/Search.cshtml.cs @@ -0,0 +1,63 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +public sealed class SearchModel(Store store) : PageModel +{ + public string? Q { get; private set; } + + public string? Tag { get; private set; } + + public long? CourseId { get; private set; } + + public long? LessonId { get; private set; } + + public long? DeckId { get; private set; } + + public string? ScopeName { get; private set; } + + public IReadOnlyList Results { get; private set; } = []; + + public async Task OnGetAsync( + string? q, + string? tag, + long? courseId, + long? lessonId, + long? deckId, + CancellationToken cancellationToken) + { + Q = q?.Trim(); + Tag = tag?.Trim(); + CourseId = courseId > 0 ? courseId : null; + LessonId = lessonId > 0 ? lessonId : null; + DeckId = deckId > 0 ? deckId : null; + + if (DeckId is not null) + { + var deck = await store.GetDeckContextAsync(DeckId.Value, cancellationToken); + ScopeName = deck is null ? null : $"{deck.CourseName} / {deck.LessonName} / {deck.Name}"; + } + else if (LessonId is not null) + { + var lesson = await store.GetLessonAsync(LessonId.Value, User.GetUserId(), cancellationToken); + ScopeName = lesson?.Name; + } + else if (CourseId is not null) + { + var course = await store.GetCourseAsync(CourseId.Value, User.GetUserId(), cancellationToken); + ScopeName = course?.Name; + } + + Results = await store.SearchCardsAsync( + Q, + CourseId, + LessonId, + DeckId, + Tag, + 50, + cancellationToken); + } +} diff --git a/src/Flashsharp/Pages/Shared/_AuthLayout.cshtml b/src/Flashsharp/Pages/Shared/_AuthLayout.cshtml new file mode 100644 index 0000000..4b238b4 --- /dev/null +++ b/src/Flashsharp/Pages/Shared/_AuthLayout.cshtml @@ -0,0 +1,15 @@ + + + + + + @ViewData["Title"] · flashsharp + + + + +
+ @RenderBody() +
+ + diff --git a/src/Flashsharp/Pages/Shared/_Breadcrumb.cshtml b/src/Flashsharp/Pages/Shared/_Breadcrumb.cshtml new file mode 100644 index 0000000..f9f2195 --- /dev/null +++ b/src/Flashsharp/Pages/Shared/_Breadcrumb.cshtml @@ -0,0 +1,27 @@ +@model BreadcrumbView + + + +@if (Model.Chips.Count > 0) +{ +
+ @foreach (var chip in Model.Chips) + { + @chip + } +
+} diff --git a/src/Flashsharp/Pages/Shared/_Layout.cshtml b/src/Flashsharp/Pages/Shared/_Layout.cshtml new file mode 100644 index 0000000..8fd6821 --- /dev/null +++ b/src/Flashsharp/Pages/Shared/_Layout.cshtml @@ -0,0 +1,46 @@ +@{ + var signedIn = User.Identity?.IsAuthenticated == true; +} + + + + + + @ViewData["Title"] · flashsharp + + + + + + +
+
+ + + flashsharp + + @if (signedIn) + { + +
+ +
+ } +
+
+ +
+ @if (TempData["Flash"] is string flash) + { +
@flash
+ } + @RenderBody() +
+ + diff --git a/src/Flashsharp/Pages/Shared/_StudyCard.cshtml b/src/Flashsharp/Pages/Shared/_StudyCard.cshtml new file mode 100644 index 0000000..7b95fe5 --- /dev/null +++ b/src/Flashsharp/Pages/Shared/_StudyCard.cshtml @@ -0,0 +1,125 @@ +@model StudyCardView +@inject MarkdownRenderer Markdown +@{ + var card = Model.Card; + var front = card.Card.Front; + var back = card.Card.Back; + var extras = card.Card.Extras; + var exclude = string.Join(',', Model.Exclude); + var frontLabel = string.IsNullOrWhiteSpace(front?.Label) ? "Prompt" : front.Label; + var backLabel = string.IsNullOrWhiteSpace(back?.Label) ? "Answer" : back.Label; + var ratings = new[] { ReviewRating.Again, ReviewRating.Hard, ReviewRating.Good, ReviewRating.Easy }; +} + +
+
+ @frontLabel + + @if (card.IsNew) + { + new card + } + else + { + rep @card.Repetitions + if (card.Lapses > 0) + { + · @card.Lapses lapses + } + } + +
+ +
+ @Html.Raw(Markdown.ToHtml(front?.Body ?? "")) +
+ + @if (!Model.Revealed) + { + + } + else + { + @if (back is not null) + { +
+ @backLabel +
+ @Html.Raw(Markdown.ToHtml(back.Body)) +
+
+ } + + @if (extras.Count > 0) + { +
+ More sides (@extras.Count) + @foreach (var extra in extras) + { +
+ @if (!string.IsNullOrWhiteSpace(extra.Label)) + { + @extra.Label + } +
+ @Html.Raw(Markdown.ToHtml(extra.Body)) +
+
+ } +
+ } + +
+ + + + + + +
+ @for (var index = 0; index < ratings.Length; index++) + { + var rating = ratings[index]; + var slug = rating.ToString().ToLowerInvariant(); + + } +
+
+ } + + +
diff --git a/src/Flashsharp/Pages/Shared/_StudyDone.cshtml b/src/Flashsharp/Pages/Shared/_StudyDone.cshtml new file mode 100644 index 0000000..b34de8f --- /dev/null +++ b/src/Flashsharp/Pages/Shared/_StudyDone.cshtml @@ -0,0 +1,16 @@ +@model StudyDoneView + +
+

@(Model.Reviewed >= Model.Limit ? "Session complete" : "Deck cleared")

+

+ @(Model.Reviewed >= Model.Limit ? "That is enough for now." : "Nothing left in this queue.") +

+

+ @Model.Reviewed card@(Model.Reviewed == 1 ? "" : "s") reviewed from @Model.Deck.Name. +

+ +
diff --git a/src/Flashsharp/Pages/Stats.cshtml b/src/Flashsharp/Pages/Stats.cshtml new file mode 100644 index 0000000..775601c --- /dev/null +++ b/src/Flashsharp/Pages/Stats.cshtml @@ -0,0 +1,140 @@ +@page +@model StatsModel +@{ + ViewData["Title"] = "Stats"; + var breadcrumb = new BreadcrumbView([new Crumb("Courses", "/"), new Crumb("Stats", null)], ["last 30 days"]); + var max = Math.Max(1, Model.Daily.Count == 0 ? 1 : Model.Daily.Max(day => day.Total)); + var ratingCounts = Model.Ratings.ToDictionary(row => row.Rating, row => row.Count); + var totalRatings = Math.Max(1, Model.Ratings.Sum(row => row.Count)); + var ratings = new[] { ReviewRating.Again, ReviewRating.Hard, ReviewRating.Good, ReviewRating.Easy }; +} + + + +
+

Stats

+

How it is going.

+
+ +
+
@Model.Summary.TotalReviewsreviews
+
@Model.Summary.CardsSeencards seen
+
@Model.Summary.StreakDaysday streak
+
@Model.Summary.Retention30d%retention
+
@Display.Duration(Model.Summary.TimeSpentMs)time spent
+
@Model.Summary.DueNowdue now
+
+ +
+
+

Reviews per day

+ stacked by grade +
+ +
+ Again + Hard + Good + Easy +
+
+ +
+
+
+

Grades

+ last 30 days +
+ @foreach (var rating in ratings) + { + var count = ratingCounts.GetValueOrDefault(rating, 0); +
+ @rating.ToLabel() + + + + @count +
+ } +
+ +
+
+

Stubborn cards

+ most “again” +
+ @if (Model.HardCards.Count == 0) + { +

Not enough reviews yet.

+ } + else + { +
    + @foreach (var card in Model.HardCards) + { +
  1. + + @Display.Preview(card.Front, 90) + @card.Reviews reviews · @((int)Math.Round(card.AgainRate * 100))% again · @card.Lapses lapses + +
  2. + } +
+ } +
+
+ +
+
+

Decks

+ last 30 days +
+ @if (Model.DeckStats.Count == 0) + { +

No deck activity yet.

+ } + else + { +
+ + + + + + @foreach (var deck in Model.DeckStats) + { + + + + + + } + +
DeckReviewsRetention
+ @deck.DeckName + @deck.CourseName / @deck.LessonName + @deck.Reviews@deck.Retention%
+
+ } +
diff --git a/src/Flashsharp/Pages/Stats.cshtml.cs b/src/Flashsharp/Pages/Stats.cshtml.cs new file mode 100644 index 0000000..e92a9fa --- /dev/null +++ b/src/Flashsharp/Pages/Stats.cshtml.cs @@ -0,0 +1,29 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +public sealed class StatsModel(Store store) : PageModel +{ + public StatsSummary Summary { get; private set; } = new(0, 0, 0, 0, 0, 0, 0); + + public IReadOnlyList Daily { get; private set; } = []; + + public IReadOnlyList Ratings { get; private set; } = []; + + public IReadOnlyList HardCards { get; private set; } = []; + + public IReadOnlyList DeckStats { get; private set; } = []; + + public async Task OnGetAsync(CancellationToken cancellationToken) + { + var userId = User.GetUserId(); + Summary = await store.GetStatsSummaryAsync(userId, cancellationToken); + Daily = await store.GetDailyStatsAsync(userId, 30, cancellationToken); + Ratings = await store.GetRatingStatsAsync(userId, 30, cancellationToken); + HardCards = await store.GetHardCardsAsync(userId, 8, cancellationToken); + DeckStats = await store.GetDeckStatsAsync(userId, 30, 10, cancellationToken); + } +} diff --git a/src/Flashsharp/Pages/Study.cshtml b/src/Flashsharp/Pages/Study.cshtml new file mode 100644 index 0000000..515b343 --- /dev/null +++ b/src/Flashsharp/Pages/Study.cshtml @@ -0,0 +1,38 @@ +@page +@model StudyModel +@{ + ViewData["Title"] = $"Study · {Model.Deck.Name}"; + var modeLabel = Model.Mode switch + { + "all" => "All cards", + "new" => "New cards", + _ => "Due cards" + }; + var breadcrumb = new BreadcrumbView( + [ + new Crumb("Courses", "/"), + new Crumb(Model.Deck.CourseName, $"/courses/{Model.Deck.CourseId}"), + new Crumb(Model.Deck.LessonName, $"/lessons/{Model.Deck.LessonId}"), + new Crumb(Model.Deck.Name, $"/decks/{Model.Deck.Id}"), + new Crumb("Study", null) + ], + [$"mode: {modeLabel}", $"limit: {Model.Limit}", $"{Model.DeckStats.DueCount} due"]); +} + + + +
+

Study

+

@Model.Deck.Name

+
+ +
+ @if (Model.CardView is not null) + { + + } + else if (Model.Done is not null) + { + + } +
diff --git a/src/Flashsharp/Pages/Study.cshtml.cs b/src/Flashsharp/Pages/Study.cshtml.cs new file mode 100644 index 0000000..b3545d5 --- /dev/null +++ b/src/Flashsharp/Pages/Study.cshtml.cs @@ -0,0 +1,192 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Flashsharp.Ui; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +public sealed class StudyModel(Store store) : PageModel +{ + public DeckContext Deck { get; private set; } = null!; + + public DeckSummary DeckStats { get; private set; } = null!; + + public StudyCardView? CardView { get; private set; } + + public StudyDoneView? Done { get; private set; } + + [BindProperty(SupportsGet = true)] + public long DeckId { get; set; } + + [BindProperty(SupportsGet = true)] + public string Mode { get; set; } = "due"; + + [BindProperty(SupportsGet = true)] + public int Limit { get; set; } = 20; + + [BindProperty(SupportsGet = true)] + public string? Exclude { get; set; } + + public async Task OnGetAsync(CancellationToken cancellationToken) + { + var loaded = await LoadDeckAsync(DeckId, cancellationToken); + if (loaded is null) + { + return NotFound(); + } + + (Deck, DeckStats) = loaded.Value; + Mode = NormalizeMode(Mode); + Limit = Math.Clamp(Limit, 1, 100); + var exclude = ParseExclude(Exclude); + + var card = await store.GetNextStudyCardAsync( + User.GetUserId(), + DeckId, + Mode, + exclude, + cancellationToken); + SetView(card, false, exclude); + return Page(); + } + + public async Task OnGetRevealAsync( + long cardId, + long deckId, + string mode, + int limit, + string? exclude, + long started, + CancellationToken cancellationToken) + { + var loaded = await LoadDeckAsync(deckId, cancellationToken); + if (loaded is null) + { + return NotFound(); + } + + (Deck, DeckStats) = loaded.Value; + Mode = NormalizeMode(mode); + Limit = Math.Clamp(limit, 1, 100); + var excludeIds = ParseExclude(exclude); + + var card = await store.GetStudyCardAsync(User.GetUserId(), cardId, cancellationToken); + if (card is null) + { + return NotFound(); + } + + CardView = new StudyCardView(Deck, card, true, Mode, Limit, excludeIds, started); + return Partial("_StudyCard", CardView); + } + + public async Task OnPostGradeAsync( + long cardId, + long deckId, + string mode, + int limit, + string? exclude, + int durationMs, + ReviewRating rating, + CancellationToken cancellationToken) + { + var loaded = await LoadDeckAsync(deckId, cancellationToken); + if (loaded is null) + { + return NotFound(); + } + + (Deck, DeckStats) = loaded.Value; + Mode = NormalizeMode(mode); + Limit = Math.Clamp(limit, 1, 100); + var excludeIds = ParseExclude(exclude); + if (!excludeIds.Contains(cardId)) + { + excludeIds.Add(cardId); + } + + var studyCard = await store.GetStudyCardAsync(User.GetUserId(), cardId, cancellationToken); + if (studyCard is null) + { + return NotFound(); + } + + await store.RecordReviewAsync( + User.GetUserId(), + cardId, + deckId, + rating, + Math.Clamp(durationMs, 0, 3_600_000), + cancellationToken); + + if (excludeIds.Count >= Limit) + { + Done = new StudyDoneView(Deck, Mode, Limit, excludeIds.Count); + CardView = null; + return Partial("_StudyDone", Done); + } + + var next = await store.GetNextStudyCardAsync( + User.GetUserId(), + deckId, + Mode, + excludeIds, + cancellationToken); + SetView(next, false, excludeIds); + return CardView is not null + ? Partial("_StudyCard", CardView) + : Partial("_StudyDone", Done!); + } + + void SetView(StudyCard? card, bool revealed, List exclude) + { + if (card is null) + { + CardView = null; + Done = new StudyDoneView(Deck, Mode, Limit, exclude.Count); + return; + } + + Done = null; + CardView = new StudyCardView( + Deck, + card, + revealed, + Mode, + Limit, + exclude, + 0); + } + + async Task<(DeckContext Deck, DeckSummary Stats)?> LoadDeckAsync(long deckId, CancellationToken cancellationToken) + { + var userId = User.GetUserId(); + var deck = await store.GetDeckContextAsync(deckId, cancellationToken); + if (deck is null) + { + return null; + } + var stats = await store.GetDeckAsync(deckId, userId, cancellationToken); + return stats is null ? null : (deck, stats); + } + + static string NormalizeMode(string? mode) => mode is "all" or "new" ? mode : "due"; + + static List ParseExclude(string? exclude) + { + if (string.IsNullOrWhiteSpace(exclude)) + { + return []; + } + + return exclude + .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) + .Select(value => long.TryParse(value, out var id) ? id : 0) + .Where(id => id > 0) + .Distinct() + .Take(500) + .ToList(); + } +} diff --git a/src/Flashsharp/Pages/Tokens.cshtml b/src/Flashsharp/Pages/Tokens.cshtml new file mode 100644 index 0000000..5bdf186 --- /dev/null +++ b/src/Flashsharp/Pages/Tokens.cshtml @@ -0,0 +1,85 @@ +@page +@model TokensModel +@{ + ViewData["Title"] = "Tokens"; + var breadcrumb = new BreadcrumbView([new Crumb("Courses", "/"), new Crumb("Tokens", null)], []); +} + + + +
+

Access

+

Agent tokens.

+

+ The MCP server lives at @Model.McpUrl. Create a token here, then configure your + agent with an Authorization: Bearer … header. Tokens are shown once and stored hashed. +

+
+ +@if (Model.NewToken is not null) +{ +
+

Copy it now

+ @Model.NewToken +

This token will not be shown again.

+
+} + +
+
+

Create a token

+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+

Your API tokens

+ @Model.Tokens.Count active +
+ @if (Model.Tokens.Count == 0) + { +

No agent tokens yet.

+ } + else + { +
+ @foreach (var token in Model.Tokens) + { +
+
+ @token.Label + created @Display.Ago(token.CreatedAt)@(token.LastUsedAt is { } used ? $" · last used {Display.Ago(used)}" : " · never used") +
+
+ + +
+
+ } +
+ } +
+ +
+
+

MCP client config

+
+
{
+  "mcpServers": {
+    "flashsharp": {
+      "url": "@Model.McpUrl",
+      "headers": { "Authorization": "Bearer fsh_…" }
+    }
+  }
+}
+
diff --git a/src/Flashsharp/Pages/Tokens.cshtml.cs b/src/Flashsharp/Pages/Tokens.cshtml.cs new file mode 100644 index 0000000..3d5de6a --- /dev/null +++ b/src/Flashsharp/Pages/Tokens.cshtml.cs @@ -0,0 +1,49 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +public sealed class TokensModel(Store store) : PageModel +{ + public IReadOnlyList Tokens { get; private set; } = []; + + public string? NewToken { get; private set; } + + public string McpUrl => $"{Request.Scheme}://{Request.Host}/mcp"; + + public async Task OnGetAsync(CancellationToken cancellationToken) + { + Tokens = await store.ListTokensAsync(User.GetUserId(), Store.TokenKinds.Api, cancellationToken); + } + + public async Task OnPostCreateAsync(string? label, CancellationToken cancellationToken) + { + var clean = (label ?? "").Trim(); + if (clean.Length == 0) + { + clean = "Agent token"; + } + + var (_, rawToken) = await store.CreateTokenAsync( + User.GetUserId(), + clean, + Store.TokenKinds.Api, + lifetime: null, + cancellationToken); + + NewToken = rawToken; + TempData["Flash"] = "Token created. Copy it now — it will not be shown again."; + Tokens = await store.ListTokensAsync(User.GetUserId(), Store.TokenKinds.Api, cancellationToken); + return Page(); + } + + public async Task OnPostRevokeAsync(long tokenId, CancellationToken cancellationToken) + { + var revoked = await store.RevokeTokenAsync(User.GetUserId(), tokenId, cancellationToken); + TempData["Flash"] = revoked ? "Token revoked." : "Token not found."; + return RedirectToPage("/Tokens"); + } +} diff --git a/src/Flashsharp/Pages/Users.cshtml b/src/Flashsharp/Pages/Users.cshtml new file mode 100644 index 0000000..8b69bdb --- /dev/null +++ b/src/Flashsharp/Pages/Users.cshtml @@ -0,0 +1,85 @@ +@page +@model UsersModel +@{ + ViewData["Title"] = "Users"; + var breadcrumb = new BreadcrumbView([new Crumb("Courses", "/"), new Crumb("Users", null)], ["all users share the library"]); +} + + + +
+

People

+

Users.

+

+ Everyone shares the same courses, lessons, decks and cards. Reviews and schedules are per user. +

+
+ +@if (Model.Error is not null) +{ + +} + +
+
+

Add a user

+
+
+
+ + +
+
+ + +

At least 8 characters.

+
+ +
+
+ +
+
+

Change my password

+
+
+
+ + +
+
+ + +

At least 8 characters. Other sessions will be signed out.

+
+ +
+
+ +
+
+

Active users

+ @Model.Users.Count +
+
+ @foreach (var user in Model.Users) + { +
+
+ @user.Username + @if (user.Id == Model.CurrentUserId) + { + you + } +
+ @if (user.Id != Model.CurrentUserId) + { +
+ + +
+ } +
+ } +
+
diff --git a/src/Flashsharp/Pages/Users.cshtml.cs b/src/Flashsharp/Pages/Users.cshtml.cs new file mode 100644 index 0000000..f12f378 --- /dev/null +++ b/src/Flashsharp/Pages/Users.cshtml.cs @@ -0,0 +1,99 @@ +using Flashsharp.Auth; +using Flashsharp.Data; +using Flashsharp.Domain; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Flashsharp.Pages; + +public sealed class UsersModel(Store store) : PageModel +{ + public IReadOnlyList Users { get; private set; } = []; + + public long CurrentUserId { get; private set; } + + public string? Error { get; private set; } + + public async Task OnGetAsync(CancellationToken cancellationToken) + { + CurrentUserId = User.GetUserId(); + await LoadAsync(cancellationToken); + } + + public async Task OnPostCreateAsync( + string? username, + string? password, + CancellationToken cancellationToken) + { + CurrentUserId = User.GetUserId(); + try + { + var created = await store.CreateUserAsync(username ?? "", password ?? "", cancellationToken); + TempData["Flash"] = $"Created user {created.Username}."; + return RedirectToPage("/Users"); + } + catch (Exception exception) when (exception is ArgumentException or Npgsql.PostgresException) + { + Error = exception is Npgsql.PostgresException { SqlState: "23505" } + ? "That username is already taken." + : exception.Message; + await LoadAsync(cancellationToken); + return Page(); + } + } + + public async Task OnPostChangePasswordAsync( + string? currentPassword, + string? newPassword, + CancellationToken cancellationToken) + { + CurrentUserId = User.GetUserId(); + var username = User.Identity?.Name; + if (username is null || string.IsNullOrEmpty(currentPassword)) + { + Error = "Enter your current password."; + await LoadAsync(cancellationToken); + return Page(); + } + + if (!await store.VerifyPasswordAsync(username, currentPassword, cancellationToken)) + { + Error = "Current password is incorrect."; + await LoadAsync(cancellationToken); + return Page(); + } + + try + { + await store.ChangePasswordAsync(CurrentUserId, newPassword ?? "", cancellationToken); + await store.RevokeOtherBrowserTokensAsync(CurrentUserId, User.GetTokenId(), cancellationToken); + TempData["Flash"] = "Password changed. Other sessions were signed out."; + return RedirectToPage("/Users"); + } + catch (ArgumentException exception) + { + Error = exception.Message; + await LoadAsync(cancellationToken); + return Page(); + } + } + + public async Task OnPostDeactivateAsync(long userId, CancellationToken cancellationToken) + { + CurrentUserId = User.GetUserId(); + if (userId == CurrentUserId) + { + TempData["Flash"] = "You cannot deactivate your own account."; + return RedirectToPage("/Users"); + } + + await store.DeactivateUserAsync(userId, cancellationToken); + TempData["Flash"] = "User deactivated."; + return RedirectToPage("/Users"); + } + + async Task LoadAsync(CancellationToken cancellationToken) + { + Users = await store.ListUsersAsync(cancellationToken); + } +} diff --git a/src/Flashsharp/Pages/_ViewImports.cshtml b/src/Flashsharp/Pages/_ViewImports.cshtml new file mode 100644 index 0000000..3a2507b --- /dev/null +++ b/src/Flashsharp/Pages/_ViewImports.cshtml @@ -0,0 +1,6 @@ +@using Flashsharp +@using Flashsharp.Domain +@using Flashsharp.Ui +@using System.Globalization +@namespace Flashsharp.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/src/Flashsharp/Pages/_ViewStart.cshtml b/src/Flashsharp/Pages/_ViewStart.cshtml new file mode 100644 index 0000000..a5f1004 --- /dev/null +++ b/src/Flashsharp/Pages/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/src/Flashsharp/Program.cs b/src/Flashsharp/Program.cs new file mode 100644 index 0000000..810ec14 --- /dev/null +++ b/src/Flashsharp/Program.cs @@ -0,0 +1,99 @@ +using Dapper; +using Flashsharp.Auth; +using Flashsharp.Configuration; +using Flashsharp.Data; +using Flashsharp.Ui; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.HttpOverrides; +using ModelContextProtocol.AspNetCore; +using ModelContextProtocol.Server; + +DefaultTypeMap.MatchNamesWithUnderscores = true; + +var options = AppOptions.FromEnvironment(); + +var builder = WebApplication.CreateBuilder(new WebApplicationOptions +{ + Args = args, + ContentRootPath = Directory.Exists(Path.Combine(AppContext.BaseDirectory, "wwwroot")) + ? AppContext.BaseDirectory + : Directory.GetCurrentDirectory() +}); +builder.WebHost.UseUrls($"http://{options.Host}:{options.Port}"); +builder.Services.AddSingleton(options); + +var dataDirectory = new DirectoryInfo(options.DataDirectory); +Directory.CreateDirectory(dataDirectory.FullName); +builder.Services + .AddDataProtection() + .PersistKeysToFileSystem(dataDirectory) + .SetApplicationName("flashsharp"); +builder.Services.AddSingleton(Db.Build(options.DatabaseUrl)); +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); +builder.Services.AddHttpContextAccessor(); +builder.Services.AddRazorPages(); + +builder.Services + .AddAuthentication(TokenAuthenticationHandler.SchemeName) + .AddScheme( + TokenAuthenticationHandler.SchemeName, + _ => { }); + +builder.Services.AddAuthorizationBuilder() + .SetFallbackPolicy(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()); + +builder.Services + .AddMcpServer() + .WithHttpTransport(transport => transport.SessionMode = HttpServerSessionMode.Stateless) + .WithToolsFromAssembly(); + +var app = builder.Build(); + +app.UseForwardedHeaders(new ForwardedHeadersOptions +{ + ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto +}); + +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error"); +} + +app.Use(async (context, next) => +{ + context.Response.Headers["X-Content-Type-Options"] = "nosniff"; + context.Response.Headers["Referrer-Policy"] = "same-origin"; + await next(); +}); + +app.UseStaticFiles(); +app.UseRouting(); +app.UseAuthentication(); +app.UseAuthorization(); + +app.MapRazorPages(); +app.MapMcp("/mcp").RequireAuthorization(); +app.MapGet("/healthz", async (Db db, CancellationToken cancellationToken) => +{ + await using var connection = await db.OpenAsync(cancellationToken); + await connection.ExecuteScalarAsync("select 1"); + return Results.Text("ok"); +}).AllowAnonymous(); + +await using (var scope = app.Services.CreateAsyncScope()) +{ + var services = scope.ServiceProvider; + var logger = services.GetRequiredService().CreateLogger("Flashsharp.Startup"); + var db = services.GetRequiredService(); + var store = services.GetRequiredService(); + + await Migrator.RunAsync(db, logger); + await store.SeedAsync(options.SeedUsername, options.SeedPassword, options.SeedPasswordHash); + logger.LogInformation("flashsharp ready on http://{Host}:{Port}", options.Host, options.Port); +} + +app.Run(); diff --git a/src/Flashsharp/Properties/launchSettings.json b/src/Flashsharp/Properties/launchSettings.json new file mode 100644 index 0000000..1661a78 --- /dev/null +++ b/src/Flashsharp/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5033", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7256;http://localhost:5033", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/Flashsharp/Scheduling/Scheduler.cs b/src/Flashsharp/Scheduling/Scheduler.cs new file mode 100644 index 0000000..ed29771 --- /dev/null +++ b/src/Flashsharp/Scheduling/Scheduler.cs @@ -0,0 +1,58 @@ +using Flashsharp.Domain; + +namespace Flashsharp.Scheduling; + +public static class Scheduler +{ + const int AgainSeconds = 10 * 60; + const int HardSeconds = 12 * 60 * 60; + const int DaySeconds = 24 * 60 * 60; + const int MaxIntervalSeconds = 10 * 365 * DaySeconds; + + public static ScheduleState Next(ScheduleState? current, ReviewRating rating, DateTime now) + { + var ease = current?.Ease ?? 2.5; + var repetitions = current?.Repetitions ?? 0; + var lapses = current?.Lapses ?? 0; + var interval = current?.IntervalSeconds ?? 0; + + switch (rating) + { + case ReviewRating.Again: + ease = Math.Max(1.3, ease - 0.2); + repetitions = 0; + lapses++; + interval = AgainSeconds; + break; + case ReviewRating.Hard: + ease = Math.Max(1.3, ease - 0.15); + interval = repetitions == 0 ? HardSeconds : Math.Max(HardSeconds, (int)(interval * 1.2)); + repetitions++; + break; + case ReviewRating.Good: + interval = repetitions switch + { + 0 => DaySeconds, + 1 => 3 * DaySeconds, + _ => (int)(interval * ease) + }; + repetitions++; + break; + case ReviewRating.Easy: + ease = Math.Min(3.5, ease + 0.15); + interval = repetitions switch + { + 0 => 3 * DaySeconds, + 1 => 7 * DaySeconds, + _ => (int)(interval * ease * 1.3) + }; + repetitions++; + break; + default: + throw new ArgumentOutOfRangeException(nameof(rating)); + } + + interval = Math.Clamp(interval, AgainSeconds, MaxIntervalSeconds); + return new ScheduleState(now.AddSeconds(interval), interval, ease, repetitions, lapses); + } +} diff --git a/src/Flashsharp/Ui/Display.cs b/src/Flashsharp/Ui/Display.cs new file mode 100644 index 0000000..ca8556e --- /dev/null +++ b/src/Flashsharp/Ui/Display.cs @@ -0,0 +1,63 @@ +namespace Flashsharp.Ui; + +public static class Display +{ + public static string Ago(DateTime when) + { + var delta = DateTime.UtcNow - when; + if (delta < TimeSpan.FromMinutes(1)) + { + return "just now"; + } + if (delta < TimeSpan.FromHours(1)) + { + return $"{(int)delta.TotalMinutes}m ago"; + } + if (delta < TimeSpan.FromDays(1)) + { + return $"{(int)delta.TotalHours}h ago"; + } + if (delta < TimeSpan.FromDays(30)) + { + return $"{(int)delta.TotalDays}d ago"; + } + return when.ToLocalTime().ToString("yyyy-MM-dd"); + } + + public static string Due(DateTime dueAt) + { + var delta = dueAt - DateTime.UtcNow; + if (delta <= TimeSpan.Zero) + { + return "due now"; + } + if (delta < TimeSpan.FromHours(1)) + { + return $"in {(int)delta.TotalMinutes}m"; + } + if (delta < TimeSpan.FromDays(1)) + { + return $"in {(int)delta.TotalHours}h"; + } + return $"in {(int)delta.TotalDays}d"; + } + + public static string Duration(long milliseconds) + { + if (milliseconds < 60_000) + { + return "<1 min"; + } + if (milliseconds < 3_600_000) + { + return $"{milliseconds / 60_000} min"; + } + return $"{milliseconds / 3_600_000}h {(milliseconds % 3_600_000) / 60_000}m"; + } + + public static string Preview(string text, int max = 180) + { + var flat = string.Join(' ', text.Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries)); + return flat.Length <= max ? flat : flat[..max].TrimEnd() + "…"; + } +} diff --git a/src/Flashsharp/Ui/MarkdownRenderer.cs b/src/Flashsharp/Ui/MarkdownRenderer.cs new file mode 100644 index 0000000..fc5d1ed --- /dev/null +++ b/src/Flashsharp/Ui/MarkdownRenderer.cs @@ -0,0 +1,17 @@ +using Ganss.Xss; +using Markdig; + +namespace Flashsharp.Ui; + +public sealed class MarkdownRenderer +{ + readonly MarkdownPipeline pipeline = new MarkdownPipelineBuilder() + .DisableHtml() + .UseAutoLinks() + .UseSoftlineBreakAsHardlineBreak() + .Build(); + + readonly HtmlSanitizer sanitizer = new(); + + public string ToHtml(string markdown) => sanitizer.Sanitize(Markdown.ToHtml(markdown ?? "", pipeline)); +} diff --git a/src/Flashsharp/Ui/StudyViews.cs b/src/Flashsharp/Ui/StudyViews.cs new file mode 100644 index 0000000..a26936e --- /dev/null +++ b/src/Flashsharp/Ui/StudyViews.cs @@ -0,0 +1,21 @@ +using Flashsharp.Domain; + +namespace Flashsharp.Ui; + +public sealed record StudyCardView( + DeckContext Deck, + StudyCard Card, + bool Revealed, + string Mode, + int Limit, + IReadOnlyList Exclude, + long StartedAtMs) +{ + public int Reviewed => Exclude.Count; +} + +public sealed record StudyDoneView( + DeckContext Deck, + string Mode, + int Limit, + int Reviewed); diff --git a/src/Flashsharp/appsettings.Development.json b/src/Flashsharp/appsettings.Development.json new file mode 100644 index 0000000..770d3e9 --- /dev/null +++ b/src/Flashsharp/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/Flashsharp/appsettings.json b/src/Flashsharp/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/src/Flashsharp/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/src/Flashsharp/wwwroot/css/site.css b/src/Flashsharp/wwwroot/css/site.css new file mode 100644 index 0000000..660b526 --- /dev/null +++ b/src/Flashsharp/wwwroot/css/site.css @@ -0,0 +1,1444 @@ +:root { + --paper: #f6f0e4; + --paper-deep: #ece2d1; + --card: #fffdf8; + --ink: #211d19; + --muted: #6b6157; + --line: #e0d5c4; + --accent: #245a4d; + --accent-ink: #ffffff; + --accent-soft: #dfece6; + --again: #a94d3a; + --hard: #86621f; + --good: #2c6758; + --easy: #3e5c84; + --shadow: 0 1px 0 rgba(33, 29, 25, 0.04), 0 18px 40px -26px rgba(33, 29, 25, 0.5); + --radius: 18px; + --radius-lg: 24px; + --font-sans: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Noto Sans Arabic", "Geeza Pro", sans-serif; + --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; +} + +@media (prefers-color-scheme: dark) { + :root { + --paper: #15130f; + --paper-deep: #201c16; + --card: #211d17; + --ink: #f3ede3; + --muted: #b4a696; + --line: #3a3228; + --accent: #86c9b5; + --accent-ink: #10211c; + --accent-soft: #233c34; + --again: #e08a76; + --hard: #d9b264; + --good: #7ecbb6; + --easy: #9db8de; + --shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 18px 40px -24px rgba(0, 0, 0, 0.8); + } +} + +* { + box-sizing: border-box; +} + +html { + min-height: 100%; +} + +body { + min-height: 100vh; + margin: 0; + background-color: var(--paper); + background-image: radial-gradient(rgba(33, 29, 25, 0.055) 1px, transparent 1px); + background-size: 22px 22px; + color: var(--ink); + font-family: var(--font-sans); + -webkit-font-smoothing: antialiased; +} + +@media (prefers-color-scheme: dark) { + body { + background-image: radial-gradient(rgba(243, 237, 227, 0.045) 1px, transparent 1px); + } +} + +a { + color: var(--accent); +} + +a:hover { + color: var(--accent); +} + +code, +pre { + font-family: var(--font-mono); +} + +:focus-visible { + outline: 3px solid var(--accent); + outline-offset: 2px; +} + +.fs-header { + position: sticky; + top: 0; + z-index: 20; + border-bottom: 1px solid var(--line); + background: color-mix(in srgb, var(--paper) 88%, transparent); + backdrop-filter: blur(12px); +} + +.fs-header-inner { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 16px; + max-width: 1080px; + margin: 0 auto; + padding: 12px 20px; +} + +.fs-brand, +.fs-auth-brand { + display: inline-flex; + align-items: center; + gap: 10px; + color: var(--ink); + font-weight: 800; + font-size: 1.1rem; + letter-spacing: -0.02em; + text-decoration: none; +} + +.fs-brand:hover { + color: var(--ink); +} + +.fs-brand-mark { + position: relative; + display: inline-block; + width: 26px; + height: 26px; + flex: none; +} + +.fs-brand-mark i { + position: absolute; + inset: 0; + border: 2px solid currentColor; + border-radius: 7px; + background: var(--card); +} + +.fs-brand-mark i:nth-child(1) { + transform: rotate(-9deg) translate(-2px, 1px); +} + +.fs-brand-mark i:nth-child(2) { + transform: rotate(5deg) translate(2px, -1px); + background: var(--accent); + border-color: var(--accent); +} + +.fs-brand-mark i:nth-child(3) { + transform: rotate(-1deg); +} + +.fs-nav { + display: flex; + align-items: center; + gap: 16px; + overflow-x: auto; + scrollbar-width: none; + font-size: 0.9rem; +} + +.fs-nav::-webkit-scrollbar { + display: none; +} + +.fs-nav a { + color: var(--muted); + font-weight: 600; + text-decoration: none; + white-space: nowrap; +} + +.fs-nav a:hover { + color: var(--ink); +} + +.fs-signout { + margin-left: auto; +} + +.fs-signout .button { + color: var(--muted); + max-width: 220px; + overflow: hidden; + text-overflow: ellipsis; +} + +.fs-main { + max-width: 980px; + margin: 0 auto; + padding: 28px 20px 88px; +} + +.fs-hero { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + gap: 24px; + margin: 4px 0 26px; +} + +.fs-eyebrow { + margin: 0 0 8px; + color: var(--muted); + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; +} + +.fs-hero-title { + margin: 0 0 12px; + color: var(--ink); + font-size: clamp(2.1rem, 6vw, 3.6rem); + font-weight: 800; + letter-spacing: -0.04em; + line-height: 1.02; +} + +.fs-hero-text { + max-width: 54ch; + margin: 0; + color: var(--muted); + font-size: 1rem; + line-height: 1.55; +} + +.fs-hero-deck { + position: relative; + width: 132px; + height: 158px; + flex: none; +} + +.fs-ghost-card { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid var(--line); + border-radius: var(--radius); + background: var(--card); + box-shadow: var(--shadow); + color: var(--accent); + font-size: 2.6rem; + font-weight: 800; +} + +.fs-ghost-card-3 { + transform: rotate(-8deg) translate(-10px, 4px); + opacity: 0.55; +} + +.fs-ghost-card-2 { + transform: rotate(6deg) translate(8px, 2px); + opacity: 0.8; +} + +.fs-ghost-card-1 { + transform: rotate(-1deg); + border-top: 8px solid var(--accent); +} + +.fs-stat-strip { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 10px; + margin: 0 0 24px; +} + +.fs-stat-strip-wide { + grid-template-columns: repeat(6, minmax(0, 1fr)); +} + +.fs-stat { + display: flex; + flex-direction: column; + gap: 2px; + padding: 14px 16px; + border: 1px solid var(--line); + border-radius: var(--radius); + background: var(--card); +} + +.fs-stat-value { + color: var(--ink); + font-size: 1.45rem; + font-weight: 800; + letter-spacing: -0.03em; +} + +.fs-stat-label { + color: var(--muted); + font-size: 0.72rem; + font-weight: 600; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.fs-page-head { + margin: 0 0 22px; +} + +.fs-page-title { + margin: 0 0 8px; + color: var(--ink); + font-size: clamp(1.7rem, 4.5vw, 2.4rem); + font-weight: 800; + letter-spacing: -0.035em; + line-height: 1.08; +} + +.fs-page-description { + max-width: 68ch; + margin: 0; + color: var(--muted); + line-height: 1.55; +} + +.fs-actions { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; + margin-top: 16px; +} + +.fs-course-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + gap: 14px; +} + +.fs-course-card { + display: flex; + flex-direction: column; + gap: 12px; + padding: 20px; + border: 1px solid var(--line); + border-radius: var(--radius-lg); + background: var(--card); + box-shadow: var(--shadow); + color: var(--ink); + text-decoration: none; + transition: transform 140ms ease, border-color 140ms ease; +} + +.fs-course-card:hover { + transform: translateY(-2px); + border-color: var(--accent); + color: var(--ink); +} + +.fs-course-card-top { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 10px; +} + +.fs-course-name { + margin: 0; + font-size: 1.2rem; + font-weight: 750; + letter-spacing: -0.02em; +} + +.fs-course-description { + margin: 0; + color: var(--muted); + font-size: 0.9rem; + line-height: 1.5; +} + +.fs-course-meta { + display: flex; + gap: 18px; + margin: auto 0 0; + padding-top: 4px; +} + +.fs-course-meta div { + display: flex; + flex-direction: column; +} + +.fs-course-meta dt { + font-size: 1.05rem; + font-weight: 750; +} + +.fs-course-meta dd { + margin: 0; + color: var(--muted); + font-size: 0.68rem; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.fs-due-pill { + display: inline-flex; + align-items: center; + padding: 3px 9px; + border-radius: 999px; + background: var(--accent-soft); + color: var(--accent); + font-size: 0.72rem; + font-weight: 750; + white-space: nowrap; +} + +.fs-list { + display: grid; + gap: 10px; +} + +.fs-row { + display: flex; + align-items: center; + gap: 18px; + padding: 18px 20px; + border: 1px solid var(--line); + border-radius: var(--radius); + background: var(--card); + color: var(--ink); + text-decoration: none; + transition: border-color 140ms ease, transform 140ms ease; +} + +.fs-row:hover { + border-color: var(--accent); + color: var(--ink); + transform: translateY(-1px); +} + +.fs-row-main { + flex: 1; + min-width: 0; + color: var(--ink); + text-decoration: none; +} + +.fs-row-main:hover { + color: var(--ink); +} + +.fs-row-title { + margin: 0; + font-size: 1.08rem; + font-weight: 700; + letter-spacing: -0.015em; +} + +.fs-row-subtitle { + margin: 4px 0 0; + color: var(--muted); + font-size: 0.88rem; + line-height: 1.45; +} + +.fs-row-meta { + display: flex; + align-items: center; + gap: 10px; + color: var(--muted); + font-size: 0.82rem; + white-space: nowrap; +} + +.fs-row-deck { + align-items: center; +} + +.breadcrumb.fs-breadcrumb { + margin: 0 0 8px; + font-size: 0.82rem; +} + +.fs-breadcrumb ul { + margin: 0; +} + +.fs-breadcrumb li + li::before { + color: var(--muted); +} + +.fs-breadcrumb a, +.fs-breadcrumb span { + color: var(--muted); + font-weight: 600; +} + +.fs-breadcrumb .is-active span { + color: var(--ink); +} + +.fs-chips { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin: 0 0 20px; +} + +.fs-chip { + padding: 3px 9px; + border: 1px solid var(--line); + border-radius: 999px; + color: var(--muted); + font-size: 0.72rem; + font-weight: 600; + font-family: var(--font-mono); +} + +.fs-panel { + margin: 0 0 16px; + padding: 18px 20px; + border: 1px solid var(--line); + border-radius: var(--radius-lg); + background: var(--card); +} + +.fs-panel-head { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 12px; + margin-bottom: 14px; +} + +.fs-panel-title { + margin: 0; + font-size: 0.8rem; + font-weight: 750; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.fs-panel-note { + color: var(--muted); + font-size: 0.76rem; +} + +.fs-panel-empty { + margin: 0; + color: var(--muted); + font-size: 0.9rem; +} + +.fs-study-head { + margin-bottom: 18px; +} + +.fs-study-card { + position: relative; + display: flex; + flex-direction: column; + gap: 18px; + min-height: 52vh; + padding: clamp(20px, 4vw, 38px); + border: 1px solid var(--line); + border-radius: 28px; + background: var(--card); + box-shadow: var(--shadow); + overflow: hidden; +} + +.fs-study-card::before { + content: ""; + position: absolute; + inset: 0 0 auto; + height: 7px; + background: linear-gradient(90deg, var(--again), var(--hard), var(--good), var(--easy)); + opacity: 0.85; +} + +.fs-study-card-top { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding-top: 4px; +} + +.fs-side-label { + display: inline-block; + color: var(--muted); + font-size: 0.7rem; + font-weight: 750; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.fs-study-meta { + display: inline-flex; + gap: 6px; + color: var(--muted); + font-family: var(--font-mono); + font-size: 0.72rem; +} + +.fs-study-card > .fs-side { + display: flex; + flex-direction: column; + justify-content: center; + min-height: 20vh; +} + +.fs-side { + font-size: clamp(1.22rem, 3vw, 1.75rem); + line-height: 1.5; + word-break: break-word; +} + +.fs-answer { + padding-top: 18px; + border-top: 1px dashed var(--line); +} + +.fs-answer .fs-side { + margin-top: 6px; + font-size: clamp(1.05rem, 2.4vw, 1.4rem); +} + +.fs-extras { + padding-top: 4px; + border-top: 1px dashed var(--line); +} + +.fs-extras summary { + cursor: pointer; + color: var(--muted); + font-size: 0.82rem; + font-weight: 650; +} + +.fs-extra { + margin-top: 12px; +} + +.fs-reveal { + margin-top: auto; + min-height: 58px; + font-size: 1.02rem; +} + +.fs-key { + margin-left: 8px; + padding: 1px 6px; + border: 1px solid color-mix(in srgb, var(--accent-ink) 55%, transparent); + border-radius: 5px; + font-family: var(--font-mono); + font-size: 0.68rem; + opacity: 0.85; +} + +.fs-grade-form { + margin-top: auto; +} + +.fs-grade-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 8px; +} + +.fs-grade { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 2px; + min-height: 62px; + border: 0; + border-radius: 14px; + color: #fff; + font-weight: 750; +} + +.fs-grade:hover, +.fs-grade:focus { + color: #fff; + filter: brightness(1.08); +} + +.fs-grade-name { + font-size: 0.95rem; +} + +.fs-grade-key { + font-family: var(--font-mono); + font-size: 0.66rem; + opacity: 0.75; +} + +.fs-grade-again, +.fs-grade-again:hover, +.fs-grade-again:focus { + background: var(--again); + color: #fff; +} + +.fs-grade-hard, +.fs-grade-hard:hover, +.fs-grade-hard:focus { + background: var(--hard); + color: #fff; +} + +.fs-grade-good, +.fs-grade-good:hover, +.fs-grade-good:focus { + background: var(--good); + color: #fff; +} + +.fs-grade-easy, +.fs-grade-easy:hover, +.fs-grade-easy:focus { + background: var(--easy); + color: #fff; +} + +.fs-study-footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding-top: 12px; + border-top: 1px solid var(--line); + color: var(--muted); + font-family: var(--font-mono); + font-size: 0.72rem; +} + +.fs-study-due { + white-space: nowrap; +} + +.fs-study-error { + border-color: var(--again); +} + +.fs-study-done { + justify-content: center; + text-align: center; + min-height: 46vh; +} + +.fs-done-title { + margin: 0; + font-size: clamp(1.5rem, 4vw, 2.1rem); + font-weight: 800; + letter-spacing: -0.03em; +} + +.fs-done-text { + margin: 0 auto; + max-width: 46ch; + color: var(--muted); +} + +.fs-study-done .fs-actions { + justify-content: center; + margin-top: 8px; +} + +.fs-card-list { + display: grid; + gap: 10px; +} + +.fs-mini-card { + display: flex; + flex-direction: column; + gap: 8px; + padding: 16px 18px; + border: 1px solid var(--line); + border-radius: var(--radius); + background: var(--card); +} + +.fs-mini-front { + font-size: 1.02rem; + font-weight: 650; + line-height: 1.45; + word-break: break-word; +} + +.fs-mini-back { + color: var(--muted); + font-size: 0.9rem; + line-height: 1.45; + word-break: break-word; +} + +.fs-mini-footer { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 8px; + padding-top: 6px; +} + +.fs-tag-list { + display: flex; + flex-wrap: wrap; + gap: 4px; +} + +.fs-mini-card .tag, +.fs-token-row .tag { + border: 1px solid var(--line); + background: var(--paper-deep); + color: var(--muted); + font-size: 0.68rem; + text-decoration: none; +} + +.fs-card-id { + color: var(--muted); + font-family: var(--font-mono); + font-size: 0.68rem; +} + +.fs-deck-links { + display: flex; + flex-wrap: wrap; + gap: 4px 12px; + color: var(--muted); + font-size: 0.72rem; +} + +.fs-pagination { + margin-top: 18px; +} + +.fs-pagination .pagination-link.is-current { + border-color: var(--line); + background: var(--card); + color: var(--ink); +} + +.fs-empty { + padding: 30px; + border: 1px dashed var(--line); + border-radius: var(--radius-lg); + background: color-mix(in srgb, var(--card) 70%, transparent); + color: var(--muted); + text-align: left; +} + +.fs-empty h2 { + color: var(--ink); +} + +.fs-empty p:last-child { + margin-bottom: 0; +} + +.fs-flash { + border: 1px solid var(--line); + border-left: 4px solid var(--accent); + background: var(--card); + color: var(--ink); +} + +.fs-search-form { + max-width: 620px; + margin-bottom: 20px; +} + +.fs-search-form .field { + margin-bottom: 8px; +} + +.fs-user-form { + max-width: 420px; +} + +.fs-chart { + display: flex; + align-items: flex-end; + gap: 4px; + height: 168px; + padding-top: 8px; +} + +.fs-bar-wrap { + display: flex; + flex: 1; + flex-direction: column; + align-items: center; + justify-content: flex-end; + min-width: 0; +} + +.fs-bar { + display: flex; + flex-direction: column-reverse; + width: 100%; + max-width: 22px; + height: 140px; + overflow: hidden; + border-radius: 4px 4px 0 0; + background: var(--paper-deep); +} + +.fs-bar-seg { + display: block; + flex: none; + width: 100%; + min-height: 0; +} + +.fs-bar-again { + background: var(--again); +} + +.fs-bar-hard { + background: var(--hard); +} + +.fs-bar-good { + background: var(--good); +} + +.fs-bar-easy { + background: var(--easy); +} + +.fs-bar-label { + margin-top: 4px; + color: var(--muted); + font-family: var(--font-mono); + font-size: 0.58rem; + white-space: nowrap; +} + +.fs-legend { + display: flex; + flex-wrap: wrap; + gap: 14px; + margin-top: 12px; + color: var(--muted); + font-size: 0.74rem; +} + +.fs-legend-item { + display: inline-flex; + align-items: center; + gap: 5px; +} + +.fs-dot { + display: inline-block; + width: 9px; + height: 9px; + border-radius: 50%; +} + +.fs-two-col { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 16px; +} + +.fs-meter { + display: grid; + grid-template-columns: 56px minmax(0, 1fr) 34px; + align-items: center; + gap: 8px; + margin-bottom: 8px; + font-size: 0.78rem; +} + +.fs-meter-label { + color: var(--muted); +} + +.fs-meter-track { + height: 10px; + overflow: hidden; + border-radius: 999px; + background: var(--paper-deep); +} + +.fs-meter-fill { + display: block; + height: 100%; + border-radius: 999px; +} + +.fs-meter-fill.fs-grade-again { + background: var(--again); +} + +.fs-meter-fill.fs-grade-hard { + background: var(--hard); +} + +.fs-meter-fill.fs-grade-good { + background: var(--good); +} + +.fs-meter-fill.fs-grade-easy { + background: var(--easy); +} + +.fs-meter-value { + color: var(--muted); + font-family: var(--font-mono); + text-align: right; +} + +.fs-hard-list { + margin: 0; + padding: 0; + list-style: none; +} + +.fs-hard-list li + li { + border-top: 1px solid var(--line); +} + +.fs-hard-list a { + display: block; + padding: 9px 0; + color: var(--ink); + text-decoration: none; +} + +.fs-hard-front { + display: block; + font-size: 0.9rem; + font-weight: 600; +} + +.fs-hard-meta { + display: block; + margin-top: 2px; + color: var(--muted); + font-family: var(--font-mono); + font-size: 0.68rem; +} + +.fs-table { + background: transparent; + color: var(--ink); +} + +.fs-table th { + border-color: var(--line); + color: var(--muted); + font-size: 0.7rem; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.fs-table td { + border-color: var(--line); + color: var(--ink); +} + +.fs-table-sub { + display: block; + color: var(--muted); + font-size: 0.72rem; +} + +.fs-token-reveal { + margin-bottom: 16px; + padding: 18px 20px; + border: 1px dashed var(--accent); + border-radius: var(--radius); + background: var(--accent-soft); +} + +.fs-token-value { + display: block; + margin: 4px 0 6px; + color: var(--ink); + font-size: 0.82rem; + word-break: break-all; +} + +.fs-token-hint { + margin: 0; + color: var(--muted); + font-size: 0.8rem; +} + +.fs-token-list { + display: grid; +} + +.fs-token-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 12px 0; + border-top: 1px solid var(--line); +} + +.fs-token-row:first-child { + border-top: 0; +} + +.fs-token-meta { + display: block; + margin-top: 2px; + color: var(--muted); + font-size: 0.76rem; +} + +.fs-code-panel pre { + margin: 0; + padding: 14px; + overflow-x: auto; + border-radius: 12px; + background: var(--paper-deep); + color: var(--ink); + font-size: 0.78rem; +} + +.fs-inline-form { + max-width: 620px; +} + +.fs-auth-body { + display: flex; + align-items: center; + justify-content: center; + padding: 24px; +} + +.fs-auth-main { + width: 100%; + max-width: 420px; +} + +.fs-auth-card { + padding: 32px; + border: 1px solid var(--line); + border-radius: 28px; + background: var(--card); + box-shadow: var(--shadow); +} + +.fs-auth-brand { + font-size: 1.3rem; +} + +.fs-auth-tagline { + margin: 8px 0 24px; + color: var(--muted); +} + +.fs-auth-card .label { + color: var(--muted); + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0.04em; + text-transform: uppercase; +} + +.input, +.textarea, +.select select { + border-color: var(--line); + background: var(--card); + color: var(--ink); + border-radius: 12px; +} + +.input:focus, +.textarea:focus, +.select select:focus { + border-color: var(--accent); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent); +} + +.button { + border-radius: 999px; + font-weight: 650; +} + +.button.fs-button, +.fs-button { + border-color: transparent; + background: var(--accent); + color: var(--accent-ink); +} + +.button.fs-button:hover, +.fs-button:hover { + background: color-mix(in srgb, var(--accent) 88%, var(--ink)); + color: var(--accent-ink); +} + +.button.is-light { + border-color: var(--line); + background: var(--paper-deep); + color: var(--ink); +} + +.button.is-light:hover { + border-color: var(--accent); + background: var(--paper-deep); + color: var(--ink); +} + +.button.is-ghost { + color: var(--muted); +} + +.button.is-ghost:hover { + color: var(--ink); + background: var(--paper-deep); +} + +.notification { + border-radius: var(--radius); +} + +.title, +.subtitle { + color: var(--ink); +} + +.markdown { + color: var(--ink); +} + +.markdown > :first-child { + margin-top: 0; +} + +.markdown > :last-child { + margin-bottom: 0; +} + +.markdown p, +.markdown li, +.markdown h1, +.markdown h2, +.markdown h3, +.markdown h4, +.markdown blockquote { + unicode-bidi: plaintext; + text-align: start; +} + +.markdown h1, +.markdown h2, +.markdown h3 { + margin: 0.7em 0 0.35em; + color: var(--ink); + font-weight: 750; + line-height: 1.2; + letter-spacing: -0.02em; +} + +.markdown h1 { + font-size: 1.35em; +} + +.markdown h2 { + font-size: 1.2em; +} + +.markdown h3 { + font-size: 1.08em; +} + +.markdown p, +.markdown ul, +.markdown ol, +.markdown blockquote { + margin: 0.55em 0; +} + +.markdown ul, +.markdown ol { + padding-inline-start: 1.25em; +} + +.markdown li { + margin: 0.18em 0; +} + +.markdown code { + padding: 1px 5px; + border-radius: 5px; + background: var(--paper-deep); + font-size: 0.86em; +} + +.markdown pre { + padding: 12px; + overflow-x: auto; + border-radius: 10px; + background: var(--paper-deep); +} + +.markdown pre code { + padding: 0; + background: transparent; +} + +.markdown a { + color: var(--accent); + text-decoration: underline; + text-underline-offset: 2px; +} + +.markdown blockquote { + margin-inline-start: 0; + padding-inline-start: 12px; + border-inline-start: 3px solid var(--line); + color: var(--muted); +} + +.markdown hr { + border: 0; + border-top: 1px dashed var(--line); + margin: 1em 0; +} + +.markdown table { + width: 100%; + border-collapse: collapse; +} + +.markdown th, +.markdown td { + padding: 4px 8px; + border: 1px solid var(--line); + text-align: start; +} + +@media (max-width: 760px) { + .fs-stat-strip-wide { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .fs-two-col { + grid-template-columns: minmax(0, 1fr); + } +} + +@media (max-width: 620px) { + .fs-header-inner { + padding: 10px 14px; + gap: 10px; + } + + .fs-nav { + order: 3; + width: 100%; + padding-top: 2px; + } + + .fs-signout { + margin-left: auto; + } + + .fs-main { + padding: 20px 14px 72px; + } + + .fs-hero { + grid-template-columns: minmax(0, 1fr); + } + + .fs-hero-deck { + display: none; + } + + .fs-stat-strip { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .fs-stat-strip-wide { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .fs-row { + flex-direction: column; + align-items: stretch; + gap: 10px; + } + + .fs-row-meta { + flex-wrap: wrap; + justify-content: flex-start; + } + + .fs-grade-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .fs-grade { + min-height: 54px; + } + + .fs-study-card { + min-height: 56vh; + padding: 20px 16px 18px; + border-radius: 22px; + } + + .fs-study-card > .fs-side { + min-height: 16vh; + } + + .fs-chart { + gap: 2px; + } + + .fs-bar { + max-width: 14px; + } + + .fs-bar-label { + visibility: hidden; + } + + .fs-bar-label:first-child, + .fs-bar-wrap:first-child .fs-bar-label, + .fs-bar-wrap:last-child .fs-bar-label { + visibility: visible; + } + + .fs-auth-card { + padding: 24px 20px; + } +} + +@media (prefers-reduced-motion: reduce) { + * { + transition: none !important; + scroll-behavior: auto !important; + } +} diff --git a/src/Flashsharp/wwwroot/favicon.ico b/src/Flashsharp/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..63e859b476eff5055e0e557aaa151ca8223fbeef GIT binary patch literal 5430 zcmZQzU}RuoP*4ET3Jfa*7#P$T7#IWuAp8s#28MG23=A3!3=9ek3=9qo5OD?u28IR! z5Q%|V85kJ2NyQo(8k+0Zt=+wT?b@B|)~2@UrbK4fWl(Z{7TV^V-$_H^BJH{~On?{J(J(hA;oWarN^58&@v> zzYfNi{$IZW!FzY@{QvavBQSpQ=;8k-4-ztPH?RGFc=IX>UbS@b{%21f|Nr~r+y6gc{Pq8z?;!l;|L<>K{{Q~^`Ty^) zpTPLnmyiE{efa>vpWpw#b>-s!e}8`e|NHyb|G&R}{{Q>)2gHo;P<>xM{r~m(!~b8O z-v9sg>D~XIAKzl&-CH+)h`~Q!R&i;RPYQg_!rx*TzdTQSPrzhwAzjtBx|2sEt zpoR}LZ1(Nh1-Abm$o}6y|Ns33v;XV=-`}9_2Dur<4G4Gq`uOhu?rjMBpPgRx|J)4c z|L14B|35p^@&DPGPXEtu=>mrhBz(U9|MLS8Hn*=|h1ic22Jc?K{QvINi~sLlKL7vr z#k2o!pFjEk_SuvFZ=OE>|McD+cvwKfbPoIF}@A=uK|Ig3%{C{Ox%>Rq?{Qh5<>;3=2wmu~LzyJU96XXU+ zIDqZ{3$g#-Z%8_L|K|1oub&|HfBo?8|J#?(pl*P;;Y9or!G|Ni;^#kuAG zFV6M(e|32r#Qr%xVEaK~1HnK3e|i7r|C^@||G$3n;QzT3NB;i<+YfOAC=9-R{`CL- zn^*tg@qio`FP=fuGbn99@SYvp_dk2~^#9*Kzy7~CzXELU)fEZgIJhv^_y2|M{ot?x zr|(}s|9^S^_WzrwkN&@Y`tbkxlSlvm`}-H_hTkah0L}|PzeDo_D9wQIm;ZmhA>r>| z{_own18V>8|1Zw3{C{z-@BeGa_HXO|{}+_DK^SEJhqwRVJbMHVgL5a3{r~>$8x(*2 z|NZNi|KGoS{{IbxKY#lF?eoX~-#&c=$H&)?@Bd@Nn>TKN*#GzU|Cbk6|G&I2^#AqM zY5y-T3j2R)LGb^JJ0^j{1{6M^@cr`f?f*B=AA#L){^YU$A3nVQ|KU9dzx)5;{k#7k z-o5?*;qBZ1@87jPC#k%-D^=M_H?Cg& ze;tmm{J(w`6E9u77;gWoOY8n$T^#xU=Gv_PSC>Zpzp^;u|D|11{{Q{^8-oA*{{Q9U z`~PpAKL)$u{HbIApFVl=|J>QL|8GFufSevdWg{$Kfc*e2r+$Is6BJI5A3prQcJ=E0 z&!0d0|Nr0L|F1#zFAD#Eb4}*|t4kvPUs)9X|I*GW;IM(EvoD`M{(tlQ2^gO{bsTIz z$PFO;sS8YzINsR*?t!BkbS!|Jvf{|F_m=gWUm&i_5#Fg2M(BKAn2JL3tEXPJqg)*H7;M|NQpV|39F*5mc{!`|^ML_U$P4zqzvM|Mewt z|8K9$|9@j?!vE__V*g*>H4S0^zkmO~e*XCX%?ps-5DW?r5Qf+fN*73O0GAUWcRU1_ zS6|+}MybDc?%auD|J$ou|KD1X`v2ah^8fd?RD$UnM^=D>28#dv|Muk*xJ-w+0c1A_ zgW`jb8@{}U+7GQmckkJaYX6lj|8Fi!{C{_S5tzQQH2(jUT{EC|gD8;yKmUL8@)-ob zcm__75c@&l@$~|4k z|NQgw`|m$LzWv^}Zy%cdTmRo$p7Q_R#?t?{R;Gd3SNF_@+YMrX><87UurT=g1nn-?fbuf z|Nj5GcI^VQZ{NPXA7nQO!|ea|`p$n)8U%&IyKCG3gXsI0kC5#D*Uz7V!y80{@PU1M z!DZ<8@8ADFeDvu5qeqY6b|c%5ViA-Ba~qUP6!quNpZ_rY>({UUM~@!;|Lxni{|_EK zz_1%+|D#8b{=a+o4lBNY|2|Q6A}jj)_wRoY2HE}f>sL@Z1KA6zr&0V3vYQaTaNz*78KGk~e zGzgz;-M@Fw&U0r@-#vTkC= zftC05cqeuUrJbd{7F?cNH z{{P1hAo%pj6Zb!T`uP9BuIB&OS0w(wysq^B-@kwU|NQ<9+#k4k{p$Zaw{QOkl@}jB zy#N34Jp_Mv|L*_W*RTJdIeq#*sLpw~yY2stl_~$PtgisKtABp~4sJ_dyK)KIkGb~$ z(7^-XHtq4l2me2RbpQYBXOI6+nK~sHRBt@m+xh?2>dgOFH&lbmw4Xn|gWH3kF#GW4 z71%8x|A6|ZpmyhvPw&BP-p!jgyMpvT-q-X0&icatH@3Ed^D!vQKy?LJ|J&E#eg$&7 z<;Rzg;5Os7?c2cmpX}@Ve`js}|LdC?p!$D;+hQNzz5WkMUvI!|)2HCJ56BHazI^=q z=f}6dyLRn_=-=P}|L(fN|2H-_f%SvR$**5N|Nrsr>;E6$ze4)1Up|A|6ri;9>&G{+ z+@3vq!1|x=pZNdY`qKY*c25NB|Ml}HX1nL*GjRF;^wE8A-xSm*I&ZsUKEvoj-r>|CK9O{$ILuX+Eed0+lPEavX#~Y_I`X2#}vZ_56(+H$des kST9IFGQM=_k|W3*Z1~HUFaJU1*Y)eyQS@S#2&9Ps0OMGa@Bjb+ literal 0 HcmV?d00001 diff --git a/src/Flashsharp/wwwroot/js/site.js b/src/Flashsharp/wwwroot/js/site.js new file mode 100644 index 0000000..37aa956 --- /dev/null +++ b/src/Flashsharp/wwwroot/js/site.js @@ -0,0 +1,71 @@ +(function () { + function studyCard() { + return document.getElementById("study-card"); + } + + function stampStudyCard() { + const card = studyCard(); + if (card && card.dataset.revealed !== "true") { + card.dataset.started = Date.now().toString(); + } + } + + document.addEventListener("DOMContentLoaded", stampStudyCard); + document.body.addEventListener("htmx:afterSwap", stampStudyCard); + + document.addEventListener("keydown", function (event) { + if (event.metaKey || event.ctrlKey || event.altKey) { + return; + } + + const target = event.target; + if (target instanceof HTMLElement && target.closest("input, textarea, select, [contenteditable='true']")) { + return; + } + + if (!studyCard()) { + return; + } + + if (event.key === " ") { + const reveal = document.getElementById("reveal-button"); + if (reveal) { + event.preventDefault(); + reveal.click(); + } + return; + } + + if (["1", "2", "3", "4"].includes(event.key)) { + const grade = document.querySelector('[data-shortcut="' + event.key + '"]'); + if (grade) { + event.preventDefault(); + grade.click(); + } + } + }); + + document.body.addEventListener("htmx:configRequest", function (event) { + const form = event.detail.elt && event.detail.elt.closest + ? event.detail.elt.closest("form") + : null; + if (!form) { + return; + } + + const card = studyCard(); + if (!card) { + return; + } + + const started = Number(card.getAttribute("data-started") || Date.now()); + event.detail.parameters.durationMs = Math.max(0, Date.now() - started); + }); + + document.body.addEventListener("htmx:responseError", function () { + const card = studyCard(); + if (card) { + card.classList.add("fs-study-error"); + } + }); +})(); diff --git a/src/Flashsharp/wwwroot/vendor/bulma.min.css b/src/Flashsharp/wwwroot/vendor/bulma.min.css new file mode 100644 index 0000000..eeaae45 --- /dev/null +++ b/src/Flashsharp/wwwroot/vendor/bulma.min.css @@ -0,0 +1,3 @@ +@charset "UTF-8"; +/*! bulma.io v1.0.4 | MIT License | github.com/jgthms/bulma */:root{--bulma-control-radius:var(--bulma-radius);--bulma-control-radius-small:var(--bulma-radius-small);--bulma-control-border-width:1px;--bulma-control-height:2.5em;--bulma-control-line-height:1.5;--bulma-control-padding-vertical:calc(0.5em - 1px);--bulma-control-padding-horizontal:calc(0.75em - 1px);--bulma-control-size:var(--bulma-size-normal);--bulma-control-focus-shadow-l:50%;--bulma-scheme-h:221;--bulma-scheme-s:14%;--bulma-light-l:90%;--bulma-light-invert-l:20%;--bulma-dark-l:20%;--bulma-dark-invert-l:90%;--bulma-soft-l:90%;--bulma-bold-l:20%;--bulma-soft-invert-l:20%;--bulma-bold-invert-l:90%;--bulma-hover-background-l-delta:-5%;--bulma-active-background-l-delta:-10%;--bulma-hover-border-l-delta:-10%;--bulma-active-border-l-delta:-20%;--bulma-hover-color-l-delta:-5%;--bulma-active-color-l-delta:-10%;--bulma-hover-shadow-a-delta:-0.05;--bulma-active-shadow-a-delta:-0.1;--bulma-scheme-brightness:light;--bulma-scheme-main-l:100%;--bulma-scheme-main-bis-l:98%;--bulma-scheme-main-ter-l:96%;--bulma-background-l:96%;--bulma-border-weak-l:93%;--bulma-border-l:86%;--bulma-text-weak-l:48%;--bulma-text-strong-l:21%;--bulma-text-title-l:14%;--bulma-scheme-invert-ter-l:14%;--bulma-scheme-invert-bis-l:7%;--bulma-scheme-invert-l:4%;--bulma-family-primary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--bulma-family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--bulma-family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--bulma-size-small:0.75rem;--bulma-size-normal:1rem;--bulma-size-medium:1.25rem;--bulma-size-large:1.5rem;--bulma-weight-light:300;--bulma-weight-normal:400;--bulma-weight-medium:500;--bulma-weight-semibold:600;--bulma-weight-bold:700;--bulma-weight-extrabold:800;--bulma-block-spacing:1.5rem;--bulma-duration:294ms;--bulma-easing:ease-out;--bulma-radius-small:0.25rem;--bulma-radius:0.375rem;--bulma-radius-medium:0.5em;--bulma-radius-large:0.75rem;--bulma-radius-rounded:9999px;--bulma-speed:86ms;--bulma-arrow-color:var(--bulma-link);--bulma-loading-color:var(--bulma-border);--bulma-burger-h:var(--bulma-link-h);--bulma-burger-s:var(--bulma-link-s);--bulma-burger-l:var(--bulma-link-l);--bulma-burger-border-radius:0.5em;--bulma-burger-gap:5px;--bulma-burger-item-height:2px;--bulma-burger-item-width:20px;--bulma-white:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l),1);--bulma-white-base:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l),1);--bulma-white-rgb:255,255,255;--bulma-white-h:221deg;--bulma-white-s:14%;--bulma-white-l:100%;--bulma-white-invert-l:4%;--bulma-white-invert:#090a0c;--bulma-white-on-scheme-l:35%;--bulma-white-on-scheme:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l),1);--bulma-black:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l),1);--bulma-black-base:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l),1);--bulma-black-rgb:8.772,9.6764,11.628;--bulma-black-h:221deg;--bulma-black-s:14%;--bulma-black-l:4%;--bulma-black-invert-l:100%;--bulma-black-invert:#fff;--bulma-black-on-scheme-l:4%;--bulma-black-on-scheme:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l),1);--bulma-light:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l),1);--bulma-light-base:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l),1);--bulma-light-rgb:243.372,244.2764,246.228;--bulma-light-h:221deg;--bulma-light-s:14%;--bulma-light-l:96%;--bulma-light-invert-l:21%;--bulma-light-invert:#2e333d;--bulma-light-on-scheme-l:36%;--bulma-light-on-scheme:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l),1);--bulma-dark:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l),1);--bulma-dark-base:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l),1);--bulma-dark-rgb:46.053,50.8011,61.047;--bulma-dark-h:221deg;--bulma-dark-s:14%;--bulma-dark-l:21%;--bulma-dark-invert-l:96%;--bulma-dark-invert:#f3f4f6;--bulma-dark-on-scheme-l:21%;--bulma-dark-on-scheme:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l),1);--bulma-text:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l),1);--bulma-text-base:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l),1);--bulma-text-rgb:63.597,70.1539,84.303;--bulma-text-h:221deg;--bulma-text-s:14%;--bulma-text-l:29%;--bulma-text-00-l:0%;--bulma-text-05-l:4%;--bulma-text-10-l:9%;--bulma-text-15-l:14%;--bulma-text-20-l:19%;--bulma-text-25-l:24%;--bulma-text-30-l:29%;--bulma-text-35-l:34%;--bulma-text-40-l:39%;--bulma-text-45-l:44%;--bulma-text-50-l:49%;--bulma-text-55-l:54%;--bulma-text-60-l:59%;--bulma-text-65-l:64%;--bulma-text-70-l:69%;--bulma-text-75-l:74%;--bulma-text-80-l:79%;--bulma-text-85-l:84%;--bulma-text-90-l:89%;--bulma-text-95-l:94%;--bulma-text-100-l:99%;--bulma-text-00:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-l),1);--bulma-text-00-invert-l:var(--bulma-text-60-l);--bulma-text-00-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-invert-l),1);--bulma-text-05:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-l),1);--bulma-text-05-invert-l:var(--bulma-text-60-l);--bulma-text-05-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-invert-l),1);--bulma-text-10:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-l),1);--bulma-text-10-invert-l:var(--bulma-text-70-l);--bulma-text-10-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-invert-l),1);--bulma-text-15:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-l),1);--bulma-text-15-invert-l:var(--bulma-text-75-l);--bulma-text-15-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-invert-l),1);--bulma-text-20:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-l),1);--bulma-text-20-invert-l:var(--bulma-text-85-l);--bulma-text-20-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-invert-l),1);--bulma-text-25:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-l),1);--bulma-text-25-invert-l:var(--bulma-text-95-l);--bulma-text-25-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-invert-l),1);--bulma-text-30:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-l),1);--bulma-text-30-invert-l:var(--bulma-text-100-l);--bulma-text-30-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-invert-l),1);--bulma-text-35:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-l),1);--bulma-text-35-invert-l:var(--bulma-text-100-l);--bulma-text-35-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-invert-l),1);--bulma-text-40:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-l),1);--bulma-text-40-invert-l:var(--bulma-text-100-l);--bulma-text-40-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-invert-l),1);--bulma-text-45:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-l),1);--bulma-text-45-invert-l:var(--bulma-text-100-l);--bulma-text-45-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-invert-l),1);--bulma-text-50:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-l),1);--bulma-text-50-invert-l:var(--bulma-text-100-l);--bulma-text-50-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-invert-l),1);--bulma-text-55:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-l),1);--bulma-text-55-invert-l:var(--bulma-text-100-l);--bulma-text-55-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-invert-l),1);--bulma-text-60:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-l),1);--bulma-text-60-invert-l:var(--bulma-text-05-l);--bulma-text-60-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-invert-l),1);--bulma-text-65:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-l),1);--bulma-text-65-invert-l:var(--bulma-text-05-l);--bulma-text-65-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-invert-l),1);--bulma-text-70:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-l),1);--bulma-text-70-invert-l:var(--bulma-text-10-l);--bulma-text-70-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-invert-l),1);--bulma-text-75:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-l),1);--bulma-text-75-invert-l:var(--bulma-text-15-l);--bulma-text-75-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-invert-l),1);--bulma-text-80:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-l),1);--bulma-text-80-invert-l:var(--bulma-text-15-l);--bulma-text-80-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-invert-l),1);--bulma-text-85:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-l),1);--bulma-text-85-invert-l:var(--bulma-text-20-l);--bulma-text-85-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-invert-l),1);--bulma-text-90:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-l),1);--bulma-text-90-invert-l:var(--bulma-text-20-l);--bulma-text-90-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-invert-l),1);--bulma-text-95:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-l),1);--bulma-text-95-invert-l:var(--bulma-text-25-l);--bulma-text-95-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-invert-l),1);--bulma-text-100:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-l),1);--bulma-text-100-invert-l:var(--bulma-text-25-l);--bulma-text-100-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-invert-l),1);--bulma-text-invert-l:var(--bulma-text-100-l);--bulma-text-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-invert-l),1);--bulma-text-light-l:var(--bulma-text-90-l);--bulma-text-light:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-l),1);--bulma-text-light-invert-l:var(--bulma-text-20-l);--bulma-text-light-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-invert-l),1);--bulma-text-dark-l:var(--bulma-text-10-l);--bulma-text-dark:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-l),1);--bulma-text-dark-invert-l:var(--bulma-text-70-l);--bulma-text-dark-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-invert-l),1);--bulma-text-soft:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-l),1);--bulma-text-bold:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-l),1);--bulma-text-soft-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-invert-l),1);--bulma-text-bold-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-invert-l),1);--bulma-text-on-scheme-l:29%;--bulma-text-on-scheme:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l),1);--bulma-primary:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l),1);--bulma-primary-base:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l),1);--bulma-primary-rgb:0,209.1,177.735;--bulma-primary-h:171deg;--bulma-primary-s:100%;--bulma-primary-l:41%;--bulma-primary-00-l:1%;--bulma-primary-05-l:6%;--bulma-primary-10-l:11%;--bulma-primary-15-l:16%;--bulma-primary-20-l:21%;--bulma-primary-25-l:26%;--bulma-primary-30-l:31%;--bulma-primary-35-l:36%;--bulma-primary-40-l:41%;--bulma-primary-45-l:46%;--bulma-primary-50-l:51%;--bulma-primary-55-l:56%;--bulma-primary-60-l:61%;--bulma-primary-65-l:66%;--bulma-primary-70-l:71%;--bulma-primary-75-l:76%;--bulma-primary-80-l:81%;--bulma-primary-85-l:86%;--bulma-primary-90-l:91%;--bulma-primary-95-l:96%;--bulma-primary-100-l:100%;--bulma-primary-00:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-l),1);--bulma-primary-00-invert-l:var(--bulma-primary-30-l);--bulma-primary-00-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-invert-l),1);--bulma-primary-05:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-l),1);--bulma-primary-05-invert-l:var(--bulma-primary-40-l);--bulma-primary-05-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-invert-l),1);--bulma-primary-10:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-l),1);--bulma-primary-10-invert-l:var(--bulma-primary-50-l);--bulma-primary-10-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-invert-l),1);--bulma-primary-15:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-l),1);--bulma-primary-15-invert-l:var(--bulma-primary-100-l);--bulma-primary-15-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-invert-l),1);--bulma-primary-20:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-l),1);--bulma-primary-20-invert-l:var(--bulma-primary-100-l);--bulma-primary-20-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-invert-l),1);--bulma-primary-25:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-l),1);--bulma-primary-25-invert-l:var(--bulma-primary-100-l);--bulma-primary-25-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-invert-l),1);--bulma-primary-30:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-l),1);--bulma-primary-30-invert-l:var(--bulma-primary-00-l);--bulma-primary-30-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-invert-l),1);--bulma-primary-35:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-l),1);--bulma-primary-35-invert-l:var(--bulma-primary-00-l);--bulma-primary-35-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-invert-l),1);--bulma-primary-40:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-l),1);--bulma-primary-40-invert-l:var(--bulma-primary-05-l);--bulma-primary-40-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-invert-l),1);--bulma-primary-45:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-l),1);--bulma-primary-45-invert-l:var(--bulma-primary-05-l);--bulma-primary-45-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-invert-l),1);--bulma-primary-50:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-l),1);--bulma-primary-50-invert-l:var(--bulma-primary-10-l);--bulma-primary-50-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-invert-l),1);--bulma-primary-55:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-l),1);--bulma-primary-55-invert-l:var(--bulma-primary-10-l);--bulma-primary-55-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-invert-l),1);--bulma-primary-60:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-l),1);--bulma-primary-60-invert-l:var(--bulma-primary-10-l);--bulma-primary-60-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-invert-l),1);--bulma-primary-65:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-l),1);--bulma-primary-65-invert-l:var(--bulma-primary-10-l);--bulma-primary-65-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-invert-l),1);--bulma-primary-70:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-l),1);--bulma-primary-70-invert-l:var(--bulma-primary-10-l);--bulma-primary-70-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-invert-l),1);--bulma-primary-75:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-l),1);--bulma-primary-75-invert-l:var(--bulma-primary-10-l);--bulma-primary-75-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-invert-l),1);--bulma-primary-80:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-l),1);--bulma-primary-80-invert-l:var(--bulma-primary-10-l);--bulma-primary-80-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-invert-l),1);--bulma-primary-85:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-l),1);--bulma-primary-85-invert-l:var(--bulma-primary-10-l);--bulma-primary-85-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-invert-l),1);--bulma-primary-90:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-l),1);--bulma-primary-90-invert-l:var(--bulma-primary-10-l);--bulma-primary-90-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-invert-l),1);--bulma-primary-95:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-l),1);--bulma-primary-95-invert-l:var(--bulma-primary-10-l);--bulma-primary-95-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-invert-l),1);--bulma-primary-100:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-l),1);--bulma-primary-100-invert-l:var(--bulma-primary-15-l);--bulma-primary-100-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-invert-l),1);--bulma-primary-invert-l:var(--bulma-primary-05-l);--bulma-primary-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-invert-l),1);--bulma-primary-light-l:var(--bulma-primary-90-l);--bulma-primary-light:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-l),1);--bulma-primary-light-invert-l:var(--bulma-primary-10-l);--bulma-primary-light-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-invert-l),1);--bulma-primary-dark-l:var(--bulma-primary-10-l);--bulma-primary-dark:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-l),1);--bulma-primary-dark-invert-l:var(--bulma-primary-50-l);--bulma-primary-dark-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-invert-l),1);--bulma-primary-soft:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-l),1);--bulma-primary-bold:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-l),1);--bulma-primary-soft-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-invert-l),1);--bulma-primary-bold-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-invert-l),1);--bulma-primary-on-scheme-l:21%;--bulma-primary-on-scheme:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l),1);--bulma-link:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l),1);--bulma-link-base:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l),1);--bulma-link-rgb:66.3,88.315,255;--bulma-link-h:233deg;--bulma-link-s:100%;--bulma-link-l:63%;--bulma-link-00-l:0%;--bulma-link-05-l:3%;--bulma-link-10-l:8%;--bulma-link-15-l:13%;--bulma-link-20-l:18%;--bulma-link-25-l:23%;--bulma-link-30-l:28%;--bulma-link-35-l:33%;--bulma-link-40-l:38%;--bulma-link-45-l:43%;--bulma-link-50-l:48%;--bulma-link-55-l:53%;--bulma-link-60-l:58%;--bulma-link-65-l:63%;--bulma-link-70-l:68%;--bulma-link-75-l:73%;--bulma-link-80-l:78%;--bulma-link-85-l:83%;--bulma-link-90-l:88%;--bulma-link-95-l:93%;--bulma-link-100-l:98%;--bulma-link-00:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-l),1);--bulma-link-00-invert-l:var(--bulma-link-75-l);--bulma-link-00-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-invert-l),1);--bulma-link-05:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-l),1);--bulma-link-05-invert-l:var(--bulma-link-75-l);--bulma-link-05-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-invert-l),1);--bulma-link-10:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-l),1);--bulma-link-10-invert-l:var(--bulma-link-75-l);--bulma-link-10-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-invert-l),1);--bulma-link-15:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-l),1);--bulma-link-15-invert-l:var(--bulma-link-80-l);--bulma-link-15-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-invert-l),1);--bulma-link-20:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-l),1);--bulma-link-20-invert-l:var(--bulma-link-80-l);--bulma-link-20-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-invert-l),1);--bulma-link-25:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-l),1);--bulma-link-25-invert-l:var(--bulma-link-85-l);--bulma-link-25-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-invert-l),1);--bulma-link-30:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-l),1);--bulma-link-30-invert-l:var(--bulma-link-90-l);--bulma-link-30-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-invert-l),1);--bulma-link-35:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-l),1);--bulma-link-35-invert-l:var(--bulma-link-90-l);--bulma-link-35-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-invert-l),1);--bulma-link-40:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-l),1);--bulma-link-40-invert-l:var(--bulma-link-95-l);--bulma-link-40-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-invert-l),1);--bulma-link-45:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-l),1);--bulma-link-45-invert-l:var(--bulma-link-95-l);--bulma-link-45-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-invert-l),1);--bulma-link-50:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-l),1);--bulma-link-50-invert-l:var(--bulma-link-100-l);--bulma-link-50-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-invert-l),1);--bulma-link-55:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-l),1);--bulma-link-55-invert-l:var(--bulma-link-100-l);--bulma-link-55-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-invert-l),1);--bulma-link-60:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-l),1);--bulma-link-60-invert-l:var(--bulma-link-100-l);--bulma-link-60-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-invert-l),1);--bulma-link-65:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-l),1);--bulma-link-65-invert-l:var(--bulma-link-100-l);--bulma-link-65-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-invert-l),1);--bulma-link-70:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-l),1);--bulma-link-70-invert-l:var(--bulma-link-100-l);--bulma-link-70-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-invert-l),1);--bulma-link-75:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-l),1);--bulma-link-75-invert-l:var(--bulma-link-10-l);--bulma-link-75-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-invert-l),1);--bulma-link-80:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-l),1);--bulma-link-80-invert-l:var(--bulma-link-20-l);--bulma-link-80-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-invert-l),1);--bulma-link-85:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-l),1);--bulma-link-85-invert-l:var(--bulma-link-25-l);--bulma-link-85-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-invert-l),1);--bulma-link-90:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-l),1);--bulma-link-90-invert-l:var(--bulma-link-35-l);--bulma-link-90-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-invert-l),1);--bulma-link-95:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-l),1);--bulma-link-95-invert-l:var(--bulma-link-45-l);--bulma-link-95-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-invert-l),1);--bulma-link-100:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-l),1);--bulma-link-100-invert-l:var(--bulma-link-50-l);--bulma-link-100-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-invert-l),1);--bulma-link-invert-l:var(--bulma-link-100-l);--bulma-link-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-invert-l),1);--bulma-link-light-l:var(--bulma-link-90-l);--bulma-link-light:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-l),1);--bulma-link-light-invert-l:var(--bulma-link-35-l);--bulma-link-light-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-invert-l),1);--bulma-link-dark-l:var(--bulma-link-10-l);--bulma-link-dark:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-l),1);--bulma-link-dark-invert-l:var(--bulma-link-75-l);--bulma-link-dark-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-invert-l),1);--bulma-link-soft:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-l),1);--bulma-link-bold:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-l),1);--bulma-link-soft-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-invert-l),1);--bulma-link-bold-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-invert-l),1);--bulma-link-on-scheme-l:58%;--bulma-link-on-scheme:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l),1);--bulma-info:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l),1);--bulma-info-base:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l),1);--bulma-info-rgb:102,209.1,255;--bulma-info-h:198deg;--bulma-info-s:100%;--bulma-info-l:70%;--bulma-info-00-l:0%;--bulma-info-05-l:5%;--bulma-info-10-l:10%;--bulma-info-15-l:15%;--bulma-info-20-l:20%;--bulma-info-25-l:25%;--bulma-info-30-l:30%;--bulma-info-35-l:35%;--bulma-info-40-l:40%;--bulma-info-45-l:45%;--bulma-info-50-l:50%;--bulma-info-55-l:55%;--bulma-info-60-l:60%;--bulma-info-65-l:65%;--bulma-info-70-l:70%;--bulma-info-75-l:75%;--bulma-info-80-l:80%;--bulma-info-85-l:85%;--bulma-info-90-l:90%;--bulma-info-95-l:95%;--bulma-info-100-l:100%;--bulma-info-00:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-l),1);--bulma-info-00-invert-l:var(--bulma-info-45-l);--bulma-info-00-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-invert-l),1);--bulma-info-05:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-l),1);--bulma-info-05-invert-l:var(--bulma-info-50-l);--bulma-info-05-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-invert-l),1);--bulma-info-10:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-l),1);--bulma-info-10-invert-l:var(--bulma-info-60-l);--bulma-info-10-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-invert-l),1);--bulma-info-15:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-l),1);--bulma-info-15-invert-l:var(--bulma-info-80-l);--bulma-info-15-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-invert-l),1);--bulma-info-20:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-l),1);--bulma-info-20-invert-l:var(--bulma-info-95-l);--bulma-info-20-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-invert-l),1);--bulma-info-25:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-l),1);--bulma-info-25-invert-l:var(--bulma-info-100-l);--bulma-info-25-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-invert-l),1);--bulma-info-30:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-l),1);--bulma-info-30-invert-l:var(--bulma-info-100-l);--bulma-info-30-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-invert-l),1);--bulma-info-35:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-l),1);--bulma-info-35-invert-l:var(--bulma-info-100-l);--bulma-info-35-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-invert-l),1);--bulma-info-40:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-l),1);--bulma-info-40-invert-l:var(--bulma-info-100-l);--bulma-info-40-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-invert-l),1);--bulma-info-45:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-l),1);--bulma-info-45-invert-l:var(--bulma-info-00-l);--bulma-info-45-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-invert-l),1);--bulma-info-50:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-l),1);--bulma-info-50-invert-l:var(--bulma-info-05-l);--bulma-info-50-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-invert-l),1);--bulma-info-55:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-l),1);--bulma-info-55-invert-l:var(--bulma-info-05-l);--bulma-info-55-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-invert-l),1);--bulma-info-60:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-l),1);--bulma-info-60-invert-l:var(--bulma-info-10-l);--bulma-info-60-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-invert-l),1);--bulma-info-65:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-l),1);--bulma-info-65-invert-l:var(--bulma-info-10-l);--bulma-info-65-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-invert-l),1);--bulma-info-70:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-l),1);--bulma-info-70-invert-l:var(--bulma-info-10-l);--bulma-info-70-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-invert-l),1);--bulma-info-75:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-l),1);--bulma-info-75-invert-l:var(--bulma-info-10-l);--bulma-info-75-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-invert-l),1);--bulma-info-80:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-l),1);--bulma-info-80-invert-l:var(--bulma-info-15-l);--bulma-info-80-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-invert-l),1);--bulma-info-85:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-l),1);--bulma-info-85-invert-l:var(--bulma-info-15-l);--bulma-info-85-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-invert-l),1);--bulma-info-90:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-l),1);--bulma-info-90-invert-l:var(--bulma-info-15-l);--bulma-info-90-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-invert-l),1);--bulma-info-95:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-l),1);--bulma-info-95-invert-l:var(--bulma-info-20-l);--bulma-info-95-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-invert-l),1);--bulma-info-100:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-l),1);--bulma-info-100-invert-l:var(--bulma-info-20-l);--bulma-info-100-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-invert-l),1);--bulma-info-invert-l:var(--bulma-info-10-l);--bulma-info-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-invert-l),1);--bulma-info-light-l:var(--bulma-info-90-l);--bulma-info-light:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-l),1);--bulma-info-light-invert-l:var(--bulma-info-15-l);--bulma-info-light-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-invert-l),1);--bulma-info-dark-l:var(--bulma-info-10-l);--bulma-info-dark:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-l),1);--bulma-info-dark-invert-l:var(--bulma-info-60-l);--bulma-info-dark-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-invert-l),1);--bulma-info-soft:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-l),1);--bulma-info-bold:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-l),1);--bulma-info-soft-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-invert-l),1);--bulma-info-bold-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-invert-l),1);--bulma-info-on-scheme-l:25%;--bulma-info-on-scheme:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l),1);--bulma-success:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l),1);--bulma-success-base:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l),1);--bulma-success-rgb:71.6295,198.6705,141.50205;--bulma-success-h:153deg;--bulma-success-s:53%;--bulma-success-l:53%;--bulma-success-00-l:0%;--bulma-success-05-l:3%;--bulma-success-10-l:8%;--bulma-success-15-l:13%;--bulma-success-20-l:18%;--bulma-success-25-l:23%;--bulma-success-30-l:28%;--bulma-success-35-l:33%;--bulma-success-40-l:38%;--bulma-success-45-l:43%;--bulma-success-50-l:48%;--bulma-success-55-l:53%;--bulma-success-60-l:58%;--bulma-success-65-l:63%;--bulma-success-70-l:68%;--bulma-success-75-l:73%;--bulma-success-80-l:78%;--bulma-success-85-l:83%;--bulma-success-90-l:88%;--bulma-success-95-l:93%;--bulma-success-100-l:98%;--bulma-success-00:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-l),1);--bulma-success-00-invert-l:var(--bulma-success-45-l);--bulma-success-00-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-invert-l),1);--bulma-success-05:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-l),1);--bulma-success-05-invert-l:var(--bulma-success-45-l);--bulma-success-05-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-invert-l),1);--bulma-success-10:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-l),1);--bulma-success-10-invert-l:var(--bulma-success-55-l);--bulma-success-10-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-invert-l),1);--bulma-success-15:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-l),1);--bulma-success-15-invert-l:var(--bulma-success-75-l);--bulma-success-15-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-invert-l),1);--bulma-success-20:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-l),1);--bulma-success-20-invert-l:var(--bulma-success-95-l);--bulma-success-20-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-invert-l),1);--bulma-success-25:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-l),1);--bulma-success-25-invert-l:var(--bulma-success-100-l);--bulma-success-25-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-invert-l),1);--bulma-success-30:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-l),1);--bulma-success-30-invert-l:var(--bulma-success-100-l);--bulma-success-30-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-invert-l),1);--bulma-success-35:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-l),1);--bulma-success-35-invert-l:var(--bulma-success-100-l);--bulma-success-35-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-invert-l),1);--bulma-success-40:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-l),1);--bulma-success-40-invert-l:var(--bulma-success-100-l);--bulma-success-40-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-invert-l),1);--bulma-success-45:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-l),1);--bulma-success-45-invert-l:var(--bulma-success-05-l);--bulma-success-45-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-invert-l),1);--bulma-success-50:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-l),1);--bulma-success-50-invert-l:var(--bulma-success-05-l);--bulma-success-50-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-invert-l),1);--bulma-success-55:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-l),1);--bulma-success-55-invert-l:var(--bulma-success-10-l);--bulma-success-55-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-invert-l),1);--bulma-success-60:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-l),1);--bulma-success-60-invert-l:var(--bulma-success-10-l);--bulma-success-60-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-invert-l),1);--bulma-success-65:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-l),1);--bulma-success-65-invert-l:var(--bulma-success-10-l);--bulma-success-65-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-invert-l),1);--bulma-success-70:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-l),1);--bulma-success-70-invert-l:var(--bulma-success-10-l);--bulma-success-70-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-invert-l),1);--bulma-success-75:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-l),1);--bulma-success-75-invert-l:var(--bulma-success-15-l);--bulma-success-75-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-invert-l),1);--bulma-success-80:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-l),1);--bulma-success-80-invert-l:var(--bulma-success-15-l);--bulma-success-80-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-invert-l),1);--bulma-success-85:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-l),1);--bulma-success-85-invert-l:var(--bulma-success-15-l);--bulma-success-85-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-invert-l),1);--bulma-success-90:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-l),1);--bulma-success-90-invert-l:var(--bulma-success-15-l);--bulma-success-90-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-invert-l),1);--bulma-success-95:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-l),1);--bulma-success-95-invert-l:var(--bulma-success-20-l);--bulma-success-95-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-invert-l),1);--bulma-success-100:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-l),1);--bulma-success-100-invert-l:var(--bulma-success-20-l);--bulma-success-100-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-invert-l),1);--bulma-success-invert-l:var(--bulma-success-10-l);--bulma-success-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-invert-l),1);--bulma-success-light-l:var(--bulma-success-90-l);--bulma-success-light:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-l),1);--bulma-success-light-invert-l:var(--bulma-success-15-l);--bulma-success-light-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-invert-l),1);--bulma-success-dark-l:var(--bulma-success-10-l);--bulma-success-dark:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-l),1);--bulma-success-dark-invert-l:var(--bulma-success-55-l);--bulma-success-dark-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-invert-l),1);--bulma-success-soft:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-l),1);--bulma-success-bold:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-l),1);--bulma-success-soft-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-invert-l),1);--bulma-success-bold-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-invert-l),1);--bulma-success-on-scheme-l:23%;--bulma-success-on-scheme:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l),1);--bulma-warning:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l),1);--bulma-warning-base:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l),1);--bulma-warning-rgb:255,183.09,15.3;--bulma-warning-h:42deg;--bulma-warning-s:100%;--bulma-warning-l:53%;--bulma-warning-00-l:0%;--bulma-warning-05-l:3%;--bulma-warning-10-l:8%;--bulma-warning-15-l:13%;--bulma-warning-20-l:18%;--bulma-warning-25-l:23%;--bulma-warning-30-l:28%;--bulma-warning-35-l:33%;--bulma-warning-40-l:38%;--bulma-warning-45-l:43%;--bulma-warning-50-l:48%;--bulma-warning-55-l:53%;--bulma-warning-60-l:58%;--bulma-warning-65-l:63%;--bulma-warning-70-l:68%;--bulma-warning-75-l:73%;--bulma-warning-80-l:78%;--bulma-warning-85-l:83%;--bulma-warning-90-l:88%;--bulma-warning-95-l:93%;--bulma-warning-100-l:98%;--bulma-warning-00:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-l),1);--bulma-warning-00-invert-l:var(--bulma-warning-40-l);--bulma-warning-00-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-invert-l),1);--bulma-warning-05:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-l),1);--bulma-warning-05-invert-l:var(--bulma-warning-45-l);--bulma-warning-05-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-invert-l),1);--bulma-warning-10:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-l),1);--bulma-warning-10-invert-l:var(--bulma-warning-50-l);--bulma-warning-10-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-invert-l),1);--bulma-warning-15:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-l),1);--bulma-warning-15-invert-l:var(--bulma-warning-70-l);--bulma-warning-15-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-invert-l),1);--bulma-warning-20:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-l),1);--bulma-warning-20-invert-l:var(--bulma-warning-100-l);--bulma-warning-20-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-invert-l),1);--bulma-warning-25:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-l),1);--bulma-warning-25-invert-l:var(--bulma-warning-100-l);--bulma-warning-25-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-invert-l),1);--bulma-warning-30:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-l),1);--bulma-warning-30-invert-l:var(--bulma-warning-100-l);--bulma-warning-30-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-invert-l),1);--bulma-warning-35:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-l),1);--bulma-warning-35-invert-l:var(--bulma-warning-100-l);--bulma-warning-35-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-invert-l),1);--bulma-warning-40:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-l),1);--bulma-warning-40-invert-l:var(--bulma-warning-00-l);--bulma-warning-40-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-invert-l),1);--bulma-warning-45:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-l),1);--bulma-warning-45-invert-l:var(--bulma-warning-05-l);--bulma-warning-45-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-invert-l),1);--bulma-warning-50:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-l),1);--bulma-warning-50-invert-l:var(--bulma-warning-10-l);--bulma-warning-50-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-invert-l),1);--bulma-warning-55:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-l),1);--bulma-warning-55-invert-l:var(--bulma-warning-10-l);--bulma-warning-55-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-invert-l),1);--bulma-warning-60:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-l),1);--bulma-warning-60-invert-l:var(--bulma-warning-10-l);--bulma-warning-60-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-invert-l),1);--bulma-warning-65:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-l),1);--bulma-warning-65-invert-l:var(--bulma-warning-10-l);--bulma-warning-65-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-invert-l),1);--bulma-warning-70:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-l),1);--bulma-warning-70-invert-l:var(--bulma-warning-15-l);--bulma-warning-70-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-invert-l),1);--bulma-warning-75:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-l),1);--bulma-warning-75-invert-l:var(--bulma-warning-15-l);--bulma-warning-75-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-invert-l),1);--bulma-warning-80:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-l),1);--bulma-warning-80-invert-l:var(--bulma-warning-15-l);--bulma-warning-80-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-invert-l),1);--bulma-warning-85:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-l),1);--bulma-warning-85-invert-l:var(--bulma-warning-15-l);--bulma-warning-85-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-invert-l),1);--bulma-warning-90:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-l),1);--bulma-warning-90-invert-l:var(--bulma-warning-15-l);--bulma-warning-90-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-invert-l),1);--bulma-warning-95:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-l),1);--bulma-warning-95-invert-l:var(--bulma-warning-15-l);--bulma-warning-95-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-invert-l),1);--bulma-warning-100:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-l),1);--bulma-warning-100-invert-l:var(--bulma-warning-20-l);--bulma-warning-100-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-invert-l),1);--bulma-warning-invert-l:var(--bulma-warning-10-l);--bulma-warning-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-invert-l),1);--bulma-warning-light-l:var(--bulma-warning-90-l);--bulma-warning-light:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-l),1);--bulma-warning-light-invert-l:var(--bulma-warning-15-l);--bulma-warning-light-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-invert-l),1);--bulma-warning-dark-l:var(--bulma-warning-10-l);--bulma-warning-dark:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-l),1);--bulma-warning-dark-invert-l:var(--bulma-warning-50-l);--bulma-warning-dark-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-invert-l),1);--bulma-warning-soft:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-l),1);--bulma-warning-bold:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-l),1);--bulma-warning-soft-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-invert-l),1);--bulma-warning-bold-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-invert-l),1);--bulma-warning-on-scheme-l:23%;--bulma-warning-on-scheme:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l),1);--bulma-danger:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l),1);--bulma-danger-base:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l),1);--bulma-danger-rgb:255,102,132.6;--bulma-danger-h:348deg;--bulma-danger-s:100%;--bulma-danger-l:70%;--bulma-danger-00-l:0%;--bulma-danger-05-l:5%;--bulma-danger-10-l:10%;--bulma-danger-15-l:15%;--bulma-danger-20-l:20%;--bulma-danger-25-l:25%;--bulma-danger-30-l:30%;--bulma-danger-35-l:35%;--bulma-danger-40-l:40%;--bulma-danger-45-l:45%;--bulma-danger-50-l:50%;--bulma-danger-55-l:55%;--bulma-danger-60-l:60%;--bulma-danger-65-l:65%;--bulma-danger-70-l:70%;--bulma-danger-75-l:75%;--bulma-danger-80-l:80%;--bulma-danger-85-l:85%;--bulma-danger-90-l:90%;--bulma-danger-95-l:95%;--bulma-danger-100-l:100%;--bulma-danger-00:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-l),1);--bulma-danger-00-invert-l:var(--bulma-danger-65-l);--bulma-danger-00-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-invert-l),1);--bulma-danger-05:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-l),1);--bulma-danger-05-invert-l:var(--bulma-danger-70-l);--bulma-danger-05-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-invert-l),1);--bulma-danger-10:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-l),1);--bulma-danger-10-invert-l:var(--bulma-danger-75-l);--bulma-danger-10-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-invert-l),1);--bulma-danger-15:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-l),1);--bulma-danger-15-invert-l:var(--bulma-danger-80-l);--bulma-danger-15-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-invert-l),1);--bulma-danger-20:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-l),1);--bulma-danger-20-invert-l:var(--bulma-danger-85-l);--bulma-danger-20-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-invert-l),1);--bulma-danger-25:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-l),1);--bulma-danger-25-invert-l:var(--bulma-danger-90-l);--bulma-danger-25-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-invert-l),1);--bulma-danger-30:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-l),1);--bulma-danger-30-invert-l:var(--bulma-danger-100-l);--bulma-danger-30-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-invert-l),1);--bulma-danger-35:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-l),1);--bulma-danger-35-invert-l:var(--bulma-danger-100-l);--bulma-danger-35-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-invert-l),1);--bulma-danger-40:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-l),1);--bulma-danger-40-invert-l:var(--bulma-danger-100-l);--bulma-danger-40-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-invert-l),1);--bulma-danger-45:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-l),1);--bulma-danger-45-invert-l:var(--bulma-danger-100-l);--bulma-danger-45-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-invert-l),1);--bulma-danger-50:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-l),1);--bulma-danger-50-invert-l:var(--bulma-danger-100-l);--bulma-danger-50-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-invert-l),1);--bulma-danger-55:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-l),1);--bulma-danger-55-invert-l:var(--bulma-danger-100-l);--bulma-danger-55-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-invert-l),1);--bulma-danger-60:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-l),1);--bulma-danger-60-invert-l:var(--bulma-danger-100-l);--bulma-danger-60-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-invert-l),1);--bulma-danger-65:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-l),1);--bulma-danger-65-invert-l:var(--bulma-danger-00-l);--bulma-danger-65-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-invert-l),1);--bulma-danger-70:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-l),1);--bulma-danger-70-invert-l:var(--bulma-danger-05-l);--bulma-danger-70-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-invert-l),1);--bulma-danger-75:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-l),1);--bulma-danger-75-invert-l:var(--bulma-danger-10-l);--bulma-danger-75-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-invert-l),1);--bulma-danger-80:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-l),1);--bulma-danger-80-invert-l:var(--bulma-danger-15-l);--bulma-danger-80-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-invert-l),1);--bulma-danger-85:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-l),1);--bulma-danger-85-invert-l:var(--bulma-danger-20-l);--bulma-danger-85-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-invert-l),1);--bulma-danger-90:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-l),1);--bulma-danger-90-invert-l:var(--bulma-danger-25-l);--bulma-danger-90-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-invert-l),1);--bulma-danger-95:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-l),1);--bulma-danger-95-invert-l:var(--bulma-danger-25-l);--bulma-danger-95-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-invert-l),1);--bulma-danger-100:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-l),1);--bulma-danger-100-invert-l:var(--bulma-danger-30-l);--bulma-danger-100-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-invert-l),1);--bulma-danger-invert-l:var(--bulma-danger-05-l);--bulma-danger-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-invert-l),1);--bulma-danger-light-l:var(--bulma-danger-90-l);--bulma-danger-light:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-l),1);--bulma-danger-light-invert-l:var(--bulma-danger-25-l);--bulma-danger-light-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-invert-l),1);--bulma-danger-dark-l:var(--bulma-danger-10-l);--bulma-danger-dark:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-l),1);--bulma-danger-dark-invert-l:var(--bulma-danger-75-l);--bulma-danger-dark-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-invert-l),1);--bulma-danger-soft:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-l),1);--bulma-danger-bold:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-l),1);--bulma-danger-soft-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-invert-l),1);--bulma-danger-bold-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-invert-l),1);--bulma-danger-on-scheme-l:40%;--bulma-danger-on-scheme:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l),1);--bulma-black-bis:#14161a;--bulma-black-ter:#1f2229;--bulma-grey-darker:#2e333d;--bulma-grey-dark:#404654;--bulma-grey:#69748c;--bulma-grey-light:#abb1bf;--bulma-grey-lighter:#d6d9e0;--bulma-white-ter:#f3f4f6;--bulma-white-bis:#f9fafb;--bulma-shadow-h:221deg;--bulma-shadow-s:14%;--bulma-shadow-l:4%;--bulma-size-1:3rem;--bulma-size-2:2.5rem;--bulma-size-3:2rem;--bulma-size-4:1.5rem;--bulma-size-5:1.25rem;--bulma-size-6:1rem;--bulma-size-7:0.75rem;--bulma-scheme-main:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-l));--bulma-scheme-main-bis:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-bis-l));--bulma-scheme-main-ter:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-ter-l));--bulma-background:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-background-l));--bulma-background-hover:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-background-l) + var(--bulma-hover-background-l-delta)));--bulma-background-active:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-background-l) + var(--bulma-active-background-l-delta)));--bulma-border-weak:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-border-weak-l));--bulma-border:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-border-l));--bulma-border-hover:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-border-l) + var(--bulma-hover-border-l-delta)));--bulma-border-active:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-border-l) + var(--bulma-active-border-l-delta)));--bulma-text-weak:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-weak-l));--bulma-text:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l));--bulma-text-strong:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-strong-l));--bulma-scheme-invert-ter:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-ter-l));--bulma-scheme-invert-bis:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-bis-l));--bulma-scheme-invert:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l));--bulma-link:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l));--bulma-link-text:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l));--bulma-link-text-hover:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-on-scheme-l) + var(--bulma-hover-color-l-delta)));--bulma-link-text-active:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-on-scheme-l) + var(--bulma-active-color-l-delta)));--bulma-focus-h:var(--bulma-link-h);--bulma-focus-s:var(--bulma-link-s);--bulma-focus-l:var(--bulma-link-l);--bulma-focus-offset:1px;--bulma-focus-style:solid;--bulma-focus-width:2px;--bulma-focus-shadow-size:0 0 0 0.1875em;--bulma-focus-shadow-alpha:0.25;--bulma-code:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l));--bulma-code-background:var(--bulma-background);--bulma-pre:var(--bulma-text);--bulma-pre-background:var(--bulma-background);--bulma-shadow:0 0.5em 1em -0.125em hsla(var(--bulma-shadow-h),var(--bulma-shadow-s),var(--bulma-shadow-l),0.1),0 0px 0 1px hsla(var(--bulma-shadow-h),var(--bulma-shadow-s),var(--bulma-shadow-l),0.02)}@media (prefers-color-scheme:light){:root{--bulma-scheme-h:221;--bulma-scheme-s:14%;--bulma-light-l:90%;--bulma-light-invert-l:20%;--bulma-dark-l:20%;--bulma-dark-invert-l:90%;--bulma-soft-l:90%;--bulma-bold-l:20%;--bulma-soft-invert-l:20%;--bulma-bold-invert-l:90%;--bulma-hover-background-l-delta:-5%;--bulma-active-background-l-delta:-10%;--bulma-hover-border-l-delta:-10%;--bulma-active-border-l-delta:-20%;--bulma-hover-color-l-delta:-5%;--bulma-active-color-l-delta:-10%;--bulma-hover-shadow-a-delta:-0.05;--bulma-active-shadow-a-delta:-0.1;--bulma-scheme-brightness:light;--bulma-scheme-main-l:100%;--bulma-scheme-main-bis-l:98%;--bulma-scheme-main-ter-l:96%;--bulma-background-l:96%;--bulma-border-weak-l:93%;--bulma-border-l:86%;--bulma-text-weak-l:48%;--bulma-text-strong-l:21%;--bulma-text-title-l:14%;--bulma-scheme-invert-ter-l:14%;--bulma-scheme-invert-bis-l:7%;--bulma-scheme-invert-l:4%;--bulma-family-primary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--bulma-family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--bulma-family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--bulma-size-small:0.75rem;--bulma-size-normal:1rem;--bulma-size-medium:1.25rem;--bulma-size-large:1.5rem;--bulma-weight-light:300;--bulma-weight-normal:400;--bulma-weight-medium:500;--bulma-weight-semibold:600;--bulma-weight-bold:700;--bulma-weight-extrabold:800;--bulma-block-spacing:1.5rem;--bulma-duration:294ms;--bulma-easing:ease-out;--bulma-radius-small:0.25rem;--bulma-radius:0.375rem;--bulma-radius-medium:0.5em;--bulma-radius-large:0.75rem;--bulma-radius-rounded:9999px;--bulma-speed:86ms;--bulma-arrow-color:var(--bulma-link);--bulma-loading-color:var(--bulma-border);--bulma-burger-h:var(--bulma-link-h);--bulma-burger-s:var(--bulma-link-s);--bulma-burger-l:var(--bulma-link-l);--bulma-burger-border-radius:0.5em;--bulma-burger-gap:5px;--bulma-burger-item-height:2px;--bulma-burger-item-width:20px;--bulma-white:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l),1);--bulma-white-base:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l),1);--bulma-white-rgb:255,255,255;--bulma-white-h:221deg;--bulma-white-s:14%;--bulma-white-l:100%;--bulma-white-invert-l:4%;--bulma-white-invert:#090a0c;--bulma-white-on-scheme-l:35%;--bulma-white-on-scheme:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l),1);--bulma-black:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l),1);--bulma-black-base:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l),1);--bulma-black-rgb:8.772,9.6764,11.628;--bulma-black-h:221deg;--bulma-black-s:14%;--bulma-black-l:4%;--bulma-black-invert-l:100%;--bulma-black-invert:#fff;--bulma-black-on-scheme-l:4%;--bulma-black-on-scheme:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l),1);--bulma-light:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l),1);--bulma-light-base:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l),1);--bulma-light-rgb:243.372,244.2764,246.228;--bulma-light-h:221deg;--bulma-light-s:14%;--bulma-light-l:96%;--bulma-light-invert-l:21%;--bulma-light-invert:#2e333d;--bulma-light-on-scheme-l:36%;--bulma-light-on-scheme:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l),1);--bulma-dark:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l),1);--bulma-dark-base:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l),1);--bulma-dark-rgb:46.053,50.8011,61.047;--bulma-dark-h:221deg;--bulma-dark-s:14%;--bulma-dark-l:21%;--bulma-dark-invert-l:96%;--bulma-dark-invert:#f3f4f6;--bulma-dark-on-scheme-l:21%;--bulma-dark-on-scheme:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l),1);--bulma-text:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l),1);--bulma-text-base:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l),1);--bulma-text-rgb:63.597,70.1539,84.303;--bulma-text-h:221deg;--bulma-text-s:14%;--bulma-text-l:29%;--bulma-text-00-l:0%;--bulma-text-05-l:4%;--bulma-text-10-l:9%;--bulma-text-15-l:14%;--bulma-text-20-l:19%;--bulma-text-25-l:24%;--bulma-text-30-l:29%;--bulma-text-35-l:34%;--bulma-text-40-l:39%;--bulma-text-45-l:44%;--bulma-text-50-l:49%;--bulma-text-55-l:54%;--bulma-text-60-l:59%;--bulma-text-65-l:64%;--bulma-text-70-l:69%;--bulma-text-75-l:74%;--bulma-text-80-l:79%;--bulma-text-85-l:84%;--bulma-text-90-l:89%;--bulma-text-95-l:94%;--bulma-text-100-l:99%;--bulma-text-00:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-l),1);--bulma-text-00-invert-l:var(--bulma-text-60-l);--bulma-text-00-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-invert-l),1);--bulma-text-05:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-l),1);--bulma-text-05-invert-l:var(--bulma-text-60-l);--bulma-text-05-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-invert-l),1);--bulma-text-10:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-l),1);--bulma-text-10-invert-l:var(--bulma-text-70-l);--bulma-text-10-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-invert-l),1);--bulma-text-15:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-l),1);--bulma-text-15-invert-l:var(--bulma-text-75-l);--bulma-text-15-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-invert-l),1);--bulma-text-20:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-l),1);--bulma-text-20-invert-l:var(--bulma-text-85-l);--bulma-text-20-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-invert-l),1);--bulma-text-25:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-l),1);--bulma-text-25-invert-l:var(--bulma-text-95-l);--bulma-text-25-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-invert-l),1);--bulma-text-30:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-l),1);--bulma-text-30-invert-l:var(--bulma-text-100-l);--bulma-text-30-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-invert-l),1);--bulma-text-35:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-l),1);--bulma-text-35-invert-l:var(--bulma-text-100-l);--bulma-text-35-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-invert-l),1);--bulma-text-40:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-l),1);--bulma-text-40-invert-l:var(--bulma-text-100-l);--bulma-text-40-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-invert-l),1);--bulma-text-45:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-l),1);--bulma-text-45-invert-l:var(--bulma-text-100-l);--bulma-text-45-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-invert-l),1);--bulma-text-50:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-l),1);--bulma-text-50-invert-l:var(--bulma-text-100-l);--bulma-text-50-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-invert-l),1);--bulma-text-55:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-l),1);--bulma-text-55-invert-l:var(--bulma-text-100-l);--bulma-text-55-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-invert-l),1);--bulma-text-60:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-l),1);--bulma-text-60-invert-l:var(--bulma-text-05-l);--bulma-text-60-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-invert-l),1);--bulma-text-65:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-l),1);--bulma-text-65-invert-l:var(--bulma-text-05-l);--bulma-text-65-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-invert-l),1);--bulma-text-70:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-l),1);--bulma-text-70-invert-l:var(--bulma-text-10-l);--bulma-text-70-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-invert-l),1);--bulma-text-75:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-l),1);--bulma-text-75-invert-l:var(--bulma-text-15-l);--bulma-text-75-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-invert-l),1);--bulma-text-80:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-l),1);--bulma-text-80-invert-l:var(--bulma-text-15-l);--bulma-text-80-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-invert-l),1);--bulma-text-85:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-l),1);--bulma-text-85-invert-l:var(--bulma-text-20-l);--bulma-text-85-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-invert-l),1);--bulma-text-90:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-l),1);--bulma-text-90-invert-l:var(--bulma-text-20-l);--bulma-text-90-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-invert-l),1);--bulma-text-95:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-l),1);--bulma-text-95-invert-l:var(--bulma-text-25-l);--bulma-text-95-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-invert-l),1);--bulma-text-100:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-l),1);--bulma-text-100-invert-l:var(--bulma-text-25-l);--bulma-text-100-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-invert-l),1);--bulma-text-invert-l:var(--bulma-text-100-l);--bulma-text-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-invert-l),1);--bulma-text-light-l:var(--bulma-text-90-l);--bulma-text-light:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-l),1);--bulma-text-light-invert-l:var(--bulma-text-20-l);--bulma-text-light-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-invert-l),1);--bulma-text-dark-l:var(--bulma-text-10-l);--bulma-text-dark:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-l),1);--bulma-text-dark-invert-l:var(--bulma-text-70-l);--bulma-text-dark-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-invert-l),1);--bulma-text-soft:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-l),1);--bulma-text-bold:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-l),1);--bulma-text-soft-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-invert-l),1);--bulma-text-bold-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-invert-l),1);--bulma-text-on-scheme-l:29%;--bulma-text-on-scheme:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l),1);--bulma-primary:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l),1);--bulma-primary-base:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l),1);--bulma-primary-rgb:0,209.1,177.735;--bulma-primary-h:171deg;--bulma-primary-s:100%;--bulma-primary-l:41%;--bulma-primary-00-l:1%;--bulma-primary-05-l:6%;--bulma-primary-10-l:11%;--bulma-primary-15-l:16%;--bulma-primary-20-l:21%;--bulma-primary-25-l:26%;--bulma-primary-30-l:31%;--bulma-primary-35-l:36%;--bulma-primary-40-l:41%;--bulma-primary-45-l:46%;--bulma-primary-50-l:51%;--bulma-primary-55-l:56%;--bulma-primary-60-l:61%;--bulma-primary-65-l:66%;--bulma-primary-70-l:71%;--bulma-primary-75-l:76%;--bulma-primary-80-l:81%;--bulma-primary-85-l:86%;--bulma-primary-90-l:91%;--bulma-primary-95-l:96%;--bulma-primary-100-l:100%;--bulma-primary-00:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-l),1);--bulma-primary-00-invert-l:var(--bulma-primary-30-l);--bulma-primary-00-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-invert-l),1);--bulma-primary-05:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-l),1);--bulma-primary-05-invert-l:var(--bulma-primary-40-l);--bulma-primary-05-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-invert-l),1);--bulma-primary-10:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-l),1);--bulma-primary-10-invert-l:var(--bulma-primary-50-l);--bulma-primary-10-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-invert-l),1);--bulma-primary-15:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-l),1);--bulma-primary-15-invert-l:var(--bulma-primary-100-l);--bulma-primary-15-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-invert-l),1);--bulma-primary-20:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-l),1);--bulma-primary-20-invert-l:var(--bulma-primary-100-l);--bulma-primary-20-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-invert-l),1);--bulma-primary-25:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-l),1);--bulma-primary-25-invert-l:var(--bulma-primary-100-l);--bulma-primary-25-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-invert-l),1);--bulma-primary-30:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-l),1);--bulma-primary-30-invert-l:var(--bulma-primary-00-l);--bulma-primary-30-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-invert-l),1);--bulma-primary-35:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-l),1);--bulma-primary-35-invert-l:var(--bulma-primary-00-l);--bulma-primary-35-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-invert-l),1);--bulma-primary-40:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-l),1);--bulma-primary-40-invert-l:var(--bulma-primary-05-l);--bulma-primary-40-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-invert-l),1);--bulma-primary-45:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-l),1);--bulma-primary-45-invert-l:var(--bulma-primary-05-l);--bulma-primary-45-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-invert-l),1);--bulma-primary-50:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-l),1);--bulma-primary-50-invert-l:var(--bulma-primary-10-l);--bulma-primary-50-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-invert-l),1);--bulma-primary-55:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-l),1);--bulma-primary-55-invert-l:var(--bulma-primary-10-l);--bulma-primary-55-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-invert-l),1);--bulma-primary-60:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-l),1);--bulma-primary-60-invert-l:var(--bulma-primary-10-l);--bulma-primary-60-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-invert-l),1);--bulma-primary-65:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-l),1);--bulma-primary-65-invert-l:var(--bulma-primary-10-l);--bulma-primary-65-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-invert-l),1);--bulma-primary-70:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-l),1);--bulma-primary-70-invert-l:var(--bulma-primary-10-l);--bulma-primary-70-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-invert-l),1);--bulma-primary-75:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-l),1);--bulma-primary-75-invert-l:var(--bulma-primary-10-l);--bulma-primary-75-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-invert-l),1);--bulma-primary-80:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-l),1);--bulma-primary-80-invert-l:var(--bulma-primary-10-l);--bulma-primary-80-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-invert-l),1);--bulma-primary-85:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-l),1);--bulma-primary-85-invert-l:var(--bulma-primary-10-l);--bulma-primary-85-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-invert-l),1);--bulma-primary-90:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-l),1);--bulma-primary-90-invert-l:var(--bulma-primary-10-l);--bulma-primary-90-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-invert-l),1);--bulma-primary-95:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-l),1);--bulma-primary-95-invert-l:var(--bulma-primary-10-l);--bulma-primary-95-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-invert-l),1);--bulma-primary-100:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-l),1);--bulma-primary-100-invert-l:var(--bulma-primary-15-l);--bulma-primary-100-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-invert-l),1);--bulma-primary-invert-l:var(--bulma-primary-05-l);--bulma-primary-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-invert-l),1);--bulma-primary-light-l:var(--bulma-primary-90-l);--bulma-primary-light:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-l),1);--bulma-primary-light-invert-l:var(--bulma-primary-10-l);--bulma-primary-light-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-invert-l),1);--bulma-primary-dark-l:var(--bulma-primary-10-l);--bulma-primary-dark:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-l),1);--bulma-primary-dark-invert-l:var(--bulma-primary-50-l);--bulma-primary-dark-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-invert-l),1);--bulma-primary-soft:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-l),1);--bulma-primary-bold:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-l),1);--bulma-primary-soft-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-invert-l),1);--bulma-primary-bold-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-invert-l),1);--bulma-primary-on-scheme-l:21%;--bulma-primary-on-scheme:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l),1);--bulma-link:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l),1);--bulma-link-base:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l),1);--bulma-link-rgb:66.3,88.315,255;--bulma-link-h:233deg;--bulma-link-s:100%;--bulma-link-l:63%;--bulma-link-00-l:0%;--bulma-link-05-l:3%;--bulma-link-10-l:8%;--bulma-link-15-l:13%;--bulma-link-20-l:18%;--bulma-link-25-l:23%;--bulma-link-30-l:28%;--bulma-link-35-l:33%;--bulma-link-40-l:38%;--bulma-link-45-l:43%;--bulma-link-50-l:48%;--bulma-link-55-l:53%;--bulma-link-60-l:58%;--bulma-link-65-l:63%;--bulma-link-70-l:68%;--bulma-link-75-l:73%;--bulma-link-80-l:78%;--bulma-link-85-l:83%;--bulma-link-90-l:88%;--bulma-link-95-l:93%;--bulma-link-100-l:98%;--bulma-link-00:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-l),1);--bulma-link-00-invert-l:var(--bulma-link-75-l);--bulma-link-00-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-invert-l),1);--bulma-link-05:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-l),1);--bulma-link-05-invert-l:var(--bulma-link-75-l);--bulma-link-05-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-invert-l),1);--bulma-link-10:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-l),1);--bulma-link-10-invert-l:var(--bulma-link-75-l);--bulma-link-10-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-invert-l),1);--bulma-link-15:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-l),1);--bulma-link-15-invert-l:var(--bulma-link-80-l);--bulma-link-15-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-invert-l),1);--bulma-link-20:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-l),1);--bulma-link-20-invert-l:var(--bulma-link-80-l);--bulma-link-20-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-invert-l),1);--bulma-link-25:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-l),1);--bulma-link-25-invert-l:var(--bulma-link-85-l);--bulma-link-25-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-invert-l),1);--bulma-link-30:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-l),1);--bulma-link-30-invert-l:var(--bulma-link-90-l);--bulma-link-30-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-invert-l),1);--bulma-link-35:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-l),1);--bulma-link-35-invert-l:var(--bulma-link-90-l);--bulma-link-35-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-invert-l),1);--bulma-link-40:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-l),1);--bulma-link-40-invert-l:var(--bulma-link-95-l);--bulma-link-40-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-invert-l),1);--bulma-link-45:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-l),1);--bulma-link-45-invert-l:var(--bulma-link-95-l);--bulma-link-45-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-invert-l),1);--bulma-link-50:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-l),1);--bulma-link-50-invert-l:var(--bulma-link-100-l);--bulma-link-50-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-invert-l),1);--bulma-link-55:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-l),1);--bulma-link-55-invert-l:var(--bulma-link-100-l);--bulma-link-55-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-invert-l),1);--bulma-link-60:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-l),1);--bulma-link-60-invert-l:var(--bulma-link-100-l);--bulma-link-60-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-invert-l),1);--bulma-link-65:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-l),1);--bulma-link-65-invert-l:var(--bulma-link-100-l);--bulma-link-65-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-invert-l),1);--bulma-link-70:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-l),1);--bulma-link-70-invert-l:var(--bulma-link-100-l);--bulma-link-70-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-invert-l),1);--bulma-link-75:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-l),1);--bulma-link-75-invert-l:var(--bulma-link-10-l);--bulma-link-75-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-invert-l),1);--bulma-link-80:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-l),1);--bulma-link-80-invert-l:var(--bulma-link-20-l);--bulma-link-80-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-invert-l),1);--bulma-link-85:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-l),1);--bulma-link-85-invert-l:var(--bulma-link-25-l);--bulma-link-85-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-invert-l),1);--bulma-link-90:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-l),1);--bulma-link-90-invert-l:var(--bulma-link-35-l);--bulma-link-90-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-invert-l),1);--bulma-link-95:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-l),1);--bulma-link-95-invert-l:var(--bulma-link-45-l);--bulma-link-95-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-invert-l),1);--bulma-link-100:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-l),1);--bulma-link-100-invert-l:var(--bulma-link-50-l);--bulma-link-100-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-invert-l),1);--bulma-link-invert-l:var(--bulma-link-100-l);--bulma-link-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-invert-l),1);--bulma-link-light-l:var(--bulma-link-90-l);--bulma-link-light:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-l),1);--bulma-link-light-invert-l:var(--bulma-link-35-l);--bulma-link-light-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-invert-l),1);--bulma-link-dark-l:var(--bulma-link-10-l);--bulma-link-dark:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-l),1);--bulma-link-dark-invert-l:var(--bulma-link-75-l);--bulma-link-dark-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-invert-l),1);--bulma-link-soft:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-l),1);--bulma-link-bold:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-l),1);--bulma-link-soft-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-invert-l),1);--bulma-link-bold-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-invert-l),1);--bulma-link-on-scheme-l:58%;--bulma-link-on-scheme:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l),1);--bulma-info:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l),1);--bulma-info-base:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l),1);--bulma-info-rgb:102,209.1,255;--bulma-info-h:198deg;--bulma-info-s:100%;--bulma-info-l:70%;--bulma-info-00-l:0%;--bulma-info-05-l:5%;--bulma-info-10-l:10%;--bulma-info-15-l:15%;--bulma-info-20-l:20%;--bulma-info-25-l:25%;--bulma-info-30-l:30%;--bulma-info-35-l:35%;--bulma-info-40-l:40%;--bulma-info-45-l:45%;--bulma-info-50-l:50%;--bulma-info-55-l:55%;--bulma-info-60-l:60%;--bulma-info-65-l:65%;--bulma-info-70-l:70%;--bulma-info-75-l:75%;--bulma-info-80-l:80%;--bulma-info-85-l:85%;--bulma-info-90-l:90%;--bulma-info-95-l:95%;--bulma-info-100-l:100%;--bulma-info-00:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-l),1);--bulma-info-00-invert-l:var(--bulma-info-45-l);--bulma-info-00-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-invert-l),1);--bulma-info-05:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-l),1);--bulma-info-05-invert-l:var(--bulma-info-50-l);--bulma-info-05-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-invert-l),1);--bulma-info-10:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-l),1);--bulma-info-10-invert-l:var(--bulma-info-60-l);--bulma-info-10-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-invert-l),1);--bulma-info-15:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-l),1);--bulma-info-15-invert-l:var(--bulma-info-80-l);--bulma-info-15-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-invert-l),1);--bulma-info-20:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-l),1);--bulma-info-20-invert-l:var(--bulma-info-95-l);--bulma-info-20-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-invert-l),1);--bulma-info-25:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-l),1);--bulma-info-25-invert-l:var(--bulma-info-100-l);--bulma-info-25-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-invert-l),1);--bulma-info-30:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-l),1);--bulma-info-30-invert-l:var(--bulma-info-100-l);--bulma-info-30-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-invert-l),1);--bulma-info-35:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-l),1);--bulma-info-35-invert-l:var(--bulma-info-100-l);--bulma-info-35-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-invert-l),1);--bulma-info-40:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-l),1);--bulma-info-40-invert-l:var(--bulma-info-100-l);--bulma-info-40-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-invert-l),1);--bulma-info-45:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-l),1);--bulma-info-45-invert-l:var(--bulma-info-00-l);--bulma-info-45-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-invert-l),1);--bulma-info-50:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-l),1);--bulma-info-50-invert-l:var(--bulma-info-05-l);--bulma-info-50-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-invert-l),1);--bulma-info-55:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-l),1);--bulma-info-55-invert-l:var(--bulma-info-05-l);--bulma-info-55-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-invert-l),1);--bulma-info-60:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-l),1);--bulma-info-60-invert-l:var(--bulma-info-10-l);--bulma-info-60-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-invert-l),1);--bulma-info-65:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-l),1);--bulma-info-65-invert-l:var(--bulma-info-10-l);--bulma-info-65-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-invert-l),1);--bulma-info-70:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-l),1);--bulma-info-70-invert-l:var(--bulma-info-10-l);--bulma-info-70-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-invert-l),1);--bulma-info-75:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-l),1);--bulma-info-75-invert-l:var(--bulma-info-10-l);--bulma-info-75-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-invert-l),1);--bulma-info-80:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-l),1);--bulma-info-80-invert-l:var(--bulma-info-15-l);--bulma-info-80-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-invert-l),1);--bulma-info-85:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-l),1);--bulma-info-85-invert-l:var(--bulma-info-15-l);--bulma-info-85-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-invert-l),1);--bulma-info-90:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-l),1);--bulma-info-90-invert-l:var(--bulma-info-15-l);--bulma-info-90-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-invert-l),1);--bulma-info-95:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-l),1);--bulma-info-95-invert-l:var(--bulma-info-20-l);--bulma-info-95-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-invert-l),1);--bulma-info-100:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-l),1);--bulma-info-100-invert-l:var(--bulma-info-20-l);--bulma-info-100-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-invert-l),1);--bulma-info-invert-l:var(--bulma-info-10-l);--bulma-info-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-invert-l),1);--bulma-info-light-l:var(--bulma-info-90-l);--bulma-info-light:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-l),1);--bulma-info-light-invert-l:var(--bulma-info-15-l);--bulma-info-light-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-invert-l),1);--bulma-info-dark-l:var(--bulma-info-10-l);--bulma-info-dark:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-l),1);--bulma-info-dark-invert-l:var(--bulma-info-60-l);--bulma-info-dark-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-invert-l),1);--bulma-info-soft:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-l),1);--bulma-info-bold:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-l),1);--bulma-info-soft-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-invert-l),1);--bulma-info-bold-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-invert-l),1);--bulma-info-on-scheme-l:25%;--bulma-info-on-scheme:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l),1);--bulma-success:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l),1);--bulma-success-base:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l),1);--bulma-success-rgb:71.6295,198.6705,141.50205;--bulma-success-h:153deg;--bulma-success-s:53%;--bulma-success-l:53%;--bulma-success-00-l:0%;--bulma-success-05-l:3%;--bulma-success-10-l:8%;--bulma-success-15-l:13%;--bulma-success-20-l:18%;--bulma-success-25-l:23%;--bulma-success-30-l:28%;--bulma-success-35-l:33%;--bulma-success-40-l:38%;--bulma-success-45-l:43%;--bulma-success-50-l:48%;--bulma-success-55-l:53%;--bulma-success-60-l:58%;--bulma-success-65-l:63%;--bulma-success-70-l:68%;--bulma-success-75-l:73%;--bulma-success-80-l:78%;--bulma-success-85-l:83%;--bulma-success-90-l:88%;--bulma-success-95-l:93%;--bulma-success-100-l:98%;--bulma-success-00:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-l),1);--bulma-success-00-invert-l:var(--bulma-success-45-l);--bulma-success-00-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-invert-l),1);--bulma-success-05:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-l),1);--bulma-success-05-invert-l:var(--bulma-success-45-l);--bulma-success-05-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-invert-l),1);--bulma-success-10:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-l),1);--bulma-success-10-invert-l:var(--bulma-success-55-l);--bulma-success-10-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-invert-l),1);--bulma-success-15:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-l),1);--bulma-success-15-invert-l:var(--bulma-success-75-l);--bulma-success-15-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-invert-l),1);--bulma-success-20:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-l),1);--bulma-success-20-invert-l:var(--bulma-success-95-l);--bulma-success-20-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-invert-l),1);--bulma-success-25:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-l),1);--bulma-success-25-invert-l:var(--bulma-success-100-l);--bulma-success-25-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-invert-l),1);--bulma-success-30:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-l),1);--bulma-success-30-invert-l:var(--bulma-success-100-l);--bulma-success-30-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-invert-l),1);--bulma-success-35:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-l),1);--bulma-success-35-invert-l:var(--bulma-success-100-l);--bulma-success-35-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-invert-l),1);--bulma-success-40:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-l),1);--bulma-success-40-invert-l:var(--bulma-success-100-l);--bulma-success-40-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-invert-l),1);--bulma-success-45:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-l),1);--bulma-success-45-invert-l:var(--bulma-success-05-l);--bulma-success-45-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-invert-l),1);--bulma-success-50:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-l),1);--bulma-success-50-invert-l:var(--bulma-success-05-l);--bulma-success-50-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-invert-l),1);--bulma-success-55:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-l),1);--bulma-success-55-invert-l:var(--bulma-success-10-l);--bulma-success-55-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-invert-l),1);--bulma-success-60:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-l),1);--bulma-success-60-invert-l:var(--bulma-success-10-l);--bulma-success-60-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-invert-l),1);--bulma-success-65:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-l),1);--bulma-success-65-invert-l:var(--bulma-success-10-l);--bulma-success-65-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-invert-l),1);--bulma-success-70:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-l),1);--bulma-success-70-invert-l:var(--bulma-success-10-l);--bulma-success-70-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-invert-l),1);--bulma-success-75:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-l),1);--bulma-success-75-invert-l:var(--bulma-success-15-l);--bulma-success-75-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-invert-l),1);--bulma-success-80:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-l),1);--bulma-success-80-invert-l:var(--bulma-success-15-l);--bulma-success-80-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-invert-l),1);--bulma-success-85:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-l),1);--bulma-success-85-invert-l:var(--bulma-success-15-l);--bulma-success-85-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-invert-l),1);--bulma-success-90:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-l),1);--bulma-success-90-invert-l:var(--bulma-success-15-l);--bulma-success-90-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-invert-l),1);--bulma-success-95:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-l),1);--bulma-success-95-invert-l:var(--bulma-success-20-l);--bulma-success-95-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-invert-l),1);--bulma-success-100:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-l),1);--bulma-success-100-invert-l:var(--bulma-success-20-l);--bulma-success-100-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-invert-l),1);--bulma-success-invert-l:var(--bulma-success-10-l);--bulma-success-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-invert-l),1);--bulma-success-light-l:var(--bulma-success-90-l);--bulma-success-light:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-l),1);--bulma-success-light-invert-l:var(--bulma-success-15-l);--bulma-success-light-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-invert-l),1);--bulma-success-dark-l:var(--bulma-success-10-l);--bulma-success-dark:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-l),1);--bulma-success-dark-invert-l:var(--bulma-success-55-l);--bulma-success-dark-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-invert-l),1);--bulma-success-soft:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-l),1);--bulma-success-bold:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-l),1);--bulma-success-soft-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-invert-l),1);--bulma-success-bold-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-invert-l),1);--bulma-success-on-scheme-l:23%;--bulma-success-on-scheme:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l),1);--bulma-warning:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l),1);--bulma-warning-base:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l),1);--bulma-warning-rgb:255,183.09,15.3;--bulma-warning-h:42deg;--bulma-warning-s:100%;--bulma-warning-l:53%;--bulma-warning-00-l:0%;--bulma-warning-05-l:3%;--bulma-warning-10-l:8%;--bulma-warning-15-l:13%;--bulma-warning-20-l:18%;--bulma-warning-25-l:23%;--bulma-warning-30-l:28%;--bulma-warning-35-l:33%;--bulma-warning-40-l:38%;--bulma-warning-45-l:43%;--bulma-warning-50-l:48%;--bulma-warning-55-l:53%;--bulma-warning-60-l:58%;--bulma-warning-65-l:63%;--bulma-warning-70-l:68%;--bulma-warning-75-l:73%;--bulma-warning-80-l:78%;--bulma-warning-85-l:83%;--bulma-warning-90-l:88%;--bulma-warning-95-l:93%;--bulma-warning-100-l:98%;--bulma-warning-00:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-l),1);--bulma-warning-00-invert-l:var(--bulma-warning-40-l);--bulma-warning-00-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-invert-l),1);--bulma-warning-05:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-l),1);--bulma-warning-05-invert-l:var(--bulma-warning-45-l);--bulma-warning-05-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-invert-l),1);--bulma-warning-10:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-l),1);--bulma-warning-10-invert-l:var(--bulma-warning-50-l);--bulma-warning-10-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-invert-l),1);--bulma-warning-15:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-l),1);--bulma-warning-15-invert-l:var(--bulma-warning-70-l);--bulma-warning-15-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-invert-l),1);--bulma-warning-20:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-l),1);--bulma-warning-20-invert-l:var(--bulma-warning-100-l);--bulma-warning-20-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-invert-l),1);--bulma-warning-25:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-l),1);--bulma-warning-25-invert-l:var(--bulma-warning-100-l);--bulma-warning-25-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-invert-l),1);--bulma-warning-30:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-l),1);--bulma-warning-30-invert-l:var(--bulma-warning-100-l);--bulma-warning-30-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-invert-l),1);--bulma-warning-35:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-l),1);--bulma-warning-35-invert-l:var(--bulma-warning-100-l);--bulma-warning-35-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-invert-l),1);--bulma-warning-40:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-l),1);--bulma-warning-40-invert-l:var(--bulma-warning-00-l);--bulma-warning-40-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-invert-l),1);--bulma-warning-45:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-l),1);--bulma-warning-45-invert-l:var(--bulma-warning-05-l);--bulma-warning-45-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-invert-l),1);--bulma-warning-50:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-l),1);--bulma-warning-50-invert-l:var(--bulma-warning-10-l);--bulma-warning-50-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-invert-l),1);--bulma-warning-55:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-l),1);--bulma-warning-55-invert-l:var(--bulma-warning-10-l);--bulma-warning-55-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-invert-l),1);--bulma-warning-60:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-l),1);--bulma-warning-60-invert-l:var(--bulma-warning-10-l);--bulma-warning-60-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-invert-l),1);--bulma-warning-65:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-l),1);--bulma-warning-65-invert-l:var(--bulma-warning-10-l);--bulma-warning-65-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-invert-l),1);--bulma-warning-70:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-l),1);--bulma-warning-70-invert-l:var(--bulma-warning-15-l);--bulma-warning-70-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-invert-l),1);--bulma-warning-75:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-l),1);--bulma-warning-75-invert-l:var(--bulma-warning-15-l);--bulma-warning-75-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-invert-l),1);--bulma-warning-80:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-l),1);--bulma-warning-80-invert-l:var(--bulma-warning-15-l);--bulma-warning-80-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-invert-l),1);--bulma-warning-85:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-l),1);--bulma-warning-85-invert-l:var(--bulma-warning-15-l);--bulma-warning-85-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-invert-l),1);--bulma-warning-90:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-l),1);--bulma-warning-90-invert-l:var(--bulma-warning-15-l);--bulma-warning-90-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-invert-l),1);--bulma-warning-95:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-l),1);--bulma-warning-95-invert-l:var(--bulma-warning-15-l);--bulma-warning-95-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-invert-l),1);--bulma-warning-100:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-l),1);--bulma-warning-100-invert-l:var(--bulma-warning-20-l);--bulma-warning-100-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-invert-l),1);--bulma-warning-invert-l:var(--bulma-warning-10-l);--bulma-warning-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-invert-l),1);--bulma-warning-light-l:var(--bulma-warning-90-l);--bulma-warning-light:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-l),1);--bulma-warning-light-invert-l:var(--bulma-warning-15-l);--bulma-warning-light-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-invert-l),1);--bulma-warning-dark-l:var(--bulma-warning-10-l);--bulma-warning-dark:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-l),1);--bulma-warning-dark-invert-l:var(--bulma-warning-50-l);--bulma-warning-dark-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-invert-l),1);--bulma-warning-soft:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-l),1);--bulma-warning-bold:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-l),1);--bulma-warning-soft-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-invert-l),1);--bulma-warning-bold-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-invert-l),1);--bulma-warning-on-scheme-l:23%;--bulma-warning-on-scheme:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l),1);--bulma-danger:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l),1);--bulma-danger-base:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l),1);--bulma-danger-rgb:255,102,132.6;--bulma-danger-h:348deg;--bulma-danger-s:100%;--bulma-danger-l:70%;--bulma-danger-00-l:0%;--bulma-danger-05-l:5%;--bulma-danger-10-l:10%;--bulma-danger-15-l:15%;--bulma-danger-20-l:20%;--bulma-danger-25-l:25%;--bulma-danger-30-l:30%;--bulma-danger-35-l:35%;--bulma-danger-40-l:40%;--bulma-danger-45-l:45%;--bulma-danger-50-l:50%;--bulma-danger-55-l:55%;--bulma-danger-60-l:60%;--bulma-danger-65-l:65%;--bulma-danger-70-l:70%;--bulma-danger-75-l:75%;--bulma-danger-80-l:80%;--bulma-danger-85-l:85%;--bulma-danger-90-l:90%;--bulma-danger-95-l:95%;--bulma-danger-100-l:100%;--bulma-danger-00:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-l),1);--bulma-danger-00-invert-l:var(--bulma-danger-65-l);--bulma-danger-00-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-invert-l),1);--bulma-danger-05:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-l),1);--bulma-danger-05-invert-l:var(--bulma-danger-70-l);--bulma-danger-05-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-invert-l),1);--bulma-danger-10:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-l),1);--bulma-danger-10-invert-l:var(--bulma-danger-75-l);--bulma-danger-10-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-invert-l),1);--bulma-danger-15:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-l),1);--bulma-danger-15-invert-l:var(--bulma-danger-80-l);--bulma-danger-15-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-invert-l),1);--bulma-danger-20:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-l),1);--bulma-danger-20-invert-l:var(--bulma-danger-85-l);--bulma-danger-20-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-invert-l),1);--bulma-danger-25:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-l),1);--bulma-danger-25-invert-l:var(--bulma-danger-90-l);--bulma-danger-25-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-invert-l),1);--bulma-danger-30:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-l),1);--bulma-danger-30-invert-l:var(--bulma-danger-100-l);--bulma-danger-30-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-invert-l),1);--bulma-danger-35:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-l),1);--bulma-danger-35-invert-l:var(--bulma-danger-100-l);--bulma-danger-35-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-invert-l),1);--bulma-danger-40:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-l),1);--bulma-danger-40-invert-l:var(--bulma-danger-100-l);--bulma-danger-40-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-invert-l),1);--bulma-danger-45:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-l),1);--bulma-danger-45-invert-l:var(--bulma-danger-100-l);--bulma-danger-45-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-invert-l),1);--bulma-danger-50:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-l),1);--bulma-danger-50-invert-l:var(--bulma-danger-100-l);--bulma-danger-50-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-invert-l),1);--bulma-danger-55:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-l),1);--bulma-danger-55-invert-l:var(--bulma-danger-100-l);--bulma-danger-55-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-invert-l),1);--bulma-danger-60:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-l),1);--bulma-danger-60-invert-l:var(--bulma-danger-100-l);--bulma-danger-60-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-invert-l),1);--bulma-danger-65:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-l),1);--bulma-danger-65-invert-l:var(--bulma-danger-00-l);--bulma-danger-65-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-invert-l),1);--bulma-danger-70:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-l),1);--bulma-danger-70-invert-l:var(--bulma-danger-05-l);--bulma-danger-70-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-invert-l),1);--bulma-danger-75:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-l),1);--bulma-danger-75-invert-l:var(--bulma-danger-10-l);--bulma-danger-75-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-invert-l),1);--bulma-danger-80:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-l),1);--bulma-danger-80-invert-l:var(--bulma-danger-15-l);--bulma-danger-80-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-invert-l),1);--bulma-danger-85:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-l),1);--bulma-danger-85-invert-l:var(--bulma-danger-20-l);--bulma-danger-85-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-invert-l),1);--bulma-danger-90:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-l),1);--bulma-danger-90-invert-l:var(--bulma-danger-25-l);--bulma-danger-90-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-invert-l),1);--bulma-danger-95:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-l),1);--bulma-danger-95-invert-l:var(--bulma-danger-25-l);--bulma-danger-95-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-invert-l),1);--bulma-danger-100:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-l),1);--bulma-danger-100-invert-l:var(--bulma-danger-30-l);--bulma-danger-100-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-invert-l),1);--bulma-danger-invert-l:var(--bulma-danger-05-l);--bulma-danger-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-invert-l),1);--bulma-danger-light-l:var(--bulma-danger-90-l);--bulma-danger-light:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-l),1);--bulma-danger-light-invert-l:var(--bulma-danger-25-l);--bulma-danger-light-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-invert-l),1);--bulma-danger-dark-l:var(--bulma-danger-10-l);--bulma-danger-dark:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-l),1);--bulma-danger-dark-invert-l:var(--bulma-danger-75-l);--bulma-danger-dark-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-invert-l),1);--bulma-danger-soft:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-l),1);--bulma-danger-bold:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-l),1);--bulma-danger-soft-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-invert-l),1);--bulma-danger-bold-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-invert-l),1);--bulma-danger-on-scheme-l:40%;--bulma-danger-on-scheme:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l),1);--bulma-black-bis:#14161a;--bulma-black-ter:#1f2229;--bulma-grey-darker:#2e333d;--bulma-grey-dark:#404654;--bulma-grey:#69748c;--bulma-grey-light:#abb1bf;--bulma-grey-lighter:#d6d9e0;--bulma-white-ter:#f3f4f6;--bulma-white-bis:#f9fafb;--bulma-shadow-h:221deg;--bulma-shadow-s:14%;--bulma-shadow-l:4%;--bulma-size-1:3rem;--bulma-size-2:2.5rem;--bulma-size-3:2rem;--bulma-size-4:1.5rem;--bulma-size-5:1.25rem;--bulma-size-6:1rem;--bulma-size-7:0.75rem}}@media (prefers-color-scheme:dark){:root{--bulma-white-on-scheme-l:100%;--bulma-white-on-scheme:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l),1);--bulma-black-on-scheme-l:-51%;--bulma-black-on-scheme:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l),1);--bulma-light-on-scheme-l:96%;--bulma-light-on-scheme:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l),1);--bulma-dark-on-scheme-l:56%;--bulma-dark-on-scheme:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l),1);--bulma-text-on-scheme-l:54%;--bulma-text-on-scheme:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l),1);--bulma-primary-on-scheme-l:41%;--bulma-primary-on-scheme:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l),1);--bulma-link-on-scheme-l:73%;--bulma-link-on-scheme:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l),1);--bulma-info-on-scheme-l:70%;--bulma-info-on-scheme:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l),1);--bulma-success-on-scheme-l:53%;--bulma-success-on-scheme:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l),1);--bulma-warning-on-scheme-l:53%;--bulma-warning-on-scheme:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l),1);--bulma-danger-on-scheme-l:70%;--bulma-danger-on-scheme:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l),1);--bulma-scheme-brightness:dark;--bulma-scheme-main-l:9%;--bulma-scheme-main-bis-l:11%;--bulma-scheme-main-ter-l:13%;--bulma-soft-l:20%;--bulma-bold-l:90%;--bulma-soft-invert-l:90%;--bulma-bold-invert-l:20%;--bulma-background-l:14%;--bulma-border-weak-l:21%;--bulma-border-l:24%;--bulma-text-weak-l:53%;--bulma-text-l:71%;--bulma-text-strong-l:93%;--bulma-text-title-l:100%;--bulma-hover-background-l-delta:5%;--bulma-active-background-l-delta:10%;--bulma-hover-border-l-delta:10%;--bulma-active-border-l-delta:20%;--bulma-hover-color-l-delta:5%;--bulma-active-color-l-delta:10%;--bulma-shadow-h:0deg;--bulma-shadow-s:0%;--bulma-shadow-l:100%}}.theme-light,[data-theme=light]{--bulma-scheme-h:221;--bulma-scheme-s:14%;--bulma-light-l:90%;--bulma-light-invert-l:20%;--bulma-dark-l:20%;--bulma-dark-invert-l:90%;--bulma-soft-l:90%;--bulma-bold-l:20%;--bulma-soft-invert-l:20%;--bulma-bold-invert-l:90%;--bulma-hover-background-l-delta:-5%;--bulma-active-background-l-delta:-10%;--bulma-hover-border-l-delta:-10%;--bulma-active-border-l-delta:-20%;--bulma-hover-color-l-delta:-5%;--bulma-active-color-l-delta:-10%;--bulma-hover-shadow-a-delta:-0.05;--bulma-active-shadow-a-delta:-0.1;--bulma-scheme-brightness:light;--bulma-scheme-main-l:100%;--bulma-scheme-main-bis-l:98%;--bulma-scheme-main-ter-l:96%;--bulma-background-l:96%;--bulma-border-weak-l:93%;--bulma-border-l:86%;--bulma-text-weak-l:48%;--bulma-text-strong-l:21%;--bulma-text-title-l:14%;--bulma-scheme-invert-ter-l:14%;--bulma-scheme-invert-bis-l:7%;--bulma-scheme-invert-l:4%;--bulma-family-primary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--bulma-family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--bulma-family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--bulma-size-small:0.75rem;--bulma-size-normal:1rem;--bulma-size-medium:1.25rem;--bulma-size-large:1.5rem;--bulma-weight-light:300;--bulma-weight-normal:400;--bulma-weight-medium:500;--bulma-weight-semibold:600;--bulma-weight-bold:700;--bulma-weight-extrabold:800;--bulma-block-spacing:1.5rem;--bulma-duration:294ms;--bulma-easing:ease-out;--bulma-radius-small:0.25rem;--bulma-radius:0.375rem;--bulma-radius-medium:0.5em;--bulma-radius-large:0.75rem;--bulma-radius-rounded:9999px;--bulma-speed:86ms;--bulma-arrow-color:var(--bulma-link);--bulma-loading-color:var(--bulma-border);--bulma-burger-h:var(--bulma-link-h);--bulma-burger-s:var(--bulma-link-s);--bulma-burger-l:var(--bulma-link-l);--bulma-burger-border-radius:0.5em;--bulma-burger-gap:5px;--bulma-burger-item-height:2px;--bulma-burger-item-width:20px;--bulma-white:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l),1);--bulma-white-base:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l),1);--bulma-white-rgb:255,255,255;--bulma-white-h:221deg;--bulma-white-s:14%;--bulma-white-l:100%;--bulma-white-invert-l:4%;--bulma-white-invert:#090a0c;--bulma-white-on-scheme-l:35%;--bulma-white-on-scheme:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l),1);--bulma-black:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l),1);--bulma-black-base:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l),1);--bulma-black-rgb:8.772,9.6764,11.628;--bulma-black-h:221deg;--bulma-black-s:14%;--bulma-black-l:4%;--bulma-black-invert-l:100%;--bulma-black-invert:#fff;--bulma-black-on-scheme-l:4%;--bulma-black-on-scheme:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l),1);--bulma-light:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l),1);--bulma-light-base:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l),1);--bulma-light-rgb:243.372,244.2764,246.228;--bulma-light-h:221deg;--bulma-light-s:14%;--bulma-light-l:96%;--bulma-light-invert-l:21%;--bulma-light-invert:#2e333d;--bulma-light-on-scheme-l:36%;--bulma-light-on-scheme:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l),1);--bulma-dark:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l),1);--bulma-dark-base:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l),1);--bulma-dark-rgb:46.053,50.8011,61.047;--bulma-dark-h:221deg;--bulma-dark-s:14%;--bulma-dark-l:21%;--bulma-dark-invert-l:96%;--bulma-dark-invert:#f3f4f6;--bulma-dark-on-scheme-l:21%;--bulma-dark-on-scheme:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l),1);--bulma-text:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l),1);--bulma-text-base:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l),1);--bulma-text-rgb:63.597,70.1539,84.303;--bulma-text-h:221deg;--bulma-text-s:14%;--bulma-text-l:29%;--bulma-text-00-l:0%;--bulma-text-05-l:4%;--bulma-text-10-l:9%;--bulma-text-15-l:14%;--bulma-text-20-l:19%;--bulma-text-25-l:24%;--bulma-text-30-l:29%;--bulma-text-35-l:34%;--bulma-text-40-l:39%;--bulma-text-45-l:44%;--bulma-text-50-l:49%;--bulma-text-55-l:54%;--bulma-text-60-l:59%;--bulma-text-65-l:64%;--bulma-text-70-l:69%;--bulma-text-75-l:74%;--bulma-text-80-l:79%;--bulma-text-85-l:84%;--bulma-text-90-l:89%;--bulma-text-95-l:94%;--bulma-text-100-l:99%;--bulma-text-00:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-l),1);--bulma-text-00-invert-l:var(--bulma-text-60-l);--bulma-text-00-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-invert-l),1);--bulma-text-05:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-l),1);--bulma-text-05-invert-l:var(--bulma-text-60-l);--bulma-text-05-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-invert-l),1);--bulma-text-10:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-l),1);--bulma-text-10-invert-l:var(--bulma-text-70-l);--bulma-text-10-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-invert-l),1);--bulma-text-15:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-l),1);--bulma-text-15-invert-l:var(--bulma-text-75-l);--bulma-text-15-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-invert-l),1);--bulma-text-20:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-l),1);--bulma-text-20-invert-l:var(--bulma-text-85-l);--bulma-text-20-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-invert-l),1);--bulma-text-25:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-l),1);--bulma-text-25-invert-l:var(--bulma-text-95-l);--bulma-text-25-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-invert-l),1);--bulma-text-30:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-l),1);--bulma-text-30-invert-l:var(--bulma-text-100-l);--bulma-text-30-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-invert-l),1);--bulma-text-35:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-l),1);--bulma-text-35-invert-l:var(--bulma-text-100-l);--bulma-text-35-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-invert-l),1);--bulma-text-40:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-l),1);--bulma-text-40-invert-l:var(--bulma-text-100-l);--bulma-text-40-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-invert-l),1);--bulma-text-45:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-l),1);--bulma-text-45-invert-l:var(--bulma-text-100-l);--bulma-text-45-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-invert-l),1);--bulma-text-50:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-l),1);--bulma-text-50-invert-l:var(--bulma-text-100-l);--bulma-text-50-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-invert-l),1);--bulma-text-55:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-l),1);--bulma-text-55-invert-l:var(--bulma-text-100-l);--bulma-text-55-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-invert-l),1);--bulma-text-60:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-l),1);--bulma-text-60-invert-l:var(--bulma-text-05-l);--bulma-text-60-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-invert-l),1);--bulma-text-65:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-l),1);--bulma-text-65-invert-l:var(--bulma-text-05-l);--bulma-text-65-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-invert-l),1);--bulma-text-70:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-l),1);--bulma-text-70-invert-l:var(--bulma-text-10-l);--bulma-text-70-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-invert-l),1);--bulma-text-75:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-l),1);--bulma-text-75-invert-l:var(--bulma-text-15-l);--bulma-text-75-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-invert-l),1);--bulma-text-80:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-l),1);--bulma-text-80-invert-l:var(--bulma-text-15-l);--bulma-text-80-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-invert-l),1);--bulma-text-85:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-l),1);--bulma-text-85-invert-l:var(--bulma-text-20-l);--bulma-text-85-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-invert-l),1);--bulma-text-90:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-l),1);--bulma-text-90-invert-l:var(--bulma-text-20-l);--bulma-text-90-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-invert-l),1);--bulma-text-95:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-l),1);--bulma-text-95-invert-l:var(--bulma-text-25-l);--bulma-text-95-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-invert-l),1);--bulma-text-100:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-l),1);--bulma-text-100-invert-l:var(--bulma-text-25-l);--bulma-text-100-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-invert-l),1);--bulma-text-invert-l:var(--bulma-text-100-l);--bulma-text-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-invert-l),1);--bulma-text-light-l:var(--bulma-text-90-l);--bulma-text-light:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-l),1);--bulma-text-light-invert-l:var(--bulma-text-20-l);--bulma-text-light-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-invert-l),1);--bulma-text-dark-l:var(--bulma-text-10-l);--bulma-text-dark:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-l),1);--bulma-text-dark-invert-l:var(--bulma-text-70-l);--bulma-text-dark-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-invert-l),1);--bulma-text-soft:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-l),1);--bulma-text-bold:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-l),1);--bulma-text-soft-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-invert-l),1);--bulma-text-bold-invert:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-invert-l),1);--bulma-text-on-scheme-l:29%;--bulma-text-on-scheme:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l),1);--bulma-primary:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l),1);--bulma-primary-base:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l),1);--bulma-primary-rgb:0,209.1,177.735;--bulma-primary-h:171deg;--bulma-primary-s:100%;--bulma-primary-l:41%;--bulma-primary-00-l:1%;--bulma-primary-05-l:6%;--bulma-primary-10-l:11%;--bulma-primary-15-l:16%;--bulma-primary-20-l:21%;--bulma-primary-25-l:26%;--bulma-primary-30-l:31%;--bulma-primary-35-l:36%;--bulma-primary-40-l:41%;--bulma-primary-45-l:46%;--bulma-primary-50-l:51%;--bulma-primary-55-l:56%;--bulma-primary-60-l:61%;--bulma-primary-65-l:66%;--bulma-primary-70-l:71%;--bulma-primary-75-l:76%;--bulma-primary-80-l:81%;--bulma-primary-85-l:86%;--bulma-primary-90-l:91%;--bulma-primary-95-l:96%;--bulma-primary-100-l:100%;--bulma-primary-00:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-l),1);--bulma-primary-00-invert-l:var(--bulma-primary-30-l);--bulma-primary-00-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-invert-l),1);--bulma-primary-05:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-l),1);--bulma-primary-05-invert-l:var(--bulma-primary-40-l);--bulma-primary-05-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-invert-l),1);--bulma-primary-10:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-l),1);--bulma-primary-10-invert-l:var(--bulma-primary-50-l);--bulma-primary-10-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-invert-l),1);--bulma-primary-15:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-l),1);--bulma-primary-15-invert-l:var(--bulma-primary-100-l);--bulma-primary-15-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-invert-l),1);--bulma-primary-20:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-l),1);--bulma-primary-20-invert-l:var(--bulma-primary-100-l);--bulma-primary-20-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-invert-l),1);--bulma-primary-25:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-l),1);--bulma-primary-25-invert-l:var(--bulma-primary-100-l);--bulma-primary-25-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-invert-l),1);--bulma-primary-30:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-l),1);--bulma-primary-30-invert-l:var(--bulma-primary-00-l);--bulma-primary-30-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-invert-l),1);--bulma-primary-35:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-l),1);--bulma-primary-35-invert-l:var(--bulma-primary-00-l);--bulma-primary-35-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-invert-l),1);--bulma-primary-40:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-l),1);--bulma-primary-40-invert-l:var(--bulma-primary-05-l);--bulma-primary-40-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-invert-l),1);--bulma-primary-45:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-l),1);--bulma-primary-45-invert-l:var(--bulma-primary-05-l);--bulma-primary-45-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-invert-l),1);--bulma-primary-50:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-l),1);--bulma-primary-50-invert-l:var(--bulma-primary-10-l);--bulma-primary-50-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-invert-l),1);--bulma-primary-55:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-l),1);--bulma-primary-55-invert-l:var(--bulma-primary-10-l);--bulma-primary-55-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-invert-l),1);--bulma-primary-60:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-l),1);--bulma-primary-60-invert-l:var(--bulma-primary-10-l);--bulma-primary-60-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-invert-l),1);--bulma-primary-65:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-l),1);--bulma-primary-65-invert-l:var(--bulma-primary-10-l);--bulma-primary-65-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-invert-l),1);--bulma-primary-70:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-l),1);--bulma-primary-70-invert-l:var(--bulma-primary-10-l);--bulma-primary-70-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-invert-l),1);--bulma-primary-75:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-l),1);--bulma-primary-75-invert-l:var(--bulma-primary-10-l);--bulma-primary-75-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-invert-l),1);--bulma-primary-80:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-l),1);--bulma-primary-80-invert-l:var(--bulma-primary-10-l);--bulma-primary-80-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-invert-l),1);--bulma-primary-85:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-l),1);--bulma-primary-85-invert-l:var(--bulma-primary-10-l);--bulma-primary-85-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-invert-l),1);--bulma-primary-90:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-l),1);--bulma-primary-90-invert-l:var(--bulma-primary-10-l);--bulma-primary-90-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-invert-l),1);--bulma-primary-95:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-l),1);--bulma-primary-95-invert-l:var(--bulma-primary-10-l);--bulma-primary-95-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-invert-l),1);--bulma-primary-100:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-l),1);--bulma-primary-100-invert-l:var(--bulma-primary-15-l);--bulma-primary-100-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-invert-l),1);--bulma-primary-invert-l:var(--bulma-primary-05-l);--bulma-primary-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-invert-l),1);--bulma-primary-light-l:var(--bulma-primary-90-l);--bulma-primary-light:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-l),1);--bulma-primary-light-invert-l:var(--bulma-primary-10-l);--bulma-primary-light-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-invert-l),1);--bulma-primary-dark-l:var(--bulma-primary-10-l);--bulma-primary-dark:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-l),1);--bulma-primary-dark-invert-l:var(--bulma-primary-50-l);--bulma-primary-dark-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-invert-l),1);--bulma-primary-soft:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-l),1);--bulma-primary-bold:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-l),1);--bulma-primary-soft-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-invert-l),1);--bulma-primary-bold-invert:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-invert-l),1);--bulma-primary-on-scheme-l:21%;--bulma-primary-on-scheme:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l),1);--bulma-link:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l),1);--bulma-link-base:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l),1);--bulma-link-rgb:66.3,88.315,255;--bulma-link-h:233deg;--bulma-link-s:100%;--bulma-link-l:63%;--bulma-link-00-l:0%;--bulma-link-05-l:3%;--bulma-link-10-l:8%;--bulma-link-15-l:13%;--bulma-link-20-l:18%;--bulma-link-25-l:23%;--bulma-link-30-l:28%;--bulma-link-35-l:33%;--bulma-link-40-l:38%;--bulma-link-45-l:43%;--bulma-link-50-l:48%;--bulma-link-55-l:53%;--bulma-link-60-l:58%;--bulma-link-65-l:63%;--bulma-link-70-l:68%;--bulma-link-75-l:73%;--bulma-link-80-l:78%;--bulma-link-85-l:83%;--bulma-link-90-l:88%;--bulma-link-95-l:93%;--bulma-link-100-l:98%;--bulma-link-00:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-l),1);--bulma-link-00-invert-l:var(--bulma-link-75-l);--bulma-link-00-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-invert-l),1);--bulma-link-05:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-l),1);--bulma-link-05-invert-l:var(--bulma-link-75-l);--bulma-link-05-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-invert-l),1);--bulma-link-10:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-l),1);--bulma-link-10-invert-l:var(--bulma-link-75-l);--bulma-link-10-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-invert-l),1);--bulma-link-15:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-l),1);--bulma-link-15-invert-l:var(--bulma-link-80-l);--bulma-link-15-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-invert-l),1);--bulma-link-20:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-l),1);--bulma-link-20-invert-l:var(--bulma-link-80-l);--bulma-link-20-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-invert-l),1);--bulma-link-25:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-l),1);--bulma-link-25-invert-l:var(--bulma-link-85-l);--bulma-link-25-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-invert-l),1);--bulma-link-30:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-l),1);--bulma-link-30-invert-l:var(--bulma-link-90-l);--bulma-link-30-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-invert-l),1);--bulma-link-35:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-l),1);--bulma-link-35-invert-l:var(--bulma-link-90-l);--bulma-link-35-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-invert-l),1);--bulma-link-40:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-l),1);--bulma-link-40-invert-l:var(--bulma-link-95-l);--bulma-link-40-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-invert-l),1);--bulma-link-45:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-l),1);--bulma-link-45-invert-l:var(--bulma-link-95-l);--bulma-link-45-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-invert-l),1);--bulma-link-50:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-l),1);--bulma-link-50-invert-l:var(--bulma-link-100-l);--bulma-link-50-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-invert-l),1);--bulma-link-55:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-l),1);--bulma-link-55-invert-l:var(--bulma-link-100-l);--bulma-link-55-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-invert-l),1);--bulma-link-60:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-l),1);--bulma-link-60-invert-l:var(--bulma-link-100-l);--bulma-link-60-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-invert-l),1);--bulma-link-65:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-l),1);--bulma-link-65-invert-l:var(--bulma-link-100-l);--bulma-link-65-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-invert-l),1);--bulma-link-70:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-l),1);--bulma-link-70-invert-l:var(--bulma-link-100-l);--bulma-link-70-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-invert-l),1);--bulma-link-75:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-l),1);--bulma-link-75-invert-l:var(--bulma-link-10-l);--bulma-link-75-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-invert-l),1);--bulma-link-80:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-l),1);--bulma-link-80-invert-l:var(--bulma-link-20-l);--bulma-link-80-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-invert-l),1);--bulma-link-85:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-l),1);--bulma-link-85-invert-l:var(--bulma-link-25-l);--bulma-link-85-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-invert-l),1);--bulma-link-90:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-l),1);--bulma-link-90-invert-l:var(--bulma-link-35-l);--bulma-link-90-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-invert-l),1);--bulma-link-95:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-l),1);--bulma-link-95-invert-l:var(--bulma-link-45-l);--bulma-link-95-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-invert-l),1);--bulma-link-100:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-l),1);--bulma-link-100-invert-l:var(--bulma-link-50-l);--bulma-link-100-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-invert-l),1);--bulma-link-invert-l:var(--bulma-link-100-l);--bulma-link-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-invert-l),1);--bulma-link-light-l:var(--bulma-link-90-l);--bulma-link-light:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-l),1);--bulma-link-light-invert-l:var(--bulma-link-35-l);--bulma-link-light-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-invert-l),1);--bulma-link-dark-l:var(--bulma-link-10-l);--bulma-link-dark:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-l),1);--bulma-link-dark-invert-l:var(--bulma-link-75-l);--bulma-link-dark-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-invert-l),1);--bulma-link-soft:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-l),1);--bulma-link-bold:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-l),1);--bulma-link-soft-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-invert-l),1);--bulma-link-bold-invert:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-invert-l),1);--bulma-link-on-scheme-l:58%;--bulma-link-on-scheme:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l),1);--bulma-info:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l),1);--bulma-info-base:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l),1);--bulma-info-rgb:102,209.1,255;--bulma-info-h:198deg;--bulma-info-s:100%;--bulma-info-l:70%;--bulma-info-00-l:0%;--bulma-info-05-l:5%;--bulma-info-10-l:10%;--bulma-info-15-l:15%;--bulma-info-20-l:20%;--bulma-info-25-l:25%;--bulma-info-30-l:30%;--bulma-info-35-l:35%;--bulma-info-40-l:40%;--bulma-info-45-l:45%;--bulma-info-50-l:50%;--bulma-info-55-l:55%;--bulma-info-60-l:60%;--bulma-info-65-l:65%;--bulma-info-70-l:70%;--bulma-info-75-l:75%;--bulma-info-80-l:80%;--bulma-info-85-l:85%;--bulma-info-90-l:90%;--bulma-info-95-l:95%;--bulma-info-100-l:100%;--bulma-info-00:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-l),1);--bulma-info-00-invert-l:var(--bulma-info-45-l);--bulma-info-00-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-invert-l),1);--bulma-info-05:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-l),1);--bulma-info-05-invert-l:var(--bulma-info-50-l);--bulma-info-05-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-invert-l),1);--bulma-info-10:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-l),1);--bulma-info-10-invert-l:var(--bulma-info-60-l);--bulma-info-10-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-invert-l),1);--bulma-info-15:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-l),1);--bulma-info-15-invert-l:var(--bulma-info-80-l);--bulma-info-15-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-invert-l),1);--bulma-info-20:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-l),1);--bulma-info-20-invert-l:var(--bulma-info-95-l);--bulma-info-20-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-invert-l),1);--bulma-info-25:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-l),1);--bulma-info-25-invert-l:var(--bulma-info-100-l);--bulma-info-25-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-invert-l),1);--bulma-info-30:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-l),1);--bulma-info-30-invert-l:var(--bulma-info-100-l);--bulma-info-30-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-invert-l),1);--bulma-info-35:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-l),1);--bulma-info-35-invert-l:var(--bulma-info-100-l);--bulma-info-35-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-invert-l),1);--bulma-info-40:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-l),1);--bulma-info-40-invert-l:var(--bulma-info-100-l);--bulma-info-40-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-invert-l),1);--bulma-info-45:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-l),1);--bulma-info-45-invert-l:var(--bulma-info-00-l);--bulma-info-45-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-invert-l),1);--bulma-info-50:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-l),1);--bulma-info-50-invert-l:var(--bulma-info-05-l);--bulma-info-50-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-invert-l),1);--bulma-info-55:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-l),1);--bulma-info-55-invert-l:var(--bulma-info-05-l);--bulma-info-55-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-invert-l),1);--bulma-info-60:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-l),1);--bulma-info-60-invert-l:var(--bulma-info-10-l);--bulma-info-60-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-invert-l),1);--bulma-info-65:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-l),1);--bulma-info-65-invert-l:var(--bulma-info-10-l);--bulma-info-65-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-invert-l),1);--bulma-info-70:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-l),1);--bulma-info-70-invert-l:var(--bulma-info-10-l);--bulma-info-70-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-invert-l),1);--bulma-info-75:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-l),1);--bulma-info-75-invert-l:var(--bulma-info-10-l);--bulma-info-75-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-invert-l),1);--bulma-info-80:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-l),1);--bulma-info-80-invert-l:var(--bulma-info-15-l);--bulma-info-80-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-invert-l),1);--bulma-info-85:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-l),1);--bulma-info-85-invert-l:var(--bulma-info-15-l);--bulma-info-85-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-invert-l),1);--bulma-info-90:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-l),1);--bulma-info-90-invert-l:var(--bulma-info-15-l);--bulma-info-90-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-invert-l),1);--bulma-info-95:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-l),1);--bulma-info-95-invert-l:var(--bulma-info-20-l);--bulma-info-95-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-invert-l),1);--bulma-info-100:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-l),1);--bulma-info-100-invert-l:var(--bulma-info-20-l);--bulma-info-100-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-invert-l),1);--bulma-info-invert-l:var(--bulma-info-10-l);--bulma-info-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-invert-l),1);--bulma-info-light-l:var(--bulma-info-90-l);--bulma-info-light:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-l),1);--bulma-info-light-invert-l:var(--bulma-info-15-l);--bulma-info-light-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-invert-l),1);--bulma-info-dark-l:var(--bulma-info-10-l);--bulma-info-dark:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-l),1);--bulma-info-dark-invert-l:var(--bulma-info-60-l);--bulma-info-dark-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-invert-l),1);--bulma-info-soft:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-l),1);--bulma-info-bold:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-l),1);--bulma-info-soft-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-invert-l),1);--bulma-info-bold-invert:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-invert-l),1);--bulma-info-on-scheme-l:25%;--bulma-info-on-scheme:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l),1);--bulma-success:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l),1);--bulma-success-base:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l),1);--bulma-success-rgb:71.6295,198.6705,141.50205;--bulma-success-h:153deg;--bulma-success-s:53%;--bulma-success-l:53%;--bulma-success-00-l:0%;--bulma-success-05-l:3%;--bulma-success-10-l:8%;--bulma-success-15-l:13%;--bulma-success-20-l:18%;--bulma-success-25-l:23%;--bulma-success-30-l:28%;--bulma-success-35-l:33%;--bulma-success-40-l:38%;--bulma-success-45-l:43%;--bulma-success-50-l:48%;--bulma-success-55-l:53%;--bulma-success-60-l:58%;--bulma-success-65-l:63%;--bulma-success-70-l:68%;--bulma-success-75-l:73%;--bulma-success-80-l:78%;--bulma-success-85-l:83%;--bulma-success-90-l:88%;--bulma-success-95-l:93%;--bulma-success-100-l:98%;--bulma-success-00:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-l),1);--bulma-success-00-invert-l:var(--bulma-success-45-l);--bulma-success-00-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-invert-l),1);--bulma-success-05:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-l),1);--bulma-success-05-invert-l:var(--bulma-success-45-l);--bulma-success-05-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-invert-l),1);--bulma-success-10:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-l),1);--bulma-success-10-invert-l:var(--bulma-success-55-l);--bulma-success-10-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-invert-l),1);--bulma-success-15:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-l),1);--bulma-success-15-invert-l:var(--bulma-success-75-l);--bulma-success-15-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-invert-l),1);--bulma-success-20:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-l),1);--bulma-success-20-invert-l:var(--bulma-success-95-l);--bulma-success-20-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-invert-l),1);--bulma-success-25:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-l),1);--bulma-success-25-invert-l:var(--bulma-success-100-l);--bulma-success-25-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-invert-l),1);--bulma-success-30:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-l),1);--bulma-success-30-invert-l:var(--bulma-success-100-l);--bulma-success-30-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-invert-l),1);--bulma-success-35:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-l),1);--bulma-success-35-invert-l:var(--bulma-success-100-l);--bulma-success-35-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-invert-l),1);--bulma-success-40:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-l),1);--bulma-success-40-invert-l:var(--bulma-success-100-l);--bulma-success-40-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-invert-l),1);--bulma-success-45:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-l),1);--bulma-success-45-invert-l:var(--bulma-success-05-l);--bulma-success-45-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-invert-l),1);--bulma-success-50:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-l),1);--bulma-success-50-invert-l:var(--bulma-success-05-l);--bulma-success-50-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-invert-l),1);--bulma-success-55:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-l),1);--bulma-success-55-invert-l:var(--bulma-success-10-l);--bulma-success-55-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-invert-l),1);--bulma-success-60:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-l),1);--bulma-success-60-invert-l:var(--bulma-success-10-l);--bulma-success-60-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-invert-l),1);--bulma-success-65:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-l),1);--bulma-success-65-invert-l:var(--bulma-success-10-l);--bulma-success-65-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-invert-l),1);--bulma-success-70:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-l),1);--bulma-success-70-invert-l:var(--bulma-success-10-l);--bulma-success-70-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-invert-l),1);--bulma-success-75:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-l),1);--bulma-success-75-invert-l:var(--bulma-success-15-l);--bulma-success-75-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-invert-l),1);--bulma-success-80:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-l),1);--bulma-success-80-invert-l:var(--bulma-success-15-l);--bulma-success-80-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-invert-l),1);--bulma-success-85:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-l),1);--bulma-success-85-invert-l:var(--bulma-success-15-l);--bulma-success-85-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-invert-l),1);--bulma-success-90:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-l),1);--bulma-success-90-invert-l:var(--bulma-success-15-l);--bulma-success-90-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-invert-l),1);--bulma-success-95:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-l),1);--bulma-success-95-invert-l:var(--bulma-success-20-l);--bulma-success-95-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-invert-l),1);--bulma-success-100:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-l),1);--bulma-success-100-invert-l:var(--bulma-success-20-l);--bulma-success-100-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-invert-l),1);--bulma-success-invert-l:var(--bulma-success-10-l);--bulma-success-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-invert-l),1);--bulma-success-light-l:var(--bulma-success-90-l);--bulma-success-light:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-l),1);--bulma-success-light-invert-l:var(--bulma-success-15-l);--bulma-success-light-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-invert-l),1);--bulma-success-dark-l:var(--bulma-success-10-l);--bulma-success-dark:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-l),1);--bulma-success-dark-invert-l:var(--bulma-success-55-l);--bulma-success-dark-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-invert-l),1);--bulma-success-soft:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-l),1);--bulma-success-bold:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-l),1);--bulma-success-soft-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-invert-l),1);--bulma-success-bold-invert:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-invert-l),1);--bulma-success-on-scheme-l:23%;--bulma-success-on-scheme:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l),1);--bulma-warning:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l),1);--bulma-warning-base:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l),1);--bulma-warning-rgb:255,183.09,15.3;--bulma-warning-h:42deg;--bulma-warning-s:100%;--bulma-warning-l:53%;--bulma-warning-00-l:0%;--bulma-warning-05-l:3%;--bulma-warning-10-l:8%;--bulma-warning-15-l:13%;--bulma-warning-20-l:18%;--bulma-warning-25-l:23%;--bulma-warning-30-l:28%;--bulma-warning-35-l:33%;--bulma-warning-40-l:38%;--bulma-warning-45-l:43%;--bulma-warning-50-l:48%;--bulma-warning-55-l:53%;--bulma-warning-60-l:58%;--bulma-warning-65-l:63%;--bulma-warning-70-l:68%;--bulma-warning-75-l:73%;--bulma-warning-80-l:78%;--bulma-warning-85-l:83%;--bulma-warning-90-l:88%;--bulma-warning-95-l:93%;--bulma-warning-100-l:98%;--bulma-warning-00:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-l),1);--bulma-warning-00-invert-l:var(--bulma-warning-40-l);--bulma-warning-00-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-invert-l),1);--bulma-warning-05:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-l),1);--bulma-warning-05-invert-l:var(--bulma-warning-45-l);--bulma-warning-05-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-invert-l),1);--bulma-warning-10:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-l),1);--bulma-warning-10-invert-l:var(--bulma-warning-50-l);--bulma-warning-10-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-invert-l),1);--bulma-warning-15:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-l),1);--bulma-warning-15-invert-l:var(--bulma-warning-70-l);--bulma-warning-15-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-invert-l),1);--bulma-warning-20:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-l),1);--bulma-warning-20-invert-l:var(--bulma-warning-100-l);--bulma-warning-20-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-invert-l),1);--bulma-warning-25:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-l),1);--bulma-warning-25-invert-l:var(--bulma-warning-100-l);--bulma-warning-25-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-invert-l),1);--bulma-warning-30:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-l),1);--bulma-warning-30-invert-l:var(--bulma-warning-100-l);--bulma-warning-30-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-invert-l),1);--bulma-warning-35:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-l),1);--bulma-warning-35-invert-l:var(--bulma-warning-100-l);--bulma-warning-35-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-invert-l),1);--bulma-warning-40:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-l),1);--bulma-warning-40-invert-l:var(--bulma-warning-00-l);--bulma-warning-40-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-invert-l),1);--bulma-warning-45:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-l),1);--bulma-warning-45-invert-l:var(--bulma-warning-05-l);--bulma-warning-45-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-invert-l),1);--bulma-warning-50:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-l),1);--bulma-warning-50-invert-l:var(--bulma-warning-10-l);--bulma-warning-50-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-invert-l),1);--bulma-warning-55:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-l),1);--bulma-warning-55-invert-l:var(--bulma-warning-10-l);--bulma-warning-55-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-invert-l),1);--bulma-warning-60:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-l),1);--bulma-warning-60-invert-l:var(--bulma-warning-10-l);--bulma-warning-60-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-invert-l),1);--bulma-warning-65:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-l),1);--bulma-warning-65-invert-l:var(--bulma-warning-10-l);--bulma-warning-65-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-invert-l),1);--bulma-warning-70:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-l),1);--bulma-warning-70-invert-l:var(--bulma-warning-15-l);--bulma-warning-70-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-invert-l),1);--bulma-warning-75:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-l),1);--bulma-warning-75-invert-l:var(--bulma-warning-15-l);--bulma-warning-75-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-invert-l),1);--bulma-warning-80:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-l),1);--bulma-warning-80-invert-l:var(--bulma-warning-15-l);--bulma-warning-80-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-invert-l),1);--bulma-warning-85:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-l),1);--bulma-warning-85-invert-l:var(--bulma-warning-15-l);--bulma-warning-85-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-invert-l),1);--bulma-warning-90:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-l),1);--bulma-warning-90-invert-l:var(--bulma-warning-15-l);--bulma-warning-90-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-invert-l),1);--bulma-warning-95:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-l),1);--bulma-warning-95-invert-l:var(--bulma-warning-15-l);--bulma-warning-95-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-invert-l),1);--bulma-warning-100:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-l),1);--bulma-warning-100-invert-l:var(--bulma-warning-20-l);--bulma-warning-100-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-invert-l),1);--bulma-warning-invert-l:var(--bulma-warning-10-l);--bulma-warning-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-invert-l),1);--bulma-warning-light-l:var(--bulma-warning-90-l);--bulma-warning-light:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-l),1);--bulma-warning-light-invert-l:var(--bulma-warning-15-l);--bulma-warning-light-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-invert-l),1);--bulma-warning-dark-l:var(--bulma-warning-10-l);--bulma-warning-dark:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-l),1);--bulma-warning-dark-invert-l:var(--bulma-warning-50-l);--bulma-warning-dark-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-invert-l),1);--bulma-warning-soft:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-l),1);--bulma-warning-bold:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-l),1);--bulma-warning-soft-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-invert-l),1);--bulma-warning-bold-invert:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-invert-l),1);--bulma-warning-on-scheme-l:23%;--bulma-warning-on-scheme:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l),1);--bulma-danger:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l),1);--bulma-danger-base:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l),1);--bulma-danger-rgb:255,102,132.6;--bulma-danger-h:348deg;--bulma-danger-s:100%;--bulma-danger-l:70%;--bulma-danger-00-l:0%;--bulma-danger-05-l:5%;--bulma-danger-10-l:10%;--bulma-danger-15-l:15%;--bulma-danger-20-l:20%;--bulma-danger-25-l:25%;--bulma-danger-30-l:30%;--bulma-danger-35-l:35%;--bulma-danger-40-l:40%;--bulma-danger-45-l:45%;--bulma-danger-50-l:50%;--bulma-danger-55-l:55%;--bulma-danger-60-l:60%;--bulma-danger-65-l:65%;--bulma-danger-70-l:70%;--bulma-danger-75-l:75%;--bulma-danger-80-l:80%;--bulma-danger-85-l:85%;--bulma-danger-90-l:90%;--bulma-danger-95-l:95%;--bulma-danger-100-l:100%;--bulma-danger-00:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-l),1);--bulma-danger-00-invert-l:var(--bulma-danger-65-l);--bulma-danger-00-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-invert-l),1);--bulma-danger-05:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-l),1);--bulma-danger-05-invert-l:var(--bulma-danger-70-l);--bulma-danger-05-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-invert-l),1);--bulma-danger-10:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-l),1);--bulma-danger-10-invert-l:var(--bulma-danger-75-l);--bulma-danger-10-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-invert-l),1);--bulma-danger-15:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-l),1);--bulma-danger-15-invert-l:var(--bulma-danger-80-l);--bulma-danger-15-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-invert-l),1);--bulma-danger-20:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-l),1);--bulma-danger-20-invert-l:var(--bulma-danger-85-l);--bulma-danger-20-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-invert-l),1);--bulma-danger-25:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-l),1);--bulma-danger-25-invert-l:var(--bulma-danger-90-l);--bulma-danger-25-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-invert-l),1);--bulma-danger-30:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-l),1);--bulma-danger-30-invert-l:var(--bulma-danger-100-l);--bulma-danger-30-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-invert-l),1);--bulma-danger-35:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-l),1);--bulma-danger-35-invert-l:var(--bulma-danger-100-l);--bulma-danger-35-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-invert-l),1);--bulma-danger-40:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-l),1);--bulma-danger-40-invert-l:var(--bulma-danger-100-l);--bulma-danger-40-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-invert-l),1);--bulma-danger-45:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-l),1);--bulma-danger-45-invert-l:var(--bulma-danger-100-l);--bulma-danger-45-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-invert-l),1);--bulma-danger-50:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-l),1);--bulma-danger-50-invert-l:var(--bulma-danger-100-l);--bulma-danger-50-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-invert-l),1);--bulma-danger-55:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-l),1);--bulma-danger-55-invert-l:var(--bulma-danger-100-l);--bulma-danger-55-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-invert-l),1);--bulma-danger-60:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-l),1);--bulma-danger-60-invert-l:var(--bulma-danger-100-l);--bulma-danger-60-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-invert-l),1);--bulma-danger-65:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-l),1);--bulma-danger-65-invert-l:var(--bulma-danger-00-l);--bulma-danger-65-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-invert-l),1);--bulma-danger-70:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-l),1);--bulma-danger-70-invert-l:var(--bulma-danger-05-l);--bulma-danger-70-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-invert-l),1);--bulma-danger-75:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-l),1);--bulma-danger-75-invert-l:var(--bulma-danger-10-l);--bulma-danger-75-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-invert-l),1);--bulma-danger-80:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-l),1);--bulma-danger-80-invert-l:var(--bulma-danger-15-l);--bulma-danger-80-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-invert-l),1);--bulma-danger-85:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-l),1);--bulma-danger-85-invert-l:var(--bulma-danger-20-l);--bulma-danger-85-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-invert-l),1);--bulma-danger-90:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-l),1);--bulma-danger-90-invert-l:var(--bulma-danger-25-l);--bulma-danger-90-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-invert-l),1);--bulma-danger-95:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-l),1);--bulma-danger-95-invert-l:var(--bulma-danger-25-l);--bulma-danger-95-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-invert-l),1);--bulma-danger-100:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-l),1);--bulma-danger-100-invert-l:var(--bulma-danger-30-l);--bulma-danger-100-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-invert-l),1);--bulma-danger-invert-l:var(--bulma-danger-05-l);--bulma-danger-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-invert-l),1);--bulma-danger-light-l:var(--bulma-danger-90-l);--bulma-danger-light:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-l),1);--bulma-danger-light-invert-l:var(--bulma-danger-25-l);--bulma-danger-light-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-invert-l),1);--bulma-danger-dark-l:var(--bulma-danger-10-l);--bulma-danger-dark:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-l),1);--bulma-danger-dark-invert-l:var(--bulma-danger-75-l);--bulma-danger-dark-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-invert-l),1);--bulma-danger-soft:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-l),1);--bulma-danger-bold:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-l),1);--bulma-danger-soft-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-invert-l),1);--bulma-danger-bold-invert:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-invert-l),1);--bulma-danger-on-scheme-l:40%;--bulma-danger-on-scheme:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l),1);--bulma-black-bis:#14161a;--bulma-black-ter:#1f2229;--bulma-grey-darker:#2e333d;--bulma-grey-dark:#404654;--bulma-grey:#69748c;--bulma-grey-light:#abb1bf;--bulma-grey-lighter:#d6d9e0;--bulma-white-ter:#f3f4f6;--bulma-white-bis:#f9fafb;--bulma-shadow-h:221deg;--bulma-shadow-s:14%;--bulma-shadow-l:4%;--bulma-size-1:3rem;--bulma-size-2:2.5rem;--bulma-size-3:2rem;--bulma-size-4:1.5rem;--bulma-size-5:1.25rem;--bulma-size-6:1rem;--bulma-size-7:0.75rem;--bulma-scheme-main:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-l));--bulma-scheme-main-bis:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-bis-l));--bulma-scheme-main-ter:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-ter-l));--bulma-background:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-background-l));--bulma-background-hover:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-background-l) + var(--bulma-hover-background-l-delta)));--bulma-background-active:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-background-l) + var(--bulma-active-background-l-delta)));--bulma-border-weak:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-border-weak-l));--bulma-border:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-border-l));--bulma-border-hover:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-border-l) + var(--bulma-hover-border-l-delta)));--bulma-border-active:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-border-l) + var(--bulma-active-border-l-delta)));--bulma-text-weak:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-weak-l));--bulma-text:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l));--bulma-text-strong:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-strong-l));--bulma-scheme-invert-ter:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-ter-l));--bulma-scheme-invert-bis:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-bis-l));--bulma-scheme-invert:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l));--bulma-link:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l));--bulma-link-text:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l));--bulma-link-text-hover:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-on-scheme-l) + var(--bulma-hover-color-l-delta)));--bulma-link-text-active:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-on-scheme-l) + var(--bulma-active-color-l-delta)));--bulma-focus-h:var(--bulma-link-h);--bulma-focus-s:var(--bulma-link-s);--bulma-focus-l:var(--bulma-link-l);--bulma-focus-offset:1px;--bulma-focus-style:solid;--bulma-focus-width:2px;--bulma-focus-shadow-size:0 0 0 0.1875em;--bulma-focus-shadow-alpha:0.25;--bulma-code:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l));--bulma-code-background:var(--bulma-background);--bulma-pre:var(--bulma-text);--bulma-pre-background:var(--bulma-background);--bulma-shadow:0 0.5em 1em -0.125em hsla(var(--bulma-shadow-h),var(--bulma-shadow-s),var(--bulma-shadow-l),0.1),0 0px 0 1px hsla(var(--bulma-shadow-h),var(--bulma-shadow-s),var(--bulma-shadow-l),0.02)}.theme-dark,[data-theme=dark]{--bulma-white-on-scheme-l:100%;--bulma-white-on-scheme:hsla(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l),1);--bulma-black-on-scheme-l:-51%;--bulma-black-on-scheme:hsla(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l),1);--bulma-light-on-scheme-l:96%;--bulma-light-on-scheme:hsla(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l),1);--bulma-dark-on-scheme-l:56%;--bulma-dark-on-scheme:hsla(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l),1);--bulma-text-on-scheme-l:54%;--bulma-text-on-scheme:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l),1);--bulma-primary-on-scheme-l:41%;--bulma-primary-on-scheme:hsla(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l),1);--bulma-link-on-scheme-l:73%;--bulma-link-on-scheme:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l),1);--bulma-info-on-scheme-l:70%;--bulma-info-on-scheme:hsla(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l),1);--bulma-success-on-scheme-l:53%;--bulma-success-on-scheme:hsla(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l),1);--bulma-warning-on-scheme-l:53%;--bulma-warning-on-scheme:hsla(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l),1);--bulma-danger-on-scheme-l:70%;--bulma-danger-on-scheme:hsla(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l),1);--bulma-scheme-brightness:dark;--bulma-scheme-main-l:9%;--bulma-scheme-main-bis-l:11%;--bulma-scheme-main-ter-l:13%;--bulma-soft-l:20%;--bulma-bold-l:90%;--bulma-soft-invert-l:90%;--bulma-bold-invert-l:20%;--bulma-background-l:14%;--bulma-border-weak-l:21%;--bulma-border-l:24%;--bulma-text-weak-l:53%;--bulma-text-l:71%;--bulma-text-strong-l:93%;--bulma-text-title-l:100%;--bulma-hover-background-l-delta:5%;--bulma-active-background-l-delta:10%;--bulma-hover-border-l-delta:10%;--bulma-active-border-l-delta:20%;--bulma-hover-color-l-delta:5%;--bulma-active-color-l-delta:10%;--bulma-shadow-h:0deg;--bulma-shadow-s:0%;--bulma-shadow-l:100%;--bulma-scheme-main:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-l));--bulma-scheme-main-bis:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-bis-l));--bulma-scheme-main-ter:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-main-ter-l));--bulma-background:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-background-l));--bulma-background-hover:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-background-l) + var(--bulma-hover-background-l-delta)));--bulma-background-active:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-background-l) + var(--bulma-active-background-l-delta)));--bulma-border-weak:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-border-weak-l));--bulma-border:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-border-l));--bulma-border-hover:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-border-l) + var(--bulma-hover-border-l-delta)));--bulma-border-active:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),calc(var(--bulma-border-l) + var(--bulma-active-border-l-delta)));--bulma-text-weak:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-weak-l));--bulma-text:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l));--bulma-text-strong:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-strong-l));--bulma-scheme-invert-ter:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-ter-l));--bulma-scheme-invert-bis:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-bis-l));--bulma-scheme-invert:hsl(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l));--bulma-link:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l));--bulma-link-text:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l));--bulma-link-text-hover:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-on-scheme-l) + var(--bulma-hover-color-l-delta)));--bulma-link-text-active:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-on-scheme-l) + var(--bulma-active-color-l-delta)));--bulma-focus-h:var(--bulma-link-h);--bulma-focus-s:var(--bulma-link-s);--bulma-focus-l:var(--bulma-link-l);--bulma-focus-offset:1px;--bulma-focus-style:solid;--bulma-focus-width:2px;--bulma-focus-shadow-size:0 0 0 0.1875em;--bulma-focus-shadow-alpha:0.25;--bulma-code:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l));--bulma-code-background:var(--bulma-background);--bulma-pre:var(--bulma-text);--bulma-pre-background:var(--bulma-background);--bulma-shadow:0 0.5em 1em -0.125em hsla(var(--bulma-shadow-h),var(--bulma-shadow-s),var(--bulma-shadow-l),0.1),0 0px 0 1px hsla(var(--bulma-shadow-h),var(--bulma-shadow-s),var(--bulma-shadow-l),0.02)} +/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}:root{--bulma-body-background-color:var(--bulma-scheme-main);--bulma-body-size:1em;--bulma-body-min-width:300px;--bulma-body-rendering:optimizeLegibility;--bulma-body-family:var(--bulma-family-primary);--bulma-body-overflow-x:hidden;--bulma-body-overflow-y:scroll;--bulma-body-color:var(--bulma-text);--bulma-body-font-size:1em;--bulma-body-weight:var(--bulma-weight-normal);--bulma-body-line-height:1.5;--bulma-code-family:var(--bulma-family-code);--bulma-code-padding:0.25em 0.5em 0.25em;--bulma-code-weight:normal;--bulma-code-size:0.875em;--bulma-small-font-size:0.875em;--bulma-hr-background-color:var(--bulma-background);--bulma-hr-height:2px;--bulma-hr-margin:1.5rem 0;--bulma-strong-color:var(--bulma-text-strong);--bulma-strong-weight:var(--bulma-weight-semibold);--bulma-pre-font-size:0.875em;--bulma-pre-padding:1.25rem 1.5rem;--bulma-pre-code-font-size:1em}html{background-color:var(--bulma-body-background-color);font-size:var(--bulma-body-size);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:var(--bulma-body-min-width);overflow-x:var(--bulma-body-overflow-x);overflow-y:var(--bulma-body-overflow-y);text-rendering:var(--bulma-body-rendering);text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:var(--bulma-body-family)}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:var(--bulma-code-family)}body{color:var(--bulma-body-color);font-size:var(--bulma-body-font-size);font-weight:var(--bulma-body-weight);line-height:var(--bulma-body-line-height)}a,button{cursor:pointer}a:focus-visible,button:focus-visible{outline-color:hsl(var(--bulma-focus-h),var(--bulma-focus-s),var(--bulma-focus-l));outline-offset:var(--bulma-focus-offset);outline-style:var(--bulma-focus-style);outline-width:var(--bulma-focus-width)}a:focus-visible:active,button:focus-visible:active{outline-width:1px}a:active,button:active{outline-width:1px}a{color:var(--bulma-link-text);cursor:pointer;text-decoration:none;transition-duration:var(--bulma-duration);transition-property:background-color,border-color,color}a strong{color:currentColor}button{appearance:none;background:none;border:none;color:inherit;font-family:inherit;font-size:1em;margin:0;padding:0;transition-duration:var(--bulma-duration);transition-property:background-color,border-color,color}code{background-color:var(--bulma-code-background);border-radius:.5em;color:var(--bulma-code);font-size:var(--bulma-code-size);font-weight:var(--bulma-code-weight);padding:var(--bulma-code-padding)}hr{background-color:var(--bulma-hr-background-color);border:none;display:block;height:var(--bulma-hr-height);margin:var(--bulma-hr-margin)}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:var(--bulma-small-font-size)}span{font-style:inherit;font-weight:inherit}strong{color:var(--bulma-strong-color);font-weight:var(--bulma-strong-weight)}svg{height:auto;width:auto}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:var(--bulma-pre-background);color:var(--bulma-pre);font-size:var(--bulma-pre-font-size);overflow-x:auto;padding:var(--bulma-pre-padding);white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:var(--bulma-pre-code-font-size);padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:var(--bulma-text-strong)}@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes pulsate{50%{opacity:.5}}.navbar-link:not(.is-arrowless):after,.select:not(.is-multiple):not(.is-loading):after{border:.125em solid var(--bulma-arrow-color);border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;transition-duration:var(--bulma-duration);transition-property:border-color;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.buttons:not(:last-child),.card:not(:last-child),.content:not(:last-child),.field:not(:last-child),.file:not(:last-child),.fixed-grid:not(:last-child),.grid:not(:last-child),.level:not(:last-child),.media:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.skeleton-block:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.tags:not(:last-child),.title:not(:last-child){margin-bottom:var(--bulma-block-spacing)}.button,.file-cta,.file-name,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select select,.textarea{align-items:center;appearance:none;border-color:transparent;border-radius:var(--bulma-control-radius);border-style:solid;border-width:var(--bulma-control-border-width);box-shadow:none;display:inline-flex;font-size:var(--bulma-control-size);height:var(--bulma-control-height);justify-content:flex-start;line-height:var(--bulma-control-line-height);padding:var(--bulma-control-padding-vertical) var(--bulma-control-padding-horizontal);position:relative;transition-duration:var(--bulma-duration);transition-property:background-color,border-color,box-shadow,color;vertical-align:top}.button:active,.button:focus,.button:focus-visible,.button:focus-within,.file-cta:active,.file-cta:focus,.file-cta:focus-visible,.file-cta:focus-within,.file-name:active,.file-name:focus,.file-name:focus-visible,.file-name:focus-within,.input:active,.input:focus,.input:focus-visible,.input:focus-within,.is-active.button,.is-active.file-cta,.is-active.file-name,.is-active.input,.is-active.pagination-ellipsis,.is-active.pagination-link,.is-active.pagination-next,.is-active.pagination-previous,.is-active.textarea,.is-focused.button,.is-focused.file-cta,.is-focused.file-name,.is-focused.input,.is-focused.pagination-ellipsis,.is-focused.pagination-link,.is-focused.pagination-next,.is-focused.pagination-previous,.is-focused.textarea,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-ellipsis:focus-visible,.pagination-ellipsis:focus-within,.pagination-link:active,.pagination-link:focus,.pagination-link:focus-visible,.pagination-link:focus-within,.pagination-next:active,.pagination-next:focus,.pagination-next:focus-visible,.pagination-next:focus-within,.pagination-previous:active,.pagination-previous:focus,.pagination-previous:focus-visible,.pagination-previous:focus-within,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.select select:focus-visible,.select select:focus-within,.textarea:active,.textarea:focus,.textarea:focus-visible,.textarea:focus-within{outline:none}.select fieldset[disabled] select,.select select[disabled],[disabled].button,[disabled].file-cta,[disabled].file-name,[disabled].input,[disabled].pagination-ellipsis,[disabled].pagination-link,[disabled].pagination-next,[disabled].pagination-previous,[disabled].textarea,fieldset[disabled] .button,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .input,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-previous,fieldset[disabled] .select select,fieldset[disabled] .textarea{cursor:not-allowed}.modal-close{--bulma-delete-dimensions:1.25rem;--bulma-delete-background-l:0%;--bulma-delete-background-alpha:0.5;--bulma-delete-color:var(--bulma-white);appearance:none;background-color:hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-delete-background-l),var(--bulma-delete-background-alpha));border:none;border-radius:var(--bulma-radius-rounded);cursor:pointer;display:inline-flex;flex-grow:0;flex-shrink:0;font-size:1em;height:var(--bulma-delete-dimensions);max-height:var(--bulma-delete-dimensions);max-width:var(--bulma-delete-dimensions);min-height:var(--bulma-delete-dimensions);min-width:var(--bulma-delete-dimensions);outline:none;pointer-events:auto;position:relative;vertical-align:top;width:var(--bulma-delete-dimensions)}.modal-close:after,.modal-close:before{background-color:var(--bulma-delete-color);content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close:before{height:2px;width:50%}.modal-close:after{height:50%;width:2px}.modal-close:focus,.modal-close:hover{--bulma-delete-background-alpha:0.4}.modal-close:active{--bulma-delete-background-alpha:0.5}.is-small.modal-close{--bulma-delete-dimensions:1rem}.is-medium.modal-close{--bulma-delete-dimensions:1.5rem}.is-large.modal-close{--bulma-delete-dimensions:2rem}.button.is-loading:after,.control.is-loading:after,.select.is-loading:after{animation:spinAround .5s linear infinite;border-bottom:2px solid var(--bulma-loading-color);border-left:2px solid var(--bulma-loading-color);border-radius:var(--bulma-radius-rounded);border-right:2px solid transparent;border-top:2px solid transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.is-overlay,.modal,.modal-background{bottom:0;left:0;position:absolute;right:0;top:0}.menu-list .menu-item,.menu-list a,.menu-list button,.navbar-burger{appearance:none;background:none;border:none;color:inherit;font-family:inherit;font-size:1em;margin:0;padding:0}.breadcrumb,.button,.file,.is-unselectable,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.box{--bulma-box-background-color:var(--bulma-scheme-main);--bulma-box-color:var(--bulma-text);--bulma-box-radius:var(--bulma-radius-large);--bulma-box-shadow:var(--bulma-shadow);--bulma-box-padding:1.25rem;--bulma-box-link-hover-shadow:0 0.5em 1em -0.125em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.1),0 0 0 1px var(--bulma-link);--bulma-box-link-active-shadow:inset 0 1px 2px hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.2),0 0 0 1px var(--bulma-link);background-color:var(--bulma-box-background-color);border-radius:var(--bulma-box-radius);box-shadow:var(--bulma-box-shadow);color:var(--bulma-box-color);display:block;padding:var(--bulma-box-padding)}a.box:focus,a.box:hover{box-shadow:var(--bulma-box-link-hover-shadow)}a.box:active{box-shadow:var(--bulma-box-link-active-shadow)}.button{--bulma-button-family:false;--bulma-button-weight:var(--bulma-weight-medium);--bulma-button-border-color:var(--bulma-border);--bulma-button-border-style:solid;--bulma-button-border-width:var(--bulma-control-border-width);--bulma-button-padding-vertical:0.5em;--bulma-button-padding-horizontal:1em;--bulma-button-focus-border-color:var(--bulma-link-focus-border);--bulma-button-focus-box-shadow-size:0 0 0 0.125em;--bulma-button-focus-box-shadow-color:hsla(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l),0.25);--bulma-button-active-color:var(--bulma-link-active);--bulma-button-active-border-color:var(--bulma-link-active-border);--bulma-button-text-color:var(--bulma-text);--bulma-button-text-decoration:underline;--bulma-button-text-hover-background-color:var(--bulma-background);--bulma-button-text-hover-color:var(--bulma-text-strong);--bulma-button-ghost-background:none;--bulma-button-ghost-border-color:transparent;--bulma-button-ghost-color:var(--bulma-link-text);--bulma-button-ghost-decoration:none;--bulma-button-ghost-hover-color:var(--bulma-link);--bulma-button-ghost-hover-decoration:underline;--bulma-button-disabled-background-color:var(--bulma-scheme-main);--bulma-button-disabled-border-color:var(--bulma-border);--bulma-button-disabled-shadow:none;--bulma-button-disabled-opacity:0.5;--bulma-button-static-color:var(--bulma-text-weak);--bulma-button-static-background-color:var(--bulma-scheme-main-ter);--bulma-button-static-border-color:var(--bulma-border);--bulma-button-h:var(--bulma-scheme-h);--bulma-button-s:var(--bulma-scheme-s);--bulma-button-l:var(--bulma-scheme-main-l);--bulma-button-background-l:var(--bulma-scheme-main-l);--bulma-button-background-l-delta:0%;--bulma-button-hover-background-l-delta:var(--bulma-hover-background-l-delta);--bulma-button-active-background-l-delta:var(--bulma-active-background-l-delta);--bulma-button-color-l:var(--bulma-text-strong-l);--bulma-button-border-l:var(--bulma-border-l);--bulma-button-border-l-delta:0%;--bulma-button-hover-border-l-delta:var(--bulma-hover-border-l-delta);--bulma-button-active-border-l-delta:var(--bulma-active-border-l-delta);--bulma-button-focus-border-l-delta:var(--bulma-focus-border-l-delta);--bulma-button-outer-shadow-h:0;--bulma-button-outer-shadow-s:0%;--bulma-button-outer-shadow-l:20%;--bulma-button-outer-shadow-a:0.05;--bulma-loading-color:hsl(var(--bulma-button-h),var(--bulma-button-s),var(--bulma-button-color-l));background-color:hsl(var(--bulma-button-h),var(--bulma-button-s),calc(var(--bulma-button-background-l) + var(--bulma-button-background-l-delta)));border-color:hsl(var(--bulma-button-h),var(--bulma-button-s),calc(var(--bulma-button-border-l) + var(--bulma-button-border-l-delta)));border-style:var(--bulma-button-border-style);border-width:var(--bulma-button-border-width);box-shadow:0 .0625em .125em hsla(var(--bulma-button-outer-shadow-h),var(--bulma-button-outer-shadow-s),var(--bulma-button-outer-shadow-l),var(--bulma-button-outer-shadow-a)),0 .125em .25em hsla(var(--bulma-button-outer-shadow-h),var(--bulma-button-outer-shadow-s),var(--bulma-button-outer-shadow-l),var(--bulma-button-outer-shadow-a));color:hsl(var(--bulma-button-h),var(--bulma-button-s),var(--bulma-button-color-l));cursor:pointer;font-weight:var(--bulma-button-weight);height:auto;justify-content:center;padding:calc(var(--bulma-button-padding-vertical) - var(--bulma-button-border-width)) calc(var(--bulma-button-padding-horizontal) - var(--bulma-button-border-width));text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-inline-end:calc(var(--bulma-button-padding-horizontal)*.25);margin-inline-start:calc(var(--bulma-button-padding-horizontal)*-.5)}.button .icon:last-child:not(:first-child){margin-inline-end:calc(var(--bulma-button-padding-horizontal)*-.5);margin-inline-start:calc(var(--bulma-button-padding-horizontal)*.25)}.button .icon:first-child:last-child{margin-inline-end:calc(var(--bulma-button-padding-horizontal)*-.5);margin-inline-start:calc(var(--bulma-button-padding-horizontal)*-.5)}.button.is-hovered,.button:hover{--bulma-button-background-l-delta:var(--bulma-button-hover-background-l-delta);--bulma-button-border-l-delta:var(--bulma-button-hover-border-l-delta)}.button.is-focused,.button:focus-visible{--bulma-button-border-width:1px;border-color:hsl(var(--bulma-focus-h),var(--bulma-focus-s),var(--bulma-focus-l));box-shadow:var(--bulma-focus-shadow-size) hsla(var(--bulma-focus-h),var(--bulma-focus-s),var(--bulma-focus-l),var(--bulma-focus-shadow-alpha))}.button.is-active,.button:active{--bulma-button-background-l-delta:var(--bulma-button-active-background-l-delta);--bulma-button-border-l-delta:var(--bulma-button-active-border-l-delta);--bulma-button-outer-shadow-a:0}.button[disabled],fieldset[disabled] .button{background-color:var(--bulma-button-disabled-background-color);border-color:var(--bulma-button-disabled-border-color);box-shadow:var(--bulma-button-disabled-shadow);opacity:var(--bulma-button-disabled-opacity)}.button.is-white{--bulma-button-h:var(--bulma-white-h);--bulma-button-s:var(--bulma-white-s);--bulma-button-l:var(--bulma-white-l);--bulma-button-background-l:var(--bulma-white-l);--bulma-button-border-l:var(--bulma-white-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-white-invert-l);--bulma-button-outer-shadow-a:0}.button.is-white.is-focused,.button.is-white:focus-visible{--bulma-button-border-width:1px}.button.is-white.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-white.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:var(--bulma-white);border-color:var(--bulma-white);box-shadow:none}.button.is-black{--bulma-button-h:var(--bulma-black-h);--bulma-button-s:var(--bulma-black-s);--bulma-button-l:var(--bulma-black-l);--bulma-button-background-l:var(--bulma-black-l);--bulma-button-border-l:var(--bulma-black-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-black-invert-l);--bulma-button-outer-shadow-a:0}.button.is-black.is-focused,.button.is-black:focus-visible{--bulma-button-border-width:1px}.button.is-black.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-black.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:var(--bulma-black);border-color:var(--bulma-black);box-shadow:none}.button.is-light{--bulma-button-h:var(--bulma-light-h);--bulma-button-s:var(--bulma-light-s);--bulma-button-l:var(--bulma-light-l);--bulma-button-background-l:var(--bulma-light-l);--bulma-button-border-l:var(--bulma-light-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-light-invert-l);--bulma-button-outer-shadow-a:0}.button.is-light.is-focused,.button.is-light:focus-visible{--bulma-button-border-width:1px}.button.is-light.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-light.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:var(--bulma-light);border-color:var(--bulma-light);box-shadow:none}.button.is-dark{--bulma-button-h:var(--bulma-dark-h);--bulma-button-s:var(--bulma-dark-s);--bulma-button-l:var(--bulma-dark-l);--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-border-l:var(--bulma-dark-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-dark-invert-l);--bulma-button-outer-shadow-a:0}.button.is-dark.is-focused,.button.is-dark:focus-visible{--bulma-button-border-width:1px}.button.is-dark.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-dark.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:var(--bulma-dark);border-color:var(--bulma-dark);box-shadow:none}.button.is-text{--bulma-button-h:var(--bulma-text-h);--bulma-button-s:var(--bulma-text-s);--bulma-button-l:var(--bulma-text-l);--bulma-button-background-l:var(--bulma-text-l);--bulma-button-border-l:var(--bulma-text-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-text-invert-l);--bulma-button-outer-shadow-a:0}.button.is-text.is-focused,.button.is-text:focus-visible{--bulma-button-border-width:1px}.button.is-text.is-light{--bulma-button-background-l:var(--bulma-light-l);--bulma-button-color-l:var(--bulma-text-light-invert-l)}.button.is-text.is-dark{--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-color-l:var(--bulma-text-dark-invert-l)}.button.is-text.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-text.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:var(--bulma-text);border-color:var(--bulma-text)}.button.is-primary{--bulma-button-h:var(--bulma-primary-h);--bulma-button-s:var(--bulma-primary-s);--bulma-button-l:var(--bulma-primary-l);--bulma-button-background-l:var(--bulma-primary-l);--bulma-button-border-l:var(--bulma-primary-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-primary-invert-l);--bulma-button-outer-shadow-a:0}.button.is-primary.is-focused,.button.is-primary:focus-visible{--bulma-button-border-width:1px}.button.is-primary.is-light{--bulma-button-background-l:var(--bulma-light-l);--bulma-button-color-l:var(--bulma-primary-light-invert-l)}.button.is-primary.is-dark{--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-color-l:var(--bulma-primary-dark-invert-l)}.button.is-primary.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-primary.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:var(--bulma-primary);border-color:var(--bulma-primary);box-shadow:none}.button.is-link{--bulma-button-h:var(--bulma-link-h);--bulma-button-s:var(--bulma-link-s);--bulma-button-l:var(--bulma-link-l);--bulma-button-background-l:var(--bulma-link-l);--bulma-button-border-l:var(--bulma-link-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-link-invert-l);--bulma-button-outer-shadow-a:0}.button.is-link.is-focused,.button.is-link:focus-visible{--bulma-button-border-width:1px}.button.is-link.is-light{--bulma-button-background-l:var(--bulma-light-l);--bulma-button-color-l:var(--bulma-link-light-invert-l)}.button.is-link.is-dark{--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-color-l:var(--bulma-link-dark-invert-l)}.button.is-link.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-link.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:var(--bulma-link);border-color:var(--bulma-link);box-shadow:none}.button.is-info{--bulma-button-h:var(--bulma-info-h);--bulma-button-s:var(--bulma-info-s);--bulma-button-l:var(--bulma-info-l);--bulma-button-background-l:var(--bulma-info-l);--bulma-button-border-l:var(--bulma-info-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-info-invert-l);--bulma-button-outer-shadow-a:0}.button.is-info.is-focused,.button.is-info:focus-visible{--bulma-button-border-width:1px}.button.is-info.is-light{--bulma-button-background-l:var(--bulma-light-l);--bulma-button-color-l:var(--bulma-info-light-invert-l)}.button.is-info.is-dark{--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-color-l:var(--bulma-info-dark-invert-l)}.button.is-info.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-info.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:var(--bulma-info);border-color:var(--bulma-info);box-shadow:none}.button.is-success{--bulma-button-h:var(--bulma-success-h);--bulma-button-s:var(--bulma-success-s);--bulma-button-l:var(--bulma-success-l);--bulma-button-background-l:var(--bulma-success-l);--bulma-button-border-l:var(--bulma-success-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-success-invert-l);--bulma-button-outer-shadow-a:0}.button.is-success.is-focused,.button.is-success:focus-visible{--bulma-button-border-width:1px}.button.is-success.is-light{--bulma-button-background-l:var(--bulma-light-l);--bulma-button-color-l:var(--bulma-success-light-invert-l)}.button.is-success.is-dark{--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-color-l:var(--bulma-success-dark-invert-l)}.button.is-success.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-success.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:var(--bulma-success);border-color:var(--bulma-success);box-shadow:none}.button.is-warning{--bulma-button-h:var(--bulma-warning-h);--bulma-button-s:var(--bulma-warning-s);--bulma-button-l:var(--bulma-warning-l);--bulma-button-background-l:var(--bulma-warning-l);--bulma-button-border-l:var(--bulma-warning-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-warning-invert-l);--bulma-button-outer-shadow-a:0}.button.is-warning.is-focused,.button.is-warning:focus-visible{--bulma-button-border-width:1px}.button.is-warning.is-light{--bulma-button-background-l:var(--bulma-light-l);--bulma-button-color-l:var(--bulma-warning-light-invert-l)}.button.is-warning.is-dark{--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-color-l:var(--bulma-warning-dark-invert-l)}.button.is-warning.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-warning.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:var(--bulma-warning);border-color:var(--bulma-warning);box-shadow:none}.button.is-danger{--bulma-button-h:var(--bulma-danger-h);--bulma-button-s:var(--bulma-danger-s);--bulma-button-l:var(--bulma-danger-l);--bulma-button-background-l:var(--bulma-danger-l);--bulma-button-border-l:var(--bulma-danger-l);--bulma-button-border-width:0px;--bulma-button-color-l:var(--bulma-danger-invert-l);--bulma-button-outer-shadow-a:0}.button.is-danger.is-focused,.button.is-danger:focus-visible{--bulma-button-border-width:1px}.button.is-danger.is-light{--bulma-button-background-l:var(--bulma-light-l);--bulma-button-color-l:var(--bulma-danger-light-invert-l)}.button.is-danger.is-dark{--bulma-button-background-l:var(--bulma-dark-l);--bulma-button-color-l:var(--bulma-danger-dark-invert-l)}.button.is-danger.is-soft{--bulma-button-background-l:var(--bulma-soft-l);--bulma-button-color-l:var(--bulma-soft-invert-l)}.button.is-danger.is-bold{--bulma-button-background-l:var(--bulma-bold-l);--bulma-button-color-l:var(--bulma-bold-invert-l)}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:var(--bulma-danger);border-color:var(--bulma-danger);box-shadow:none}.button.is-outlined{--bulma-button-border-width:max(1px,0.0625em);--bulma-loading-color:hsl(var(--bulma-button-h),var(--bulma-button-s),var(--bulma-button-l));background-color:transparent;border-color:hsl(var(--bulma-button-h),var(--bulma-button-s),var(--bulma-button-l));color:hsl(var(--bulma-button-h),var(--bulma-button-s),var(--bulma-button-l))}.button.is-outlined:hover{--bulma-button-border-width:max(2px,0.125em);--bulma-button-outer-shadow-alpha:1}.button.is-outlined[disabled],fieldset[disabled] .button.is-outlined{background-color:transparent;box-shadow:none}.button.is-inverted{background-color:hsl(var(--bulma-button-h),var(--bulma-button-s),calc(var(--bulma-button-color-l) + var(--bulma-button-background-l-delta)));color:hsl(var(--bulma-button-h),var(--bulma-button-s),var(--bulma-button-background-l))}.button.is-text{background-color:transparent;border-color:transparent;color:var(--bulma-button-text-color);text-decoration:var(--bulma-button-text-decoration)}.button.is-text.is-hovered,.button.is-text:hover{background-color:var(--bulma-button-text-hover-background-color);color:var(--bulma-button-text-hover-color)}.button.is-text.is-active,.button.is-text:active{color:var(--bulma-button-text-hover-color)}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:var(--bulma-button-ghost-background);border-color:var(--bulma-button-ghost-border-color);box-shadow:none;color:var(--bulma-button-ghost-color);text-decoration:var(--bulma-button-ghost-decoration)}.button.is-ghost.is-hovered,.button.is-ghost:hover{color:var(--bulma-button-ghost-hover-color);text-decoration:var(--bulma-button-ghost-hover-decoration)}.button.is-small{--bulma-control-size:var(--bulma-size-small);--bulma-control-radius:var(--bulma-radius-small)}.button.is-normal{--bulma-control-size:var(--bulma-size-normal);--bulma-control-radius:var(--bulma-radius)}.button.is-medium{--bulma-control-size:var(--bulma-size-medium);--bulma-control-radius:var(--bulma-radius-medium)}.button.is-large{--bulma-control-size:var(--bulma-size-large);--bulma-control-radius:var(--bulma-radius-medium)}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{box-shadow:none;color:transparent!important;pointer-events:none}.button.is-loading:after{left:calc(50% - .5em);position:absolute;position:absolute!important;top:calc(50% - .5em)}.button.is-static{background-color:var(--bulma-button-static-background-color);border-color:var(--bulma-button-static-border-color);box-shadow:none;color:var(--bulma-button-static-color);pointer-events:none}.button.is-rounded{border-radius:var(--bulma-radius-rounded);padding-left:calc(var(--bulma-button-padding-horizontal) + .25em - var(--bulma-button-border-width));padding-right:calc(var(--bulma-button-padding-horizontal) + .25em - var(--bulma-button-border-width))}.buttons{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-start}.buttons.are-small{--bulma-control-size:var(--bulma-size-small);--bulma-control-radius:var(--bulma-radius-small)}.buttons.are-medium{--bulma-control-size:var(--bulma-size-medium);--bulma-control-radius:var(--bulma-radius-medium)}.buttons.are-large{--bulma-control-size:var(--bulma-size-large);--bulma-control-radius:var(--bulma-radius-large)}.buttons.has-addons{gap:0}.buttons.has-addons .button:not(:first-child){border-end-start-radius:0;border-start-start-radius:0}.buttons.has-addons .button:not(:last-child){border-end-end-radius:0;border-start-end-radius:0;margin-inline-end:-1px}.buttons.has-addons .button.is-hovered,.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-focused,.buttons.has-addons .button.is-selected,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button.is-selected:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-right{justify-content:flex-end}@media screen and (max-width:768px){.button.is-responsive.is-small{font-size:calc(var(--bulma-size-small)*.75)}.button.is-responsive,.button.is-responsive.is-normal{font-size:calc(var(--bulma-size-small)*.875)}.button.is-responsive.is-medium{font-size:var(--bulma-size-small)}.button.is-responsive.is-large{font-size:var(--bulma-size-normal)}}@media screen and (min-width:769px) and (max-width:1023px){.button.is-responsive.is-small{font-size:calc(var(--bulma-size-small)*.875)}.button.is-responsive,.button.is-responsive.is-normal{font-size:var(--bulma-size-small)}.button.is-responsive.is-medium{font-size:var(--bulma-size-normal)}.button.is-responsive.is-large{font-size:var(--bulma-size-medium)}}.content{--bulma-content-heading-color:var(--bulma-text-strong);--bulma-content-heading-weight:var(--bulma-weight-extrabold);--bulma-content-heading-line-height:1.125;--bulma-content-block-margin-bottom:1em;--bulma-content-blockquote-background-color:var(--bulma-background);--bulma-content-blockquote-border-left:5px solid var(--bulma-border);--bulma-content-blockquote-padding:1.25em 1.5em;--bulma-content-pre-padding:1.25em 1.5em;--bulma-content-table-cell-border:1px solid var(--bulma-border);--bulma-content-table-cell-border-width:0 0 1px;--bulma-content-table-cell-padding:0.5em 0.75em;--bulma-content-table-cell-heading-color:var(--bulma-text-strong);--bulma-content-table-head-cell-border-width:0 0 2px;--bulma-content-table-head-cell-color:var(--bulma-text-strong);--bulma-content-table-body-last-row-cell-border-bottom-width:0;--bulma-content-table-foot-cell-border-width:2px 0 0;--bulma-content-table-foot-cell-color:var(--bulma-text-strong)}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:var(--bulma-content-block-margin-bottom)}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:var(--bulma-content-heading-color);font-weight:var(--bulma-content-heading-weight);line-height:var(--bulma-content-heading-line-height)}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:var(--bulma-content-blockquote-background-color);border-inline-start:var(--bulma-content-blockquote-border-left);padding:var(--bulma-content-blockquote-padding)}.content ol{list-style-position:outside;margin-inline-start:2em}.content ol:not(:first-child){margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-inline-start:2em}.content ul:not(:first-child){margin-top:1em}.content ul ul{list-style-type:circle;margin-bottom:.25em;margin-top:.25em}.content ul ul ul{list-style-type:square}.content dd{margin-inline-start:2em}.content figure:not([class]){margin-left:2em;margin-right:2em;text-align:center}.content figure:not([class]):not(:first-child){margin-top:2em}.content figure:not([class]):not(:last-child){margin-bottom:2em}.content figure:not([class]) img{display:inline-block}.content figure:not([class]) figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:var(--bulma-content-pre-padding);white-space:pre;word-wrap:normal}.content sub,.content sup{font-size:75%}.content table td,.content table th{border:var(--bulma-content-table-cell-border);border-width:var(--bulma-content-table-cell-border-width);padding:var(--bulma-content-table-cell-padding);vertical-align:top}.content table th{color:var(--bulma-content-table-cell-heading-color)}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:var(--bulma-content-table-head-cell-border-width);color:var(--bulma-content-table-head-cell-color)}.content table tfoot td,.content table tfoot th{border-width:var(--bulma-content-table-foot-cell-border-width);color:var(--bulma-content-table-foot-cell-color)}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:var(--bulma-content-table-body-last-row-cell-border-bottom-width)}.content .tabs li+li{margin-top:0}.content.is-small{font-size:var(--bulma-size-small)}.content.is-normal{font-size:var(--bulma-size-normal)}.content.is-medium{font-size:var(--bulma-size-medium)}.content.is-large{font-size:var(--bulma-size-large)}.delete{--bulma-delete-dimensions:1.25rem;--bulma-delete-background-l:0%;--bulma-delete-background-alpha:0.5;--bulma-delete-color:var(--bulma-white);appearance:none;background-color:hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-delete-background-l),var(--bulma-delete-background-alpha));border:none;border-radius:var(--bulma-radius-rounded);cursor:pointer;display:inline-flex;flex-grow:0;flex-shrink:0;font-size:1em;height:var(--bulma-delete-dimensions);max-height:var(--bulma-delete-dimensions);max-width:var(--bulma-delete-dimensions);min-height:var(--bulma-delete-dimensions);min-width:var(--bulma-delete-dimensions);outline:none;pointer-events:auto;position:relative;vertical-align:top;width:var(--bulma-delete-dimensions)}.delete:after,.delete:before{background-color:var(--bulma-delete-color);content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{--bulma-delete-background-alpha:0.4}.delete:active{--bulma-delete-background-alpha:0.5}.delete.is-small{--bulma-delete-dimensions:1rem}.delete.is-medium{--bulma-delete-dimensions:1.5rem}.delete.is-large{--bulma-delete-dimensions:2rem}.icon,.icon-text{--bulma-icon-dimensions:1.5rem;--bulma-icon-dimensions-small:1rem;--bulma-icon-dimensions-medium:2rem;--bulma-icon-dimensions-large:3rem;--bulma-icon-text-spacing:0.25em}.icon{align-items:center;display:inline-flex;flex-shrink:0;height:var(--bulma-icon-dimensions);justify-content:center;transition-duration:var(--bulma-duration);transition-property:color;width:var(--bulma-icon-dimensions)}.icon.is-small{height:var(--bulma-icon-dimensions-small);width:var(--bulma-icon-dimensions-small)}.icon.is-medium{height:var(--bulma-icon-dimensions-medium);width:var(--bulma-icon-dimensions-medium)}.icon.is-large{height:var(--bulma-icon-dimensions-large);width:var(--bulma-icon-dimensions-large)}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;gap:var(--bulma-icon-text-spacing);line-height:var(--bulma-icon-dimensions);vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:var(--bulma-radius-rounded)}.image.is-fullwidth{width:100%}.image.is-square .has-ratio,.image.is-square img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-square{aspect-ratio:1}.image.is-1by1{aspect-ratio:1/1}.image.is-1by1 .has-ratio,.image.is-1by1 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-5by4{aspect-ratio:5/4}.image.is-5by4 .has-ratio,.image.is-5by4 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-4by3{aspect-ratio:4/3}.image.is-4by3 .has-ratio,.image.is-4by3 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-3by2{aspect-ratio:3/2}.image.is-3by2 .has-ratio,.image.is-3by2 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-5by3{aspect-ratio:5/3}.image.is-5by3 .has-ratio,.image.is-5by3 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-16by9{aspect-ratio:16/9}.image.is-16by9 .has-ratio,.image.is-16by9 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-2by1{aspect-ratio:2/1}.image.is-2by1 .has-ratio,.image.is-2by1 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-3by1{aspect-ratio:3/1}.image.is-3by1 .has-ratio,.image.is-3by1 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-4by5{aspect-ratio:4/5}.image.is-4by5 .has-ratio,.image.is-4by5 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-3by4{aspect-ratio:3/4}.image.is-3by4 .has-ratio,.image.is-3by4 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-2by3{aspect-ratio:2/3}.image.is-2by3 .has-ratio,.image.is-2by3 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-3by5{aspect-ratio:3/5}.image.is-3by5 .has-ratio,.image.is-3by5 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-9by16{aspect-ratio:9/16}.image.is-9by16 .has-ratio,.image.is-9by16 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-1by2{aspect-ratio:1/2}.image.is-1by2 .has-ratio,.image.is-1by2 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-1by3{aspect-ratio:1/3}.image.is-1by3 .has-ratio,.image.is-1by3 img{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.loader{animation:spinAround .5s linear infinite;border-bottom:2px solid var(--bulma-border);border-left:2px solid var(--bulma-border);border-radius:var(--bulma-radius-rounded);border-right:2px solid transparent;border-top:2px solid transparent;content:"";display:block;height:1em;position:relative;width:1em}.notification{--bulma-notification-h:var(--bulma-scheme-h);--bulma-notification-s:var(--bulma-scheme-s);--bulma-notification-background-l:var(--bulma-background-l);--bulma-notification-color-l:var(--bulma-text-strong-l);--bulma-notification-code-background-color:var(--bulma-scheme-main);--bulma-notification-radius:var(--bulma-radius);--bulma-notification-padding:1.375em 1.5em;background-color:hsl(var(--bulma-notification-h),var(--bulma-notification-s),var(--bulma-notification-background-l));border-radius:var(--bulma-notification-radius);color:hsl(var(--bulma-notification-h),var(--bulma-notification-s),var(--bulma-notification-color-l));padding:var(--bulma-notification-padding);position:relative}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:var(--bulma-notification-code-background-color)}.notification pre code{background:transparent}.notification>.delete{inset-inline-end:1rem;position:absolute;top:1rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{--bulma-notification-h:var(--bulma-white-h);--bulma-notification-s:var(--bulma-white-s);--bulma-notification-background-l:var(--bulma-white-l);--bulma-notification-color-l:var(--bulma-white-invert-l)}.notification.is-white.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-white-light-invert-l)}.notification.is-white.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-white-dark-invert-l)}.notification.is-black{--bulma-notification-h:var(--bulma-black-h);--bulma-notification-s:var(--bulma-black-s);--bulma-notification-background-l:var(--bulma-black-l);--bulma-notification-color-l:var(--bulma-black-invert-l)}.notification.is-black.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-black-light-invert-l)}.notification.is-black.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-black-dark-invert-l)}.notification.is-light{--bulma-notification-h:var(--bulma-light-h);--bulma-notification-s:var(--bulma-light-s);--bulma-notification-background-l:var(--bulma-light-l);--bulma-notification-color-l:var(--bulma-light-invert-l)}.notification.is-light.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-light-light-invert-l)}.notification.is-light.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-light-dark-invert-l)}.notification.is-dark{--bulma-notification-h:var(--bulma-dark-h);--bulma-notification-s:var(--bulma-dark-s);--bulma-notification-background-l:var(--bulma-dark-l);--bulma-notification-color-l:var(--bulma-dark-invert-l)}.notification.is-dark.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-dark-light-invert-l)}.notification.is-dark.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-dark-dark-invert-l)}.notification.is-text{--bulma-notification-h:var(--bulma-text-h);--bulma-notification-s:var(--bulma-text-s);--bulma-notification-background-l:var(--bulma-text-l);--bulma-notification-color-l:var(--bulma-text-invert-l)}.notification.is-text.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-text-light-invert-l)}.notification.is-text.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-text-dark-invert-l)}.notification.is-primary{--bulma-notification-h:var(--bulma-primary-h);--bulma-notification-s:var(--bulma-primary-s);--bulma-notification-background-l:var(--bulma-primary-l);--bulma-notification-color-l:var(--bulma-primary-invert-l)}.notification.is-primary.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-primary-light-invert-l)}.notification.is-primary.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-primary-dark-invert-l)}.notification.is-link{--bulma-notification-h:var(--bulma-link-h);--bulma-notification-s:var(--bulma-link-s);--bulma-notification-background-l:var(--bulma-link-l);--bulma-notification-color-l:var(--bulma-link-invert-l)}.notification.is-link.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-link-light-invert-l)}.notification.is-link.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-link-dark-invert-l)}.notification.is-info{--bulma-notification-h:var(--bulma-info-h);--bulma-notification-s:var(--bulma-info-s);--bulma-notification-background-l:var(--bulma-info-l);--bulma-notification-color-l:var(--bulma-info-invert-l)}.notification.is-info.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-info-light-invert-l)}.notification.is-info.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-info-dark-invert-l)}.notification.is-success{--bulma-notification-h:var(--bulma-success-h);--bulma-notification-s:var(--bulma-success-s);--bulma-notification-background-l:var(--bulma-success-l);--bulma-notification-color-l:var(--bulma-success-invert-l)}.notification.is-success.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-success-light-invert-l)}.notification.is-success.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-success-dark-invert-l)}.notification.is-warning{--bulma-notification-h:var(--bulma-warning-h);--bulma-notification-s:var(--bulma-warning-s);--bulma-notification-background-l:var(--bulma-warning-l);--bulma-notification-color-l:var(--bulma-warning-invert-l)}.notification.is-warning.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-warning-light-invert-l)}.notification.is-warning.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-warning-dark-invert-l)}.notification.is-danger{--bulma-notification-h:var(--bulma-danger-h);--bulma-notification-s:var(--bulma-danger-s);--bulma-notification-background-l:var(--bulma-danger-l);--bulma-notification-color-l:var(--bulma-danger-invert-l)}.notification.is-danger.is-light{--bulma-notification-background-l:90%;--bulma-notification-color-l:var(--bulma-danger-light-invert-l)}.notification.is-danger.is-dark{--bulma-notification-background-l:20%;--bulma-notification-color-l:var(--bulma-danger-dark-invert-l)}.progress{--bulma-progress-border-radius:var(--bulma-radius-rounded);--bulma-progress-bar-background-color:var(--bulma-border-weak);--bulma-progress-value-background-color:var(--bulma-text);--bulma-progress-indeterminate-duration:1.5s;appearance:none;border:none;border-radius:var(--bulma-progress-border-radius);display:block;height:var(--bulma-size-normal);overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:var(--bulma-progress-bar-background-color)}.progress::-webkit-progress-value{background-color:var(--bulma-progress-value-background-color)}.progress::-moz-progress-bar{background-color:var(--bulma-progress-value-background-color)}.progress::-ms-fill{background-color:var(--bulma-progress-value-background-color);border:none}.progress.is-white{--bulma-progress-value-background-color:var(--bulma-white)}.progress.is-black{--bulma-progress-value-background-color:var(--bulma-black)}.progress.is-light{--bulma-progress-value-background-color:var(--bulma-light)}.progress.is-dark{--bulma-progress-value-background-color:var(--bulma-dark)}.progress.is-text{--bulma-progress-value-background-color:var(--bulma-text)}.progress.is-primary{--bulma-progress-value-background-color:var(--bulma-primary)}.progress.is-link{--bulma-progress-value-background-color:var(--bulma-link)}.progress.is-info{--bulma-progress-value-background-color:var(--bulma-info)}.progress.is-success{--bulma-progress-value-background-color:var(--bulma-success)}.progress.is-warning{--bulma-progress-value-background-color:var(--bulma-warning)}.progress.is-danger{--bulma-progress-value-background-color:var(--bulma-danger)}.progress:indeterminate{animation-duration:var(--bulma-progress-indeterminate-duration);animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:var(--bulma-progress-bar-background-color);background-image:linear-gradient(to right,var(--bulma-progress-value-background-color) 30%,var(--bulma-progress-bar-background-color) 30%);background-position:0 0;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:var(--bulma-size-small)}.progress.is-medium{height:var(--bulma-size-medium)}.progress.is-large{height:var(--bulma-size-large)}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.table{--bulma-table-color:var(--bulma-text-strong);--bulma-table-background-color:var(--bulma-scheme-main);--bulma-table-cell-border-color:var(--bulma-border);--bulma-table-cell-border-style:solid;--bulma-table-cell-border-width:0 0 1px;--bulma-table-cell-padding:0.5em 0.75em;--bulma-table-cell-heading-color:var(--bulma-text-strong);--bulma-table-cell-text-align:left;--bulma-table-head-cell-border-width:0 0 2px;--bulma-table-head-cell-color:var(--bulma-text-strong);--bulma-table-foot-cell-border-width:2px 0 0;--bulma-table-foot-cell-color:var(--bulma-text-strong);--bulma-table-head-background-color:transparent;--bulma-table-body-background-color:transparent;--bulma-table-foot-background-color:transparent;--bulma-table-row-hover-background-color:var(--bulma-scheme-main-bis);--bulma-table-row-active-background-color:var(--bulma-primary);--bulma-table-row-active-color:var(--bulma-primary-invert);--bulma-table-striped-row-even-background-color:var(--bulma-scheme-main-bis);--bulma-table-striped-row-even-hover-background-color:var(--bulma-scheme-main-ter);background-color:var(--bulma-table-background-color)}.table,.table td,.table th{color:var(--bulma-table-color)}.table td,.table th{background-color:var(--bulma-table-cell-background-color);border-color:var(--bulma-table-cell-border-color);border-style:var(--bulma-table-cell-border-style);border-width:var(--bulma-table-cell-border-width);padding:var(--bulma-table-cell-padding);vertical-align:top}.table td.is-white,.table th.is-white{--bulma-table-color:var(--bulma-white-invert);--bulma-table-cell-heading-color:var(--bulma-white-invert);--bulma-table-cell-background-color:var(--bulma-white);--bulma-table-cell-border-color:var(--bulma-white)}.table td.is-black,.table th.is-black{--bulma-table-color:var(--bulma-black-invert);--bulma-table-cell-heading-color:var(--bulma-black-invert);--bulma-table-cell-background-color:var(--bulma-black);--bulma-table-cell-border-color:var(--bulma-black)}.table td.is-light,.table th.is-light{--bulma-table-color:var(--bulma-light-invert);--bulma-table-cell-heading-color:var(--bulma-light-invert);--bulma-table-cell-background-color:var(--bulma-light);--bulma-table-cell-border-color:var(--bulma-light)}.table td.is-dark,.table th.is-dark{--bulma-table-color:var(--bulma-dark-invert);--bulma-table-cell-heading-color:var(--bulma-dark-invert);--bulma-table-cell-background-color:var(--bulma-dark);--bulma-table-cell-border-color:var(--bulma-dark)}.table td.is-text,.table th.is-text{--bulma-table-color:var(--bulma-text-invert);--bulma-table-cell-heading-color:var(--bulma-text-invert);--bulma-table-cell-background-color:var(--bulma-text);--bulma-table-cell-border-color:var(--bulma-text)}.table td.is-primary,.table th.is-primary{--bulma-table-color:var(--bulma-primary-invert);--bulma-table-cell-heading-color:var(--bulma-primary-invert);--bulma-table-cell-background-color:var(--bulma-primary);--bulma-table-cell-border-color:var(--bulma-primary)}.table td.is-link,.table th.is-link{--bulma-table-color:var(--bulma-link-invert);--bulma-table-cell-heading-color:var(--bulma-link-invert);--bulma-table-cell-background-color:var(--bulma-link);--bulma-table-cell-border-color:var(--bulma-link)}.table td.is-info,.table th.is-info{--bulma-table-color:var(--bulma-info-invert);--bulma-table-cell-heading-color:var(--bulma-info-invert);--bulma-table-cell-background-color:var(--bulma-info);--bulma-table-cell-border-color:var(--bulma-info)}.table td.is-success,.table th.is-success{--bulma-table-color:var(--bulma-success-invert);--bulma-table-cell-heading-color:var(--bulma-success-invert);--bulma-table-cell-background-color:var(--bulma-success);--bulma-table-cell-border-color:var(--bulma-success)}.table td.is-warning,.table th.is-warning{--bulma-table-color:var(--bulma-warning-invert);--bulma-table-cell-heading-color:var(--bulma-warning-invert);--bulma-table-cell-background-color:var(--bulma-warning);--bulma-table-cell-border-color:var(--bulma-warning)}.table td.is-danger,.table th.is-danger{--bulma-table-color:var(--bulma-danger-invert);--bulma-table-cell-heading-color:var(--bulma-danger-invert);--bulma-table-cell-background-color:var(--bulma-danger);--bulma-table-cell-border-color:var(--bulma-danger)}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:var(--bulma-table-row-active-background-color);color:var(--bulma-table-row-active-color)}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:var(--bulma-table-cell-heading-color)}.table th:not([align]){text-align:var(--bulma-table-cell-text-align)}.table tr.is-selected{background-color:var(--bulma-table-row-active-background-color);color:var(--bulma-table-row-active-color)}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:var(--bulma-table-row-active-color);color:currentColor}.table tr.is-white{--bulma-table-color:var(--bulma-white-invert);--bulma-table-cell-heading-color:var(--bulma-white-invert);--bulma-table-cell-background-color:var(--bulma-white);--bulma-table-cell-border-color:var(--bulma-white)}.table tr.is-black{--bulma-table-color:var(--bulma-black-invert);--bulma-table-cell-heading-color:var(--bulma-black-invert);--bulma-table-cell-background-color:var(--bulma-black);--bulma-table-cell-border-color:var(--bulma-black)}.table tr.is-light{--bulma-table-color:var(--bulma-light-invert);--bulma-table-cell-heading-color:var(--bulma-light-invert);--bulma-table-cell-background-color:var(--bulma-light);--bulma-table-cell-border-color:var(--bulma-light)}.table tr.is-dark{--bulma-table-color:var(--bulma-dark-invert);--bulma-table-cell-heading-color:var(--bulma-dark-invert);--bulma-table-cell-background-color:var(--bulma-dark);--bulma-table-cell-border-color:var(--bulma-dark)}.table tr.is-text{--bulma-table-color:var(--bulma-text-invert);--bulma-table-cell-heading-color:var(--bulma-text-invert);--bulma-table-cell-background-color:var(--bulma-text);--bulma-table-cell-border-color:var(--bulma-text)}.table tr.is-primary{--bulma-table-color:var(--bulma-primary-invert);--bulma-table-cell-heading-color:var(--bulma-primary-invert);--bulma-table-cell-background-color:var(--bulma-primary);--bulma-table-cell-border-color:var(--bulma-primary)}.table tr.is-link{--bulma-table-color:var(--bulma-link-invert);--bulma-table-cell-heading-color:var(--bulma-link-invert);--bulma-table-cell-background-color:var(--bulma-link);--bulma-table-cell-border-color:var(--bulma-link)}.table tr.is-info{--bulma-table-color:var(--bulma-info-invert);--bulma-table-cell-heading-color:var(--bulma-info-invert);--bulma-table-cell-background-color:var(--bulma-info);--bulma-table-cell-border-color:var(--bulma-info)}.table tr.is-success{--bulma-table-color:var(--bulma-success-invert);--bulma-table-cell-heading-color:var(--bulma-success-invert);--bulma-table-cell-background-color:var(--bulma-success);--bulma-table-cell-border-color:var(--bulma-success)}.table tr.is-warning{--bulma-table-color:var(--bulma-warning-invert);--bulma-table-cell-heading-color:var(--bulma-warning-invert);--bulma-table-cell-background-color:var(--bulma-warning);--bulma-table-cell-border-color:var(--bulma-warning)}.table tr.is-danger{--bulma-table-color:var(--bulma-danger-invert);--bulma-table-cell-heading-color:var(--bulma-danger-invert);--bulma-table-cell-background-color:var(--bulma-danger);--bulma-table-cell-border-color:var(--bulma-danger)}.table thead{background-color:var(--bulma-table-head-background-color)}.table thead td,.table thead th{border-width:var(--bulma-table-head-cell-border-width);color:var(--bulma-table-head-cell-color)}.table tfoot{background-color:var(--bulma-table-foot-background-color)}.table tfoot td,.table tfoot th{border-width:var(--bulma-table-foot-cell-border-width);color:var(--bulma-table-foot-cell-color)}.table tbody{background-color:var(--bulma-table-body-background-color)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover,.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:var(--bulma-table-row-hover-background-color)}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(2n){background-color:var(--bulma-table-striped-row-even-hover-background-color)}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(2n){background-color:var(--bulma-table-striped-row-even-background-color)}.table-container{-webkit-overflow-scrolling:touch;max-width:100%;overflow:auto;overflow-y:hidden}.tags{align-items:center;color:hsl(var(--bulma-tag-h),var(--bulma-tag-s),var(--bulma-tag-color-l));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-start}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:var(--bulma-size-normal)}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:var(--bulma-size-medium)}.tags.is-centered{gap:.25rem;justify-content:center}.tags.is-right{justify-content:flex-end}.tags.has-addons{gap:0}.tags.has-addons .tag:not(:first-child){border-end-start-radius:0;border-start-start-radius:0}.tags.has-addons .tag:not(:last-child){border-end-end-radius:0;border-start-end-radius:0}.tag{--bulma-tag-h:var(--bulma-scheme-h);--bulma-tag-s:var(--bulma-scheme-s);--bulma-tag-background-l:var(--bulma-background-l);--bulma-tag-background-l-delta:0%;--bulma-tag-hover-background-l-delta:var(--bulma-hover-background-l-delta);--bulma-tag-active-background-l-delta:var(--bulma-active-background-l-delta);--bulma-tag-color-l:var(--bulma-text-l);--bulma-tag-radius:var(--bulma-radius);--bulma-tag-delete-margin:1px;align-items:center;background-color:hsl(var(--bulma-tag-h),var(--bulma-tag-s),calc(var(--bulma-tag-background-l) + var(--bulma-tag-background-l-delta)));border-radius:var(--bulma-radius);color:hsl(var(--bulma-tag-h),var(--bulma-tag-s),var(--bulma-tag-color-l));display:inline-flex;font-size:var(--bulma-size-small);height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag .delete{margin-inline-end:-.375rem;margin-inline-start:.25rem}.tag.is-white{--bulma-tag-h:var(--bulma-white-h);--bulma-tag-s:var(--bulma-white-s);--bulma-tag-background-l:var(--bulma-white-l);--bulma-tag-color-l:var(--bulma-white-invert-l)}.tag.is-white.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-white-light-invert-l)}.tag.is-black{--bulma-tag-h:var(--bulma-black-h);--bulma-tag-s:var(--bulma-black-s);--bulma-tag-background-l:var(--bulma-black-l);--bulma-tag-color-l:var(--bulma-black-invert-l)}.tag.is-black.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-black-light-invert-l)}.tag.is-light{--bulma-tag-h:var(--bulma-light-h);--bulma-tag-s:var(--bulma-light-s);--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-light-invert-l)}.tag.is-light.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-light-light-invert-l)}.tag.is-dark{--bulma-tag-h:var(--bulma-dark-h);--bulma-tag-s:var(--bulma-dark-s);--bulma-tag-background-l:var(--bulma-dark-l);--bulma-tag-color-l:var(--bulma-dark-invert-l)}.tag.is-dark.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-dark-light-invert-l)}.tag.is-text{--bulma-tag-h:var(--bulma-text-h);--bulma-tag-s:var(--bulma-text-s);--bulma-tag-background-l:var(--bulma-text-l);--bulma-tag-color-l:var(--bulma-text-invert-l)}.tag.is-text.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-text-light-invert-l)}.tag.is-primary{--bulma-tag-h:var(--bulma-primary-h);--bulma-tag-s:var(--bulma-primary-s);--bulma-tag-background-l:var(--bulma-primary-l);--bulma-tag-color-l:var(--bulma-primary-invert-l)}.tag.is-primary.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-primary-light-invert-l)}.tag.is-link{--bulma-tag-h:var(--bulma-link-h);--bulma-tag-s:var(--bulma-link-s);--bulma-tag-background-l:var(--bulma-link-l);--bulma-tag-color-l:var(--bulma-link-invert-l)}.tag.is-link.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-link-light-invert-l)}.tag.is-info{--bulma-tag-h:var(--bulma-info-h);--bulma-tag-s:var(--bulma-info-s);--bulma-tag-background-l:var(--bulma-info-l);--bulma-tag-color-l:var(--bulma-info-invert-l)}.tag.is-info.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-info-light-invert-l)}.tag.is-success{--bulma-tag-h:var(--bulma-success-h);--bulma-tag-s:var(--bulma-success-s);--bulma-tag-background-l:var(--bulma-success-l);--bulma-tag-color-l:var(--bulma-success-invert-l)}.tag.is-success.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-success-light-invert-l)}.tag.is-warning{--bulma-tag-h:var(--bulma-warning-h);--bulma-tag-s:var(--bulma-warning-s);--bulma-tag-background-l:var(--bulma-warning-l);--bulma-tag-color-l:var(--bulma-warning-invert-l)}.tag.is-warning.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-warning-light-invert-l)}.tag.is-danger{--bulma-tag-h:var(--bulma-danger-h);--bulma-tag-s:var(--bulma-danger-s);--bulma-tag-background-l:var(--bulma-danger-l);--bulma-tag-color-l:var(--bulma-danger-invert-l)}.tag.is-danger.is-light{--bulma-tag-background-l:var(--bulma-light-l);--bulma-tag-color-l:var(--bulma-danger-light-invert-l)}.tag.is-normal{font-size:var(--bulma-size-small)}.tag.is-medium{font-size:var(--bulma-size-normal)}.tag.is-large{font-size:var(--bulma-size-medium)}.tag .icon:first-child:not(:last-child){margin-inline-end:.1875em;margin-inline-start:-.375em}.tag .icon:last-child:not(:first-child){margin-inline-end:-.375em;margin-inline-start:.1875em}.tag .icon:first-child:last-child{margin-inline-end:-.375em;margin-inline-start:-.375em}.tag.is-delete{margin-inline-start:var(--bulma-tag-delete-margin);padding:0;position:relative;width:2em}.tag.is-delete:after,.tag.is-delete:before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag.is-delete:before{height:1px;width:50%}.tag.is-delete:after{height:50%;width:1px}.tag.is-rounded{border-radius:var(--bulma-radius-rounded)}.tag.is-hoverable,a.tag,button.tag{cursor:pointer}.tag.is-hoverable:hover,a.tag:hover,button.tag:hover{--bulma-tag-background-l-delta:var(--bulma-tag-hover-background-l-delta)}.tag.is-hoverable:active,a.tag:active,button.tag:active{--bulma-tag-background-l-delta:var(--bulma-tag-active-background-l-delta)}.subtitle,.title{--bulma-title-color:var(--bulma-text-strong);--bulma-title-family:false;--bulma-title-size:var(--bulma-size-3);--bulma-title-weight:var(--bulma-weight-extrabold);--bulma-title-line-height:1.125;--bulma-title-strong-color:inherit;--bulma-title-strong-weight:inherit;--bulma-title-sub-size:0.75em;--bulma-title-sup-size:0.75em;--bulma-subtitle-color:var(--bulma-text);--bulma-subtitle-family:false;--bulma-subtitle-size:var(--bulma-size-5);--bulma-subtitle-weight:var(--bulma-weight-normal);--bulma-subtitle-line-height:1.25;--bulma-subtitle-strong-color:var(--bulma-text-strong);--bulma-subtitle-strong-weight:var(--bulma-weight-semibold);word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:var(--bulma-title-sub-size)}.subtitle sup,.title sup{font-size:var(--bulma-title-sup-size)}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:var(--bulma-title-color);font-size:var(--bulma-title-size);font-weight:var(--bulma-title-weight);line-height:var(--bulma-title-line-height)}.title strong{color:var(--bulma-title-strong-color);font-weight:var(--bulma-title-strong-weight)}.title:not(.is-spaced):has(+.subtitle){margin-bottom:0}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:var(--bulma-subtitle-color);font-size:var(--bulma-subtitle-size);font-weight:var(--bulma-subtitle-weight);line-height:var(--bulma-subtitle-line-height)}.subtitle strong{color:var(--bulma-subtitle-strong-color);font-weight:var(--bulma-subtitle-strong-weight)}.subtitle:not(.is-spaced):has(+.title){margin-bottom:0}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.control,.input,.select,.textarea{--bulma-input-h:var(--bulma-scheme-h);--bulma-input-s:var(--bulma-scheme-s);--bulma-input-l:var(--bulma-scheme-main-l);--bulma-input-border-style:solid;--bulma-input-border-width:var(--bulma-control-border-width);--bulma-input-border-l:var(--bulma-border-l);--bulma-input-border-l-delta:0%;--bulma-input-border-color:hsl(var(--bulma-input-h),var(--bulma-input-s),calc(var(--bulma-input-border-l) + var(--bulma-input-border-l-delta)));--bulma-input-hover-border-l-delta:var(--bulma-hover-border-l-delta);--bulma-input-active-border-l-delta:var(--bulma-active-border-l-delta);--bulma-input-focus-h:var(--bulma-focus-h);--bulma-input-focus-s:var(--bulma-focus-s);--bulma-input-focus-l:var(--bulma-focus-l);--bulma-input-focus-shadow-size:var(--bulma-focus-shadow-size);--bulma-input-focus-shadow-alpha:var(--bulma-focus-shadow-alpha);--bulma-input-color-l:var(--bulma-text-strong-l);--bulma-input-background-l:var(--bulma-scheme-main-l);--bulma-input-background-l-delta:0%;--bulma-input-height:var(--bulma-control-height);--bulma-input-shadow:inset 0 0.0625em 0.125em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.05);--bulma-input-placeholder-color:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-strong-l),0.3);--bulma-input-disabled-color:var(--bulma-text-weak);--bulma-input-disabled-background-color:var(--bulma-background);--bulma-input-disabled-border-color:var(--bulma-background);--bulma-input-disabled-placeholder-color:hsla(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-weak-l),0.3);--bulma-input-arrow:var(--bulma-link);--bulma-input-icon-color:var(--bulma-text-light);--bulma-input-icon-hover-color:var(--bulma-text-weak);--bulma-input-icon-focus-color:var(--bulma-link);--bulma-input-radius:var(--bulma-radius)}.input,.select select,.textarea{background-color:hsl(var(--bulma-input-h),var(--bulma-input-s),calc(var(--bulma-input-background-l) + var(--bulma-input-background-l-delta)));border-color:var(--bulma-input-border-color);border-radius:var(--bulma-input-radius);color:hsl(var(--bulma-input-h),var(--bulma-input-s),var(--bulma-input-color-l))}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:var(--bulma-input-placeholder-color)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:var(--bulma-input-placeholder-color)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:var(--bulma-input-placeholder-color)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:var(--bulma-input-placeholder-color)}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{--bulma-input-border-l-delta:var(--bulma-input-hover-border-l-delta)}.input:active,.is-active.input,.is-active.textarea,.select select.is-active,.select select:active,.textarea:active{--bulma-input-border-l-delta:var(--bulma-input-active-border-l-delta)}.input:focus,.input:focus-within,.is-focused.input,.is-focused.textarea,.select select.is-focused,.select select:focus,.select select:focus-within,.textarea:focus,.textarea:focus-within{border-color:hsl(var(--bulma-input-focus-h),var(--bulma-input-focus-s),var(--bulma-input-focus-l));box-shadow:var(--bulma-input-focus-shadow-size) hsla(var(--bulma-input-focus-h),var(--bulma-input-focus-s),var(--bulma-input-focus-l),var(--bulma-input-focus-shadow-alpha))}.select fieldset[disabled] select,.select select[disabled],[disabled].input,[disabled].textarea,fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:var(--bulma-input-disabled-background-color);border-color:var(--bulma-input-disabled-border-color);box-shadow:none;color:var(--bulma-input-disabled-color)}.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]::-moz-placeholder,[disabled].input::-moz-placeholder,[disabled].textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:var(--bulma-input-disabled-placeholder-color)}.select fieldset[disabled] select::-webkit-input-placeholder,.select select[disabled]::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder{color:var(--bulma-input-disabled-placeholder-color)}.select fieldset[disabled] select:-moz-placeholder,.select select[disabled]:-moz-placeholder,[disabled].input:-moz-placeholder,[disabled].textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder{color:var(--bulma-input-disabled-placeholder-color)}.select fieldset[disabled] select:-ms-input-placeholder,.select select[disabled]:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder{color:var(--bulma-input-disabled-placeholder-color)}.input,.textarea{box-shadow:inset 0 .0625em .125em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),.05);max-width:100%;width:100%}[readonly].input,[readonly].textarea{box-shadow:none}.is-white.input,.is-white.textarea{--bulma-input-h:var(--bulma-white-h);--bulma-input-s:var(--bulma-white-s);--bulma-input-l:var(--bulma-white-l);--bulma-input-focus-h:var(--bulma-white-h);--bulma-input-focus-s:var(--bulma-white-s);--bulma-input-focus-l:var(--bulma-white-l);--bulma-input-border-l:var(--bulma-white-l)}.is-black.input,.is-black.textarea{--bulma-input-h:var(--bulma-black-h);--bulma-input-s:var(--bulma-black-s);--bulma-input-l:var(--bulma-black-l);--bulma-input-focus-h:var(--bulma-black-h);--bulma-input-focus-s:var(--bulma-black-s);--bulma-input-focus-l:var(--bulma-black-l);--bulma-input-border-l:var(--bulma-black-l)}.is-light.input,.is-light.textarea{--bulma-input-h:var(--bulma-light-h);--bulma-input-s:var(--bulma-light-s);--bulma-input-l:var(--bulma-light-l);--bulma-input-focus-h:var(--bulma-light-h);--bulma-input-focus-s:var(--bulma-light-s);--bulma-input-focus-l:var(--bulma-light-l);--bulma-input-border-l:var(--bulma-light-l)}.is-dark.input,.is-dark.textarea{--bulma-input-h:var(--bulma-dark-h);--bulma-input-s:var(--bulma-dark-s);--bulma-input-l:var(--bulma-dark-l);--bulma-input-focus-h:var(--bulma-dark-h);--bulma-input-focus-s:var(--bulma-dark-s);--bulma-input-focus-l:var(--bulma-dark-l);--bulma-input-border-l:var(--bulma-dark-l)}.is-text.input,.is-text.textarea{--bulma-input-h:var(--bulma-text-h);--bulma-input-s:var(--bulma-text-s);--bulma-input-l:var(--bulma-text-l);--bulma-input-focus-h:var(--bulma-text-h);--bulma-input-focus-s:var(--bulma-text-s);--bulma-input-focus-l:var(--bulma-text-l);--bulma-input-border-l:var(--bulma-text-l)}.is-primary.input,.is-primary.textarea{--bulma-input-h:var(--bulma-primary-h);--bulma-input-s:var(--bulma-primary-s);--bulma-input-l:var(--bulma-primary-l);--bulma-input-focus-h:var(--bulma-primary-h);--bulma-input-focus-s:var(--bulma-primary-s);--bulma-input-focus-l:var(--bulma-primary-l);--bulma-input-border-l:var(--bulma-primary-l)}.is-link.input,.is-link.textarea{--bulma-input-h:var(--bulma-link-h);--bulma-input-s:var(--bulma-link-s);--bulma-input-l:var(--bulma-link-l);--bulma-input-focus-h:var(--bulma-link-h);--bulma-input-focus-s:var(--bulma-link-s);--bulma-input-focus-l:var(--bulma-link-l);--bulma-input-border-l:var(--bulma-link-l)}.is-info.input,.is-info.textarea{--bulma-input-h:var(--bulma-info-h);--bulma-input-s:var(--bulma-info-s);--bulma-input-l:var(--bulma-info-l);--bulma-input-focus-h:var(--bulma-info-h);--bulma-input-focus-s:var(--bulma-info-s);--bulma-input-focus-l:var(--bulma-info-l);--bulma-input-border-l:var(--bulma-info-l)}.is-success.input,.is-success.textarea{--bulma-input-h:var(--bulma-success-h);--bulma-input-s:var(--bulma-success-s);--bulma-input-l:var(--bulma-success-l);--bulma-input-focus-h:var(--bulma-success-h);--bulma-input-focus-s:var(--bulma-success-s);--bulma-input-focus-l:var(--bulma-success-l);--bulma-input-border-l:var(--bulma-success-l)}.is-warning.input,.is-warning.textarea{--bulma-input-h:var(--bulma-warning-h);--bulma-input-s:var(--bulma-warning-s);--bulma-input-l:var(--bulma-warning-l);--bulma-input-focus-h:var(--bulma-warning-h);--bulma-input-focus-s:var(--bulma-warning-s);--bulma-input-focus-l:var(--bulma-warning-l);--bulma-input-border-l:var(--bulma-warning-l)}.is-danger.input,.is-danger.textarea{--bulma-input-h:var(--bulma-danger-h);--bulma-input-s:var(--bulma-danger-s);--bulma-input-l:var(--bulma-danger-l);--bulma-input-focus-h:var(--bulma-danger-h);--bulma-input-focus-s:var(--bulma-danger-s);--bulma-input-focus-l:var(--bulma-danger-l);--bulma-input-border-l:var(--bulma-danger-l)}.is-small.input,.is-small.textarea{border-radius:var(--bulma-radius-small);font-size:var(--bulma-size-small)}.is-medium.input,.is-medium.textarea{font-size:var(--bulma-size-medium)}.is-large.input,.is-large.textarea{font-size:var(--bulma-size-large)}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:var(--bulma-radius-rounded);padding-left:calc(1.125em - 1px);padding-right:calc(1.125em - 1px)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{--bulma-textarea-padding:var(--bulma-control-padding-horizontal);--bulma-textarea-max-height:40em;--bulma-textarea-min-height:8em;display:block;max-width:100%;min-width:100%;padding:var(--bulma-textarea-padding);resize:vertical}.textarea:not([rows]){max-height:var(--bulma-textarea-max-height);min-height:var(--bulma-textarea-min-height)}.textarea[rows]{height:auto}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox input[disabled],.radio input[disabled],[disabled].checkbox,[disabled].radio,fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:var(--bulma-text-weak);cursor:not-allowed}.checkboxes,.radios{column-gap:1em;display:flex;flex-wrap:wrap;row-gap:.5em}.select{--bulma-input-h:var(--bulma-scheme-h);--bulma-input-s:var(--bulma-scheme-s);--bulma-input-border-style:solid;--bulma-input-border-width:1px;--bulma-input-border-l:var(--bulma-border-l);display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:var(--bulma-control-height)}.select:not(.is-multiple):not(.is-loading):after{inset-inline-end:1.125em;z-index:4}.select.is-rounded select{border-radius:var(--bulma-radius-rounded);padding-inline-start:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:var(--bulma-background)}.select select:not([multiple]){padding-inline-end:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select.is-white{--bulma-input-h:var(--bulma-white-h);--bulma-input-s:var(--bulma-white-s);--bulma-input-l:var(--bulma-white-l);--bulma-input-focus-h:var(--bulma-white-h);--bulma-input-focus-s:var(--bulma-white-s);--bulma-input-focus-l:var(--bulma-white-l);--bulma-input-border-l:var(--bulma-white-l);--bulma-arrow-color:var(--bulma-white)}.select.is-black{--bulma-input-h:var(--bulma-black-h);--bulma-input-s:var(--bulma-black-s);--bulma-input-l:var(--bulma-black-l);--bulma-input-focus-h:var(--bulma-black-h);--bulma-input-focus-s:var(--bulma-black-s);--bulma-input-focus-l:var(--bulma-black-l);--bulma-input-border-l:var(--bulma-black-l);--bulma-arrow-color:var(--bulma-black)}.select.is-light{--bulma-input-h:var(--bulma-light-h);--bulma-input-s:var(--bulma-light-s);--bulma-input-l:var(--bulma-light-l);--bulma-input-focus-h:var(--bulma-light-h);--bulma-input-focus-s:var(--bulma-light-s);--bulma-input-focus-l:var(--bulma-light-l);--bulma-input-border-l:var(--bulma-light-l);--bulma-arrow-color:var(--bulma-light)}.select.is-dark{--bulma-input-h:var(--bulma-dark-h);--bulma-input-s:var(--bulma-dark-s);--bulma-input-l:var(--bulma-dark-l);--bulma-input-focus-h:var(--bulma-dark-h);--bulma-input-focus-s:var(--bulma-dark-s);--bulma-input-focus-l:var(--bulma-dark-l);--bulma-input-border-l:var(--bulma-dark-l);--bulma-arrow-color:var(--bulma-dark)}.select.is-text{--bulma-input-h:var(--bulma-text-h);--bulma-input-s:var(--bulma-text-s);--bulma-input-l:var(--bulma-text-l);--bulma-input-focus-h:var(--bulma-text-h);--bulma-input-focus-s:var(--bulma-text-s);--bulma-input-focus-l:var(--bulma-text-l);--bulma-input-border-l:var(--bulma-text-l);--bulma-arrow-color:var(--bulma-text)}.select.is-primary{--bulma-input-h:var(--bulma-primary-h);--bulma-input-s:var(--bulma-primary-s);--bulma-input-l:var(--bulma-primary-l);--bulma-input-focus-h:var(--bulma-primary-h);--bulma-input-focus-s:var(--bulma-primary-s);--bulma-input-focus-l:var(--bulma-primary-l);--bulma-input-border-l:var(--bulma-primary-l);--bulma-arrow-color:var(--bulma-primary)}.select.is-link{--bulma-input-h:var(--bulma-link-h);--bulma-input-s:var(--bulma-link-s);--bulma-input-l:var(--bulma-link-l);--bulma-input-focus-h:var(--bulma-link-h);--bulma-input-focus-s:var(--bulma-link-s);--bulma-input-focus-l:var(--bulma-link-l);--bulma-input-border-l:var(--bulma-link-l);--bulma-arrow-color:var(--bulma-link)}.select.is-info{--bulma-input-h:var(--bulma-info-h);--bulma-input-s:var(--bulma-info-s);--bulma-input-l:var(--bulma-info-l);--bulma-input-focus-h:var(--bulma-info-h);--bulma-input-focus-s:var(--bulma-info-s);--bulma-input-focus-l:var(--bulma-info-l);--bulma-input-border-l:var(--bulma-info-l);--bulma-arrow-color:var(--bulma-info)}.select.is-success{--bulma-input-h:var(--bulma-success-h);--bulma-input-s:var(--bulma-success-s);--bulma-input-l:var(--bulma-success-l);--bulma-input-focus-h:var(--bulma-success-h);--bulma-input-focus-s:var(--bulma-success-s);--bulma-input-focus-l:var(--bulma-success-l);--bulma-input-border-l:var(--bulma-success-l);--bulma-arrow-color:var(--bulma-success)}.select.is-warning{--bulma-input-h:var(--bulma-warning-h);--bulma-input-s:var(--bulma-warning-s);--bulma-input-l:var(--bulma-warning-l);--bulma-input-focus-h:var(--bulma-warning-h);--bulma-input-focus-s:var(--bulma-warning-s);--bulma-input-focus-l:var(--bulma-warning-l);--bulma-input-border-l:var(--bulma-warning-l);--bulma-arrow-color:var(--bulma-warning)}.select.is-danger{--bulma-input-h:var(--bulma-danger-h);--bulma-input-s:var(--bulma-danger-s);--bulma-input-l:var(--bulma-danger-l);--bulma-input-focus-h:var(--bulma-danger-h);--bulma-input-focus-s:var(--bulma-danger-s);--bulma-input-focus-l:var(--bulma-danger-l);--bulma-input-border-l:var(--bulma-danger-l);--bulma-arrow-color:var(--bulma-danger)}.select.is-small{border-radius:var(--bulma-radius-small);font-size:var(--bulma-size-small)}.select.is-medium{font-size:var(--bulma-size-medium)}.select.is-large{font-size:var(--bulma-size-large)}.select.is-disabled:after{border-color:var(--bulma-text-weak)!important;opacity:.5}.select.is-fullwidth,.select.is-fullwidth select{width:100%}.select.is-loading:after{inset-inline-end:.625em;margin-top:0;position:absolute;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:var(--bulma-size-small)}.select.is-loading.is-medium:after{font-size:var(--bulma-size-medium)}.select.is-loading.is-large:after{font-size:var(--bulma-size-large)}.file{--bulma-file-radius:var(--bulma-radius);--bulma-file-name-border-color:var(--bulma-border);--bulma-file-name-border-style:solid;--bulma-file-name-border-width:1px 1px 1px 0;--bulma-file-name-max-width:16em;--bulma-file-h:var(--bulma-scheme-h);--bulma-file-s:var(--bulma-scheme-s);--bulma-file-background-l:var(--bulma-scheme-main-ter-l);--bulma-file-background-l-delta:0%;--bulma-file-hover-background-l-delta:-5%;--bulma-file-active-background-l-delta:-10%;--bulma-file-border-l:var(--bulma-border-l);--bulma-file-border-l-delta:0%;--bulma-file-hover-border-l-delta:-10%;--bulma-file-active-border-l-delta:-20%;--bulma-file-cta-color-l:var(--bulma-text-strong-l);--bulma-file-name-color-l:var(--bulma-text-strong-l);--bulma-file-color-l-delta:0%;--bulma-file-hover-color-l-delta:-5%;--bulma-file-active-color-l-delta:-10%;align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white{--bulma-file-h:var(--bulma-white-h);--bulma-file-s:var(--bulma-white-s);--bulma-file-background-l:var(--bulma-white-l);--bulma-file-border-l:var(--bulma-white-l);--bulma-file-cta-color-l:var(--bulma-white-invert-l);--bulma-file-name-color-l:var(--bulma-white-on-scheme-l)}.file.is-black{--bulma-file-h:var(--bulma-black-h);--bulma-file-s:var(--bulma-black-s);--bulma-file-background-l:var(--bulma-black-l);--bulma-file-border-l:var(--bulma-black-l);--bulma-file-cta-color-l:var(--bulma-black-invert-l);--bulma-file-name-color-l:var(--bulma-black-on-scheme-l)}.file.is-light{--bulma-file-h:var(--bulma-light-h);--bulma-file-s:var(--bulma-light-s);--bulma-file-background-l:var(--bulma-light-l);--bulma-file-border-l:var(--bulma-light-l);--bulma-file-cta-color-l:var(--bulma-light-invert-l);--bulma-file-name-color-l:var(--bulma-light-on-scheme-l)}.file.is-dark{--bulma-file-h:var(--bulma-dark-h);--bulma-file-s:var(--bulma-dark-s);--bulma-file-background-l:var(--bulma-dark-l);--bulma-file-border-l:var(--bulma-dark-l);--bulma-file-cta-color-l:var(--bulma-dark-invert-l);--bulma-file-name-color-l:var(--bulma-dark-on-scheme-l)}.file.is-text{--bulma-file-h:var(--bulma-text-h);--bulma-file-s:var(--bulma-text-s);--bulma-file-background-l:var(--bulma-text-l);--bulma-file-border-l:var(--bulma-text-l);--bulma-file-cta-color-l:var(--bulma-text-invert-l);--bulma-file-name-color-l:var(--bulma-text-on-scheme-l)}.file.is-primary{--bulma-file-h:var(--bulma-primary-h);--bulma-file-s:var(--bulma-primary-s);--bulma-file-background-l:var(--bulma-primary-l);--bulma-file-border-l:var(--bulma-primary-l);--bulma-file-cta-color-l:var(--bulma-primary-invert-l);--bulma-file-name-color-l:var(--bulma-primary-on-scheme-l)}.file.is-link{--bulma-file-h:var(--bulma-link-h);--bulma-file-s:var(--bulma-link-s);--bulma-file-background-l:var(--bulma-link-l);--bulma-file-border-l:var(--bulma-link-l);--bulma-file-cta-color-l:var(--bulma-link-invert-l);--bulma-file-name-color-l:var(--bulma-link-on-scheme-l)}.file.is-info{--bulma-file-h:var(--bulma-info-h);--bulma-file-s:var(--bulma-info-s);--bulma-file-background-l:var(--bulma-info-l);--bulma-file-border-l:var(--bulma-info-l);--bulma-file-cta-color-l:var(--bulma-info-invert-l);--bulma-file-name-color-l:var(--bulma-info-on-scheme-l)}.file.is-success{--bulma-file-h:var(--bulma-success-h);--bulma-file-s:var(--bulma-success-s);--bulma-file-background-l:var(--bulma-success-l);--bulma-file-border-l:var(--bulma-success-l);--bulma-file-cta-color-l:var(--bulma-success-invert-l);--bulma-file-name-color-l:var(--bulma-success-on-scheme-l)}.file.is-warning{--bulma-file-h:var(--bulma-warning-h);--bulma-file-s:var(--bulma-warning-s);--bulma-file-background-l:var(--bulma-warning-l);--bulma-file-border-l:var(--bulma-warning-l);--bulma-file-cta-color-l:var(--bulma-warning-invert-l);--bulma-file-name-color-l:var(--bulma-warning-on-scheme-l)}.file.is-danger{--bulma-file-h:var(--bulma-danger-h);--bulma-file-s:var(--bulma-danger-s);--bulma-file-background-l:var(--bulma-danger-l);--bulma-file-border-l:var(--bulma-danger-l);--bulma-file-cta-color-l:var(--bulma-danger-invert-l);--bulma-file-name-color-l:var(--bulma-danger-on-scheme-l)}.file.is-small{font-size:var(--bulma-size-small)}.file.is-normal{font-size:var(--bulma-size-normal)}.file.is-medium{font-size:var(--bulma-size-medium)}.file.is-medium .file-icon .fa{font-size:1.5rem}.file.is-large{font-size:var(--bulma-size-large)}.file.is-large .file-icon .fa{font-size:2rem}.file.has-name .file-cta{border-end-end-radius:0;border-start-end-radius:0}.file.has-name .file-name{border-end-start-radius:0;border-start-start-radius:0}.file.has-name.is-empty .file-cta{border-radius:var(--bulma-file-radius)}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:1.5rem}.file.is-boxed.is-small .file-icon .fa{font-size:1rem}.file.is-boxed.is-medium .file-icon .fa{font-size:2rem}.file.is-boxed.is-large .file-icon .fa{font-size:2.5rem}.file.is-boxed.has-name .file-cta{border-end-end-radius:0;border-end-start-radius:0;border-start-end-radius:var(--bulma-file-radius);border-start-start-radius:var(--bulma-file-radius)}.file.is-boxed.has-name .file-name{border-end-end-radius:var(--bulma-file-radius);border-end-start-radius:var(--bulma-file-radius);border-start-end-radius:0;border-start-start-radius:0;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 var(--bulma-file-radius) var(--bulma-file-radius) 0}.file.is-right .file-name{border-radius:var(--bulma-file-radius) 0 0 var(--bulma-file-radius);border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;cursor:pointer;display:flex;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover{--bulma-file-background-l-delta:var(--bulma-file-hover-background-l-delta);--bulma-file-border-l-delta:var(--bulma-file-hover-border-l-delta);--bulma-file-color-l-delta:var(--bulma-file-hover-color-l-delta)}.file-label:active{--bulma-file-background-l-delta:var(--bulma-file-active-background-l-delta);--bulma-file-border-l-delta:var(--bulma-file-active-border-l-delta);--bulma-file-color-l-delta:var(--bulma-file-active-color-l-delta)}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:hsl(var(--bulma-file-h),var(--bulma-file-s),calc(var(--bulma-file-border-l) + var(--bulma-file-border-l-delta)));border-radius:var(--bulma-file-radius);font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:hsl(var(--bulma-file-h),var(--bulma-file-s),calc(var(--bulma-file-background-l) + var(--bulma-file-background-l-delta)));color:hsl(var(--bulma-file-h),var(--bulma-file-s),calc(var(--bulma-file-cta-color-l) + var(--bulma-file-color-l-delta)))}.file-name{border-color:hsl(var(--bulma-file-h),var(--bulma-file-s),calc(var(--bulma-file-border-l) + var(--bulma-file-color-l-delta)));border-style:var(--bulma-file-name-border-style);border-width:var(--bulma-file-name-border-width);color:hsl(var(--bulma-file-h),var(--bulma-file-s),calc(var(--bulma-file-name-color-l) + var(--bulma-file-color-l-delta)));display:block;max-width:var(--bulma-file-name-max-width);overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-inline-end:.5em;width:1em}.file-icon .fa{font-size:1rem}:root{--bulma-label-color:var(--bulma-text-strong);--bulma-label-spacing:0.5em;--bulma-label-weight:var(--bulma-weight-semibold);--bulma-help-size:var(--bulma-size-small);--bulma-field-block-spacing:0.75rem}.label{color:var(--bulma-label-color);display:block;font-size:var(--bulma-size-normal);font-weight:var(--bulma-weight-semibold)}.label:not(:last-child){margin-bottom:var(--bulma-label-spacing)}.label.is-small{font-size:var(--bulma-size-small)}.label.is-medium{font-size:var(--bulma-size-medium)}.label.is-large{font-size:var(--bulma-size-large)}.help{display:block;font-size:var(--bulma-help-size);margin-top:.25rem}.help.is-white{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l))}.help.is-black{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l))}.help.is-light{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l))}.help.is-dark{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l))}.help.is-text{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l))}.help.is-primary{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l))}.help.is-link{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l))}.help.is-info{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l))}.help.is-success{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l))}.help.is-warning{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l))}.help.is-danger{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l))}.field{--bulma-block-spacing:var(--bulma-field-block-spacing)}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-inline-end:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-end-end-radius:0;border-start-end-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-end-start-radius:0;border-start-start-radius:0}.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;gap:.75rem;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}@media print,screen and (min-width:769px){.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media print,screen and (min-width:769px){.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-inline-end:1.5rem;text-align:right}.field-label.is-small{font-size:var(--bulma-size-small);padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:var(--bulma-size-medium);padding-top:.375em}.field-label.is-large{font-size:var(--bulma-size-large);padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media print,screen and (min-width:769px){.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-inline-end:.75rem}}.control{box-sizing:border-box;clear:both;font-size:var(--bulma-size-normal);position:relative;text-align:inherit}.control.has-icons-left .input:hover~.icon,.control.has-icons-left .select:hover~.icon,.control.has-icons-right .input:hover~.icon,.control.has-icons-right .select:hover~.icon{color:var(--bulma-input-icon-hover-color)}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:var(--bulma-input-icon-focus-color)}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:var(--bulma-size-small)}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:var(--bulma-size-medium)}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:var(--bulma-size-large)}.control.has-icons-left .icon,.control.has-icons-right .icon{color:var(--bulma-input-icon-color);height:var(--bulma-input-height);pointer-events:none;position:absolute;top:0;width:var(--bulma-input-height);z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:var(--bulma-input-height)}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:var(--bulma-input-height)}.control.has-icons-right .icon.is-right{right:0}.control.is-loading:after{inset-inline-end:.75em;position:absolute!important;top:.75em;z-index:4}.control.is-loading.is-small:after{font-size:var(--bulma-size-small)}.control.is-loading.is-medium:after{font-size:var(--bulma-size-medium)}.control.is-loading.is-large:after{font-size:var(--bulma-size-large)}.breadcrumb{--bulma-breadcrumb-item-color:var(--bulma-link-text);--bulma-breadcrumb-item-hover-color:var(--bulma-link-text-hover);--bulma-breadcrumb-item-active-color:var(--bulma-link-text-active);--bulma-breadcrumb-item-padding-vertical:0;--bulma-breadcrumb-item-padding-horizontal:0.75em;--bulma-breadcrumb-item-separator-color:var(--bulma-border);font-size:var(--bulma-size-normal);white-space:nowrap}.breadcrumb a{align-items:center;color:var(--bulma-breadcrumb-item-color);display:flex;justify-content:center;padding:var(--bulma-breadcrumb-item-padding-vertical) var(--bulma-breadcrumb-item-padding-horizontal)}.breadcrumb a:hover{color:var(--bulma-breadcrumb-item-hover-color)}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-inline-start:0}.breadcrumb li.is-active a{color:var(--bulma-breadcrumb-item-active-color);cursor:default;pointer-events:none}.breadcrumb li+li:before{color:var(--bulma-breadcrumb-item-separator-color);content:"/"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-inline-end:.5em}.breadcrumb .icon:last-child{margin-inline-start:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:var(--bulma-size-small)}.breadcrumb.is-medium{font-size:var(--bulma-size-medium)}.breadcrumb.is-large{font-size:var(--bulma-size-large)}.breadcrumb.has-arrow-separator li+li:before{content:"→"}.breadcrumb.has-bullet-separator li+li:before{content:"•"}.breadcrumb.has-dot-separator li+li:before{content:"·"}.breadcrumb.has-succeeds-separator li+li:before{content:"≻"}.card{--bulma-card-color:var(--bulma-text);--bulma-card-background-color:var(--bulma-scheme-main);--bulma-card-shadow:var(--bulma-shadow);--bulma-card-radius:0.75rem;--bulma-card-header-background-color:transparent;--bulma-card-header-color:var(--bulma-text-strong);--bulma-card-header-padding:0.75rem 1rem;--bulma-card-header-shadow:0 0.125em 0.25em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.1);--bulma-card-header-weight:var(--bulma-weight-bold);--bulma-card-content-background-color:transparent;--bulma-card-content-padding:1.5rem;--bulma-card-footer-background-color:transparent;--bulma-card-footer-border-top:1px solid var(--bulma-border-weak);--bulma-card-footer-padding:0.75rem;--bulma-card-media-margin:var(--bulma-block-spacing);background-color:var(--bulma-card-background-color);border-radius:var(--bulma-card-radius);box-shadow:var(--bulma-card-shadow);color:var(--bulma-card-color);max-width:100%;position:relative}.card-content:first-child,.card-footer:first-child,.card-header:first-child{border-start-end-radius:var(--bulma-card-radius);border-start-start-radius:var(--bulma-card-radius)}.card-content:last-child,.card-footer:last-child,.card-header:last-child{border-end-end-radius:var(--bulma-card-radius);border-end-start-radius:var(--bulma-card-radius)}.card-header{align-items:stretch;background-color:var(--bulma-card-header-background-color);box-shadow:var(--bulma-card-header-shadow);display:flex}.card-header-title{align-items:center;color:var(--bulma-card-header-color);display:flex;flex-grow:1;font-weight:var(--bulma-card-header-weight);padding:var(--bulma-card-header-padding)}.card-header-icon,.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;appearance:none;background:none;border:none;color:inherit;cursor:pointer;display:flex;font-family:inherit;font-size:1em;margin:0;padding:0;padding:var(--bulma-card-header-padding)}.card-image{display:block;position:relative}.card-image:first-child img{border-start-end-radius:var(--bulma-card-radius);border-start-start-radius:var(--bulma-card-radius)}.card-image:last-child img{border-end-end-radius:var(--bulma-card-radius);border-end-start-radius:var(--bulma-card-radius)}.card-content{background-color:var(--bulma-card-content-background-color);padding:var(--bulma-card-content-padding)}.card-footer{align-items:stretch;background-color:var(--bulma-card-footer-background-color);border-top:var(--bulma-card-footer-border-top);display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:var(--bulma-card-footer-padding)}.card-footer-item:not(:last-child){border-inline-end:var(--bulma-card-footer-border-top)}.card .media:not(:last-child){margin-bottom:var(--bulma-card-media-margin)}.dropdown{--bulma-dropdown-menu-min-width:12rem;--bulma-dropdown-content-background-color:var(--bulma-scheme-main);--bulma-dropdown-content-offset:0.25rem;--bulma-dropdown-content-padding-bottom:0.5rem;--bulma-dropdown-content-padding-top:0.5rem;--bulma-dropdown-content-radius:var(--bulma-radius);--bulma-dropdown-content-shadow:var(--bulma-shadow);--bulma-dropdown-content-z:20;--bulma-dropdown-item-h:var(--bulma-scheme-h);--bulma-dropdown-item-s:var(--bulma-scheme-s);--bulma-dropdown-item-l:var(--bulma-scheme-main-l);--bulma-dropdown-item-background-l:var(--bulma-scheme-main-l);--bulma-dropdown-item-background-l-delta:0%;--bulma-dropdown-item-hover-background-l-delta:var(--bulma-hover-background-l-delta);--bulma-dropdown-item-active-background-l-delta:var(--bulma-active-background-l-delta);--bulma-dropdown-item-color-l:var(--bulma-text-strong-l);--bulma-dropdown-item-selected-h:var(--bulma-link-h);--bulma-dropdown-item-selected-s:var(--bulma-link-s);--bulma-dropdown-item-selected-l:var(--bulma-link-l);--bulma-dropdown-item-selected-background-l:var(--bulma-link-l);--bulma-dropdown-item-selected-color-l:var(--bulma-link-invert-l);--bulma-dropdown-divider-background-color:var(--bulma-border-weak);display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:var(--bulma-dropdown-content-offset);padding-top:0;top:auto}.dropdown-menu{display:none;left:0;min-width:var(--bulma-dropdown-menu-min-width);padding-top:var(--bulma-dropdown-content-offset);position:absolute;top:100%;z-index:var(--bulma-dropdown-content-z)}.dropdown-content{background-color:var(--bulma-dropdown-content-background-color);border-radius:var(--bulma-dropdown-content-radius);box-shadow:var(--bulma-dropdown-content-shadow);padding-bottom:var(--bulma-dropdown-content-padding-bottom);padding-top:var(--bulma-dropdown-content-padding-top)}.dropdown-item{color:hsl(var(--bulma-dropdown-item-h),var(--bulma-dropdown-item-s),var(--bulma-dropdown-item-color-l));display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem}a.dropdown-item,button.dropdown-item{background-color:hsl(var(--bulma-dropdown-item-h),var(--bulma-dropdown-item-s),calc(var(--bulma-dropdown-item-background-l) + var(--bulma-dropdown-item-background-l-delta)));padding-inline-end:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{--bulma-dropdown-item-background-l-delta:var(--bulma-dropdown-item-hover-background-l-delta);--bulma-dropdown-item-border-l-delta:var(--bulma-dropdown-item-hover-border-l-delta)}a.dropdown-item:active,button.dropdown-item:active{--bulma-dropdown-item-background-l-delta:var(--bulma-dropdown-item-active-background-l-delta);--bulma-dropdown-item-border-l-delta:var(--bulma-dropdown-item-active-border-l-delta)}a.dropdown-item.is-active,a.dropdown-item.is-selected,button.dropdown-item.is-active,button.dropdown-item.is-selected{--bulma-dropdown-item-h:var(--bulma-dropdown-item-selected-h);--bulma-dropdown-item-s:var(--bulma-dropdown-item-selected-s);--bulma-dropdown-item-l:var(--bulma-dropdown-item-selected-l);--bulma-dropdown-item-background-l:var(--bulma-dropdown-item-selected-background-l);--bulma-dropdown-item-color-l:var(--bulma-dropdown-item-selected-color-l)}.dropdown-divider{background-color:var(--bulma-dropdown-divider-background-color);border:none;display:block;height:1px;margin:.5rem 0}.menu{--bulma-menu-item-h:var(--bulma-scheme-h);--bulma-menu-item-s:var(--bulma-scheme-s);--bulma-menu-item-l:var(--bulma-scheme-main-l);--bulma-menu-item-background-l:var(--bulma-scheme-main-l);--bulma-menu-item-background-l-delta:0%;--bulma-menu-item-hover-background-l-delta:var(--bulma-hover-background-l-delta);--bulma-menu-item-active-background-l-delta:var(--bulma-active-background-l-delta);--bulma-menu-item-color-l:var(--bulma-text-l);--bulma-menu-item-radius:var(--bulma-radius-small);--bulma-menu-item-selected-h:var(--bulma-link-h);--bulma-menu-item-selected-s:var(--bulma-link-s);--bulma-menu-item-selected-l:var(--bulma-link-l);--bulma-menu-item-selected-background-l:var(--bulma-link-l);--bulma-menu-item-selected-color-l:var(--bulma-link-invert-l);--bulma-menu-list-border-left:1px solid var(--bulma-border);--bulma-menu-list-line-height:1.25;--bulma-menu-list-link-padding:0.5em 0.75em;--bulma-menu-nested-list-margin:0.75em;--bulma-menu-nested-list-padding-left:0.75em;--bulma-menu-label-color:var(--bulma-text-weak);--bulma-menu-label-font-size:0.75em;--bulma-menu-label-letter-spacing:0.1em;--bulma-menu-label-spacing:1em;font-size:var(--bulma-size-normal)}.menu.is-small{font-size:var(--bulma-size-small)}.menu.is-medium{font-size:var(--bulma-size-medium)}.menu.is-large{font-size:var(--bulma-size-large)}.menu-list{line-height:var(--bulma-menu-list-line-height)}.menu-list .menu-item,.menu-list a,.menu-list button{background-color:hsl(var(--bulma-menu-item-h),var(--bulma-menu-item-s),calc(var(--bulma-menu-item-background-l) + var(--bulma-menu-item-background-l-delta)));border-radius:var(--bulma-menu-item-radius);color:hsl(var(--bulma-menu-item-h),var(--bulma-menu-item-s),var(--bulma-menu-item-color-l));display:block;padding:var(--bulma-menu-list-link-padding);text-align:left;width:100%}.menu-list .menu-item:hover,.menu-list a:hover,.menu-list button:hover{--bulma-menu-item-background-l-delta:var(--bulma-menu-item-hover-background-l-delta)}.menu-list .menu-item:active,.menu-list a:active,.menu-list button:active{--bulma-menu-item-background-l-delta:var(--bulma-menu-item-active-background-l-delta)}.menu-list .menu-item.is-active,.menu-list .menu-item.is-selected,.menu-list a.is-active,.menu-list a.is-selected,.menu-list button.is-active,.menu-list button.is-selected{--bulma-menu-item-h:var(--bulma-menu-item-selected-h);--bulma-menu-item-s:var(--bulma-menu-item-selected-s);--bulma-menu-item-l:var(--bulma-menu-item-selected-l);--bulma-menu-item-background-l:var(--bulma-menu-item-selected-background-l);--bulma-menu-item-color-l:var(--bulma-menu-item-selected-color-l)}.menu-list li ul{border-inline-start:var(--bulma-menu-list-border-left);margin:var(--bulma-menu-nested-list-margin);padding-inline-start:var(--bulma-menu-nested-list-padding-left)}.menu-label{color:var(--bulma-menu-label-color);font-size:var(--bulma-menu-label-font-size);letter-spacing:var(--bulma-menu-label-letter-spacing);text-transform:uppercase}.menu-label:not(:first-child){margin-top:var(--bulma-menu-label-spacing)}.menu-label:not(:last-child){margin-bottom:var(--bulma-menu-label-spacing)}.message{--bulma-message-border-l-delta:-20%;--bulma-message-radius:var(--bulma-radius);--bulma-message-header-weight:var(--bulma-weight-semibold);--bulma-message-header-padding:1em 1.25em;--bulma-message-header-radius:var(--bulma-radius);--bulma-message-body-border-width:0 0 0 4px;--bulma-message-body-color:var(--bulma-text);--bulma-message-body-padding:1.25em 1.5em;--bulma-message-body-radius:var(--bulma-radius-small);--bulma-message-body-pre-code-background-color:transparent;--bulma-message-header-body-border-width:0;--bulma-message-h:var(--bulma-scheme-h);--bulma-message-s:var(--bulma-scheme-s);--bulma-message-background-l:var(--bulma-background-l);--bulma-message-border-l:var(--bulma-border-l);--bulma-message-border-style:solid;--bulma-message-border-width:0.25em;--bulma-message-color-l:var(--bulma-text-l);--bulma-message-header-background-l:var(--bulma-dark-l);--bulma-message-header-color-l:var(--bulma-text-dark-invert-l);border-radius:var(--bulma-message-radius);color:hsl(var(--bulma-message-h),var(--bulma-message-s),var(--bulma-message-color-l));font-size:var(--bulma-size-normal)}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:var(--bulma-size-small)}.message.is-medium{font-size:var(--bulma-size-medium)}.message.is-large{font-size:var(--bulma-size-large)}.message.is-white{--bulma-message-h:var(--bulma-white-h);--bulma-message-s:var(--bulma-white-s);--bulma-message-border-l:calc(var(--bulma-white-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-white-on-scheme-l);--bulma-message-header-background-l:var(--bulma-white-l);--bulma-message-header-color-l:var(--bulma-white-invert-l)}.message.is-black{--bulma-message-h:var(--bulma-black-h);--bulma-message-s:var(--bulma-black-s);--bulma-message-border-l:calc(var(--bulma-black-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-black-on-scheme-l);--bulma-message-header-background-l:var(--bulma-black-l);--bulma-message-header-color-l:var(--bulma-black-invert-l)}.message.is-light{--bulma-message-h:var(--bulma-light-h);--bulma-message-s:var(--bulma-light-s);--bulma-message-border-l:calc(var(--bulma-light-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-light-on-scheme-l);--bulma-message-header-background-l:var(--bulma-light-l);--bulma-message-header-color-l:var(--bulma-light-invert-l)}.message.is-dark{--bulma-message-h:var(--bulma-dark-h);--bulma-message-s:var(--bulma-dark-s);--bulma-message-border-l:calc(var(--bulma-dark-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-dark-on-scheme-l);--bulma-message-header-background-l:var(--bulma-dark-l);--bulma-message-header-color-l:var(--bulma-dark-invert-l)}.message.is-text{--bulma-message-h:var(--bulma-text-h);--bulma-message-s:var(--bulma-text-s);--bulma-message-border-l:calc(var(--bulma-text-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-text-on-scheme-l);--bulma-message-header-background-l:var(--bulma-text-l);--bulma-message-header-color-l:var(--bulma-text-invert-l)}.message.is-primary{--bulma-message-h:var(--bulma-primary-h);--bulma-message-s:var(--bulma-primary-s);--bulma-message-border-l:calc(var(--bulma-primary-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-primary-on-scheme-l);--bulma-message-header-background-l:var(--bulma-primary-l);--bulma-message-header-color-l:var(--bulma-primary-invert-l)}.message.is-link{--bulma-message-h:var(--bulma-link-h);--bulma-message-s:var(--bulma-link-s);--bulma-message-border-l:calc(var(--bulma-link-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-link-on-scheme-l);--bulma-message-header-background-l:var(--bulma-link-l);--bulma-message-header-color-l:var(--bulma-link-invert-l)}.message.is-info{--bulma-message-h:var(--bulma-info-h);--bulma-message-s:var(--bulma-info-s);--bulma-message-border-l:calc(var(--bulma-info-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-info-on-scheme-l);--bulma-message-header-background-l:var(--bulma-info-l);--bulma-message-header-color-l:var(--bulma-info-invert-l)}.message.is-success{--bulma-message-h:var(--bulma-success-h);--bulma-message-s:var(--bulma-success-s);--bulma-message-border-l:calc(var(--bulma-success-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-success-on-scheme-l);--bulma-message-header-background-l:var(--bulma-success-l);--bulma-message-header-color-l:var(--bulma-success-invert-l)}.message.is-warning{--bulma-message-h:var(--bulma-warning-h);--bulma-message-s:var(--bulma-warning-s);--bulma-message-border-l:calc(var(--bulma-warning-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-warning-on-scheme-l);--bulma-message-header-background-l:var(--bulma-warning-l);--bulma-message-header-color-l:var(--bulma-warning-invert-l)}.message.is-danger{--bulma-message-h:var(--bulma-danger-h);--bulma-message-s:var(--bulma-danger-s);--bulma-message-border-l:calc(var(--bulma-danger-l) + var(--bulma-message-border-l-delta));--bulma-message-color-l:var(--bulma-danger-on-scheme-l);--bulma-message-header-background-l:var(--bulma-danger-l);--bulma-message-header-color-l:var(--bulma-danger-invert-l)}.message-header{align-items:center;background-color:hsl(var(--bulma-message-h),var(--bulma-message-s),var(--bulma-message-header-background-l));border-start-end-radius:var(--bulma-message-header-radius);border-start-start-radius:var(--bulma-message-header-radius);color:hsl(var(--bulma-message-h),var(--bulma-message-s),var(--bulma-message-header-color-l));display:flex;font-weight:var(--bulma-message-header-weight);justify-content:space-between;line-height:1.25;padding:var(--bulma-message-header-padding);position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-inline-start:.75em}.message-header+.message-body{border-start-end-radius:0;border-start-start-radius:0;border-width:var(--bulma-message-header-body-border-width)}.message-body{background-color:hsl(var(--bulma-message-h),var(--bulma-message-s),var(--bulma-message-background-l));border-inline-start-color:hsl(var(--bulma-message-h),var(--bulma-message-s),var(--bulma-message-border-l));border-inline-start-style:var(--bulma-message-border-style);border-inline-start-width:var(--bulma-message-border-width);border-radius:var(--bulma-message-body-radius);padding:var(--bulma-message-body-padding)}.message-body code,.message-body pre{background-color:hsl(var(--bulma-message-h),var(--bulma-message-s),var(--bulma-message-header-color-l));color:hsl(var(--bulma-message-h),var(--bulma-message-s),var(--bulma-message-header-background-l))}.message-body pre code{background-color:var(--bulma-message-body-pre-code-background-color)}.modal{--bulma-modal-z:40;--bulma-modal-background-background-color:hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.86);--bulma-modal-content-width:40rem;--bulma-modal-content-margin-mobile:1.25rem;--bulma-modal-content-spacing-mobile:10rem;--bulma-modal-content-spacing-tablet:2.5rem;--bulma-modal-close-dimensions:2.5rem;--bulma-modal-close-right:1.25rem;--bulma-modal-close-top:1.25rem;--bulma-modal-card-spacing:2.5rem;--bulma-modal-card-head-background-color:var(--bulma-scheme-main);--bulma-modal-card-head-padding:2rem;--bulma-modal-card-head-radius:var(--bulma-radius-large);--bulma-modal-card-title-color:var(--bulma-text-strong);--bulma-modal-card-title-line-height:1;--bulma-modal-card-title-size:var(--bulma-size-4);--bulma-modal-card-foot-background-color:var(--bulma-scheme-main-bis);--bulma-modal-card-foot-radius:var(--bulma-radius-large);--bulma-modal-card-body-background-color:var(--bulma-scheme-main);--bulma-modal-card-body-padding:2rem;align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:var(--bulma-modal-z)}.modal.is-active{display:flex}.modal-background{background-color:var(--bulma-modal-background-background-color)}.modal-card,.modal-content{margin:0 var(--bulma-modal-content-margin-mobile);max-height:calc(100vh - var(--bulma-modal-content-spacing-mobile));overflow:auto;position:relative;width:100%}@media screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - var(--bulma-modal-content-spacing-tablet));width:var(--bulma-modal-content-width)}}.modal-close{background:none;height:var(--bulma-modal-close-dimensions);inset-inline-end:var(--bulma-modal-close-right);position:fixed;top:var(--bulma-modal-close-top);width:var(--bulma-modal-close-dimensions)}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - var(--bulma-modal-card-spacing));overflow:hidden;overflow-y:visible}.modal-card-foot,.modal-card-head{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start;padding:var(--bulma-modal-card-head-padding);position:relative}.modal-card-head{background-color:var(--bulma-modal-card-head-background-color);border-start-end-radius:var(--bulma-modal-card-head-radius);border-start-start-radius:var(--bulma-modal-card-head-radius);box-shadow:var(--bulma-shadow)}.modal-card-title{color:var(--bulma-modal-card-title-color);flex-grow:1;flex-shrink:0;font-size:var(--bulma-modal-card-title-size);line-height:var(--bulma-modal-card-title-line-height)}.modal-card-foot{background-color:var(--bulma-modal-card-foot-background-color);border-end-end-radius:var(--bulma-modal-card-foot-radius);border-end-start-radius:var(--bulma-modal-card-foot-radius)}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:var(--bulma-modal-card-body-background-color);flex-grow:1;flex-shrink:1;overflow:auto;padding:var(--bulma-modal-card-body-padding)}:root{--bulma-navbar-height:3.25rem}.navbar{--bulma-navbar-h:var(--bulma-scheme-h);--bulma-navbar-s:var(--bulma-scheme-s);--bulma-navbar-l:var(--bulma-scheme-main-l);--bulma-navbar-background-color:var(--bulma-scheme-main);--bulma-navbar-box-shadow-size:0 0.125em 0 0;--bulma-navbar-box-shadow-color:var(--bulma-background);--bulma-navbar-padding-vertical:1rem;--bulma-navbar-padding-horizontal:2rem;--bulma-navbar-z:30;--bulma-navbar-fixed-z:30;--bulma-navbar-item-background-a:0;--bulma-navbar-item-background-l:var(--bulma-scheme-main-l);--bulma-navbar-item-background-l-delta:0%;--bulma-navbar-item-hover-background-l-delta:var(--bulma-hover-background-l-delta);--bulma-navbar-item-active-background-l-delta:var(--bulma-active-background-l-delta);--bulma-navbar-item-color-l:var(--bulma-text-l);--bulma-navbar-item-color:hsl(var(--bulma-navbar-h),var(--bulma-navbar-s),var(--bulma-navbar-item-color-l));--bulma-navbar-item-selected-h:var(--bulma-link-h);--bulma-navbar-item-selected-s:var(--bulma-link-s);--bulma-navbar-item-selected-l:var(--bulma-link-l);--bulma-navbar-item-selected-background-l:var(--bulma-link-l);--bulma-navbar-item-selected-color-l:var(--bulma-link-invert-l);--bulma-navbar-item-img-max-height:1.75rem;--bulma-navbar-burger-color:var(--bulma-link);--bulma-navbar-tab-hover-background-color:transparent;--bulma-navbar-tab-hover-border-bottom-color:var(--bulma-link);--bulma-navbar-tab-active-color:var(--bulma-link);--bulma-navbar-tab-active-background-color:transparent;--bulma-navbar-tab-active-border-bottom-color:var(--bulma-link);--bulma-navbar-tab-active-border-bottom-style:solid;--bulma-navbar-tab-active-border-bottom-width:0.1875em;--bulma-navbar-dropdown-background-color:var(--bulma-scheme-main);--bulma-navbar-dropdown-border-l:var(--bulma-border-l);--bulma-navbar-dropdown-border-color:hsl(var(--bulma-navbar-h),var(--bulma-navbar-s),var(--bulma-navbar-dropdown-border-l));--bulma-navbar-dropdown-border-style:solid;--bulma-navbar-dropdown-border-width:0.125em;--bulma-navbar-dropdown-offset:-0.25em;--bulma-navbar-dropdown-arrow:var(--bulma-link);--bulma-navbar-dropdown-radius:var(--bulma-radius-large);--bulma-navbar-dropdown-z:20;--bulma-navbar-dropdown-boxed-radius:var(--bulma-radius-large);--bulma-navbar-dropdown-boxed-shadow:0 0.5em 0.5em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.1),0 0 0 1px hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.1);--bulma-navbar-dropdown-item-h:var(--bulma-scheme-h);--bulma-navbar-dropdown-item-s:var(--bulma-scheme-s);--bulma-navbar-dropdown-item-l:var(--bulma-scheme-main-l);--bulma-navbar-dropdown-item-background-l:var(--bulma-scheme-main-l);--bulma-navbar-dropdown-item-color-l:var(--bulma-text-l);--bulma-navbar-divider-background-l:var(--bulma-background-l);--bulma-navbar-divider-height:0.125em;--bulma-navbar-bottom-box-shadow-size:0 -0.125em 0 0;background-color:var(--bulma-navbar-background-color);min-height:var(--bulma-navbar-height);position:relative;z-index:var(--bulma-navbar-z)}.navbar.is-white{--bulma-navbar-h:var(--bulma-white-h);--bulma-navbar-s:var(--bulma-white-s);--bulma-navbar-l:var(--bulma-white-l);--bulma-burger-h:var(--bulma-white-h);--bulma-burger-s:var(--bulma-white-s);--bulma-burger-l:var(--bulma-white-invert-l);--bulma-navbar-background-color:var(--bulma-white);--bulma-navbar-item-background-l:var(--bulma-white-l);--bulma-navbar-item-color-l:var(--bulma-white-invert-l);--bulma-navbar-item-selected-h:var(--bulma-white-h);--bulma-navbar-item-selected-s:var(--bulma-white-s);--bulma-navbar-item-selected-l:var(--bulma-white-l);--bulma-navbar-item-selected-background-l:var(--bulma-white-l);--bulma-navbar-item-selected-color-l:var(--bulma-white-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-white-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-white-h);--bulma-navbar-dropdown-item-s:var(--bulma-white-s)}.navbar.is-black{--bulma-navbar-h:var(--bulma-black-h);--bulma-navbar-s:var(--bulma-black-s);--bulma-navbar-l:var(--bulma-black-l);--bulma-burger-h:var(--bulma-black-h);--bulma-burger-s:var(--bulma-black-s);--bulma-burger-l:var(--bulma-black-invert-l);--bulma-navbar-background-color:var(--bulma-black);--bulma-navbar-item-background-l:var(--bulma-black-l);--bulma-navbar-item-color-l:var(--bulma-black-invert-l);--bulma-navbar-item-selected-h:var(--bulma-black-h);--bulma-navbar-item-selected-s:var(--bulma-black-s);--bulma-navbar-item-selected-l:var(--bulma-black-l);--bulma-navbar-item-selected-background-l:var(--bulma-black-l);--bulma-navbar-item-selected-color-l:var(--bulma-black-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-black-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-black-h);--bulma-navbar-dropdown-item-s:var(--bulma-black-s)}.navbar.is-light{--bulma-navbar-h:var(--bulma-light-h);--bulma-navbar-s:var(--bulma-light-s);--bulma-navbar-l:var(--bulma-light-l);--bulma-burger-h:var(--bulma-light-h);--bulma-burger-s:var(--bulma-light-s);--bulma-burger-l:var(--bulma-light-invert-l);--bulma-navbar-background-color:var(--bulma-light);--bulma-navbar-item-background-l:var(--bulma-light-l);--bulma-navbar-item-color-l:var(--bulma-light-invert-l);--bulma-navbar-item-selected-h:var(--bulma-light-h);--bulma-navbar-item-selected-s:var(--bulma-light-s);--bulma-navbar-item-selected-l:var(--bulma-light-l);--bulma-navbar-item-selected-background-l:var(--bulma-light-l);--bulma-navbar-item-selected-color-l:var(--bulma-light-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-light-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-light-h);--bulma-navbar-dropdown-item-s:var(--bulma-light-s)}.navbar.is-dark{--bulma-navbar-h:var(--bulma-dark-h);--bulma-navbar-s:var(--bulma-dark-s);--bulma-navbar-l:var(--bulma-dark-l);--bulma-burger-h:var(--bulma-dark-h);--bulma-burger-s:var(--bulma-dark-s);--bulma-burger-l:var(--bulma-dark-invert-l);--bulma-navbar-background-color:var(--bulma-dark);--bulma-navbar-item-background-l:var(--bulma-dark-l);--bulma-navbar-item-color-l:var(--bulma-dark-invert-l);--bulma-navbar-item-selected-h:var(--bulma-dark-h);--bulma-navbar-item-selected-s:var(--bulma-dark-s);--bulma-navbar-item-selected-l:var(--bulma-dark-l);--bulma-navbar-item-selected-background-l:var(--bulma-dark-l);--bulma-navbar-item-selected-color-l:var(--bulma-dark-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-dark-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-dark-h);--bulma-navbar-dropdown-item-s:var(--bulma-dark-s)}.navbar.is-text{--bulma-navbar-h:var(--bulma-text-h);--bulma-navbar-s:var(--bulma-text-s);--bulma-navbar-l:var(--bulma-text-l);--bulma-burger-h:var(--bulma-text-h);--bulma-burger-s:var(--bulma-text-s);--bulma-burger-l:var(--bulma-text-invert-l);--bulma-navbar-background-color:var(--bulma-text);--bulma-navbar-item-background-l:var(--bulma-text-l);--bulma-navbar-item-color-l:var(--bulma-text-invert-l);--bulma-navbar-item-selected-h:var(--bulma-text-h);--bulma-navbar-item-selected-s:var(--bulma-text-s);--bulma-navbar-item-selected-l:var(--bulma-text-l);--bulma-navbar-item-selected-background-l:var(--bulma-text-l);--bulma-navbar-item-selected-color-l:var(--bulma-text-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-text-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-text-h);--bulma-navbar-dropdown-item-s:var(--bulma-text-s)}.navbar.is-primary{--bulma-navbar-h:var(--bulma-primary-h);--bulma-navbar-s:var(--bulma-primary-s);--bulma-navbar-l:var(--bulma-primary-l);--bulma-burger-h:var(--bulma-primary-h);--bulma-burger-s:var(--bulma-primary-s);--bulma-burger-l:var(--bulma-primary-invert-l);--bulma-navbar-background-color:var(--bulma-primary);--bulma-navbar-item-background-l:var(--bulma-primary-l);--bulma-navbar-item-color-l:var(--bulma-primary-invert-l);--bulma-navbar-item-selected-h:var(--bulma-primary-h);--bulma-navbar-item-selected-s:var(--bulma-primary-s);--bulma-navbar-item-selected-l:var(--bulma-primary-l);--bulma-navbar-item-selected-background-l:var(--bulma-primary-l);--bulma-navbar-item-selected-color-l:var(--bulma-primary-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-primary-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-primary-h);--bulma-navbar-dropdown-item-s:var(--bulma-primary-s)}.navbar.is-link{--bulma-navbar-h:var(--bulma-link-h);--bulma-navbar-s:var(--bulma-link-s);--bulma-navbar-l:var(--bulma-link-l);--bulma-burger-h:var(--bulma-link-h);--bulma-burger-s:var(--bulma-link-s);--bulma-burger-l:var(--bulma-link-invert-l);--bulma-navbar-background-color:var(--bulma-link);--bulma-navbar-item-background-l:var(--bulma-link-l);--bulma-navbar-item-color-l:var(--bulma-link-invert-l);--bulma-navbar-item-selected-h:var(--bulma-link-h);--bulma-navbar-item-selected-s:var(--bulma-link-s);--bulma-navbar-item-selected-l:var(--bulma-link-l);--bulma-navbar-item-selected-background-l:var(--bulma-link-l);--bulma-navbar-item-selected-color-l:var(--bulma-link-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-link-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-link-h);--bulma-navbar-dropdown-item-s:var(--bulma-link-s)}.navbar.is-info{--bulma-navbar-h:var(--bulma-info-h);--bulma-navbar-s:var(--bulma-info-s);--bulma-navbar-l:var(--bulma-info-l);--bulma-burger-h:var(--bulma-info-h);--bulma-burger-s:var(--bulma-info-s);--bulma-burger-l:var(--bulma-info-invert-l);--bulma-navbar-background-color:var(--bulma-info);--bulma-navbar-item-background-l:var(--bulma-info-l);--bulma-navbar-item-color-l:var(--bulma-info-invert-l);--bulma-navbar-item-selected-h:var(--bulma-info-h);--bulma-navbar-item-selected-s:var(--bulma-info-s);--bulma-navbar-item-selected-l:var(--bulma-info-l);--bulma-navbar-item-selected-background-l:var(--bulma-info-l);--bulma-navbar-item-selected-color-l:var(--bulma-info-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-info-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-info-h);--bulma-navbar-dropdown-item-s:var(--bulma-info-s)}.navbar.is-success{--bulma-navbar-h:var(--bulma-success-h);--bulma-navbar-s:var(--bulma-success-s);--bulma-navbar-l:var(--bulma-success-l);--bulma-burger-h:var(--bulma-success-h);--bulma-burger-s:var(--bulma-success-s);--bulma-burger-l:var(--bulma-success-invert-l);--bulma-navbar-background-color:var(--bulma-success);--bulma-navbar-item-background-l:var(--bulma-success-l);--bulma-navbar-item-color-l:var(--bulma-success-invert-l);--bulma-navbar-item-selected-h:var(--bulma-success-h);--bulma-navbar-item-selected-s:var(--bulma-success-s);--bulma-navbar-item-selected-l:var(--bulma-success-l);--bulma-navbar-item-selected-background-l:var(--bulma-success-l);--bulma-navbar-item-selected-color-l:var(--bulma-success-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-success-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-success-h);--bulma-navbar-dropdown-item-s:var(--bulma-success-s)}.navbar.is-warning{--bulma-navbar-h:var(--bulma-warning-h);--bulma-navbar-s:var(--bulma-warning-s);--bulma-navbar-l:var(--bulma-warning-l);--bulma-burger-h:var(--bulma-warning-h);--bulma-burger-s:var(--bulma-warning-s);--bulma-burger-l:var(--bulma-warning-invert-l);--bulma-navbar-background-color:var(--bulma-warning);--bulma-navbar-item-background-l:var(--bulma-warning-l);--bulma-navbar-item-color-l:var(--bulma-warning-invert-l);--bulma-navbar-item-selected-h:var(--bulma-warning-h);--bulma-navbar-item-selected-s:var(--bulma-warning-s);--bulma-navbar-item-selected-l:var(--bulma-warning-l);--bulma-navbar-item-selected-background-l:var(--bulma-warning-l);--bulma-navbar-item-selected-color-l:var(--bulma-warning-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-warning-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-warning-h);--bulma-navbar-dropdown-item-s:var(--bulma-warning-s)}.navbar.is-danger{--bulma-navbar-h:var(--bulma-danger-h);--bulma-navbar-s:var(--bulma-danger-s);--bulma-navbar-l:var(--bulma-danger-l);--bulma-burger-h:var(--bulma-danger-h);--bulma-burger-s:var(--bulma-danger-s);--bulma-burger-l:var(--bulma-danger-invert-l);--bulma-navbar-background-color:var(--bulma-danger);--bulma-navbar-item-background-l:var(--bulma-danger-l);--bulma-navbar-item-color-l:var(--bulma-danger-invert-l);--bulma-navbar-item-selected-h:var(--bulma-danger-h);--bulma-navbar-item-selected-s:var(--bulma-danger-s);--bulma-navbar-item-selected-l:var(--bulma-danger-l);--bulma-navbar-item-selected-background-l:var(--bulma-danger-l);--bulma-navbar-item-selected-color-l:var(--bulma-danger-invert-l);--bulma-navbar-dropdown-arrow:var(--bulma-danger-invert-l);--bulma-navbar-dropdown-background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-navbar-dropdown-item-background-l));--bulma-navbar-dropdown-item-h:var(--bulma-danger-h);--bulma-navbar-dropdown-item-s:var(--bulma-danger-s)}.navbar>.container{align-items:stretch;display:flex;min-height:var(--bulma-navbar-height);width:100%}.navbar.has-shadow{box-shadow:var(--bulma-navbar-box-shadow-size) var(--bulma-navbar-box-shadow-color)}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:var(--bulma-navbar-fixed-z)}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:var(--bulma-navbar-bottom-box-shadow-size) var(--bulma-navbar-box-shadow-color)}.navbar.is-fixed-top{top:0}body.has-navbar-fixed-top,html.has-navbar-fixed-top{padding-top:var(--bulma-navbar-height)}body.has-navbar-fixed-bottom,html.has-navbar-fixed-bottom{padding-bottom:var(--bulma-navbar-height)}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:var(--bulma-navbar-height)}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{align-items:center;appearance:none;background:none;border:none;border-radius:var(--bulma-burger-border-radius);color:hsl(var(--bulma-burger-h),var(--bulma-burger-s),var(--bulma-burger-l));cursor:pointer;display:inline-flex;flex-direction:column;flex-shrink:0;height:2.5rem;justify-content:center;position:relative;vertical-align:top;width:2.5rem}.navbar-burger span{background-color:currentColor;display:block;height:var(--bulma-burger-item-height);left:calc(50% - (var(--bulma-burger-item-width))/2);position:absolute;transform-origin:center;transition-duration:var(--bulma-duration);transition-property:background-color,color,opacity,transform;transition-timing-function:var(--bulma-easing);width:var(--bulma-burger-item-width)}.navbar-burger span:first-child,.navbar-burger span:nth-child(2){top:calc(50% - (var(--bulma-burger-item-height))/2)}.navbar-burger span:nth-child(3){bottom:calc(50% + var(--bulma-burger-gap))}.navbar-burger span:nth-child(4){top:calc(50% + var(--bulma-burger-gap))}.navbar-burger:hover{background-color:hsla(var(--bulma-burger-h),var(--bulma-burger-s),var(--bulma-burger-l),.1)}.navbar-burger:active{background-color:hsla(var(--bulma-burger-h),var(--bulma-burger-s),var(--bulma-burger-l),.2)}.navbar-burger.is-active span:first-child{transform:rotate(-45deg)}.navbar-burger.is-active span:nth-child(2){transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(3),.navbar-burger.is-active span:nth-child(4){opacity:0}.navbar-burger{align-self:center;color:var(--bulma-navbar-burger-color);margin-inline-end:.375rem;margin-inline-start:auto}.navbar-menu{display:none}.navbar-item,.navbar-link{color:var(--bulma-navbar-item-color);display:block;gap:.75rem;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{background-color:hsla(var(--bulma-navbar-h),var(--bulma-navbar-s),calc(var(--bulma-navbar-item-background-l) + var(--bulma-navbar-item-background-l-delta)),var(--bulma-navbar-item-background-a));cursor:pointer}.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{--bulma-navbar-item-background-l-delta:var(--bulma-navbar-item-hover-background-l-delta);--bulma-navbar-item-background-a:1}.navbar-link:active,a.navbar-item:active{--bulma-navbar-item-background-l-delta:var(--bulma-navbar-item-active-background-l-delta);--bulma-navbar-item-background-a:1}.navbar-link.is-active,.navbar-link.is-selected,a.navbar-item.is-active,a.navbar-item.is-selected{--bulma-navbar-h:var(--bulma-navbar-item-selected-h);--bulma-navbar-s:var(--bulma-navbar-item-selected-s);--bulma-navbar-l:var(--bulma-navbar-item-selected-l);--bulma-navbar-item-background-l:var(--bulma-navbar-item-selected-background-l);--bulma-navbar-item-background-a:1;--bulma-navbar-item-color-l:var(--bulma-navbar-item-selected-color-l)}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img,.navbar-item svg{max-height:var(--bulma-navbar-item-img-max-height)}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:var(--bulma-navbar-height);padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:var(--bulma-navbar-tab-hover-background-color);border-bottom-color:var(--bulma-navbar-tab-hover-border-bottom-color)}.navbar-item.is-tab.is-active{background-color:var(--bulma-navbar-tab-active-background-color);border-bottom:var(--bulma-navbar-tab-active-border-bottom-width) var(--bulma-navbar-tab-active-border-bottom-style) var(--bulma-navbar-tab-active-border-bottom-color);color:var(--bulma-navbar-tab-active-color);padding-bottom:calc(.5rem - var(--bulma-navbar-tab-active-border-bottom-width))}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-inline-end:2.5em}.navbar-link:not(.is-arrowless):after{border-color:var(--bulma-navbar-dropdown-arrow);inset-inline-end:1.125em;margin-top:-.375em}.navbar-dropdown{font-size:.875rem;padding-bottom:.75rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-dropdown .navbar-item:not(.is-active,.is-selected){background-color:hsl(var(--bulma-navbar-dropdown-item-h),var(--bulma-navbar-dropdown-item-s),calc(var(--bulma-navbar-dropdown-item-background-l) + var(--bulma-navbar-item-background-l-delta)));color:hsl(var(--bulma-navbar-dropdown-item-h),var(--bulma-navbar-dropdown-item-s),var(--bulma-navbar-dropdown-item-color-l))}.navbar-divider{background-color:hsl(var(--bulma-navbar-h),var(--bulma-navbar-s),var(--bulma-navbar-divider-background-l));border:none;display:none;height:var(--bulma-navbar-divider-height);margin:.5rem 0}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link:after{display:none}.navbar-menu{background-color:var(--bulma-navbar-background-color);box-shadow:0 .5em 1em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:var(--bulma-navbar-fixed-z)}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -.125em .1875em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - var(--bulma-navbar-height));overflow:auto}body.has-navbar-fixed-top-touch,html.has-navbar-fixed-top-touch{padding-top:var(--bulma-navbar-height)}body.has-navbar-fixed-bottom-touch,html.has-navbar-fixed-bottom-touch{padding-bottom:var(--bulma-navbar-height)}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:var(--bulma-navbar-height)}.navbar.is-spaced{padding:var(--bulma-navbar-padding-vertical) var(--bulma-navbar-padding-horizontal)}.navbar.is-spaced .navbar-end,.navbar.is-spaced .navbar-start{align-items:center}.navbar.is-spaced .navbar-link,.navbar.is-spaced a.navbar-item{border-radius:var(--bulma-radius)}.navbar.is-transparent{--bulma-navbar-item-background-a:0}.navbar.is-transparent .navbar-dropdown a.navbar-item{background-color:hsl(var(--bulma-navbar-h),var(--bulma-navbar-s),calc(var(--bulma-navbar-item-background-l) + var(--bulma-navbar-item-background-l-delta)))}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active,.navbar.is-transparent .navbar-dropdown a.navbar-item.is-selected{--bulma-navbar-h:var(--bulma-navbar-item-selected-h);--bulma-navbar-s:var(--bulma-navbar-item-selected-s);--bulma-navbar-l:var(--bulma-navbar-item-selected-l);--bulma-navbar-item-background-l:var(--bulma-navbar-item-selected-background-l);--bulma-navbar-item-color-l:var(--bulma-navbar-item-selected-color-l)}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link:after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:var(--bulma-navbar-dropdown-border-width) var(--bulma-navbar-dropdown-border-style) var(--bulma-navbar-dropdown-border-color);border-radius:var(--bulma-navbar-dropdown-radius) var(--bulma-navbar-dropdown-radius) 0 0;border-top:none;bottom:100%;box-shadow:0 -.5em .5em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-inline-end:auto}.navbar-end{justify-content:flex-end;margin-inline-start:auto}.navbar-dropdown{background-color:var(--bulma-navbar-dropdown-background-color);border-end-end-radius:var(--bulma-navbar-dropdown-radius);border-end-start-radius:var(--bulma-navbar-dropdown-radius);border-top:var(--bulma-navbar-dropdown-border-width) var(--bulma-navbar-dropdown-border-style) var(--bulma-navbar-dropdown-border-color);box-shadow:0 .5em .5em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),.1);display:none;font-size:.875rem;inset-inline-start:0;min-width:100%;position:absolute;top:100%;z-index:var(--bulma-navbar-dropdown-z)}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-inline-end:3rem}.navbar-dropdown a.navbar-item:not(.is-active,.is-selected){background-color:hsl(var(--bulma-navbar-dropdown-item-h),var(--bulma-navbar-dropdown-item-s),calc(var(--bulma-navbar-dropdown-item-background-l) + var(--bulma-navbar-item-background-l-delta)));color:hsl(var(--bulma-navbar-dropdown-item-h),var(--bulma-navbar-dropdown-item-s),var(--bulma-navbar-dropdown-item-color-l))}.navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-dropdown{border-radius:var(--bulma-navbar-dropdown-boxed-radius);border-top:none;box-shadow:var(--bulma-navbar-dropdown-boxed-shadow);display:block;opacity:0;pointer-events:none;top:calc(100% + var(--bulma-navbar-dropdown-offset));transform:translateY(-5px);transition-duration:var(--bulma-duration);transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-inline-start:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-inline-end:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:var(--bulma-navbar-fixed-z)}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -.125em .1875em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),.1)}.navbar.is-fixed-top-desktop{top:0}body.has-navbar-fixed-top-desktop,html.has-navbar-fixed-top-desktop{padding-top:var(--bulma-navbar-height)}body.has-navbar-fixed-bottom-desktop,html.has-navbar-fixed-bottom-desktop{padding-bottom:var(--bulma-navbar-height)}body.has-spaced-navbar-fixed-top,html.has-spaced-navbar-fixed-top{padding-top:calc(var(--bulma-navbar-height) + var(--bulma-navbar-padding-vertical)*2)}body.has-spaced-navbar-fixed-bottom,html.has-spaced-navbar-fixed-bottom{padding-bottom:calc(var(--bulma-navbar-height) + var(--bulma-navbar-padding-vertical)*2)}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - var(--bulma-navbar-height))}.pagination{--bulma-pagination-margin:-0.25rem;--bulma-pagination-min-width:var(--bulma-control-height);--bulma-pagination-item-h:var(--bulma-scheme-h);--bulma-pagination-item-s:var(--bulma-scheme-s);--bulma-pagination-item-l:var(--bulma-scheme-main-l);--bulma-pagination-item-background-l-delta:0%;--bulma-pagination-item-hover-background-l-delta:var(--bulma-hover-background-l-delta);--bulma-pagination-item-active-background-l-delta:var(--bulma-active-background-l-delta);--bulma-pagination-item-border-style:solid;--bulma-pagination-item-border-width:var(--bulma-control-border-width);--bulma-pagination-item-border-l:var(--bulma-border-l);--bulma-pagination-item-border-l-delta:0%;--bulma-pagination-item-hover-border-l-delta:var(--bulma-hover-border-l-delta);--bulma-pagination-item-active-border-l-delta:var(--bulma-active-border-l-delta);--bulma-pagination-item-focus-border-l-delta:var(--bulma-focus-border-l-delta);--bulma-pagination-item-color-l:var(--bulma-text-strong-l);--bulma-pagination-item-font-size:1em;--bulma-pagination-item-margin:0.25rem;--bulma-pagination-item-padding-left:0.5em;--bulma-pagination-item-padding-right:0.5em;--bulma-pagination-item-outer-shadow-h:0;--bulma-pagination-item-outer-shadow-s:0%;--bulma-pagination-item-outer-shadow-l:20%;--bulma-pagination-item-outer-shadow-a:0.05;--bulma-pagination-nav-padding-left:0.75em;--bulma-pagination-nav-padding-right:0.75em;--bulma-pagination-disabled-color:var(--bulma-text-weak);--bulma-pagination-disabled-background-color:var(--bulma-border);--bulma-pagination-disabled-border-color:var(--bulma-border);--bulma-pagination-current-color:var(--bulma-link-invert);--bulma-pagination-current-background-color:var(--bulma-link);--bulma-pagination-current-border-color:var(--bulma-link);--bulma-pagination-ellipsis-color:var(--bulma-text-weak);--bulma-pagination-shadow-inset:inset 0 0.0625em 0.125em hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-scheme-invert-l),0.2);--bulma-pagination-selected-item-h:var(--bulma-link-h);--bulma-pagination-selected-item-s:var(--bulma-link-s);--bulma-pagination-selected-item-l:var(--bulma-link-l);--bulma-pagination-selected-item-background-l:var(--bulma-link-l);--bulma-pagination-selected-item-border-l:var(--bulma-link-l);--bulma-pagination-selected-item-color-l:var(--bulma-link-invert-l);font-size:var(--bulma-size-normal);margin:var(--bulma-pagination-margin)}.pagination.is-small{font-size:var(--bulma-size-small)}.pagination.is-medium{font-size:var(--bulma-size-medium)}.pagination.is-large{font-size:var(--bulma-size-large)}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{border-radius:var(--bulma-radius-rounded);padding-left:1em;padding-right:1em}.pagination.is-rounded .pagination-link{border-radius:var(--bulma-radius-rounded)}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{color:hsl(var(--bulma-pagination-item-h),var(--bulma-pagination-item-s),var(--bulma-pagination-item-color-l));font-size:var(--bulma-pagination-item-font-size);justify-content:center;margin:var(--bulma-pagination-item-margin);padding-left:var(--bulma-pagination-item-padding-left);padding-right:var(--bulma-pagination-item-padding-right);text-align:center}.pagination-link,.pagination-next,.pagination-previous{background-color:hsl(var(--bulma-pagination-item-h),var(--bulma-pagination-item-s),calc(var(--bulma-pagination-item-background-l) + var(--bulma-pagination-item-background-l-delta)));border-color:hsl(var(--bulma-pagination-item-h),var(--bulma-pagination-item-s),calc(var(--bulma-pagination-item-border-l) + var(--bulma-pagination-item-border-l-delta)));border-style:var(--bulma-pagination-item-border-style);border-width:var(--bulma-pagination-item-border-width);box-shadow:0 .0625em .125em hsla(var(--bulma-pagination-item-outer-shadow-h),var(--bulma-pagination-item-outer-shadow-s),var(--bulma-pagination-item-outer-shadow-l),var(--bulma-pagination-item-outer-shadow-a)),0 .125em .25em hsla(var(--bulma-pagination-item-outer-shadow-h),var(--bulma-pagination-item-outer-shadow-s),var(--bulma-pagination-item-outer-shadow-l),var(--bulma-pagination-item-outer-shadow-a));color:hsl(var(--bulma-pagination-item-h),var(--bulma-pagination-item-s),var(--bulma-pagination-item-color-l));min-width:var(--bulma-pagination-min-width);transition-duration:var(--bulma-duration);transition-property:background-color,border-color,box-shadow,color}.pagination-link:focus,.pagination-link:hover,.pagination-next:focus,.pagination-next:hover,.pagination-previous:focus,.pagination-previous:hover{--bulma-pagination-item-background-l-delta:var(--bulma-pagination-item-hover-background-l-delta);--bulma-pagination-item-border-l-delta:var(--bulma-pagination-item-hover-border-l-delta)}.pagination-link:active,.pagination-next:active,.pagination-previous:active{box-shadow:var(--bulma-pagination-shadow-inset)}.pagination-link.is-disabled,.pagination-link[disabled],.pagination-next.is-disabled,.pagination-next[disabled],.pagination-previous.is-disabled,.pagination-previous[disabled]{background-color:var(--bulma-pagination-disabled-background-color);border-color:var(--bulma-pagination-disabled-border-color);box-shadow:none;color:var(--bulma-pagination-disabled-color);opacity:.5}.pagination-next,.pagination-previous{padding-left:var(--bulma-pagination-nav-padding-left);padding-right:var(--bulma-pagination-nav-padding-right);white-space:nowrap}.pagination-link.is-current,.pagination-link.is-selected{--bulma-pagination-item-h:var(--bulma-pagination-selected-item-h);--bulma-pagination-item-s:var(--bulma-pagination-selected-item-s);--bulma-pagination-item-l:var(--bulma-pagination-selected-item-l);--bulma-pagination-item-background-l:var(--bulma-pagination-selected-item-background-l);--bulma-pagination-item-border-l:var(--bulma-pagination-selected-item-border-l);--bulma-pagination-item-color-l:var(--bulma-pagination-selected-item-color-l)}.pagination-ellipsis{color:var(--bulma-pagination-ellipsis-color);pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-list li,.pagination-next,.pagination-previous{flex-grow:1;flex-shrink:1}}@media print,screen and (min-width:769px){.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{--bulma-panel-margin:var(--bulma-block-spacing);--bulma-panel-item-border:1px solid var(--bulma-border-weak);--bulma-panel-radius:var(--bulma-radius-large);--bulma-panel-shadow:var(--bulma-shadow);--bulma-panel-heading-line-height:1.25;--bulma-panel-heading-padding:1em 1.25em;--bulma-panel-heading-radius:var(--bulma-radius);--bulma-panel-heading-size:1.25em;--bulma-panel-heading-weight:var(--bulma-weight-bold);--bulma-panel-tabs-font-size:1em;--bulma-panel-tab-border-bottom-color:var(--bulma-border);--bulma-panel-tab-border-bottom-style:solid;--bulma-panel-tab-border-bottom-width:1px;--bulma-panel-tab-active-color:var(--bulma-link-active);--bulma-panel-list-item-color:var(--bulma-text);--bulma-panel-list-item-hover-color:var(--bulma-link);--bulma-panel-block-color:var(--bulma-text-strong);--bulma-panel-block-hover-background-color:var(--bulma-background);--bulma-panel-block-active-border-left-color:var(--bulma-link);--bulma-panel-block-active-color:var(--bulma-link-active);--bulma-panel-block-active-icon-color:var(--bulma-link);--bulma-panel-icon-color:var(--bulma-text-weak);--bulma-panel-h:var(--bulma-scheme-h);--bulma-panel-s:var(--bulma-scheme-s);--bulma-panel-color-l:var(--bulma-text-l);--bulma-panel-heading-background-l:var(--bulma-text-l);--bulma-panel-heading-color-l:var(--bulma-text-invert-l);border-radius:var(--bulma-panel-radius);box-shadow:var(--bulma-panel-shadow);font-size:var(--bulma-size-normal)}.panel:not(:last-child){margin-bottom:var(--bulma-panel-margin)}.panel.is-white{--bulma-panel-h:var(--bulma-white-h);--bulma-panel-s:var(--bulma-white-s);--bulma-panel-color-l:var(--bulma-white-l);--bulma-panel-heading-background-l:var(--bulma-white-l);--bulma-panel-heading-color-l:var(--bulma-white-invert-l)}.panel.is-black{--bulma-panel-h:var(--bulma-black-h);--bulma-panel-s:var(--bulma-black-s);--bulma-panel-color-l:var(--bulma-black-l);--bulma-panel-heading-background-l:var(--bulma-black-l);--bulma-panel-heading-color-l:var(--bulma-black-invert-l)}.panel.is-light{--bulma-panel-h:var(--bulma-light-h);--bulma-panel-s:var(--bulma-light-s);--bulma-panel-color-l:var(--bulma-light-l);--bulma-panel-heading-background-l:var(--bulma-light-l);--bulma-panel-heading-color-l:var(--bulma-light-invert-l)}.panel.is-dark{--bulma-panel-h:var(--bulma-dark-h);--bulma-panel-s:var(--bulma-dark-s);--bulma-panel-color-l:var(--bulma-dark-l);--bulma-panel-heading-background-l:var(--bulma-dark-l);--bulma-panel-heading-color-l:var(--bulma-dark-invert-l)}.panel.is-text{--bulma-panel-h:var(--bulma-text-h);--bulma-panel-s:var(--bulma-text-s);--bulma-panel-color-l:var(--bulma-text-l);--bulma-panel-heading-background-l:var(--bulma-text-l);--bulma-panel-heading-color-l:var(--bulma-text-invert-l)}.panel.is-primary{--bulma-panel-h:var(--bulma-primary-h);--bulma-panel-s:var(--bulma-primary-s);--bulma-panel-color-l:var(--bulma-primary-l);--bulma-panel-heading-background-l:var(--bulma-primary-l);--bulma-panel-heading-color-l:var(--bulma-primary-invert-l)}.panel.is-link{--bulma-panel-h:var(--bulma-link-h);--bulma-panel-s:var(--bulma-link-s);--bulma-panel-color-l:var(--bulma-link-l);--bulma-panel-heading-background-l:var(--bulma-link-l);--bulma-panel-heading-color-l:var(--bulma-link-invert-l)}.panel.is-info{--bulma-panel-h:var(--bulma-info-h);--bulma-panel-s:var(--bulma-info-s);--bulma-panel-color-l:var(--bulma-info-l);--bulma-panel-heading-background-l:var(--bulma-info-l);--bulma-panel-heading-color-l:var(--bulma-info-invert-l)}.panel.is-success{--bulma-panel-h:var(--bulma-success-h);--bulma-panel-s:var(--bulma-success-s);--bulma-panel-color-l:var(--bulma-success-l);--bulma-panel-heading-background-l:var(--bulma-success-l);--bulma-panel-heading-color-l:var(--bulma-success-invert-l)}.panel.is-warning{--bulma-panel-h:var(--bulma-warning-h);--bulma-panel-s:var(--bulma-warning-s);--bulma-panel-color-l:var(--bulma-warning-l);--bulma-panel-heading-background-l:var(--bulma-warning-l);--bulma-panel-heading-color-l:var(--bulma-warning-invert-l)}.panel.is-danger{--bulma-panel-h:var(--bulma-danger-h);--bulma-panel-s:var(--bulma-danger-s);--bulma-panel-color-l:var(--bulma-danger-l);--bulma-panel-heading-background-l:var(--bulma-danger-l);--bulma-panel-heading-color-l:var(--bulma-danger-invert-l)}.panel-block:not(:last-child),.panel-tabs:not(:last-child){border-bottom:var(--bulma-panel-item-border)}.panel-heading{background-color:hsl(var(--bulma-panel-h),var(--bulma-panel-s),var(--bulma-panel-heading-background-l));border-radius:var(--bulma-panel-radius) var(--bulma-panel-radius) 0 0;color:hsl(var(--bulma-panel-h),var(--bulma-panel-s),var(--bulma-panel-heading-color-l));font-size:var(--bulma-panel-heading-size);font-weight:var(--bulma-panel-heading-weight);line-height:var(--bulma-panel-heading-line-height);padding:var(--bulma-panel-heading-padding)}.panel-tabs{align-items:flex-end;display:flex;font-size:var(--bulma-panel-tabs-font-size);justify-content:center}.panel-tabs a{border-bottom:var(--bulma-panel-tab-border-bottom-width) var(--bulma-panel-tab-border-bottom-style) var(--bulma-panel-tab-border-bottom-color);margin-bottom:-1px;padding:.75em}.panel-tabs a.is-active{border-bottom-color:hsl(var(--bulma-panel-h),var(--bulma-panel-s),var(--bulma-panel-color-l));color:var(--bulma-panel-tab-active-color)}.panel-list a{color:var(--bulma-panel-list-item-color)}.panel-list a:hover{color:var(--bulma-panel-list-item-hover-color)}.panel-block{align-items:center;color:var(--bulma-panel-block-color);display:flex;justify-content:flex-start;padding:.75em 1em}.panel-block input[type=checkbox]{margin-inline-end:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:var(--bulma-panel-block-active-border-left-color);color:var(--bulma-panel-block-active-color)}.panel-block.is-active .panel-icon{color:hsl(var(--bulma-panel-h),var(--bulma-panel-s),var(--bulma-panel-color-l))}.panel-block:last-child{border-end-end-radius:var(--bulma-panel-radius);border-end-start-radius:var(--bulma-panel-radius)}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:var(--bulma-panel-block-hover-background-color)}.panel-icon{color:var(--bulma-panel-icon-color);display:inline-block;font-size:1em;height:1em;line-height:1em;margin-inline-end:.75em;text-align:center;vertical-align:top;width:1em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{--bulma-tabs-border-bottom-color:var(--bulma-border);--bulma-tabs-border-bottom-style:solid;--bulma-tabs-border-bottom-width:1px;--bulma-tabs-link-color:var(--bulma-text);--bulma-tabs-link-hover-border-bottom-color:var(--bulma-text-strong);--bulma-tabs-link-hover-color:var(--bulma-text-strong);--bulma-tabs-link-active-border-bottom-color:var(--bulma-link-text);--bulma-tabs-link-active-color:var(--bulma-link-text);--bulma-tabs-link-padding:0.5em 1em;--bulma-tabs-boxed-link-radius:var(--bulma-radius);--bulma-tabs-boxed-link-hover-background-color:var(--bulma-background);--bulma-tabs-boxed-link-hover-border-bottom-color:var(--bulma-border);--bulma-tabs-boxed-link-active-background-color:var(--bulma-scheme-main);--bulma-tabs-boxed-link-active-border-color:var(--bulma-border);--bulma-tabs-boxed-link-active-border-bottom-color:transparent;--bulma-tabs-toggle-link-border-color:var(--bulma-border);--bulma-tabs-toggle-link-border-style:solid;--bulma-tabs-toggle-link-border-width:1px;--bulma-tabs-toggle-link-hover-background-color:var(--bulma-background);--bulma-tabs-toggle-link-hover-border-color:var(--bulma-border-hover);--bulma-tabs-toggle-link-radius:var(--bulma-radius);--bulma-tabs-toggle-link-active-background-color:var(--bulma-link);--bulma-tabs-toggle-link-active-border-color:var(--bulma-link);--bulma-tabs-toggle-link-active-color:var(--bulma-link-invert);-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:var(--bulma-size-normal);justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom:var(--bulma-tabs-border-bottom-width) var(--bulma-tabs-border-bottom-style) var(--bulma-tabs-border-bottom-color);color:var(--bulma-tabs-link-color);display:flex;justify-content:center;margin-bottom:calc(var(--bulma-tabs-border-bottom-width)*-1);padding:var(--bulma-tabs-link-padding);transition-duration:var(--bulma-duration);transition-property:background-color,border-color,color;vertical-align:top}.tabs a:hover{border-bottom-color:var(--bulma-tabs-link-hover-border-bottom-color);color:var(--bulma-tabs-link-hover-color)}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:var(--bulma-tabs-link-active-border-bottom-color);color:var(--bulma-tabs-link-active-color)}.tabs ul{align-items:center;border-bottom:var(--bulma-tabs-border-bottom-width) var(--bulma-tabs-border-bottom-style) var(--bulma-tabs-border-bottom-color);display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-center,.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-inline-end:.5em}.tabs .icon:last-child{margin-inline-start:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-start-end-radius:var(--bulma-tabs-boxed-link-radius);border-start-start-radius:var(--bulma-tabs-boxed-link-radius)}.tabs.is-boxed a:hover{background-color:var(--bulma-tabs-boxed-link-hover-background-color);border-bottom-color:var(--bulma-tabs-boxed-link-hover-border-bottom-color)}.tabs.is-boxed li.is-active a{background-color:var(--bulma-tabs-boxed-link-active-background-color);border-color:var(--bulma-tabs-boxed-link-active-border-color);border-bottom-color:var(--bulma-tabs-boxed-link-active-border-bottom-color)!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:var(--bulma-tabs-toggle-link-border-color);border-style:var(--bulma-tabs-toggle-link-border-style);border-width:var(--bulma-tabs-toggle-link-border-width);margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:var(--bulma-tabs-toggle-link-hover-background-color);border-color:var(--bulma-tabs-toggle-link-hover-border-color);z-index:2}.tabs.is-toggle li+li{margin-inline-start:calc(var(--bulma-tabs-toggle-link-border-width)*-1)}.tabs.is-toggle li:first-child a{border-end-start-radius:var(--bulma-tabs-toggle-link-radius);border-start-start-radius:var(--bulma-tabs-toggle-link-radius)}.tabs.is-toggle li:last-child a{border-end-end-radius:var(--bulma-tabs-toggle-link-radius);border-start-end-radius:var(--bulma-tabs-toggle-link-radius)}.tabs.is-toggle li.is-active a{background-color:var(--bulma-tabs-toggle-link-active-background-color);border-color:var(--bulma-tabs-toggle-link-active-border-color);color:var(--bulma-tabs-toggle-link-active-color);z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-end-start-radius:var(--bulma-radius-rounded);border-start-start-radius:var(--bulma-radius-rounded);padding-inline-start:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-end-end-radius:var(--bulma-radius-rounded);border-start-end-radius:var(--bulma-radius-rounded);padding-inline-end:1.25em}.tabs.is-small{font-size:var(--bulma-size-small)}.tabs.is-medium{font-size:var(--bulma-size-medium)}.tabs.is-large{font-size:var(--bulma-size-large)}:root{--bulma-column-gap:0.75rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:var(--bulma-column-gap)}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-inline-start:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-inline-start:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-inline-start:50%}.columns.is-mobile>.column.is-offset-one-third{margin-inline-start:.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-inline-start:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-inline-start:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-inline-start:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-inline-start:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-inline-start:80%}.columns.is-mobile>.column.is-0{flex:none;width:0}.columns.is-mobile>.column.is-offset-0{margin-inline-start:0}.columns.is-mobile>.column.is-1{flex:none;width:8.3333333333%}.columns.is-mobile>.column.is-offset-1{margin-inline-start:8.3333333333%}.columns.is-mobile>.column.is-2{flex:none;width:16.6666666667%}.columns.is-mobile>.column.is-offset-2{margin-inline-start:16.6666666667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-inline-start:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.3333333333%}.columns.is-mobile>.column.is-offset-4{margin-inline-start:33.3333333333%}.columns.is-mobile>.column.is-5{flex:none;width:41.6666666667%}.columns.is-mobile>.column.is-offset-5{margin-inline-start:41.6666666667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-inline-start:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.3333333333%}.columns.is-mobile>.column.is-offset-7{margin-inline-start:58.3333333333%}.columns.is-mobile>.column.is-8{flex:none;width:66.6666666667%}.columns.is-mobile>.column.is-offset-8{margin-inline-start:66.6666666667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-inline-start:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.3333333333%}.columns.is-mobile>.column.is-offset-10{margin-inline-start:83.3333333333%}.columns.is-mobile>.column.is-11{flex:none;width:91.6666666667%}.columns.is-mobile>.column.is-offset-11{margin-inline-start:91.6666666667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-inline-start:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-inline-start:75%}.column.is-offset-two-thirds-mobile{margin-inline-start:66.6666%}.column.is-offset-half-mobile{margin-inline-start:50%}.column.is-offset-one-third-mobile{margin-inline-start:.3333%}.column.is-offset-one-quarter-mobile{margin-inline-start:25%}.column.is-offset-one-fifth-mobile{margin-inline-start:20%}.column.is-offset-two-fifths-mobile{margin-inline-start:40%}.column.is-offset-three-fifths-mobile{margin-inline-start:60%}.column.is-offset-four-fifths-mobile{margin-inline-start:80%}.column.is-0-mobile{flex:none;width:0}.column.is-offset-0-mobile{margin-inline-start:0}.column.is-1-mobile{flex:none;width:8.3333333333%}.column.is-offset-1-mobile{margin-inline-start:8.3333333333%}.column.is-2-mobile{flex:none;width:16.6666666667%}.column.is-offset-2-mobile{margin-inline-start:16.6666666667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-inline-start:25%}.column.is-4-mobile{flex:none;width:33.3333333333%}.column.is-offset-4-mobile{margin-inline-start:33.3333333333%}.column.is-5-mobile{flex:none;width:41.6666666667%}.column.is-offset-5-mobile{margin-inline-start:41.6666666667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-inline-start:50%}.column.is-7-mobile{flex:none;width:58.3333333333%}.column.is-offset-7-mobile{margin-inline-start:58.3333333333%}.column.is-8-mobile{flex:none;width:66.6666666667%}.column.is-offset-8-mobile{margin-inline-start:66.6666666667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-inline-start:75%}.column.is-10-mobile{flex:none;width:83.3333333333%}.column.is-offset-10-mobile{margin-inline-start:83.3333333333%}.column.is-11-mobile{flex:none;width:91.6666666667%}.column.is-offset-11-mobile{margin-inline-start:91.6666666667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-inline-start:100%}}@media print,screen and (min-width:769px){.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-inline-start:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-inline-start:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-inline-start:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-inline-start:.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-inline-start:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-inline-start:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-inline-start:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-inline-start:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-inline-start:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0}.column.is-offset-0,.column.is-offset-0-tablet{margin-inline-start:0}.column.is-1,.column.is-1-tablet{flex:none;width:8.3333333333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-inline-start:8.3333333333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.6666666667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-inline-start:16.6666666667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-inline-start:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.3333333333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-inline-start:33.3333333333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.6666666667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-inline-start:41.6666666667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-inline-start:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.3333333333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-inline-start:58.3333333333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.6666666667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-inline-start:66.6666666667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-inline-start:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.3333333333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-inline-start:83.3333333333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.6666666667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-inline-start:91.6666666667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-inline-start:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-inline-start:75%}.column.is-offset-two-thirds-touch{margin-inline-start:66.6666%}.column.is-offset-half-touch{margin-inline-start:50%}.column.is-offset-one-third-touch{margin-inline-start:.3333%}.column.is-offset-one-quarter-touch{margin-inline-start:25%}.column.is-offset-one-fifth-touch{margin-inline-start:20%}.column.is-offset-two-fifths-touch{margin-inline-start:40%}.column.is-offset-three-fifths-touch{margin-inline-start:60%}.column.is-offset-four-fifths-touch{margin-inline-start:80%}.column.is-0-touch{flex:none;width:0}.column.is-offset-0-touch{margin-inline-start:0}.column.is-1-touch{flex:none;width:8.3333333333%}.column.is-offset-1-touch{margin-inline-start:8.3333333333%}.column.is-2-touch{flex:none;width:16.6666666667%}.column.is-offset-2-touch{margin-inline-start:16.6666666667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-inline-start:25%}.column.is-4-touch{flex:none;width:33.3333333333%}.column.is-offset-4-touch{margin-inline-start:33.3333333333%}.column.is-5-touch{flex:none;width:41.6666666667%}.column.is-offset-5-touch{margin-inline-start:41.6666666667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-inline-start:50%}.column.is-7-touch{flex:none;width:58.3333333333%}.column.is-offset-7-touch{margin-inline-start:58.3333333333%}.column.is-8-touch{flex:none;width:66.6666666667%}.column.is-offset-8-touch{margin-inline-start:66.6666666667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-inline-start:75%}.column.is-10-touch{flex:none;width:83.3333333333%}.column.is-offset-10-touch{margin-inline-start:83.3333333333%}.column.is-11-touch{flex:none;width:91.6666666667%}.column.is-offset-11-touch{margin-inline-start:91.6666666667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-inline-start:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-inline-start:75%}.column.is-offset-two-thirds-desktop{margin-inline-start:66.6666%}.column.is-offset-half-desktop{margin-inline-start:50%}.column.is-offset-one-third-desktop{margin-inline-start:.3333%}.column.is-offset-one-quarter-desktop{margin-inline-start:25%}.column.is-offset-one-fifth-desktop{margin-inline-start:20%}.column.is-offset-two-fifths-desktop{margin-inline-start:40%}.column.is-offset-three-fifths-desktop{margin-inline-start:60%}.column.is-offset-four-fifths-desktop{margin-inline-start:80%}.column.is-0-desktop{flex:none;width:0}.column.is-offset-0-desktop{margin-inline-start:0}.column.is-1-desktop{flex:none;width:8.3333333333%}.column.is-offset-1-desktop{margin-inline-start:8.3333333333%}.column.is-2-desktop{flex:none;width:16.6666666667%}.column.is-offset-2-desktop{margin-inline-start:16.6666666667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-inline-start:25%}.column.is-4-desktop{flex:none;width:33.3333333333%}.column.is-offset-4-desktop{margin-inline-start:33.3333333333%}.column.is-5-desktop{flex:none;width:41.6666666667%}.column.is-offset-5-desktop{margin-inline-start:41.6666666667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-inline-start:50%}.column.is-7-desktop{flex:none;width:58.3333333333%}.column.is-offset-7-desktop{margin-inline-start:58.3333333333%}.column.is-8-desktop{flex:none;width:66.6666666667%}.column.is-offset-8-desktop{margin-inline-start:66.6666666667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-inline-start:75%}.column.is-10-desktop{flex:none;width:83.3333333333%}.column.is-offset-10-desktop{margin-inline-start:83.3333333333%}.column.is-11-desktop{flex:none;width:91.6666666667%}.column.is-offset-11-desktop{margin-inline-start:91.6666666667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-inline-start:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-inline-start:75%}.column.is-offset-two-thirds-widescreen{margin-inline-start:66.6666%}.column.is-offset-half-widescreen{margin-inline-start:50%}.column.is-offset-one-third-widescreen{margin-inline-start:.3333%}.column.is-offset-one-quarter-widescreen{margin-inline-start:25%}.column.is-offset-one-fifth-widescreen{margin-inline-start:20%}.column.is-offset-two-fifths-widescreen{margin-inline-start:40%}.column.is-offset-three-fifths-widescreen{margin-inline-start:60%}.column.is-offset-four-fifths-widescreen{margin-inline-start:80%}.column.is-0-widescreen{flex:none;width:0}.column.is-offset-0-widescreen{margin-inline-start:0}.column.is-1-widescreen{flex:none;width:8.3333333333%}.column.is-offset-1-widescreen{margin-inline-start:8.3333333333%}.column.is-2-widescreen{flex:none;width:16.6666666667%}.column.is-offset-2-widescreen{margin-inline-start:16.6666666667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-inline-start:25%}.column.is-4-widescreen{flex:none;width:33.3333333333%}.column.is-offset-4-widescreen{margin-inline-start:33.3333333333%}.column.is-5-widescreen{flex:none;width:41.6666666667%}.column.is-offset-5-widescreen{margin-inline-start:41.6666666667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-inline-start:50%}.column.is-7-widescreen{flex:none;width:58.3333333333%}.column.is-offset-7-widescreen{margin-inline-start:58.3333333333%}.column.is-8-widescreen{flex:none;width:66.6666666667%}.column.is-offset-8-widescreen{margin-inline-start:66.6666666667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-inline-start:75%}.column.is-10-widescreen{flex:none;width:83.3333333333%}.column.is-offset-10-widescreen{margin-inline-start:83.3333333333%}.column.is-11-widescreen{flex:none;width:91.6666666667%}.column.is-offset-11-widescreen{margin-inline-start:91.6666666667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-inline-start:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-inline-start:75%}.column.is-offset-two-thirds-fullhd{margin-inline-start:66.6666%}.column.is-offset-half-fullhd{margin-inline-start:50%}.column.is-offset-one-third-fullhd{margin-inline-start:33.3333%}.column.is-offset-one-quarter-fullhd{margin-inline-start:25%}.column.is-offset-one-fifth-fullhd{margin-inline-start:20%}.column.is-offset-two-fifths-fullhd{margin-inline-start:40%}.column.is-offset-three-fifths-fullhd{margin-inline-start:60%}.column.is-offset-four-fifths-fullhd{margin-inline-start:80%}.column.is-0-fullhd{flex:none;width:0}.column.is-offset-0-fullhd{margin-inline-start:0}.column.is-1-fullhd{flex:none;width:8.3333333333%}.column.is-offset-1-fullhd{margin-inline-start:8.3333333333%}.column.is-2-fullhd{flex:none;width:16.6666666667%}.column.is-offset-2-fullhd{margin-inline-start:16.6666666667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-inline-start:25%}.column.is-4-fullhd{flex:none;width:33.3333333333%}.column.is-offset-4-fullhd{margin-inline-start:33.3333333333%}.column.is-5-fullhd{flex:none;width:41.6666666667%}.column.is-offset-5-fullhd{margin-inline-start:41.6666666667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-inline-start:50%}.column.is-7-fullhd{flex:none;width:58.3333333333%}.column.is-offset-7-fullhd{margin-inline-start:58.3333333333%}.column.is-8-fullhd{flex:none;width:66.6666666667%}.column.is-offset-8-fullhd{margin-inline-start:66.6666666667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-inline-start:75%}.column.is-10-fullhd{flex:none;width:83.3333333333%}.column.is-offset-10-fullhd{margin-inline-start:83.3333333333%}.column.is-11-fullhd{flex:none;width:91.6666666667%}.column.is-offset-11-fullhd{margin-inline-start:91.6666666667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-inline-start:100%}}.columns{margin-inline-end:calc(var(--bulma-column-gap)*-1);margin-inline-start:calc(var(--bulma-column-gap)*-1);margin-top:calc(var(--bulma-column-gap)*-1)}.columns:last-child{margin-bottom:calc(var(--bulma-column-gap)*-1)}.columns:not(:last-child){margin-bottom:calc(var(--bulma-block-spacing) - var(--bulma-column-gap))}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-inline-end:0;margin-inline-start:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:flex}}.columns.is-0{--bulma-column-gap:0rem}@media screen and (max-width:768px){.columns.is-0-mobile{--bulma-column-gap:0rem}}@media print,screen and (min-width:769px){.columns.is-0-tablet{--bulma-column-gap:0rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-0-tablet-only{--bulma-column-gap:0rem}}@media screen and (max-width:1023px){.columns.is-0-touch{--bulma-column-gap:0rem}}@media screen and (min-width:1024px){.columns.is-0-desktop{--bulma-column-gap:0rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-0-desktop-only{--bulma-column-gap:0rem}}@media screen and (min-width:1216px){.columns.is-0-widescreen{--bulma-column-gap:0rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-0-widescreen-only{--bulma-column-gap:0rem}}@media screen and (min-width:1408px){.columns.is-0-fullhd{--bulma-column-gap:0rem}}.columns.is-1{--bulma-column-gap:0.25rem}@media screen and (max-width:768px){.columns.is-1-mobile{--bulma-column-gap:0.25rem}}@media print,screen and (min-width:769px){.columns.is-1-tablet{--bulma-column-gap:0.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-1-tablet-only{--bulma-column-gap:0.25rem}}@media screen and (max-width:1023px){.columns.is-1-touch{--bulma-column-gap:0.25rem}}@media screen and (min-width:1024px){.columns.is-1-desktop{--bulma-column-gap:0.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-1-desktop-only{--bulma-column-gap:0.25rem}}@media screen and (min-width:1216px){.columns.is-1-widescreen{--bulma-column-gap:0.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-1-widescreen-only{--bulma-column-gap:0.25rem}}@media screen and (min-width:1408px){.columns.is-1-fullhd{--bulma-column-gap:0.25rem}}.columns.is-2{--bulma-column-gap:0.5rem}@media screen and (max-width:768px){.columns.is-2-mobile{--bulma-column-gap:0.5rem}}@media print,screen and (min-width:769px){.columns.is-2-tablet{--bulma-column-gap:0.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-2-tablet-only{--bulma-column-gap:0.5rem}}@media screen and (max-width:1023px){.columns.is-2-touch{--bulma-column-gap:0.5rem}}@media screen and (min-width:1024px){.columns.is-2-desktop{--bulma-column-gap:0.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-2-desktop-only{--bulma-column-gap:0.5rem}}@media screen and (min-width:1216px){.columns.is-2-widescreen{--bulma-column-gap:0.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-2-widescreen-only{--bulma-column-gap:0.5rem}}@media screen and (min-width:1408px){.columns.is-2-fullhd{--bulma-column-gap:0.5rem}}.columns.is-3{--bulma-column-gap:0.75rem}@media screen and (max-width:768px){.columns.is-3-mobile{--bulma-column-gap:0.75rem}}@media print,screen and (min-width:769px){.columns.is-3-tablet{--bulma-column-gap:0.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-3-tablet-only{--bulma-column-gap:0.75rem}}@media screen and (max-width:1023px){.columns.is-3-touch{--bulma-column-gap:0.75rem}}@media screen and (min-width:1024px){.columns.is-3-desktop{--bulma-column-gap:0.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-3-desktop-only{--bulma-column-gap:0.75rem}}@media screen and (min-width:1216px){.columns.is-3-widescreen{--bulma-column-gap:0.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-3-widescreen-only{--bulma-column-gap:0.75rem}}@media screen and (min-width:1408px){.columns.is-3-fullhd{--bulma-column-gap:0.75rem}}.columns.is-4{--bulma-column-gap:1rem}@media screen and (max-width:768px){.columns.is-4-mobile{--bulma-column-gap:1rem}}@media print,screen and (min-width:769px){.columns.is-4-tablet{--bulma-column-gap:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-4-tablet-only{--bulma-column-gap:1rem}}@media screen and (max-width:1023px){.columns.is-4-touch{--bulma-column-gap:1rem}}@media screen and (min-width:1024px){.columns.is-4-desktop{--bulma-column-gap:1rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-4-desktop-only{--bulma-column-gap:1rem}}@media screen and (min-width:1216px){.columns.is-4-widescreen{--bulma-column-gap:1rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-4-widescreen-only{--bulma-column-gap:1rem}}@media screen and (min-width:1408px){.columns.is-4-fullhd{--bulma-column-gap:1rem}}.columns.is-5{--bulma-column-gap:1.25rem}@media screen and (max-width:768px){.columns.is-5-mobile{--bulma-column-gap:1.25rem}}@media print,screen and (min-width:769px){.columns.is-5-tablet{--bulma-column-gap:1.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-5-tablet-only{--bulma-column-gap:1.25rem}}@media screen and (max-width:1023px){.columns.is-5-touch{--bulma-column-gap:1.25rem}}@media screen and (min-width:1024px){.columns.is-5-desktop{--bulma-column-gap:1.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-5-desktop-only{--bulma-column-gap:1.25rem}}@media screen and (min-width:1216px){.columns.is-5-widescreen{--bulma-column-gap:1.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-5-widescreen-only{--bulma-column-gap:1.25rem}}@media screen and (min-width:1408px){.columns.is-5-fullhd{--bulma-column-gap:1.25rem}}.columns.is-6{--bulma-column-gap:1.5rem}@media screen and (max-width:768px){.columns.is-6-mobile{--bulma-column-gap:1.5rem}}@media print,screen and (min-width:769px){.columns.is-6-tablet{--bulma-column-gap:1.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-6-tablet-only{--bulma-column-gap:1.5rem}}@media screen and (max-width:1023px){.columns.is-6-touch{--bulma-column-gap:1.5rem}}@media screen and (min-width:1024px){.columns.is-6-desktop{--bulma-column-gap:1.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-6-desktop-only{--bulma-column-gap:1.5rem}}@media screen and (min-width:1216px){.columns.is-6-widescreen{--bulma-column-gap:1.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-6-widescreen-only{--bulma-column-gap:1.5rem}}@media screen and (min-width:1408px){.columns.is-6-fullhd{--bulma-column-gap:1.5rem}}.columns.is-7{--bulma-column-gap:1.75rem}@media screen and (max-width:768px){.columns.is-7-mobile{--bulma-column-gap:1.75rem}}@media print,screen and (min-width:769px){.columns.is-7-tablet{--bulma-column-gap:1.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-7-tablet-only{--bulma-column-gap:1.75rem}}@media screen and (max-width:1023px){.columns.is-7-touch{--bulma-column-gap:1.75rem}}@media screen and (min-width:1024px){.columns.is-7-desktop{--bulma-column-gap:1.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-7-desktop-only{--bulma-column-gap:1.75rem}}@media screen and (min-width:1216px){.columns.is-7-widescreen{--bulma-column-gap:1.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-7-widescreen-only{--bulma-column-gap:1.75rem}}@media screen and (min-width:1408px){.columns.is-7-fullhd{--bulma-column-gap:1.75rem}}.columns.is-8{--bulma-column-gap:2rem}@media screen and (max-width:768px){.columns.is-8-mobile{--bulma-column-gap:2rem}}@media print,screen and (min-width:769px){.columns.is-8-tablet{--bulma-column-gap:2rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-8-tablet-only{--bulma-column-gap:2rem}}@media screen and (max-width:1023px){.columns.is-8-touch{--bulma-column-gap:2rem}}@media screen and (min-width:1024px){.columns.is-8-desktop{--bulma-column-gap:2rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-8-desktop-only{--bulma-column-gap:2rem}}@media screen and (min-width:1216px){.columns.is-8-widescreen{--bulma-column-gap:2rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-8-widescreen-only{--bulma-column-gap:2rem}}@media screen and (min-width:1408px){.columns.is-8-fullhd{--bulma-column-gap:2rem}}.fixed-grid{container-name:bulma-fixed-grid;container-type:inline-size}.fixed-grid>.grid{--bulma-grid-gap-count:calc(var(--bulma-grid-column-count) - 1);--bulma-grid-column-count:2;grid-template-columns:repeat(var(--bulma-grid-column-count),1fr)}.fixed-grid.has-1-cols>.grid{--bulma-grid-column-count:1}.fixed-grid.has-2-cols>.grid{--bulma-grid-column-count:2}.fixed-grid.has-3-cols>.grid{--bulma-grid-column-count:3}.fixed-grid.has-4-cols>.grid{--bulma-grid-column-count:4}.fixed-grid.has-5-cols>.grid{--bulma-grid-column-count:5}.fixed-grid.has-6-cols>.grid{--bulma-grid-column-count:6}.fixed-grid.has-7-cols>.grid{--bulma-grid-column-count:7}.fixed-grid.has-8-cols>.grid{--bulma-grid-column-count:8}.fixed-grid.has-9-cols>.grid{--bulma-grid-column-count:9}.fixed-grid.has-10-cols>.grid{--bulma-grid-column-count:10}.fixed-grid.has-11-cols>.grid{--bulma-grid-column-count:11}.fixed-grid.has-12-cols>.grid{--bulma-grid-column-count:12}@container bulma-fixed-grid (max-width: 768px){.fixed-grid.has-1-cols-mobile>.grid{--bulma-grid-column-count:1}.fixed-grid.has-2-cols-mobile>.grid{--bulma-grid-column-count:2}.fixed-grid.has-3-cols-mobile>.grid{--bulma-grid-column-count:3}.fixed-grid.has-4-cols-mobile>.grid{--bulma-grid-column-count:4}.fixed-grid.has-5-cols-mobile>.grid{--bulma-grid-column-count:5}.fixed-grid.has-6-cols-mobile>.grid{--bulma-grid-column-count:6}.fixed-grid.has-7-cols-mobile>.grid{--bulma-grid-column-count:7}.fixed-grid.has-8-cols-mobile>.grid{--bulma-grid-column-count:8}.fixed-grid.has-9-cols-mobile>.grid{--bulma-grid-column-count:9}.fixed-grid.has-10-cols-mobile>.grid{--bulma-grid-column-count:10}.fixed-grid.has-11-cols-mobile>.grid{--bulma-grid-column-count:11}.fixed-grid.has-12-cols-mobile>.grid{--bulma-grid-column-count:12}}@container bulma-fixed-grid (min-width: 769px){.fixed-grid.has-1-cols-tablet>.grid{--bulma-grid-column-count:1}.fixed-grid.has-2-cols-tablet>.grid{--bulma-grid-column-count:2}.fixed-grid.has-3-cols-tablet>.grid{--bulma-grid-column-count:3}.fixed-grid.has-4-cols-tablet>.grid{--bulma-grid-column-count:4}.fixed-grid.has-5-cols-tablet>.grid{--bulma-grid-column-count:5}.fixed-grid.has-6-cols-tablet>.grid{--bulma-grid-column-count:6}.fixed-grid.has-7-cols-tablet>.grid{--bulma-grid-column-count:7}.fixed-grid.has-8-cols-tablet>.grid{--bulma-grid-column-count:8}.fixed-grid.has-9-cols-tablet>.grid{--bulma-grid-column-count:9}.fixed-grid.has-10-cols-tablet>.grid{--bulma-grid-column-count:10}.fixed-grid.has-11-cols-tablet>.grid{--bulma-grid-column-count:11}.fixed-grid.has-12-cols-tablet>.grid{--bulma-grid-column-count:12}}@container bulma-fixed-grid (min-width: 1024px){.fixed-grid.has-1-cols-desktop>.grid{--bulma-grid-column-count:1}.fixed-grid.has-2-cols-desktop>.grid{--bulma-grid-column-count:2}.fixed-grid.has-3-cols-desktop>.grid{--bulma-grid-column-count:3}.fixed-grid.has-4-cols-desktop>.grid{--bulma-grid-column-count:4}.fixed-grid.has-5-cols-desktop>.grid{--bulma-grid-column-count:5}.fixed-grid.has-6-cols-desktop>.grid{--bulma-grid-column-count:6}.fixed-grid.has-7-cols-desktop>.grid{--bulma-grid-column-count:7}.fixed-grid.has-8-cols-desktop>.grid{--bulma-grid-column-count:8}.fixed-grid.has-9-cols-desktop>.grid{--bulma-grid-column-count:9}.fixed-grid.has-10-cols-desktop>.grid{--bulma-grid-column-count:10}.fixed-grid.has-11-cols-desktop>.grid{--bulma-grid-column-count:11}.fixed-grid.has-12-cols-desktop>.grid{--bulma-grid-column-count:12}}@container bulma-fixed-grid (min-width: 1216px){.fixed-grid.has-1-cols-widescreen>.grid{--bulma-grid-column-count:1}.fixed-grid.has-2-cols-widescreen>.grid{--bulma-grid-column-count:2}.fixed-grid.has-3-cols-widescreen>.grid{--bulma-grid-column-count:3}.fixed-grid.has-4-cols-widescreen>.grid{--bulma-grid-column-count:4}.fixed-grid.has-5-cols-widescreen>.grid{--bulma-grid-column-count:5}.fixed-grid.has-6-cols-widescreen>.grid{--bulma-grid-column-count:6}.fixed-grid.has-7-cols-widescreen>.grid{--bulma-grid-column-count:7}.fixed-grid.has-8-cols-widescreen>.grid{--bulma-grid-column-count:8}.fixed-grid.has-9-cols-widescreen>.grid{--bulma-grid-column-count:9}.fixed-grid.has-10-cols-widescreen>.grid{--bulma-grid-column-count:10}.fixed-grid.has-11-cols-widescreen>.grid{--bulma-grid-column-count:11}.fixed-grid.has-12-cols-widescreen>.grid{--bulma-grid-column-count:12}}@container bulma-fixed-grid (min-width: 1408px){.fixed-grid.has-1-cols-fullhd>.grid{--bulma-grid-column-count:1}.fixed-grid.has-2-cols-fullhd>.grid{--bulma-grid-column-count:2}.fixed-grid.has-3-cols-fullhd>.grid{--bulma-grid-column-count:3}.fixed-grid.has-4-cols-fullhd>.grid{--bulma-grid-column-count:4}.fixed-grid.has-5-cols-fullhd>.grid{--bulma-grid-column-count:5}.fixed-grid.has-6-cols-fullhd>.grid{--bulma-grid-column-count:6}.fixed-grid.has-7-cols-fullhd>.grid{--bulma-grid-column-count:7}.fixed-grid.has-8-cols-fullhd>.grid{--bulma-grid-column-count:8}.fixed-grid.has-9-cols-fullhd>.grid{--bulma-grid-column-count:9}.fixed-grid.has-10-cols-fullhd>.grid{--bulma-grid-column-count:10}.fixed-grid.has-11-cols-fullhd>.grid{--bulma-grid-column-count:11}.fixed-grid.has-12-cols-fullhd>.grid{--bulma-grid-column-count:12}}@container bulma-fixed-grid (max-width: 768px){.fixed-grid.has-auto-count .grid{--bulma-grid-column-count:2}}@container bulma-fixed-grid (min-width: 769px){.fixed-grid.has-auto-count .grid{--bulma-grid-column-count:4}}@container bulma-fixed-grid (min-width: 1024px){.fixed-grid.has-auto-count .grid{--bulma-grid-column-count:8}}@container bulma-fixed-grid (min-width: 1216px){.fixed-grid.has-auto-count .grid{--bulma-grid-column-count:12}}@container bulma-fixed-grid (min-width: 1408px){.fixed-grid.has-auto-count .grid{--bulma-grid-column-count:16}}.grid{--bulma-grid-gap:0.75rem;--bulma-grid-column-min:9rem;--bulma-grid-cell-column-span:1;--bulma-grid-cell-row-span:1;display:grid;gap:var(--bulma-grid-gap);column-gap:var(--bulma-grid-column-gap,var(--bulma-grid-gap));grid-template-columns:repeat(auto-fit,minmax(var(--bulma-grid-column-min),1fr));grid-template-rows:auto;row-gap:var(--bulma-grid-row-gap,var(--bulma-grid-gap))}.grid.is-auto-fill{grid-template-columns:repeat(auto-fill,minmax(var(--bulma-grid-column-min),1fr))}.grid.is-col-min-1{--bulma-grid-column-min:1.5rem}.grid.is-col-min-2{--bulma-grid-column-min:3rem}.grid.is-col-min-3{--bulma-grid-column-min:4.5rem}.grid.is-col-min-4{--bulma-grid-column-min:6rem}.grid.is-col-min-5{--bulma-grid-column-min:7.5rem}.grid.is-col-min-6{--bulma-grid-column-min:9rem}.grid.is-col-min-7{--bulma-grid-column-min:10.5rem}.grid.is-col-min-8{--bulma-grid-column-min:12rem}.grid.is-col-min-9{--bulma-grid-column-min:13.5rem}.grid.is-col-min-10{--bulma-grid-column-min:15rem}.grid.is-col-min-11{--bulma-grid-column-min:16.5rem}.grid.is-col-min-12{--bulma-grid-column-min:18rem}.grid.is-col-min-13{--bulma-grid-column-min:19.5rem}.grid.is-col-min-14{--bulma-grid-column-min:21rem}.grid.is-col-min-15{--bulma-grid-column-min:22.5rem}.grid.is-col-min-16{--bulma-grid-column-min:24rem}.grid.is-col-min-17{--bulma-grid-column-min:25.5rem}.grid.is-col-min-18{--bulma-grid-column-min:27rem}.grid.is-col-min-19{--bulma-grid-column-min:28.5rem}.grid.is-col-min-20{--bulma-grid-column-min:30rem}.grid.is-col-min-21{--bulma-grid-column-min:31.5rem}.grid.is-col-min-22{--bulma-grid-column-min:33rem}.grid.is-col-min-23{--bulma-grid-column-min:34.5rem}.grid.is-col-min-24{--bulma-grid-column-min:36rem}.grid.is-col-min-25{--bulma-grid-column-min:37.5rem}.grid.is-col-min-26{--bulma-grid-column-min:39rem}.grid.is-col-min-27{--bulma-grid-column-min:40.5rem}.grid.is-col-min-28{--bulma-grid-column-min:42rem}.grid.is-col-min-29{--bulma-grid-column-min:43.5rem}.grid.is-col-min-30{--bulma-grid-column-min:45rem}.grid.is-col-min-31{--bulma-grid-column-min:46.5rem}.grid.is-col-min-32{--bulma-grid-column-min:48rem}.cell{grid-column-end:span var(--bulma-grid-cell-column-span);grid-column-start:var(--bulma-grid-cell-column-start);grid-row-end:span var(--bulma-grid-cell-row-span);grid-row-start:var(--bulma-grid-cell-row-start)}.cell.is-col-start-end{--bulma-grid-cell-column-start:-1}.cell.is-row-start-end{--bulma-grid-cell-row-start:-1}.cell.is-col-start-1{--bulma-grid-cell-column-start:1}.cell.is-col-end-1{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1{--bulma-grid-cell-column-span:1}.cell.is-row-start-1{--bulma-grid-cell-row-start:1}.cell.is-row-end-1{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1{--bulma-grid-cell-row-span:1}.cell.is-col-start-2{--bulma-grid-cell-column-start:2}.cell.is-col-end-2{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2{--bulma-grid-cell-column-span:2}.cell.is-row-start-2{--bulma-grid-cell-row-start:2}.cell.is-row-end-2{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2{--bulma-grid-cell-row-span:2}.cell.is-col-start-3{--bulma-grid-cell-column-start:3}.cell.is-col-end-3{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3{--bulma-grid-cell-column-span:3}.cell.is-row-start-3{--bulma-grid-cell-row-start:3}.cell.is-row-end-3{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3{--bulma-grid-cell-row-span:3}.cell.is-col-start-4{--bulma-grid-cell-column-start:4}.cell.is-col-end-4{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4{--bulma-grid-cell-column-span:4}.cell.is-row-start-4{--bulma-grid-cell-row-start:4}.cell.is-row-end-4{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4{--bulma-grid-cell-row-span:4}.cell.is-col-start-5{--bulma-grid-cell-column-start:5}.cell.is-col-end-5{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5{--bulma-grid-cell-column-span:5}.cell.is-row-start-5{--bulma-grid-cell-row-start:5}.cell.is-row-end-5{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5{--bulma-grid-cell-row-span:5}.cell.is-col-start-6{--bulma-grid-cell-column-start:6}.cell.is-col-end-6{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6{--bulma-grid-cell-column-span:6}.cell.is-row-start-6{--bulma-grid-cell-row-start:6}.cell.is-row-end-6{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6{--bulma-grid-cell-row-span:6}.cell.is-col-start-7{--bulma-grid-cell-column-start:7}.cell.is-col-end-7{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7{--bulma-grid-cell-column-span:7}.cell.is-row-start-7{--bulma-grid-cell-row-start:7}.cell.is-row-end-7{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7{--bulma-grid-cell-row-span:7}.cell.is-col-start-8{--bulma-grid-cell-column-start:8}.cell.is-col-end-8{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8{--bulma-grid-cell-column-span:8}.cell.is-row-start-8{--bulma-grid-cell-row-start:8}.cell.is-row-end-8{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8{--bulma-grid-cell-row-span:8}.cell.is-col-start-9{--bulma-grid-cell-column-start:9}.cell.is-col-end-9{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9{--bulma-grid-cell-column-span:9}.cell.is-row-start-9{--bulma-grid-cell-row-start:9}.cell.is-row-end-9{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9{--bulma-grid-cell-row-span:9}.cell.is-col-start-10{--bulma-grid-cell-column-start:10}.cell.is-col-end-10{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10{--bulma-grid-cell-column-span:10}.cell.is-row-start-10{--bulma-grid-cell-row-start:10}.cell.is-row-end-10{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10{--bulma-grid-cell-row-span:10}.cell.is-col-start-11{--bulma-grid-cell-column-start:11}.cell.is-col-end-11{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11{--bulma-grid-cell-column-span:11}.cell.is-row-start-11{--bulma-grid-cell-row-start:11}.cell.is-row-end-11{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11{--bulma-grid-cell-row-span:11}.cell.is-col-start-12{--bulma-grid-cell-column-start:12}.cell.is-col-end-12{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12{--bulma-grid-cell-column-span:12}.cell.is-row-start-12{--bulma-grid-cell-row-start:12}.cell.is-row-end-12{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12{--bulma-grid-cell-row-span:12}@media screen and (max-width:768px){.cell.is-col-start-1-mobile{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-mobile{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-mobile{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-mobile{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-mobile{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-mobile{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-mobile{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-mobile{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-mobile{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-mobile{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-mobile{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-mobile{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-mobile{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-mobile{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-mobile{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-mobile{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-mobile{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-mobile{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-mobile{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-mobile{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-mobile{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-mobile{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-mobile{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-mobile{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-mobile{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-mobile{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-mobile{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-mobile{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-mobile{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-mobile{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-mobile{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-mobile{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-mobile{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-mobile{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-mobile{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-mobile{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-mobile{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-mobile{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-mobile{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-mobile{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-mobile{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-mobile{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-mobile{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-mobile{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-mobile{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-mobile{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-mobile{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-mobile{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-mobile{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-mobile{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-mobile{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-mobile{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-mobile{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-mobile{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-mobile{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-mobile{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-mobile{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-mobile{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-mobile{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-mobile{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-mobile{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-mobile{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-mobile{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-mobile{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-mobile{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-mobile{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-mobile{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-mobile{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-mobile{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-mobile{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-mobile{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-mobile{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-mobile{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-mobile{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-mobile{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-mobile{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-mobile{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-mobile{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-mobile{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-mobile{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-mobile{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-mobile{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-mobile{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-mobile{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-mobile{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-mobile{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-mobile{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-mobile{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-mobile{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-mobile{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-mobile{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-mobile{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-mobile{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-mobile{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-mobile{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-mobile{--bulma-grid-cell-row-span:12}}@media print,screen and (min-width:769px){.cell.is-col-start-1-tablet{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-tablet{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-tablet{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-tablet{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-tablet{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-tablet{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-tablet{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-tablet{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-tablet{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-tablet{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-tablet{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-tablet{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-tablet{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-tablet{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-tablet{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-tablet{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-tablet{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-tablet{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-tablet{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-tablet{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-tablet{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-tablet{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-tablet{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-tablet{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-tablet{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-tablet{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-tablet{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-tablet{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-tablet{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-tablet{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-tablet{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-tablet{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-tablet{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-tablet{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-tablet{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-tablet{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-tablet{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-tablet{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-tablet{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-tablet{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-tablet{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-tablet{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-tablet{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-tablet{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-tablet{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-tablet{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-tablet{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-tablet{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-tablet{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-tablet{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-tablet{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-tablet{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-tablet{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-tablet{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-tablet{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-tablet{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-tablet{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-tablet{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-tablet{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-tablet{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-tablet{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-tablet{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-tablet{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-tablet{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-tablet{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-tablet{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-tablet{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-tablet{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-tablet{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-tablet{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-tablet{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-tablet{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-tablet{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-tablet{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-tablet{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-tablet{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-tablet{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-tablet{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-tablet{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-tablet{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-tablet{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-tablet{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-tablet{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-tablet{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-tablet{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-tablet{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-tablet{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-tablet{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-tablet{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-tablet{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-tablet{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-tablet{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-tablet{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-tablet{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-tablet{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-tablet{--bulma-grid-cell-row-span:12}}@media screen and (min-width:769px) and (max-width:1023px){.cell.is-col-start-1-tablet-only{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-tablet-only{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-tablet-only{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-tablet-only{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-tablet-only{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-tablet-only{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-tablet-only{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-tablet-only{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-tablet-only{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-tablet-only{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-tablet-only{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-tablet-only{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-tablet-only{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-tablet-only{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-tablet-only{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-tablet-only{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-tablet-only{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-tablet-only{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-tablet-only{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-tablet-only{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-tablet-only{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-tablet-only{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-tablet-only{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-tablet-only{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-tablet-only{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-tablet-only{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-tablet-only{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-tablet-only{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-tablet-only{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-tablet-only{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-tablet-only{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-tablet-only{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-tablet-only{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-tablet-only{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-tablet-only{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-tablet-only{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-tablet-only{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-tablet-only{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-tablet-only{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-tablet-only{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-tablet-only{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-tablet-only{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-tablet-only{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-tablet-only{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-tablet-only{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-tablet-only{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-tablet-only{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-tablet-only{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-tablet-only{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-tablet-only{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-tablet-only{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-tablet-only{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-tablet-only{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-tablet-only{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-tablet-only{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-tablet-only{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-tablet-only{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-tablet-only{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-tablet-only{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-tablet-only{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-tablet-only{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-tablet-only{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-tablet-only{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-tablet-only{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-tablet-only{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-tablet-only{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-tablet-only{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-tablet-only{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-tablet-only{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-tablet-only{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-tablet-only{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-tablet-only{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-tablet-only{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-tablet-only{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-tablet-only{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-tablet-only{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-tablet-only{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-tablet-only{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-tablet-only{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-tablet-only{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-tablet-only{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-tablet-only{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-tablet-only{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-tablet-only{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-tablet-only{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-tablet-only{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-tablet-only{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-tablet-only{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-tablet-only{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-tablet-only{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-tablet-only{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-tablet-only{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-tablet-only{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-tablet-only{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-tablet-only{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-tablet-only{--bulma-grid-cell-row-span:12}}@media screen and (min-width:1024px){.cell.is-col-start-1-desktop{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-desktop{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-desktop{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-desktop{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-desktop{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-desktop{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-desktop{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-desktop{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-desktop{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-desktop{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-desktop{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-desktop{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-desktop{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-desktop{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-desktop{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-desktop{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-desktop{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-desktop{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-desktop{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-desktop{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-desktop{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-desktop{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-desktop{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-desktop{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-desktop{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-desktop{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-desktop{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-desktop{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-desktop{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-desktop{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-desktop{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-desktop{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-desktop{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-desktop{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-desktop{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-desktop{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-desktop{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-desktop{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-desktop{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-desktop{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-desktop{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-desktop{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-desktop{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-desktop{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-desktop{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-desktop{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-desktop{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-desktop{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-desktop{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-desktop{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-desktop{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-desktop{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-desktop{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-desktop{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-desktop{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-desktop{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-desktop{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-desktop{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-desktop{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-desktop{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-desktop{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-desktop{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-desktop{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-desktop{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-desktop{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-desktop{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-desktop{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-desktop{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-desktop{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-desktop{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-desktop{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-desktop{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-desktop{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-desktop{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-desktop{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-desktop{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-desktop{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-desktop{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-desktop{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-desktop{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-desktop{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-desktop{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-desktop{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-desktop{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-desktop{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-desktop{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-desktop{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-desktop{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-desktop{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-desktop{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-desktop{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-desktop{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-desktop{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-desktop{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-desktop{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-desktop{--bulma-grid-cell-row-span:12}}@media screen and (min-width:1024px) and (max-width:1215px){.cell.is-col-start-1-desktop-only{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-desktop-only{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-desktop-only{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-desktop-only{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-desktop-only{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-desktop-only{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-desktop-only{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-desktop-only{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-desktop-only{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-desktop-only{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-desktop-only{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-desktop-only{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-desktop-only{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-desktop-only{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-desktop-only{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-desktop-only{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-desktop-only{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-desktop-only{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-desktop-only{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-desktop-only{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-desktop-only{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-desktop-only{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-desktop-only{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-desktop-only{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-desktop-only{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-desktop-only{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-desktop-only{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-desktop-only{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-desktop-only{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-desktop-only{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-desktop-only{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-desktop-only{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-desktop-only{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-desktop-only{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-desktop-only{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-desktop-only{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-desktop-only{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-desktop-only{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-desktop-only{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-desktop-only{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-desktop-only{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-desktop-only{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-desktop-only{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-desktop-only{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-desktop-only{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-desktop-only{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-desktop-only{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-desktop-only{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-desktop-only{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-desktop-only{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-desktop-only{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-desktop-only{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-desktop-only{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-desktop-only{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-desktop-only{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-desktop-only{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-desktop-only{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-desktop-only{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-desktop-only{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-desktop-only{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-desktop-only{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-desktop-only{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-desktop-only{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-desktop-only{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-desktop-only{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-desktop-only{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-desktop-only{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-desktop-only{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-desktop-only{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-desktop-only{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-desktop-only{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-desktop-only{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-desktop-only{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-desktop-only{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-desktop-only{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-desktop-only{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-desktop-only{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-desktop-only{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-desktop-only{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-desktop-only{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-desktop-only{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-desktop-only{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-desktop-only{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-desktop-only{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-desktop-only{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-desktop-only{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-desktop-only{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-desktop-only{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-desktop-only{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-desktop-only{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-desktop-only{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-desktop-only{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-desktop-only{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-desktop-only{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-desktop-only{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-desktop-only{--bulma-grid-cell-row-span:12}}@media screen and (min-width:1216px){.cell.is-col-start-1-widescreen{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-widescreen{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-widescreen{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-widescreen{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-widescreen{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-widescreen{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-widescreen{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-widescreen{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-widescreen{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-widescreen{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-widescreen{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-widescreen{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-widescreen{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-widescreen{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-widescreen{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-widescreen{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-widescreen{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-widescreen{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-widescreen{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-widescreen{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-widescreen{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-widescreen{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-widescreen{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-widescreen{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-widescreen{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-widescreen{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-widescreen{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-widescreen{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-widescreen{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-widescreen{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-widescreen{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-widescreen{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-widescreen{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-widescreen{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-widescreen{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-widescreen{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-widescreen{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-widescreen{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-widescreen{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-widescreen{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-widescreen{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-widescreen{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-widescreen{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-widescreen{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-widescreen{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-widescreen{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-widescreen{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-widescreen{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-widescreen{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-widescreen{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-widescreen{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-widescreen{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-widescreen{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-widescreen{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-widescreen{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-widescreen{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-widescreen{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-widescreen{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-widescreen{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-widescreen{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-widescreen{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-widescreen{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-widescreen{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-widescreen{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-widescreen{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-widescreen{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-widescreen{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-widescreen{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-widescreen{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-widescreen{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-widescreen{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-widescreen{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-widescreen{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-widescreen{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-widescreen{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-widescreen{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-widescreen{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-widescreen{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-widescreen{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-widescreen{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-widescreen{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-widescreen{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-widescreen{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-widescreen{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-widescreen{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-widescreen{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-widescreen{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-widescreen{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-widescreen{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-widescreen{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-widescreen{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-widescreen{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-widescreen{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-widescreen{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-widescreen{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-widescreen{--bulma-grid-cell-row-span:12}}@media screen and (min-width:1216px) and (max-width:1407px){.cell.is-col-start-1-widescreen-only{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-widescreen-only{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-widescreen-only{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-widescreen-only{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-widescreen-only{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-widescreen-only{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-widescreen-only{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-widescreen-only{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-widescreen-only{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-widescreen-only{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-widescreen-only{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-widescreen-only{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-widescreen-only{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-widescreen-only{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-widescreen-only{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-widescreen-only{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-widescreen-only{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-widescreen-only{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-widescreen-only{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-widescreen-only{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-widescreen-only{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-widescreen-only{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-widescreen-only{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-widescreen-only{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-widescreen-only{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-widescreen-only{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-widescreen-only{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-widescreen-only{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-widescreen-only{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-widescreen-only{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-widescreen-only{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-widescreen-only{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-widescreen-only{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-widescreen-only{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-widescreen-only{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-widescreen-only{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-widescreen-only{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-widescreen-only{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-widescreen-only{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-widescreen-only{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-widescreen-only{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-widescreen-only{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-widescreen-only{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-widescreen-only{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-widescreen-only{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-widescreen-only{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-widescreen-only{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-widescreen-only{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-widescreen-only{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-widescreen-only{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-widescreen-only{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-widescreen-only{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-widescreen-only{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-widescreen-only{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-widescreen-only{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-widescreen-only{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-widescreen-only{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-widescreen-only{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-widescreen-only{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-widescreen-only{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-widescreen-only{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-widescreen-only{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-widescreen-only{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-widescreen-only{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-widescreen-only{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-widescreen-only{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-widescreen-only{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-widescreen-only{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-widescreen-only{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-widescreen-only{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-widescreen-only{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-widescreen-only{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-widescreen-only{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-widescreen-only{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-widescreen-only{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-widescreen-only{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-widescreen-only{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-widescreen-only{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-widescreen-only{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-widescreen-only{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-widescreen-only{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-widescreen-only{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-widescreen-only{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-widescreen-only{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-widescreen-only{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-widescreen-only{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-widescreen-only{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-widescreen-only{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-widescreen-only{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-widescreen-only{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-widescreen-only{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-widescreen-only{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-widescreen-only{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-widescreen-only{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-widescreen-only{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-widescreen-only{--bulma-grid-cell-row-span:12}}@media screen and (min-width:1408px){.cell.is-col-start-1-fullhd{--bulma-grid-cell-column-start:1}.cell.is-col-end-1-fullhd{--bulma-grid-cell-column-end:1}.cell.is-col-from-end-1-fullhd{--bulma-grid-cell-column-start:-1}.cell.is-col-span-1-fullhd{--bulma-grid-cell-column-span:1}.cell.is-row-start-1-fullhd{--bulma-grid-cell-row-start:1}.cell.is-row-end-1-fullhd{--bulma-grid-cell-row-end:1}.cell.is-row-from-end-1-fullhd{--bulma-grid-cell-row-start:-1}.cell.is-row-span-1-fullhd{--bulma-grid-cell-row-span:1}.cell.is-col-start-2-fullhd{--bulma-grid-cell-column-start:2}.cell.is-col-end-2-fullhd{--bulma-grid-cell-column-end:2}.cell.is-col-from-end-2-fullhd{--bulma-grid-cell-column-start:-2}.cell.is-col-span-2-fullhd{--bulma-grid-cell-column-span:2}.cell.is-row-start-2-fullhd{--bulma-grid-cell-row-start:2}.cell.is-row-end-2-fullhd{--bulma-grid-cell-row-end:2}.cell.is-row-from-end-2-fullhd{--bulma-grid-cell-row-start:-2}.cell.is-row-span-2-fullhd{--bulma-grid-cell-row-span:2}.cell.is-col-start-3-fullhd{--bulma-grid-cell-column-start:3}.cell.is-col-end-3-fullhd{--bulma-grid-cell-column-end:3}.cell.is-col-from-end-3-fullhd{--bulma-grid-cell-column-start:-3}.cell.is-col-span-3-fullhd{--bulma-grid-cell-column-span:3}.cell.is-row-start-3-fullhd{--bulma-grid-cell-row-start:3}.cell.is-row-end-3-fullhd{--bulma-grid-cell-row-end:3}.cell.is-row-from-end-3-fullhd{--bulma-grid-cell-row-start:-3}.cell.is-row-span-3-fullhd{--bulma-grid-cell-row-span:3}.cell.is-col-start-4-fullhd{--bulma-grid-cell-column-start:4}.cell.is-col-end-4-fullhd{--bulma-grid-cell-column-end:4}.cell.is-col-from-end-4-fullhd{--bulma-grid-cell-column-start:-4}.cell.is-col-span-4-fullhd{--bulma-grid-cell-column-span:4}.cell.is-row-start-4-fullhd{--bulma-grid-cell-row-start:4}.cell.is-row-end-4-fullhd{--bulma-grid-cell-row-end:4}.cell.is-row-from-end-4-fullhd{--bulma-grid-cell-row-start:-4}.cell.is-row-span-4-fullhd{--bulma-grid-cell-row-span:4}.cell.is-col-start-5-fullhd{--bulma-grid-cell-column-start:5}.cell.is-col-end-5-fullhd{--bulma-grid-cell-column-end:5}.cell.is-col-from-end-5-fullhd{--bulma-grid-cell-column-start:-5}.cell.is-col-span-5-fullhd{--bulma-grid-cell-column-span:5}.cell.is-row-start-5-fullhd{--bulma-grid-cell-row-start:5}.cell.is-row-end-5-fullhd{--bulma-grid-cell-row-end:5}.cell.is-row-from-end-5-fullhd{--bulma-grid-cell-row-start:-5}.cell.is-row-span-5-fullhd{--bulma-grid-cell-row-span:5}.cell.is-col-start-6-fullhd{--bulma-grid-cell-column-start:6}.cell.is-col-end-6-fullhd{--bulma-grid-cell-column-end:6}.cell.is-col-from-end-6-fullhd{--bulma-grid-cell-column-start:-6}.cell.is-col-span-6-fullhd{--bulma-grid-cell-column-span:6}.cell.is-row-start-6-fullhd{--bulma-grid-cell-row-start:6}.cell.is-row-end-6-fullhd{--bulma-grid-cell-row-end:6}.cell.is-row-from-end-6-fullhd{--bulma-grid-cell-row-start:-6}.cell.is-row-span-6-fullhd{--bulma-grid-cell-row-span:6}.cell.is-col-start-7-fullhd{--bulma-grid-cell-column-start:7}.cell.is-col-end-7-fullhd{--bulma-grid-cell-column-end:7}.cell.is-col-from-end-7-fullhd{--bulma-grid-cell-column-start:-7}.cell.is-col-span-7-fullhd{--bulma-grid-cell-column-span:7}.cell.is-row-start-7-fullhd{--bulma-grid-cell-row-start:7}.cell.is-row-end-7-fullhd{--bulma-grid-cell-row-end:7}.cell.is-row-from-end-7-fullhd{--bulma-grid-cell-row-start:-7}.cell.is-row-span-7-fullhd{--bulma-grid-cell-row-span:7}.cell.is-col-start-8-fullhd{--bulma-grid-cell-column-start:8}.cell.is-col-end-8-fullhd{--bulma-grid-cell-column-end:8}.cell.is-col-from-end-8-fullhd{--bulma-grid-cell-column-start:-8}.cell.is-col-span-8-fullhd{--bulma-grid-cell-column-span:8}.cell.is-row-start-8-fullhd{--bulma-grid-cell-row-start:8}.cell.is-row-end-8-fullhd{--bulma-grid-cell-row-end:8}.cell.is-row-from-end-8-fullhd{--bulma-grid-cell-row-start:-8}.cell.is-row-span-8-fullhd{--bulma-grid-cell-row-span:8}.cell.is-col-start-9-fullhd{--bulma-grid-cell-column-start:9}.cell.is-col-end-9-fullhd{--bulma-grid-cell-column-end:9}.cell.is-col-from-end-9-fullhd{--bulma-grid-cell-column-start:-9}.cell.is-col-span-9-fullhd{--bulma-grid-cell-column-span:9}.cell.is-row-start-9-fullhd{--bulma-grid-cell-row-start:9}.cell.is-row-end-9-fullhd{--bulma-grid-cell-row-end:9}.cell.is-row-from-end-9-fullhd{--bulma-grid-cell-row-start:-9}.cell.is-row-span-9-fullhd{--bulma-grid-cell-row-span:9}.cell.is-col-start-10-fullhd{--bulma-grid-cell-column-start:10}.cell.is-col-end-10-fullhd{--bulma-grid-cell-column-end:10}.cell.is-col-from-end-10-fullhd{--bulma-grid-cell-column-start:-10}.cell.is-col-span-10-fullhd{--bulma-grid-cell-column-span:10}.cell.is-row-start-10-fullhd{--bulma-grid-cell-row-start:10}.cell.is-row-end-10-fullhd{--bulma-grid-cell-row-end:10}.cell.is-row-from-end-10-fullhd{--bulma-grid-cell-row-start:-10}.cell.is-row-span-10-fullhd{--bulma-grid-cell-row-span:10}.cell.is-col-start-11-fullhd{--bulma-grid-cell-column-start:11}.cell.is-col-end-11-fullhd{--bulma-grid-cell-column-end:11}.cell.is-col-from-end-11-fullhd{--bulma-grid-cell-column-start:-11}.cell.is-col-span-11-fullhd{--bulma-grid-cell-column-span:11}.cell.is-row-start-11-fullhd{--bulma-grid-cell-row-start:11}.cell.is-row-end-11-fullhd{--bulma-grid-cell-row-end:11}.cell.is-row-from-end-11-fullhd{--bulma-grid-cell-row-start:-11}.cell.is-row-span-11-fullhd{--bulma-grid-cell-row-span:11}.cell.is-col-start-12-fullhd{--bulma-grid-cell-column-start:12}.cell.is-col-end-12-fullhd{--bulma-grid-cell-column-end:12}.cell.is-col-from-end-12-fullhd{--bulma-grid-cell-column-start:-12}.cell.is-col-span-12-fullhd{--bulma-grid-cell-column-span:12}.cell.is-row-start-12-fullhd{--bulma-grid-cell-row-start:12}.cell.is-row-end-12-fullhd{--bulma-grid-cell-row-end:12}.cell.is-row-from-end-12-fullhd{--bulma-grid-cell-row-start:-12}.cell.is-row-span-12-fullhd{--bulma-grid-cell-row-span:12}}.container{flex-grow:1;margin:0 auto;position:relative;width:100%}.container.is-fluid{max-width:none!important;padding-left:32px;padding-right:32px;width:100%}.container.is-max-tablet{max-width:705px}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (max-width:1215px){.container.is-widescreen:not(.is-max-tablet):not(.is-max-desktop){max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd:not(.is-max-tablet):not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width:1216px){.container:not(.is-max-tablet):not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-tablet):not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.footer{--bulma-footer-background-color:var(--bulma-scheme-main-bis);--bulma-footer-color:false;--bulma-footer-padding:3rem 1.5rem 6rem;background-color:var(--bulma-footer-background-color);padding:var(--bulma-footer-padding)}.hero{--bulma-hero-body-padding:3rem 1.5rem;--bulma-hero-body-padding-tablet:3rem 3rem;--bulma-hero-body-padding-small:1.5rem;--bulma-hero-body-padding-medium:9rem 4.5rem;--bulma-hero-body-padding-large:18rem 6rem;--bulma-hero-gradient-h-offset:5deg;--bulma-hero-gradient-s-offset:10%;--bulma-hero-gradient-l-offset:5%;align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{--bulma-hero-h:var(--bulma-white-h);--bulma-hero-s:var(--bulma-white-s);--bulma-hero-background-l:var(--bulma-white-l);--bulma-hero-color-l:var(--bulma-white-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-white .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-white .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-white .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-white .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-white.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-black{--bulma-hero-h:var(--bulma-black-h);--bulma-hero-s:var(--bulma-black-s);--bulma-hero-background-l:var(--bulma-black-l);--bulma-hero-color-l:var(--bulma-black-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-black .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-black .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-black .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-black .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-black.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-light{--bulma-hero-h:var(--bulma-light-h);--bulma-hero-s:var(--bulma-light-s);--bulma-hero-background-l:var(--bulma-light-l);--bulma-hero-color-l:var(--bulma-light-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-light .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-light .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-light .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-light .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-light.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-dark{--bulma-hero-h:var(--bulma-dark-h);--bulma-hero-s:var(--bulma-dark-s);--bulma-hero-background-l:var(--bulma-dark-l);--bulma-hero-color-l:var(--bulma-dark-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-dark .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-dark .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-dark .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-dark .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-text{--bulma-hero-h:var(--bulma-text-h);--bulma-hero-s:var(--bulma-text-s);--bulma-hero-background-l:var(--bulma-text-l);--bulma-hero-color-l:var(--bulma-text-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-text .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-text .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-text .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-text .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-text.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-text.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-primary{--bulma-hero-h:var(--bulma-primary-h);--bulma-hero-s:var(--bulma-primary-s);--bulma-hero-background-l:var(--bulma-primary-l);--bulma-hero-color-l:var(--bulma-primary-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-primary .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-primary .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-primary .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-primary .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-link{--bulma-hero-h:var(--bulma-link-h);--bulma-hero-s:var(--bulma-link-s);--bulma-hero-background-l:var(--bulma-link-l);--bulma-hero-color-l:var(--bulma-link-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-link .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-link .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-link .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-link .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-link.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-info{--bulma-hero-h:var(--bulma-info-h);--bulma-hero-s:var(--bulma-info-s);--bulma-hero-background-l:var(--bulma-info-l);--bulma-hero-color-l:var(--bulma-info-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-info .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-info .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-info .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-info .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-info.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-success{--bulma-hero-h:var(--bulma-success-h);--bulma-hero-s:var(--bulma-success-s);--bulma-hero-background-l:var(--bulma-success-l);--bulma-hero-color-l:var(--bulma-success-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-success .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-success .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-success .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-success .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-success.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-warning{--bulma-hero-h:var(--bulma-warning-h);--bulma-hero-s:var(--bulma-warning-s);--bulma-hero-background-l:var(--bulma-warning-l);--bulma-hero-color-l:var(--bulma-warning-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-warning .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-warning .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-warning .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-warning .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-danger{--bulma-hero-h:var(--bulma-danger-h);--bulma-hero-s:var(--bulma-danger-s);--bulma-hero-background-l:var(--bulma-danger-l);--bulma-hero-color-l:var(--bulma-danger-invert-l);background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-danger .navbar{--bulma-navbar-item-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-hover-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-navbar-item-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-navbar-item-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-danger .tabs{--bulma-tabs-link-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-background-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-tabs-boxed-link-active-border-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l));--bulma-tabs-link-active-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l))}.hero.is-danger .subtitle{--bulma-subtitle-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-subtitle-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-danger .title{--bulma-title-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l));--bulma-title-strong-color:hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l))}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-background-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,hsl(calc(var(--bulma-hero-h) - 5deg),calc(var(--bulma-hero-s) + 10%),calc(var(--bulma-hero-background-l) + 5%)) 0,hsl(var(--bulma-hero-h),var(--bulma-hero-s),var(--bulma-hero-color-l)) 71%,hsl(calc(var(--bulma-hero-h) + 5deg),calc(var(--bulma-hero-s) - 10%),calc(var(--bulma-hero-background-l) - 5%)) 100%)}}.hero.is-small .hero-body{padding:var(--bulma-hero-body-padding-small)}@media print,screen and (min-width:769px){.hero.is-medium .hero-body{padding:var(--bulma-hero-body-padding-medium)}.hero.is-large .hero-body{padding:var(--bulma-hero-body-padding-large)}}.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body,.hero.is-halfheight .hero-body{align-items:center;display:flex}.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container,.hero.is-halfheight .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media print,screen and (min-width:769px){.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-inline-end:1.5rem}}.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:var(--bulma-hero-body-padding)}@media print,screen and (min-width:769px){.hero-body{padding:var(--bulma-hero-body-padding-tablet)}}.level{--bulma-level-item-spacing:calc(var(--bulma-block-spacing)*0.5);align-items:center;display:flex;flex-direction:column;gap:var(--bulma-level-item-spacing);justify-content:space-between}.level code{border-radius:var(--bulma-radius)}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex;flex-direction:row}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media print,screen and (min-width:769px){.level{display:flex;flex-direction:row}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0;gap:calc(var(--bulma-block-spacing)*.5)}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}.level-left{align-items:center;display:flex;flex-direction:column;justify-content:flex-start}@media print,screen and (min-width:769px){.level-left{flex-direction:row}}.level-right{align-items:center;display:flex;flex-direction:column;justify-content:flex-end}@media print,screen and (min-width:769px){.level-right{flex-direction:row}}.media{--bulma-media-border-color:hsla(var(--bulma-scheme-h),var(--bulma-scheme-s),var(--bulma-border-l),0.5);--bulma-media-border-size:1px;--bulma-media-spacing:1rem;--bulma-media-spacing-large:1.5rem;--bulma-media-content-spacing:0.75rem;--bulma-media-level-1-spacing:0.75rem;--bulma-media-level-1-content-spacing:0.5rem;--bulma-media-level-2-spacing:0.5rem;align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:var(--bulma-media-content-spacing)}.media .media{border-top:var(--bulma-media-border-size) solid var(--bulma-media-border-color);display:flex;padding-top:var(--bulma-media-level-1-spacing)}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:var(--bulma-media-level-1-content-spacing)}.media .media .media{padding-top:var(--bulma-media-level-2-spacing)}.media .media .media+.media{margin-top:var(--bulma-media-level-2-spacing)}.media+.media{border-top:var(--bulma-media-border-size) solid var(--bulma-media-border-color);margin-top:var(--bulma-media-spacing);padding-top:var(--bulma-media-spacing)}.media.is-large+.media{margin-top:var(--bulma-media-spacing-large);padding-top:var(--bulma-media-spacing-large)}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-inline-end:var(--bulma-media-spacing)}.media-right{margin-inline-start:var(--bulma-media-spacing)}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width:768px){.media-content{overflow-x:auto}}.section{--bulma-section-padding:3rem 1.5rem;--bulma-section-padding-desktop:3rem 3rem;--bulma-section-padding-medium:9rem 4.5rem;--bulma-section-padding-large:18rem 6rem;padding:var(--bulma-section-padding)}@media screen and (min-width:1024px){.section{padding:var(--bulma-section-padding-desktop)}.section.is-medium{padding:var(--bulma-section-padding-medium)}.section.is-large{padding:var(--bulma-section-padding-large)}}.section.is-fullheight{min-height:100vh}:root{--bulma-skeleton-background:var(--bulma-border);--bulma-skeleton-radius:var(--bulma-radius-small);--bulma-skeleton-block-min-height:4.5em;--bulma-skeleton-lines-gap:0.75em;--bulma-skeleton-line-height:0.75em}.has-skeleton:after,.is-skeleton,.skeleton-block,.skeleton-lines>div{animation-duration:2s;animation-iteration-count:infinite;animation-name:pulsate;animation-timing-function:cubic-bezier(.4,0,.6,1);background-color:var(--bulma-skeleton-background);border-radius:var(--bulma-skeleton-radius);box-shadow:none;pointer-events:none}.is-skeleton{color:transparent!important}.is-skeleton em,.is-skeleton strong{color:inherit}.is-skeleton img{visibility:hidden}.is-skeleton.checkbox input{opacity:0}.is-skeleton.delete{border-radius:var(--bulma-radius-rounded)}.is-skeleton.delete:after,.is-skeleton.delete:before{display:none}input.is-skeleton,textarea.is-skeleton{resize:none}input.is-skeleton::-moz-placeholder,textarea.is-skeleton::-moz-placeholder{color:transparent!important}input.is-skeleton::-webkit-input-placeholder,textarea.is-skeleton::-webkit-input-placeholder{color:transparent!important}input.is-skeleton:-moz-placeholder,textarea.is-skeleton:-moz-placeholder{color:transparent!important}input.is-skeleton:-ms-input-placeholder,textarea.is-skeleton:-ms-input-placeholder{color:transparent!important}.has-skeleton{color:transparent!important;position:relative}.has-skeleton:after{content:"";display:block;height:100%;left:0;max-width:100%;min-width:10%;position:absolute;top:0;width:7em}.skeleton-block{color:transparent!important;min-height:var(--bulma-skeleton-block-min-height)}.skeleton-lines{color:transparent!important;display:flex;flex-direction:column;gap:var(--bulma-skeleton-lines-gap);position:relative}.skeleton-lines>div{height:var(--bulma-skeleton-line-height)}.skeleton-lines>div:last-child{min-width:4em;width:30%}.is-aspect-ratio-1by1{aspect-ratio:1/1}.is-aspect-ratio-5by4{aspect-ratio:5/4}.is-aspect-ratio-4by3{aspect-ratio:4/3}.is-aspect-ratio-3by2{aspect-ratio:3/2}.is-aspect-ratio-5by3{aspect-ratio:5/3}.is-aspect-ratio-16by9{aspect-ratio:16/9}.is-aspect-ratio-2by1{aspect-ratio:2/1}.is-aspect-ratio-3by1{aspect-ratio:3/1}.is-aspect-ratio-4by5{aspect-ratio:4/5}.is-aspect-ratio-3by4{aspect-ratio:3/4}.is-aspect-ratio-2by3{aspect-ratio:2/3}.is-aspect-ratio-3by5{aspect-ratio:3/5}.is-aspect-ratio-9by16{aspect-ratio:9/16}.is-aspect-ratio-1by2{aspect-ratio:1/2}.is-aspect-ratio-1by3{aspect-ratio:1/3}.has-radius-small{border-radius:var(--bulma-radius-small)}.has-radius-normal{border-radius:var(--bulma-radius)}.has-radius-large{border-radius:var(--bulma-radius-large)}.has-radius-rounded{border-radius:var(--bulma-radius-rounded)}.has-background{background-color:var(--bulma-background)}.has-text-white{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l))!important}.has-background-white{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-l))!important}.has-text-white-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-invert-l))!important}.has-background-white-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-invert-l))!important}.has-text-white-on-scheme{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l))!important}.has-background-white-on-scheme{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-on-scheme-l))!important}.has-text-white-light{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-light-l))!important}.has-background-white-light{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-light-l))!important}.has-text-white-light-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-light-invert-l))!important}.has-background-white-light-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-light-invert-l))!important}.has-text-white-dark{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-dark-l))!important}.has-background-white-dark{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-dark-l))!important}.has-text-white-dark-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-dark-invert-l))!important}.has-background-white-dark-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-dark-invert-l))!important}.has-text-white-soft{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-soft-l))!important}.has-background-white-soft{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-soft-l))!important}.has-text-white-bold{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-bold-l))!important}.has-background-white-bold{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-bold-l))!important}.has-text-white-soft-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-soft-invert-l))!important}.has-background-white-soft-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-soft-invert-l))!important}.has-text-white-bold-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-bold-invert-l))!important}.has-background-white-bold-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-bold-invert-l))!important}.has-text-white-00{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-00-l))!important}.has-background-white-00{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-00-l))!important}.has-text-white-00-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-00-invert-l))!important}.has-background-white-00-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-00-invert-l))!important}.has-text-white-05{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-05-l))!important}.has-background-white-05{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-05-l))!important}.has-text-white-05-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-05-invert-l))!important}.has-background-white-05-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-05-invert-l))!important}.has-text-white-10{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-10-l))!important}.has-background-white-10{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-10-l))!important}.has-text-white-10-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-10-invert-l))!important}.has-background-white-10-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-10-invert-l))!important}.has-text-white-15{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-15-l))!important}.has-background-white-15{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-15-l))!important}.has-text-white-15-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-15-invert-l))!important}.has-background-white-15-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-15-invert-l))!important}.has-text-white-20{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-20-l))!important}.has-background-white-20{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-20-l))!important}.has-text-white-20-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-20-invert-l))!important}.has-background-white-20-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-20-invert-l))!important}.has-text-white-25{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-25-l))!important}.has-background-white-25{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-25-l))!important}.has-text-white-25-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-25-invert-l))!important}.has-background-white-25-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-25-invert-l))!important}.has-text-white-30{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-30-l))!important}.has-background-white-30{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-30-l))!important}.has-text-white-30-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-30-invert-l))!important}.has-background-white-30-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-30-invert-l))!important}.has-text-white-35{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-35-l))!important}.has-background-white-35{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-35-l))!important}.has-text-white-35-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-35-invert-l))!important}.has-background-white-35-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-35-invert-l))!important}.has-text-white-40{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-40-l))!important}.has-background-white-40{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-40-l))!important}.has-text-white-40-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-40-invert-l))!important}.has-background-white-40-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-40-invert-l))!important}.has-text-white-45{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-45-l))!important}.has-background-white-45{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-45-l))!important}.has-text-white-45-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-45-invert-l))!important}.has-background-white-45-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-45-invert-l))!important}.has-text-white-50{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-50-l))!important}.has-background-white-50{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-50-l))!important}.has-text-white-50-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-50-invert-l))!important}.has-background-white-50-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-50-invert-l))!important}.has-text-white-55{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-55-l))!important}.has-background-white-55{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-55-l))!important}.has-text-white-55-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-55-invert-l))!important}.has-background-white-55-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-55-invert-l))!important}.has-text-white-60{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-60-l))!important}.has-background-white-60{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-60-l))!important}.has-text-white-60-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-60-invert-l))!important}.has-background-white-60-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-60-invert-l))!important}.has-text-white-65{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-65-l))!important}.has-background-white-65{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-65-l))!important}.has-text-white-65-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-65-invert-l))!important}.has-background-white-65-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-65-invert-l))!important}.has-text-white-70{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-70-l))!important}.has-background-white-70{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-70-l))!important}.has-text-white-70-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-70-invert-l))!important}.has-background-white-70-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-70-invert-l))!important}.has-text-white-75{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-75-l))!important}.has-background-white-75{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-75-l))!important}.has-text-white-75-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-75-invert-l))!important}.has-background-white-75-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-75-invert-l))!important}.has-text-white-80{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-80-l))!important}.has-background-white-80{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-80-l))!important}.has-text-white-80-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-80-invert-l))!important}.has-background-white-80-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-80-invert-l))!important}.has-text-white-85{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-85-l))!important}.has-background-white-85{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-85-l))!important}.has-text-white-85-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-85-invert-l))!important}.has-background-white-85-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-85-invert-l))!important}.has-text-white-90{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-90-l))!important}.has-background-white-90{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-90-l))!important}.has-text-white-90-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-90-invert-l))!important}.has-background-white-90-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-90-invert-l))!important}.has-text-white-95{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-95-l))!important}.has-background-white-95{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-95-l))!important}.has-text-white-95-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-95-invert-l))!important}.has-background-white-95-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-95-invert-l))!important}.has-text-white-100{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-100-l))!important}.has-background-white-100{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-100-l))!important}.has-text-white-100-invert{color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-100-invert-l))!important}.has-background-white-100-invert{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),var(--bulma-white-100-invert-l))!important}a.has-text-white:focus-visible,a.has-text-white:hover,button.has-text-white:focus-visible,button.has-text-white:hover,has-text-white.is-hoverable:focus-visible,has-text-white.is-hoverable:hover{color:hsl(var(--bulma-white-h),var(--bulma-white-s),calc(var(--bulma-white-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-white:active,button.has-text-white:active,has-text-white.is-hoverable:active{color:hsl(var(--bulma-white-h),var(--bulma-white-s),calc(var(--bulma-white-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-white:focus-visible,a.has-background-white:hover,button.has-background-white:focus-visible,button.has-background-white:hover,has-background-white.is-hoverable:focus-visible,has-background-white.is-hoverable:hover{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),calc(var(--bulma-white-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-white:active,button.has-background-white:active,has-background-white.is-hoverable:active{background-color:hsl(var(--bulma-white-h),var(--bulma-white-s),calc(var(--bulma-white-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-white{--h:var(--bulma-white-h);--s:var(--bulma-white-s);--l:var(--bulma-white-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-white-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-white-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-white-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-white-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-white-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-white-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-white-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-white-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-white-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-white-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-white-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-white-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-white-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-white-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-white-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-white-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-white-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-white-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-white-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-white-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-white-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-black{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l))!important}.has-background-black{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-l))!important}.has-text-black-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-invert-l))!important}.has-background-black-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-invert-l))!important}.has-text-black-on-scheme{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l))!important}.has-background-black-on-scheme{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-on-scheme-l))!important}.has-text-black-light{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-light-l))!important}.has-background-black-light{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-light-l))!important}.has-text-black-light-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-light-invert-l))!important}.has-background-black-light-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-light-invert-l))!important}.has-text-black-dark{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-dark-l))!important}.has-background-black-dark{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-dark-l))!important}.has-text-black-dark-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-dark-invert-l))!important}.has-background-black-dark-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-dark-invert-l))!important}.has-text-black-soft{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-soft-l))!important}.has-background-black-soft{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-soft-l))!important}.has-text-black-bold{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-bold-l))!important}.has-background-black-bold{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-bold-l))!important}.has-text-black-soft-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-soft-invert-l))!important}.has-background-black-soft-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-soft-invert-l))!important}.has-text-black-bold-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-bold-invert-l))!important}.has-background-black-bold-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-bold-invert-l))!important}.has-text-black-00{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-00-l))!important}.has-background-black-00{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-00-l))!important}.has-text-black-00-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-00-invert-l))!important}.has-background-black-00-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-00-invert-l))!important}.has-text-black-05{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-05-l))!important}.has-background-black-05{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-05-l))!important}.has-text-black-05-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-05-invert-l))!important}.has-background-black-05-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-05-invert-l))!important}.has-text-black-10{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-10-l))!important}.has-background-black-10{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-10-l))!important}.has-text-black-10-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-10-invert-l))!important}.has-background-black-10-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-10-invert-l))!important}.has-text-black-15{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-15-l))!important}.has-background-black-15{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-15-l))!important}.has-text-black-15-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-15-invert-l))!important}.has-background-black-15-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-15-invert-l))!important}.has-text-black-20{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-20-l))!important}.has-background-black-20{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-20-l))!important}.has-text-black-20-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-20-invert-l))!important}.has-background-black-20-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-20-invert-l))!important}.has-text-black-25{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-25-l))!important}.has-background-black-25{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-25-l))!important}.has-text-black-25-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-25-invert-l))!important}.has-background-black-25-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-25-invert-l))!important}.has-text-black-30{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-30-l))!important}.has-background-black-30{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-30-l))!important}.has-text-black-30-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-30-invert-l))!important}.has-background-black-30-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-30-invert-l))!important}.has-text-black-35{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-35-l))!important}.has-background-black-35{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-35-l))!important}.has-text-black-35-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-35-invert-l))!important}.has-background-black-35-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-35-invert-l))!important}.has-text-black-40{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-40-l))!important}.has-background-black-40{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-40-l))!important}.has-text-black-40-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-40-invert-l))!important}.has-background-black-40-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-40-invert-l))!important}.has-text-black-45{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-45-l))!important}.has-background-black-45{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-45-l))!important}.has-text-black-45-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-45-invert-l))!important}.has-background-black-45-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-45-invert-l))!important}.has-text-black-50{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-50-l))!important}.has-background-black-50{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-50-l))!important}.has-text-black-50-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-50-invert-l))!important}.has-background-black-50-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-50-invert-l))!important}.has-text-black-55{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-55-l))!important}.has-background-black-55{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-55-l))!important}.has-text-black-55-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-55-invert-l))!important}.has-background-black-55-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-55-invert-l))!important}.has-text-black-60{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-60-l))!important}.has-background-black-60{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-60-l))!important}.has-text-black-60-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-60-invert-l))!important}.has-background-black-60-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-60-invert-l))!important}.has-text-black-65{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-65-l))!important}.has-background-black-65{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-65-l))!important}.has-text-black-65-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-65-invert-l))!important}.has-background-black-65-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-65-invert-l))!important}.has-text-black-70{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-70-l))!important}.has-background-black-70{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-70-l))!important}.has-text-black-70-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-70-invert-l))!important}.has-background-black-70-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-70-invert-l))!important}.has-text-black-75{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-75-l))!important}.has-background-black-75{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-75-l))!important}.has-text-black-75-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-75-invert-l))!important}.has-background-black-75-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-75-invert-l))!important}.has-text-black-80{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-80-l))!important}.has-background-black-80{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-80-l))!important}.has-text-black-80-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-80-invert-l))!important}.has-background-black-80-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-80-invert-l))!important}.has-text-black-85{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-85-l))!important}.has-background-black-85{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-85-l))!important}.has-text-black-85-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-85-invert-l))!important}.has-background-black-85-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-85-invert-l))!important}.has-text-black-90{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-90-l))!important}.has-background-black-90{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-90-l))!important}.has-text-black-90-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-90-invert-l))!important}.has-background-black-90-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-90-invert-l))!important}.has-text-black-95{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-95-l))!important}.has-background-black-95{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-95-l))!important}.has-text-black-95-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-95-invert-l))!important}.has-background-black-95-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-95-invert-l))!important}.has-text-black-100{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-100-l))!important}.has-background-black-100{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-100-l))!important}.has-text-black-100-invert{color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-100-invert-l))!important}.has-background-black-100-invert{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),var(--bulma-black-100-invert-l))!important}a.has-text-black:focus-visible,a.has-text-black:hover,button.has-text-black:focus-visible,button.has-text-black:hover,has-text-black.is-hoverable:focus-visible,has-text-black.is-hoverable:hover{color:hsl(var(--bulma-black-h),var(--bulma-black-s),calc(var(--bulma-black-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-black:active,button.has-text-black:active,has-text-black.is-hoverable:active{color:hsl(var(--bulma-black-h),var(--bulma-black-s),calc(var(--bulma-black-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-black:focus-visible,a.has-background-black:hover,button.has-background-black:focus-visible,button.has-background-black:hover,has-background-black.is-hoverable:focus-visible,has-background-black.is-hoverable:hover{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),calc(var(--bulma-black-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-black:active,button.has-background-black:active,has-background-black.is-hoverable:active{background-color:hsl(var(--bulma-black-h),var(--bulma-black-s),calc(var(--bulma-black-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-black{--h:var(--bulma-black-h);--s:var(--bulma-black-s);--l:var(--bulma-black-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-black-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-black-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-black-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-black-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-black-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-black-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-black-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-black-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-black-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-black-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-black-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-black-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-black-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-black-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-black-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-black-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-black-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-black-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-black-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-black-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-black-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-light{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l))!important}.has-background-light{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-l))!important}.has-text-light-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-invert-l))!important}.has-background-light-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-invert-l))!important}.has-text-light-on-scheme{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l))!important}.has-background-light-on-scheme{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-on-scheme-l))!important}.has-text-light-light{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-light-l))!important}.has-background-light-light{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-light-l))!important}.has-text-light-light-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-light-invert-l))!important}.has-background-light-light-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-light-invert-l))!important}.has-text-light-dark{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-dark-l))!important}.has-background-light-dark{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-dark-l))!important}.has-text-light-dark-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-dark-invert-l))!important}.has-background-light-dark-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-dark-invert-l))!important}.has-text-light-soft{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-soft-l))!important}.has-background-light-soft{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-soft-l))!important}.has-text-light-bold{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-bold-l))!important}.has-background-light-bold{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-bold-l))!important}.has-text-light-soft-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-soft-invert-l))!important}.has-background-light-soft-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-soft-invert-l))!important}.has-text-light-bold-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-bold-invert-l))!important}.has-background-light-bold-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-bold-invert-l))!important}.has-text-light-00{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-00-l))!important}.has-background-light-00{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-00-l))!important}.has-text-light-00-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-00-invert-l))!important}.has-background-light-00-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-00-invert-l))!important}.has-text-light-05{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-05-l))!important}.has-background-light-05{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-05-l))!important}.has-text-light-05-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-05-invert-l))!important}.has-background-light-05-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-05-invert-l))!important}.has-text-light-10{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-10-l))!important}.has-background-light-10{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-10-l))!important}.has-text-light-10-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-10-invert-l))!important}.has-background-light-10-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-10-invert-l))!important}.has-text-light-15{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-15-l))!important}.has-background-light-15{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-15-l))!important}.has-text-light-15-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-15-invert-l))!important}.has-background-light-15-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-15-invert-l))!important}.has-text-light-20{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-20-l))!important}.has-background-light-20{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-20-l))!important}.has-text-light-20-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-20-invert-l))!important}.has-background-light-20-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-20-invert-l))!important}.has-text-light-25{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-25-l))!important}.has-background-light-25{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-25-l))!important}.has-text-light-25-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-25-invert-l))!important}.has-background-light-25-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-25-invert-l))!important}.has-text-light-30{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-30-l))!important}.has-background-light-30{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-30-l))!important}.has-text-light-30-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-30-invert-l))!important}.has-background-light-30-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-30-invert-l))!important}.has-text-light-35{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-35-l))!important}.has-background-light-35{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-35-l))!important}.has-text-light-35-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-35-invert-l))!important}.has-background-light-35-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-35-invert-l))!important}.has-text-light-40{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-40-l))!important}.has-background-light-40{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-40-l))!important}.has-text-light-40-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-40-invert-l))!important}.has-background-light-40-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-40-invert-l))!important}.has-text-light-45{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-45-l))!important}.has-background-light-45{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-45-l))!important}.has-text-light-45-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-45-invert-l))!important}.has-background-light-45-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-45-invert-l))!important}.has-text-light-50{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-50-l))!important}.has-background-light-50{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-50-l))!important}.has-text-light-50-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-50-invert-l))!important}.has-background-light-50-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-50-invert-l))!important}.has-text-light-55{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-55-l))!important}.has-background-light-55{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-55-l))!important}.has-text-light-55-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-55-invert-l))!important}.has-background-light-55-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-55-invert-l))!important}.has-text-light-60{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-60-l))!important}.has-background-light-60{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-60-l))!important}.has-text-light-60-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-60-invert-l))!important}.has-background-light-60-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-60-invert-l))!important}.has-text-light-65{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-65-l))!important}.has-background-light-65{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-65-l))!important}.has-text-light-65-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-65-invert-l))!important}.has-background-light-65-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-65-invert-l))!important}.has-text-light-70{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-70-l))!important}.has-background-light-70{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-70-l))!important}.has-text-light-70-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-70-invert-l))!important}.has-background-light-70-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-70-invert-l))!important}.has-text-light-75{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-75-l))!important}.has-background-light-75{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-75-l))!important}.has-text-light-75-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-75-invert-l))!important}.has-background-light-75-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-75-invert-l))!important}.has-text-light-80{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-80-l))!important}.has-background-light-80{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-80-l))!important}.has-text-light-80-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-80-invert-l))!important}.has-background-light-80-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-80-invert-l))!important}.has-text-light-85{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-85-l))!important}.has-background-light-85{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-85-l))!important}.has-text-light-85-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-85-invert-l))!important}.has-background-light-85-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-85-invert-l))!important}.has-text-light-90{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-90-l))!important}.has-background-light-90{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-90-l))!important}.has-text-light-90-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-90-invert-l))!important}.has-background-light-90-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-90-invert-l))!important}.has-text-light-95{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-95-l))!important}.has-background-light-95{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-95-l))!important}.has-text-light-95-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-95-invert-l))!important}.has-background-light-95-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-95-invert-l))!important}.has-text-light-100{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-100-l))!important}.has-background-light-100{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-100-l))!important}.has-text-light-100-invert{color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-100-invert-l))!important}.has-background-light-100-invert{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),var(--bulma-light-100-invert-l))!important}a.has-text-light:focus-visible,a.has-text-light:hover,button.has-text-light:focus-visible,button.has-text-light:hover,has-text-light.is-hoverable:focus-visible,has-text-light.is-hoverable:hover{color:hsl(var(--bulma-light-h),var(--bulma-light-s),calc(var(--bulma-light-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-light:active,button.has-text-light:active,has-text-light.is-hoverable:active{color:hsl(var(--bulma-light-h),var(--bulma-light-s),calc(var(--bulma-light-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-light:focus-visible,a.has-background-light:hover,button.has-background-light:focus-visible,button.has-background-light:hover,has-background-light.is-hoverable:focus-visible,has-background-light.is-hoverable:hover{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),calc(var(--bulma-light-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-light:active,button.has-background-light:active,has-background-light.is-hoverable:active{background-color:hsl(var(--bulma-light-h),var(--bulma-light-s),calc(var(--bulma-light-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-light{--h:var(--bulma-light-h);--s:var(--bulma-light-s);--l:var(--bulma-light-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-light-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-light-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-light-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-light-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-light-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-light-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-light-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-light-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-light-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-light-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-light-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-light-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-light-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-light-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-light-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-light-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-light-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-light-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-light-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-light-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-light-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-dark{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l))!important}.has-background-dark{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-l))!important}.has-text-dark-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-invert-l))!important}.has-background-dark-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-invert-l))!important}.has-text-dark-on-scheme{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l))!important}.has-background-dark-on-scheme{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-on-scheme-l))!important}.has-text-dark-light{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-light-l))!important}.has-background-dark-light{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-light-l))!important}.has-text-dark-light-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-light-invert-l))!important}.has-background-dark-light-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-light-invert-l))!important}.has-text-dark-dark{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-dark-l))!important}.has-background-dark-dark{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-dark-l))!important}.has-text-dark-dark-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-dark-invert-l))!important}.has-background-dark-dark-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-dark-invert-l))!important}.has-text-dark-soft{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-soft-l))!important}.has-background-dark-soft{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-soft-l))!important}.has-text-dark-bold{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-bold-l))!important}.has-background-dark-bold{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-bold-l))!important}.has-text-dark-soft-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-soft-invert-l))!important}.has-background-dark-soft-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-soft-invert-l))!important}.has-text-dark-bold-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-bold-invert-l))!important}.has-background-dark-bold-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-bold-invert-l))!important}.has-text-dark-00{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-00-l))!important}.has-background-dark-00{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-00-l))!important}.has-text-dark-00-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-00-invert-l))!important}.has-background-dark-00-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-00-invert-l))!important}.has-text-dark-05{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-05-l))!important}.has-background-dark-05{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-05-l))!important}.has-text-dark-05-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-05-invert-l))!important}.has-background-dark-05-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-05-invert-l))!important}.has-text-dark-10{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-10-l))!important}.has-background-dark-10{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-10-l))!important}.has-text-dark-10-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-10-invert-l))!important}.has-background-dark-10-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-10-invert-l))!important}.has-text-dark-15{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-15-l))!important}.has-background-dark-15{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-15-l))!important}.has-text-dark-15-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-15-invert-l))!important}.has-background-dark-15-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-15-invert-l))!important}.has-text-dark-20{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-20-l))!important}.has-background-dark-20{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-20-l))!important}.has-text-dark-20-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-20-invert-l))!important}.has-background-dark-20-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-20-invert-l))!important}.has-text-dark-25{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-25-l))!important}.has-background-dark-25{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-25-l))!important}.has-text-dark-25-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-25-invert-l))!important}.has-background-dark-25-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-25-invert-l))!important}.has-text-dark-30{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-30-l))!important}.has-background-dark-30{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-30-l))!important}.has-text-dark-30-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-30-invert-l))!important}.has-background-dark-30-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-30-invert-l))!important}.has-text-dark-35{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-35-l))!important}.has-background-dark-35{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-35-l))!important}.has-text-dark-35-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-35-invert-l))!important}.has-background-dark-35-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-35-invert-l))!important}.has-text-dark-40{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-40-l))!important}.has-background-dark-40{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-40-l))!important}.has-text-dark-40-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-40-invert-l))!important}.has-background-dark-40-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-40-invert-l))!important}.has-text-dark-45{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-45-l))!important}.has-background-dark-45{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-45-l))!important}.has-text-dark-45-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-45-invert-l))!important}.has-background-dark-45-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-45-invert-l))!important}.has-text-dark-50{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-50-l))!important}.has-background-dark-50{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-50-l))!important}.has-text-dark-50-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-50-invert-l))!important}.has-background-dark-50-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-50-invert-l))!important}.has-text-dark-55{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-55-l))!important}.has-background-dark-55{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-55-l))!important}.has-text-dark-55-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-55-invert-l))!important}.has-background-dark-55-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-55-invert-l))!important}.has-text-dark-60{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-60-l))!important}.has-background-dark-60{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-60-l))!important}.has-text-dark-60-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-60-invert-l))!important}.has-background-dark-60-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-60-invert-l))!important}.has-text-dark-65{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-65-l))!important}.has-background-dark-65{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-65-l))!important}.has-text-dark-65-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-65-invert-l))!important}.has-background-dark-65-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-65-invert-l))!important}.has-text-dark-70{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-70-l))!important}.has-background-dark-70{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-70-l))!important}.has-text-dark-70-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-70-invert-l))!important}.has-background-dark-70-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-70-invert-l))!important}.has-text-dark-75{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-75-l))!important}.has-background-dark-75{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-75-l))!important}.has-text-dark-75-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-75-invert-l))!important}.has-background-dark-75-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-75-invert-l))!important}.has-text-dark-80{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-80-l))!important}.has-background-dark-80{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-80-l))!important}.has-text-dark-80-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-80-invert-l))!important}.has-background-dark-80-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-80-invert-l))!important}.has-text-dark-85{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-85-l))!important}.has-background-dark-85{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-85-l))!important}.has-text-dark-85-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-85-invert-l))!important}.has-background-dark-85-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-85-invert-l))!important}.has-text-dark-90{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-90-l))!important}.has-background-dark-90{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-90-l))!important}.has-text-dark-90-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-90-invert-l))!important}.has-background-dark-90-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-90-invert-l))!important}.has-text-dark-95{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-95-l))!important}.has-background-dark-95{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-95-l))!important}.has-text-dark-95-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-95-invert-l))!important}.has-background-dark-95-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-95-invert-l))!important}.has-text-dark-100{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-100-l))!important}.has-background-dark-100{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-100-l))!important}.has-text-dark-100-invert{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-100-invert-l))!important}.has-background-dark-100-invert{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),var(--bulma-dark-100-invert-l))!important}a.has-text-dark:focus-visible,a.has-text-dark:hover,button.has-text-dark:focus-visible,button.has-text-dark:hover,has-text-dark.is-hoverable:focus-visible,has-text-dark.is-hoverable:hover{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),calc(var(--bulma-dark-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-dark:active,button.has-text-dark:active,has-text-dark.is-hoverable:active{color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),calc(var(--bulma-dark-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-dark:focus-visible,a.has-background-dark:hover,button.has-background-dark:focus-visible,button.has-background-dark:hover,has-background-dark.is-hoverable:focus-visible,has-background-dark.is-hoverable:hover{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),calc(var(--bulma-dark-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-dark:active,button.has-background-dark:active,has-background-dark.is-hoverable:active{background-color:hsl(var(--bulma-dark-h),var(--bulma-dark-s),calc(var(--bulma-dark-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-dark{--h:var(--bulma-dark-h);--s:var(--bulma-dark-s);--l:var(--bulma-dark-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-dark-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-dark-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-dark-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-dark-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-dark-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-dark-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-dark-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-dark-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-dark-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-dark-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-dark-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-dark-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-dark-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-dark-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-dark-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-dark-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-dark-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-dark-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-dark-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-dark-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-dark-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-text{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l))!important}.has-background-text{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-l))!important}.has-text-text-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-invert-l))!important}.has-background-text-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-invert-l))!important}.has-text-text-on-scheme{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l))!important}.has-background-text-on-scheme{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-on-scheme-l))!important}.has-text-text-light{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-l))!important}.has-background-text-light{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-l))!important}.has-text-text-light-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-invert-l))!important}.has-background-text-light-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-light-invert-l))!important}.has-text-text-dark{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-l))!important}.has-background-text-dark{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-l))!important}.has-text-text-dark-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-invert-l))!important}.has-background-text-dark-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-dark-invert-l))!important}.has-text-text-soft{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-l))!important}.has-background-text-soft{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-l))!important}.has-text-text-bold{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-l))!important}.has-background-text-bold{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-l))!important}.has-text-text-soft-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-invert-l))!important}.has-background-text-soft-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-soft-invert-l))!important}.has-text-text-bold-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-invert-l))!important}.has-background-text-bold-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-bold-invert-l))!important}.has-text-text-00{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-l))!important}.has-background-text-00{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-l))!important}.has-text-text-00-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-invert-l))!important}.has-background-text-00-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-00-invert-l))!important}.has-text-text-05{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-l))!important}.has-background-text-05{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-l))!important}.has-text-text-05-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-invert-l))!important}.has-background-text-05-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-05-invert-l))!important}.has-text-text-10{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-l))!important}.has-background-text-10{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-l))!important}.has-text-text-10-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-invert-l))!important}.has-background-text-10-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-10-invert-l))!important}.has-text-text-15{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-l))!important}.has-background-text-15{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-l))!important}.has-text-text-15-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-invert-l))!important}.has-background-text-15-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-15-invert-l))!important}.has-text-text-20{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-l))!important}.has-background-text-20{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-l))!important}.has-text-text-20-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-invert-l))!important}.has-background-text-20-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-20-invert-l))!important}.has-text-text-25{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-l))!important}.has-background-text-25{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-l))!important}.has-text-text-25-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-invert-l))!important}.has-background-text-25-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-25-invert-l))!important}.has-text-text-30{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-l))!important}.has-background-text-30{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-l))!important}.has-text-text-30-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-invert-l))!important}.has-background-text-30-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-30-invert-l))!important}.has-text-text-35{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-l))!important}.has-background-text-35{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-l))!important}.has-text-text-35-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-invert-l))!important}.has-background-text-35-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-35-invert-l))!important}.has-text-text-40{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-l))!important}.has-background-text-40{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-l))!important}.has-text-text-40-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-invert-l))!important}.has-background-text-40-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-40-invert-l))!important}.has-text-text-45{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-l))!important}.has-background-text-45{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-l))!important}.has-text-text-45-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-invert-l))!important}.has-background-text-45-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-45-invert-l))!important}.has-text-text-50{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-l))!important}.has-background-text-50{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-l))!important}.has-text-text-50-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-invert-l))!important}.has-background-text-50-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-50-invert-l))!important}.has-text-text-55{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-l))!important}.has-background-text-55{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-l))!important}.has-text-text-55-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-invert-l))!important}.has-background-text-55-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-55-invert-l))!important}.has-text-text-60{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-l))!important}.has-background-text-60{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-l))!important}.has-text-text-60-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-invert-l))!important}.has-background-text-60-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-60-invert-l))!important}.has-text-text-65{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-l))!important}.has-background-text-65{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-l))!important}.has-text-text-65-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-invert-l))!important}.has-background-text-65-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-65-invert-l))!important}.has-text-text-70{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-l))!important}.has-background-text-70{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-l))!important}.has-text-text-70-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-invert-l))!important}.has-background-text-70-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-70-invert-l))!important}.has-text-text-75{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-l))!important}.has-background-text-75{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-l))!important}.has-text-text-75-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-invert-l))!important}.has-background-text-75-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-75-invert-l))!important}.has-text-text-80{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-l))!important}.has-background-text-80{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-l))!important}.has-text-text-80-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-invert-l))!important}.has-background-text-80-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-80-invert-l))!important}.has-text-text-85{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-l))!important}.has-background-text-85{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-l))!important}.has-text-text-85-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-invert-l))!important}.has-background-text-85-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-85-invert-l))!important}.has-text-text-90{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-l))!important}.has-background-text-90{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-l))!important}.has-text-text-90-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-invert-l))!important}.has-background-text-90-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-90-invert-l))!important}.has-text-text-95{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-l))!important}.has-background-text-95{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-l))!important}.has-text-text-95-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-invert-l))!important}.has-background-text-95-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-95-invert-l))!important}.has-text-text-100{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-l))!important}.has-background-text-100{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-l))!important}.has-text-text-100-invert{color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-invert-l))!important}.has-background-text-100-invert{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),var(--bulma-text-100-invert-l))!important}a.has-text-text:focus-visible,a.has-text-text:hover,button.has-text-text:focus-visible,button.has-text-text:hover,has-text-text.is-hoverable:focus-visible,has-text-text.is-hoverable:hover{color:hsl(var(--bulma-text-h),var(--bulma-text-s),calc(var(--bulma-text-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-text:active,button.has-text-text:active,has-text-text.is-hoverable:active{color:hsl(var(--bulma-text-h),var(--bulma-text-s),calc(var(--bulma-text-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-text:focus-visible,a.has-background-text:hover,button.has-background-text:focus-visible,button.has-background-text:hover,has-background-text.is-hoverable:focus-visible,has-background-text.is-hoverable:hover{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),calc(var(--bulma-text-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-text:active,button.has-background-text:active,has-background-text.is-hoverable:active{background-color:hsl(var(--bulma-text-h),var(--bulma-text-s),calc(var(--bulma-text-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-text{--h:var(--bulma-text-h);--s:var(--bulma-text-s);--l:var(--bulma-text-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-text-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-text-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-text-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-text-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-text-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-text-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-text-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-text-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-text-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-text-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-text-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-text-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-text-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-text-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-text-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-text-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-text-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-text-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-text-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-text-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-text-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-primary{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l))!important}.has-background-primary{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-l))!important}.has-text-primary-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-invert-l))!important}.has-background-primary-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-invert-l))!important}.has-text-primary-on-scheme{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l))!important}.has-background-primary-on-scheme{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-on-scheme-l))!important}.has-text-primary-light{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-l))!important}.has-background-primary-light{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-l))!important}.has-text-primary-light-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-invert-l))!important}.has-background-primary-light-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-light-invert-l))!important}.has-text-primary-dark{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-l))!important}.has-background-primary-dark{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-l))!important}.has-text-primary-dark-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-invert-l))!important}.has-background-primary-dark-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-dark-invert-l))!important}.has-text-primary-soft{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-l))!important}.has-background-primary-soft{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-l))!important}.has-text-primary-bold{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-l))!important}.has-background-primary-bold{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-l))!important}.has-text-primary-soft-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-invert-l))!important}.has-background-primary-soft-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-soft-invert-l))!important}.has-text-primary-bold-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-invert-l))!important}.has-background-primary-bold-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-bold-invert-l))!important}.has-text-primary-00{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-l))!important}.has-background-primary-00{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-l))!important}.has-text-primary-00-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-invert-l))!important}.has-background-primary-00-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-00-invert-l))!important}.has-text-primary-05{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-l))!important}.has-background-primary-05{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-l))!important}.has-text-primary-05-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-invert-l))!important}.has-background-primary-05-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-05-invert-l))!important}.has-text-primary-10{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-l))!important}.has-background-primary-10{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-l))!important}.has-text-primary-10-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-invert-l))!important}.has-background-primary-10-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-10-invert-l))!important}.has-text-primary-15{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-l))!important}.has-background-primary-15{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-l))!important}.has-text-primary-15-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-invert-l))!important}.has-background-primary-15-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-15-invert-l))!important}.has-text-primary-20{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-l))!important}.has-background-primary-20{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-l))!important}.has-text-primary-20-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-invert-l))!important}.has-background-primary-20-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-20-invert-l))!important}.has-text-primary-25{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-l))!important}.has-background-primary-25{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-l))!important}.has-text-primary-25-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-invert-l))!important}.has-background-primary-25-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-25-invert-l))!important}.has-text-primary-30{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-l))!important}.has-background-primary-30{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-l))!important}.has-text-primary-30-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-invert-l))!important}.has-background-primary-30-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-30-invert-l))!important}.has-text-primary-35{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-l))!important}.has-background-primary-35{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-l))!important}.has-text-primary-35-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-invert-l))!important}.has-background-primary-35-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-35-invert-l))!important}.has-text-primary-40{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-l))!important}.has-background-primary-40{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-l))!important}.has-text-primary-40-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-invert-l))!important}.has-background-primary-40-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-40-invert-l))!important}.has-text-primary-45{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-l))!important}.has-background-primary-45{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-l))!important}.has-text-primary-45-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-invert-l))!important}.has-background-primary-45-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-45-invert-l))!important}.has-text-primary-50{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-l))!important}.has-background-primary-50{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-l))!important}.has-text-primary-50-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-invert-l))!important}.has-background-primary-50-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-50-invert-l))!important}.has-text-primary-55{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-l))!important}.has-background-primary-55{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-l))!important}.has-text-primary-55-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-invert-l))!important}.has-background-primary-55-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-55-invert-l))!important}.has-text-primary-60{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-l))!important}.has-background-primary-60{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-l))!important}.has-text-primary-60-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-invert-l))!important}.has-background-primary-60-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-60-invert-l))!important}.has-text-primary-65{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-l))!important}.has-background-primary-65{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-l))!important}.has-text-primary-65-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-invert-l))!important}.has-background-primary-65-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-65-invert-l))!important}.has-text-primary-70{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-l))!important}.has-background-primary-70{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-l))!important}.has-text-primary-70-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-invert-l))!important}.has-background-primary-70-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-70-invert-l))!important}.has-text-primary-75{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-l))!important}.has-background-primary-75{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-l))!important}.has-text-primary-75-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-invert-l))!important}.has-background-primary-75-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-75-invert-l))!important}.has-text-primary-80{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-l))!important}.has-background-primary-80{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-l))!important}.has-text-primary-80-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-invert-l))!important}.has-background-primary-80-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-80-invert-l))!important}.has-text-primary-85{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-l))!important}.has-background-primary-85{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-l))!important}.has-text-primary-85-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-invert-l))!important}.has-background-primary-85-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-85-invert-l))!important}.has-text-primary-90{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-l))!important}.has-background-primary-90{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-l))!important}.has-text-primary-90-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-invert-l))!important}.has-background-primary-90-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-90-invert-l))!important}.has-text-primary-95{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-l))!important}.has-background-primary-95{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-l))!important}.has-text-primary-95-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-invert-l))!important}.has-background-primary-95-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-95-invert-l))!important}.has-text-primary-100{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-l))!important}.has-background-primary-100{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-l))!important}.has-text-primary-100-invert{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-invert-l))!important}.has-background-primary-100-invert{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),var(--bulma-primary-100-invert-l))!important}a.has-text-primary:focus-visible,a.has-text-primary:hover,button.has-text-primary:focus-visible,button.has-text-primary:hover,has-text-primary.is-hoverable:focus-visible,has-text-primary.is-hoverable:hover{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),calc(var(--bulma-primary-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-primary:active,button.has-text-primary:active,has-text-primary.is-hoverable:active{color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),calc(var(--bulma-primary-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-primary:focus-visible,a.has-background-primary:hover,button.has-background-primary:focus-visible,button.has-background-primary:hover,has-background-primary.is-hoverable:focus-visible,has-background-primary.is-hoverable:hover{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),calc(var(--bulma-primary-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-primary:active,button.has-background-primary:active,has-background-primary.is-hoverable:active{background-color:hsl(var(--bulma-primary-h),var(--bulma-primary-s),calc(var(--bulma-primary-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-primary{--h:var(--bulma-primary-h);--s:var(--bulma-primary-s);--l:var(--bulma-primary-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-primary-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-primary-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-primary-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-primary-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-primary-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-primary-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-primary-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-primary-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-primary-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-primary-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-primary-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-primary-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-primary-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-primary-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-primary-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-primary-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-primary-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-primary-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-primary-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-primary-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-primary-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-link{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l))!important}.has-background-link{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-l))!important}.has-text-link-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-invert-l))!important}.has-background-link-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-invert-l))!important}.has-text-link-on-scheme{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l))!important}.has-background-link-on-scheme{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-on-scheme-l))!important}.has-text-link-light{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-l))!important}.has-background-link-light{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-l))!important}.has-text-link-light-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-invert-l))!important}.has-background-link-light-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-light-invert-l))!important}.has-text-link-dark{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-l))!important}.has-background-link-dark{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-l))!important}.has-text-link-dark-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-invert-l))!important}.has-background-link-dark-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-dark-invert-l))!important}.has-text-link-soft{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-l))!important}.has-background-link-soft{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-l))!important}.has-text-link-bold{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-l))!important}.has-background-link-bold{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-l))!important}.has-text-link-soft-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-invert-l))!important}.has-background-link-soft-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-soft-invert-l))!important}.has-text-link-bold-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-invert-l))!important}.has-background-link-bold-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-bold-invert-l))!important}.has-text-link-00{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-l))!important}.has-background-link-00{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-l))!important}.has-text-link-00-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-invert-l))!important}.has-background-link-00-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-00-invert-l))!important}.has-text-link-05{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-l))!important}.has-background-link-05{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-l))!important}.has-text-link-05-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-invert-l))!important}.has-background-link-05-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-05-invert-l))!important}.has-text-link-10{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-l))!important}.has-background-link-10{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-l))!important}.has-text-link-10-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-invert-l))!important}.has-background-link-10-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-10-invert-l))!important}.has-text-link-15{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-l))!important}.has-background-link-15{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-l))!important}.has-text-link-15-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-invert-l))!important}.has-background-link-15-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-15-invert-l))!important}.has-text-link-20{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-l))!important}.has-background-link-20{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-l))!important}.has-text-link-20-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-invert-l))!important}.has-background-link-20-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-20-invert-l))!important}.has-text-link-25{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-l))!important}.has-background-link-25{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-l))!important}.has-text-link-25-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-invert-l))!important}.has-background-link-25-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-25-invert-l))!important}.has-text-link-30{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-l))!important}.has-background-link-30{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-l))!important}.has-text-link-30-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-invert-l))!important}.has-background-link-30-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-30-invert-l))!important}.has-text-link-35{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-l))!important}.has-background-link-35{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-l))!important}.has-text-link-35-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-invert-l))!important}.has-background-link-35-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-35-invert-l))!important}.has-text-link-40{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-l))!important}.has-background-link-40{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-l))!important}.has-text-link-40-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-invert-l))!important}.has-background-link-40-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-40-invert-l))!important}.has-text-link-45{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-l))!important}.has-background-link-45{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-l))!important}.has-text-link-45-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-invert-l))!important}.has-background-link-45-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-45-invert-l))!important}.has-text-link-50{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-l))!important}.has-background-link-50{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-l))!important}.has-text-link-50-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-invert-l))!important}.has-background-link-50-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-50-invert-l))!important}.has-text-link-55{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-l))!important}.has-background-link-55{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-l))!important}.has-text-link-55-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-invert-l))!important}.has-background-link-55-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-55-invert-l))!important}.has-text-link-60{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-l))!important}.has-background-link-60{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-l))!important}.has-text-link-60-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-invert-l))!important}.has-background-link-60-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-60-invert-l))!important}.has-text-link-65{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-l))!important}.has-background-link-65{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-l))!important}.has-text-link-65-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-invert-l))!important}.has-background-link-65-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-65-invert-l))!important}.has-text-link-70{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-l))!important}.has-background-link-70{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-l))!important}.has-text-link-70-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-invert-l))!important}.has-background-link-70-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-70-invert-l))!important}.has-text-link-75{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-l))!important}.has-background-link-75{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-l))!important}.has-text-link-75-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-invert-l))!important}.has-background-link-75-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-75-invert-l))!important}.has-text-link-80{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-l))!important}.has-background-link-80{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-l))!important}.has-text-link-80-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-invert-l))!important}.has-background-link-80-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-80-invert-l))!important}.has-text-link-85{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-l))!important}.has-background-link-85{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-l))!important}.has-text-link-85-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-invert-l))!important}.has-background-link-85-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-85-invert-l))!important}.has-text-link-90{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-l))!important}.has-background-link-90{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-l))!important}.has-text-link-90-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-invert-l))!important}.has-background-link-90-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-90-invert-l))!important}.has-text-link-95{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-l))!important}.has-background-link-95{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-l))!important}.has-text-link-95-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-invert-l))!important}.has-background-link-95-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-95-invert-l))!important}.has-text-link-100{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-l))!important}.has-background-link-100{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-l))!important}.has-text-link-100-invert{color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-invert-l))!important}.has-background-link-100-invert{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),var(--bulma-link-100-invert-l))!important}a.has-text-link:focus-visible,a.has-text-link:hover,button.has-text-link:focus-visible,button.has-text-link:hover,has-text-link.is-hoverable:focus-visible,has-text-link.is-hoverable:hover{color:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-link:active,button.has-text-link:active,has-text-link.is-hoverable:active{color:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-link:focus-visible,a.has-background-link:hover,button.has-background-link:focus-visible,button.has-background-link:hover,has-background-link.is-hoverable:focus-visible,has-background-link.is-hoverable:hover{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-link:active,button.has-background-link:active,has-background-link.is-hoverable:active{background-color:hsl(var(--bulma-link-h),var(--bulma-link-s),calc(var(--bulma-link-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-link{--h:var(--bulma-link-h);--s:var(--bulma-link-s);--l:var(--bulma-link-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-link-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-link-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-link-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-link-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-link-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-link-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-link-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-link-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-link-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-link-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-link-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-link-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-link-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-link-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-link-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-link-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-link-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-link-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-link-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-link-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-link-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-info{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l))!important}.has-background-info{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-l))!important}.has-text-info-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-invert-l))!important}.has-background-info-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-invert-l))!important}.has-text-info-on-scheme{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l))!important}.has-background-info-on-scheme{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-on-scheme-l))!important}.has-text-info-light{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-l))!important}.has-background-info-light{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-l))!important}.has-text-info-light-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-invert-l))!important}.has-background-info-light-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-light-invert-l))!important}.has-text-info-dark{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-l))!important}.has-background-info-dark{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-l))!important}.has-text-info-dark-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-invert-l))!important}.has-background-info-dark-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-dark-invert-l))!important}.has-text-info-soft{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-l))!important}.has-background-info-soft{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-l))!important}.has-text-info-bold{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-l))!important}.has-background-info-bold{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-l))!important}.has-text-info-soft-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-invert-l))!important}.has-background-info-soft-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-soft-invert-l))!important}.has-text-info-bold-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-invert-l))!important}.has-background-info-bold-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-bold-invert-l))!important}.has-text-info-00{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-l))!important}.has-background-info-00{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-l))!important}.has-text-info-00-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-invert-l))!important}.has-background-info-00-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-00-invert-l))!important}.has-text-info-05{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-l))!important}.has-background-info-05{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-l))!important}.has-text-info-05-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-invert-l))!important}.has-background-info-05-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-05-invert-l))!important}.has-text-info-10{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-l))!important}.has-background-info-10{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-l))!important}.has-text-info-10-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-invert-l))!important}.has-background-info-10-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-10-invert-l))!important}.has-text-info-15{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-l))!important}.has-background-info-15{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-l))!important}.has-text-info-15-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-invert-l))!important}.has-background-info-15-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-15-invert-l))!important}.has-text-info-20{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-l))!important}.has-background-info-20{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-l))!important}.has-text-info-20-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-invert-l))!important}.has-background-info-20-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-20-invert-l))!important}.has-text-info-25{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-l))!important}.has-background-info-25{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-l))!important}.has-text-info-25-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-invert-l))!important}.has-background-info-25-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-25-invert-l))!important}.has-text-info-30{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-l))!important}.has-background-info-30{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-l))!important}.has-text-info-30-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-invert-l))!important}.has-background-info-30-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-30-invert-l))!important}.has-text-info-35{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-l))!important}.has-background-info-35{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-l))!important}.has-text-info-35-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-invert-l))!important}.has-background-info-35-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-35-invert-l))!important}.has-text-info-40{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-l))!important}.has-background-info-40{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-l))!important}.has-text-info-40-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-invert-l))!important}.has-background-info-40-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-40-invert-l))!important}.has-text-info-45{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-l))!important}.has-background-info-45{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-l))!important}.has-text-info-45-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-invert-l))!important}.has-background-info-45-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-45-invert-l))!important}.has-text-info-50{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-l))!important}.has-background-info-50{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-l))!important}.has-text-info-50-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-invert-l))!important}.has-background-info-50-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-50-invert-l))!important}.has-text-info-55{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-l))!important}.has-background-info-55{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-l))!important}.has-text-info-55-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-invert-l))!important}.has-background-info-55-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-55-invert-l))!important}.has-text-info-60{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-l))!important}.has-background-info-60{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-l))!important}.has-text-info-60-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-invert-l))!important}.has-background-info-60-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-60-invert-l))!important}.has-text-info-65{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-l))!important}.has-background-info-65{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-l))!important}.has-text-info-65-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-invert-l))!important}.has-background-info-65-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-65-invert-l))!important}.has-text-info-70{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-l))!important}.has-background-info-70{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-l))!important}.has-text-info-70-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-invert-l))!important}.has-background-info-70-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-70-invert-l))!important}.has-text-info-75{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-l))!important}.has-background-info-75{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-l))!important}.has-text-info-75-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-invert-l))!important}.has-background-info-75-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-75-invert-l))!important}.has-text-info-80{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-l))!important}.has-background-info-80{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-l))!important}.has-text-info-80-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-invert-l))!important}.has-background-info-80-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-80-invert-l))!important}.has-text-info-85{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-l))!important}.has-background-info-85{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-l))!important}.has-text-info-85-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-invert-l))!important}.has-background-info-85-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-85-invert-l))!important}.has-text-info-90{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-l))!important}.has-background-info-90{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-l))!important}.has-text-info-90-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-invert-l))!important}.has-background-info-90-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-90-invert-l))!important}.has-text-info-95{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-l))!important}.has-background-info-95{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-l))!important}.has-text-info-95-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-invert-l))!important}.has-background-info-95-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-95-invert-l))!important}.has-text-info-100{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-l))!important}.has-background-info-100{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-l))!important}.has-text-info-100-invert{color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-invert-l))!important}.has-background-info-100-invert{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),var(--bulma-info-100-invert-l))!important}a.has-text-info:focus-visible,a.has-text-info:hover,button.has-text-info:focus-visible,button.has-text-info:hover,has-text-info.is-hoverable:focus-visible,has-text-info.is-hoverable:hover{color:hsl(var(--bulma-info-h),var(--bulma-info-s),calc(var(--bulma-info-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-info:active,button.has-text-info:active,has-text-info.is-hoverable:active{color:hsl(var(--bulma-info-h),var(--bulma-info-s),calc(var(--bulma-info-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-info:focus-visible,a.has-background-info:hover,button.has-background-info:focus-visible,button.has-background-info:hover,has-background-info.is-hoverable:focus-visible,has-background-info.is-hoverable:hover{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),calc(var(--bulma-info-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-info:active,button.has-background-info:active,has-background-info.is-hoverable:active{background-color:hsl(var(--bulma-info-h),var(--bulma-info-s),calc(var(--bulma-info-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-info{--h:var(--bulma-info-h);--s:var(--bulma-info-s);--l:var(--bulma-info-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-info-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-info-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-info-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-info-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-info-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-info-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-info-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-info-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-info-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-info-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-info-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-info-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-info-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-info-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-info-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-info-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-info-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-info-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-info-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-info-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-info-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-success{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l))!important}.has-background-success{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-l))!important}.has-text-success-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-invert-l))!important}.has-background-success-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-invert-l))!important}.has-text-success-on-scheme{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l))!important}.has-background-success-on-scheme{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-on-scheme-l))!important}.has-text-success-light{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-l))!important}.has-background-success-light{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-l))!important}.has-text-success-light-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-invert-l))!important}.has-background-success-light-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-light-invert-l))!important}.has-text-success-dark{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-l))!important}.has-background-success-dark{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-l))!important}.has-text-success-dark-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-invert-l))!important}.has-background-success-dark-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-dark-invert-l))!important}.has-text-success-soft{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-l))!important}.has-background-success-soft{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-l))!important}.has-text-success-bold{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-l))!important}.has-background-success-bold{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-l))!important}.has-text-success-soft-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-invert-l))!important}.has-background-success-soft-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-soft-invert-l))!important}.has-text-success-bold-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-invert-l))!important}.has-background-success-bold-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-bold-invert-l))!important}.has-text-success-00{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-l))!important}.has-background-success-00{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-l))!important}.has-text-success-00-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-invert-l))!important}.has-background-success-00-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-00-invert-l))!important}.has-text-success-05{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-l))!important}.has-background-success-05{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-l))!important}.has-text-success-05-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-invert-l))!important}.has-background-success-05-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-05-invert-l))!important}.has-text-success-10{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-l))!important}.has-background-success-10{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-l))!important}.has-text-success-10-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-invert-l))!important}.has-background-success-10-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-10-invert-l))!important}.has-text-success-15{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-l))!important}.has-background-success-15{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-l))!important}.has-text-success-15-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-invert-l))!important}.has-background-success-15-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-15-invert-l))!important}.has-text-success-20{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-l))!important}.has-background-success-20{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-l))!important}.has-text-success-20-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-invert-l))!important}.has-background-success-20-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-20-invert-l))!important}.has-text-success-25{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-l))!important}.has-background-success-25{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-l))!important}.has-text-success-25-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-invert-l))!important}.has-background-success-25-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-25-invert-l))!important}.has-text-success-30{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-l))!important}.has-background-success-30{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-l))!important}.has-text-success-30-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-invert-l))!important}.has-background-success-30-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-30-invert-l))!important}.has-text-success-35{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-l))!important}.has-background-success-35{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-l))!important}.has-text-success-35-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-invert-l))!important}.has-background-success-35-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-35-invert-l))!important}.has-text-success-40{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-l))!important}.has-background-success-40{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-l))!important}.has-text-success-40-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-invert-l))!important}.has-background-success-40-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-40-invert-l))!important}.has-text-success-45{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-l))!important}.has-background-success-45{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-l))!important}.has-text-success-45-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-invert-l))!important}.has-background-success-45-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-45-invert-l))!important}.has-text-success-50{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-l))!important}.has-background-success-50{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-l))!important}.has-text-success-50-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-invert-l))!important}.has-background-success-50-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-50-invert-l))!important}.has-text-success-55{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-l))!important}.has-background-success-55{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-l))!important}.has-text-success-55-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-invert-l))!important}.has-background-success-55-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-55-invert-l))!important}.has-text-success-60{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-l))!important}.has-background-success-60{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-l))!important}.has-text-success-60-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-invert-l))!important}.has-background-success-60-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-60-invert-l))!important}.has-text-success-65{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-l))!important}.has-background-success-65{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-l))!important}.has-text-success-65-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-invert-l))!important}.has-background-success-65-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-65-invert-l))!important}.has-text-success-70{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-l))!important}.has-background-success-70{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-l))!important}.has-text-success-70-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-invert-l))!important}.has-background-success-70-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-70-invert-l))!important}.has-text-success-75{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-l))!important}.has-background-success-75{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-l))!important}.has-text-success-75-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-invert-l))!important}.has-background-success-75-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-75-invert-l))!important}.has-text-success-80{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-l))!important}.has-background-success-80{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-l))!important}.has-text-success-80-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-invert-l))!important}.has-background-success-80-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-80-invert-l))!important}.has-text-success-85{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-l))!important}.has-background-success-85{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-l))!important}.has-text-success-85-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-invert-l))!important}.has-background-success-85-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-85-invert-l))!important}.has-text-success-90{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-l))!important}.has-background-success-90{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-l))!important}.has-text-success-90-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-invert-l))!important}.has-background-success-90-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-90-invert-l))!important}.has-text-success-95{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-l))!important}.has-background-success-95{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-l))!important}.has-text-success-95-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-invert-l))!important}.has-background-success-95-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-95-invert-l))!important}.has-text-success-100{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-l))!important}.has-background-success-100{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-l))!important}.has-text-success-100-invert{color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-invert-l))!important}.has-background-success-100-invert{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),var(--bulma-success-100-invert-l))!important}a.has-text-success:focus-visible,a.has-text-success:hover,button.has-text-success:focus-visible,button.has-text-success:hover,has-text-success.is-hoverable:focus-visible,has-text-success.is-hoverable:hover{color:hsl(var(--bulma-success-h),var(--bulma-success-s),calc(var(--bulma-success-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-success:active,button.has-text-success:active,has-text-success.is-hoverable:active{color:hsl(var(--bulma-success-h),var(--bulma-success-s),calc(var(--bulma-success-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-success:focus-visible,a.has-background-success:hover,button.has-background-success:focus-visible,button.has-background-success:hover,has-background-success.is-hoverable:focus-visible,has-background-success.is-hoverable:hover{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),calc(var(--bulma-success-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-success:active,button.has-background-success:active,has-background-success.is-hoverable:active{background-color:hsl(var(--bulma-success-h),var(--bulma-success-s),calc(var(--bulma-success-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-success{--h:var(--bulma-success-h);--s:var(--bulma-success-s);--l:var(--bulma-success-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-success-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-success-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-success-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-success-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-success-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-success-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-success-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-success-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-success-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-success-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-success-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-success-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-success-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-success-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-success-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-success-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-success-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-success-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-success-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-success-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-success-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-warning{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l))!important}.has-background-warning{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-l))!important}.has-text-warning-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-invert-l))!important}.has-background-warning-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-invert-l))!important}.has-text-warning-on-scheme{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l))!important}.has-background-warning-on-scheme{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-on-scheme-l))!important}.has-text-warning-light{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-l))!important}.has-background-warning-light{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-l))!important}.has-text-warning-light-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-invert-l))!important}.has-background-warning-light-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-light-invert-l))!important}.has-text-warning-dark{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-l))!important}.has-background-warning-dark{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-l))!important}.has-text-warning-dark-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-invert-l))!important}.has-background-warning-dark-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-dark-invert-l))!important}.has-text-warning-soft{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-l))!important}.has-background-warning-soft{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-l))!important}.has-text-warning-bold{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-l))!important}.has-background-warning-bold{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-l))!important}.has-text-warning-soft-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-invert-l))!important}.has-background-warning-soft-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-soft-invert-l))!important}.has-text-warning-bold-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-invert-l))!important}.has-background-warning-bold-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-bold-invert-l))!important}.has-text-warning-00{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-l))!important}.has-background-warning-00{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-l))!important}.has-text-warning-00-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-invert-l))!important}.has-background-warning-00-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-00-invert-l))!important}.has-text-warning-05{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-l))!important}.has-background-warning-05{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-l))!important}.has-text-warning-05-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-invert-l))!important}.has-background-warning-05-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-05-invert-l))!important}.has-text-warning-10{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-l))!important}.has-background-warning-10{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-l))!important}.has-text-warning-10-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-invert-l))!important}.has-background-warning-10-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-10-invert-l))!important}.has-text-warning-15{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-l))!important}.has-background-warning-15{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-l))!important}.has-text-warning-15-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-invert-l))!important}.has-background-warning-15-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-15-invert-l))!important}.has-text-warning-20{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-l))!important}.has-background-warning-20{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-l))!important}.has-text-warning-20-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-invert-l))!important}.has-background-warning-20-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-20-invert-l))!important}.has-text-warning-25{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-l))!important}.has-background-warning-25{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-l))!important}.has-text-warning-25-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-invert-l))!important}.has-background-warning-25-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-25-invert-l))!important}.has-text-warning-30{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-l))!important}.has-background-warning-30{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-l))!important}.has-text-warning-30-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-invert-l))!important}.has-background-warning-30-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-30-invert-l))!important}.has-text-warning-35{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-l))!important}.has-background-warning-35{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-l))!important}.has-text-warning-35-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-invert-l))!important}.has-background-warning-35-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-35-invert-l))!important}.has-text-warning-40{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-l))!important}.has-background-warning-40{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-l))!important}.has-text-warning-40-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-invert-l))!important}.has-background-warning-40-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-40-invert-l))!important}.has-text-warning-45{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-l))!important}.has-background-warning-45{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-l))!important}.has-text-warning-45-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-invert-l))!important}.has-background-warning-45-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-45-invert-l))!important}.has-text-warning-50{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-l))!important}.has-background-warning-50{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-l))!important}.has-text-warning-50-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-invert-l))!important}.has-background-warning-50-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-50-invert-l))!important}.has-text-warning-55{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-l))!important}.has-background-warning-55{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-l))!important}.has-text-warning-55-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-invert-l))!important}.has-background-warning-55-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-55-invert-l))!important}.has-text-warning-60{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-l))!important}.has-background-warning-60{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-l))!important}.has-text-warning-60-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-invert-l))!important}.has-background-warning-60-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-60-invert-l))!important}.has-text-warning-65{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-l))!important}.has-background-warning-65{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-l))!important}.has-text-warning-65-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-invert-l))!important}.has-background-warning-65-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-65-invert-l))!important}.has-text-warning-70{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-l))!important}.has-background-warning-70{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-l))!important}.has-text-warning-70-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-invert-l))!important}.has-background-warning-70-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-70-invert-l))!important}.has-text-warning-75{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-l))!important}.has-background-warning-75{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-l))!important}.has-text-warning-75-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-invert-l))!important}.has-background-warning-75-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-75-invert-l))!important}.has-text-warning-80{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-l))!important}.has-background-warning-80{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-l))!important}.has-text-warning-80-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-invert-l))!important}.has-background-warning-80-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-80-invert-l))!important}.has-text-warning-85{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-l))!important}.has-background-warning-85{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-l))!important}.has-text-warning-85-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-invert-l))!important}.has-background-warning-85-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-85-invert-l))!important}.has-text-warning-90{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-l))!important}.has-background-warning-90{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-l))!important}.has-text-warning-90-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-invert-l))!important}.has-background-warning-90-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-90-invert-l))!important}.has-text-warning-95{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-l))!important}.has-background-warning-95{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-l))!important}.has-text-warning-95-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-invert-l))!important}.has-background-warning-95-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-95-invert-l))!important}.has-text-warning-100{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-l))!important}.has-background-warning-100{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-l))!important}.has-text-warning-100-invert{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-invert-l))!important}.has-background-warning-100-invert{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),var(--bulma-warning-100-invert-l))!important}a.has-text-warning:focus-visible,a.has-text-warning:hover,button.has-text-warning:focus-visible,button.has-text-warning:hover,has-text-warning.is-hoverable:focus-visible,has-text-warning.is-hoverable:hover{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),calc(var(--bulma-warning-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-warning:active,button.has-text-warning:active,has-text-warning.is-hoverable:active{color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),calc(var(--bulma-warning-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-warning:focus-visible,a.has-background-warning:hover,button.has-background-warning:focus-visible,button.has-background-warning:hover,has-background-warning.is-hoverable:focus-visible,has-background-warning.is-hoverable:hover{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),calc(var(--bulma-warning-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-warning:active,button.has-background-warning:active,has-background-warning.is-hoverable:active{background-color:hsl(var(--bulma-warning-h),var(--bulma-warning-s),calc(var(--bulma-warning-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-warning{--h:var(--bulma-warning-h);--s:var(--bulma-warning-s);--l:var(--bulma-warning-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-warning-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-warning-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-warning-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-warning-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-warning-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-warning-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-warning-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-warning-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-warning-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-warning-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-warning-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-warning-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-warning-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-warning-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-warning-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-warning-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-warning-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-warning-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-warning-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-warning-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-warning-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-danger{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l))!important}.has-background-danger{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-l))!important}.has-text-danger-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-invert-l))!important}.has-background-danger-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-invert-l))!important}.has-text-danger-on-scheme{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l))!important}.has-background-danger-on-scheme{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-on-scheme-l))!important}.has-text-danger-light{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-l))!important}.has-background-danger-light{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-l))!important}.has-text-danger-light-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-invert-l))!important}.has-background-danger-light-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-light-invert-l))!important}.has-text-danger-dark{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-l))!important}.has-background-danger-dark{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-l))!important}.has-text-danger-dark-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-invert-l))!important}.has-background-danger-dark-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-dark-invert-l))!important}.has-text-danger-soft{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-l))!important}.has-background-danger-soft{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-l))!important}.has-text-danger-bold{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-l))!important}.has-background-danger-bold{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-l))!important}.has-text-danger-soft-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-invert-l))!important}.has-background-danger-soft-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-soft-invert-l))!important}.has-text-danger-bold-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-invert-l))!important}.has-background-danger-bold-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-bold-invert-l))!important}.has-text-danger-00{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-l))!important}.has-background-danger-00{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-l))!important}.has-text-danger-00-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-invert-l))!important}.has-background-danger-00-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-00-invert-l))!important}.has-text-danger-05{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-l))!important}.has-background-danger-05{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-l))!important}.has-text-danger-05-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-invert-l))!important}.has-background-danger-05-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-05-invert-l))!important}.has-text-danger-10{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-l))!important}.has-background-danger-10{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-l))!important}.has-text-danger-10-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-invert-l))!important}.has-background-danger-10-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-10-invert-l))!important}.has-text-danger-15{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-l))!important}.has-background-danger-15{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-l))!important}.has-text-danger-15-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-invert-l))!important}.has-background-danger-15-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-15-invert-l))!important}.has-text-danger-20{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-l))!important}.has-background-danger-20{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-l))!important}.has-text-danger-20-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-invert-l))!important}.has-background-danger-20-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-20-invert-l))!important}.has-text-danger-25{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-l))!important}.has-background-danger-25{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-l))!important}.has-text-danger-25-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-invert-l))!important}.has-background-danger-25-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-25-invert-l))!important}.has-text-danger-30{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-l))!important}.has-background-danger-30{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-l))!important}.has-text-danger-30-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-invert-l))!important}.has-background-danger-30-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-30-invert-l))!important}.has-text-danger-35{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-l))!important}.has-background-danger-35{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-l))!important}.has-text-danger-35-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-invert-l))!important}.has-background-danger-35-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-35-invert-l))!important}.has-text-danger-40{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-l))!important}.has-background-danger-40{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-l))!important}.has-text-danger-40-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-invert-l))!important}.has-background-danger-40-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-40-invert-l))!important}.has-text-danger-45{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-l))!important}.has-background-danger-45{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-l))!important}.has-text-danger-45-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-invert-l))!important}.has-background-danger-45-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-45-invert-l))!important}.has-text-danger-50{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-l))!important}.has-background-danger-50{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-l))!important}.has-text-danger-50-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-invert-l))!important}.has-background-danger-50-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-50-invert-l))!important}.has-text-danger-55{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-l))!important}.has-background-danger-55{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-l))!important}.has-text-danger-55-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-invert-l))!important}.has-background-danger-55-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-55-invert-l))!important}.has-text-danger-60{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-l))!important}.has-background-danger-60{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-l))!important}.has-text-danger-60-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-invert-l))!important}.has-background-danger-60-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-60-invert-l))!important}.has-text-danger-65{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-l))!important}.has-background-danger-65{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-l))!important}.has-text-danger-65-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-invert-l))!important}.has-background-danger-65-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-65-invert-l))!important}.has-text-danger-70{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-l))!important}.has-background-danger-70{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-l))!important}.has-text-danger-70-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-invert-l))!important}.has-background-danger-70-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-70-invert-l))!important}.has-text-danger-75{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-l))!important}.has-background-danger-75{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-l))!important}.has-text-danger-75-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-invert-l))!important}.has-background-danger-75-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-75-invert-l))!important}.has-text-danger-80{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-l))!important}.has-background-danger-80{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-l))!important}.has-text-danger-80-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-invert-l))!important}.has-background-danger-80-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-80-invert-l))!important}.has-text-danger-85{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-l))!important}.has-background-danger-85{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-l))!important}.has-text-danger-85-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-invert-l))!important}.has-background-danger-85-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-85-invert-l))!important}.has-text-danger-90{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-l))!important}.has-background-danger-90{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-l))!important}.has-text-danger-90-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-invert-l))!important}.has-background-danger-90-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-90-invert-l))!important}.has-text-danger-95{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-l))!important}.has-background-danger-95{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-l))!important}.has-text-danger-95-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-invert-l))!important}.has-background-danger-95-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-95-invert-l))!important}.has-text-danger-100{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-l))!important}.has-background-danger-100{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-l))!important}.has-text-danger-100-invert{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-invert-l))!important}.has-background-danger-100-invert{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),var(--bulma-danger-100-invert-l))!important}a.has-text-danger:focus-visible,a.has-text-danger:hover,button.has-text-danger:focus-visible,button.has-text-danger:hover,has-text-danger.is-hoverable:focus-visible,has-text-danger.is-hoverable:hover{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),calc(var(--bulma-danger-l) + var(--bulma-hover-color-l-delta)))!important}a.has-text-danger:active,button.has-text-danger:active,has-text-danger.is-hoverable:active{color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),calc(var(--bulma-danger-l) + var(--bulma-active-color-l-delta)))!important}a.has-background-danger:focus-visible,a.has-background-danger:hover,button.has-background-danger:focus-visible,button.has-background-danger:hover,has-background-danger.is-hoverable:focus-visible,has-background-danger.is-hoverable:hover{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),calc(var(--bulma-danger-l) + var(--bulma-hover-background-l-delta)))!important}a.has-background-danger:active,button.has-background-danger:active,has-background-danger.is-hoverable:active{background-color:hsl(var(--bulma-danger-h),var(--bulma-danger-s),calc(var(--bulma-danger-l) + var(--bulma-active-background-l-delta)))!important}.is-palette-danger{--h:var(--bulma-danger-h);--s:var(--bulma-danger-s);--l:var(--bulma-danger-l);--color:hsl(var(--h),var(--s),var(--l));--00-l:var(--bulma-danger-00-l);--color-00:hsl(var(--h),var(--s),var(--00-l));--05-l:var(--bulma-danger-05-l);--color-05:hsl(var(--h),var(--s),var(--05-l));--10-l:var(--bulma-danger-10-l);--color-10:hsl(var(--h),var(--s),var(--10-l));--15-l:var(--bulma-danger-15-l);--color-15:hsl(var(--h),var(--s),var(--15-l));--20-l:var(--bulma-danger-20-l);--color-20:hsl(var(--h),var(--s),var(--20-l));--25-l:var(--bulma-danger-25-l);--color-25:hsl(var(--h),var(--s),var(--25-l));--30-l:var(--bulma-danger-30-l);--color-30:hsl(var(--h),var(--s),var(--30-l));--35-l:var(--bulma-danger-35-l);--color-35:hsl(var(--h),var(--s),var(--35-l));--40-l:var(--bulma-danger-40-l);--color-40:hsl(var(--h),var(--s),var(--40-l));--45-l:var(--bulma-danger-45-l);--color-45:hsl(var(--h),var(--s),var(--45-l));--50-l:var(--bulma-danger-50-l);--color-50:hsl(var(--h),var(--s),var(--50-l));--55-l:var(--bulma-danger-55-l);--color-55:hsl(var(--h),var(--s),var(--55-l));--60-l:var(--bulma-danger-60-l);--color-60:hsl(var(--h),var(--s),var(--60-l));--65-l:var(--bulma-danger-65-l);--color-65:hsl(var(--h),var(--s),var(--65-l));--70-l:var(--bulma-danger-70-l);--color-70:hsl(var(--h),var(--s),var(--70-l));--75-l:var(--bulma-danger-75-l);--color-75:hsl(var(--h),var(--s),var(--75-l));--80-l:var(--bulma-danger-80-l);--color-80:hsl(var(--h),var(--s),var(--80-l));--85-l:var(--bulma-danger-85-l);--color-85:hsl(var(--h),var(--s),var(--85-l));--90-l:var(--bulma-danger-90-l);--color-90:hsl(var(--h),var(--s),var(--90-l));--95-l:var(--bulma-danger-95-l);--color-95:hsl(var(--h),var(--s),var(--95-l));--100-l:var(--bulma-danger-100-l);--color-100:hsl(var(--h),var(--s),var(--100-l))}.has-text-black-bis{color:#14161a!important}.has-background-black-bis{background-color:#14161a!important}.has-text-black-ter{color:#1f2229!important}.has-background-black-ter{background-color:#1f2229!important}.has-text-grey-darker{color:#2e333d!important}.has-background-grey-darker{background-color:#2e333d!important}.has-text-grey-dark{color:#404654!important}.has-background-grey-dark{background-color:#404654!important}.has-text-grey{color:#69748c!important}.has-background-grey{background-color:#69748c!important}.has-text-grey-light{color:#abb1bf!important}.has-background-grey-light{background-color:#abb1bf!important}.has-text-grey-lighter{color:#d6d9e0!important}.has-background-grey-lighter{background-color:#d6d9e0!important}.has-text-white-ter{color:#f3f4f6!important}.has-background-white-ter{background-color:#f3f4f6!important}.has-text-white-bis{color:#f9fafb!important}.has-background-white-bis{background-color:#f9fafb!important}.has-text-current{color:currentColor!important}.has-text-inherit{color:inherit!important}.has-background-current{background-color:currentColor!important}.has-background-inherit{background-color:inherit!important}.is-flex-direction-row{flex-direction:row!important}.is-flex-direction-row-reverse{flex-direction:row-reverse!important}.is-flex-direction-column{flex-direction:column!important}.is-flex-direction-column-reverse{flex-direction:column-reverse!important}.is-flex-wrap-nowrap{flex-wrap:nowrap!important}.is-flex-wrap-wrap{flex-wrap:wrap!important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse!important}.is-justify-content-flex-start{justify-content:flex-start!important}.is-justify-content-flex-end{justify-content:flex-end!important}.is-justify-content-center{justify-content:center!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-space-around{justify-content:space-around!important}.is-justify-content-space-evenly{justify-content:space-evenly!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-end{justify-content:end!important}.is-justify-content-left{justify-content:left!important}.is-justify-content-right{justify-content:right!important}.is-align-content-flex-start{align-content:flex-start!important}.is-align-content-flex-end{align-content:flex-end!important}.is-align-content-center{align-content:center!important}.is-align-content-space-between{align-content:space-between!important}.is-align-content-space-around{align-content:space-around!important}.is-align-content-space-evenly{align-content:space-evenly!important}.is-align-content-stretch{align-content:stretch!important}.is-align-content-start{align-content:start!important}.is-align-content-end{align-content:end!important}.is-align-content-baseline{align-content:baseline!important}.is-align-items-stretch{align-items:stretch!important}.is-align-items-flex-start{align-items:flex-start!important}.is-align-items-flex-end{align-items:flex-end!important}.is-align-items-center{align-items:center!important}.is-align-items-baseline{align-items:baseline!important}.is-align-items-start{align-items:start!important}.is-align-items-end{align-items:end!important}.is-align-items-self-start{align-items:self-start!important}.is-align-items-self-end{align-items:self-end!important}.is-align-self-auto{align-self:auto!important}.is-align-self-flex-start{align-self:flex-start!important}.is-align-self-flex-end{align-self:flex-end!important}.is-align-self-center{align-self:center!important}.is-align-self-baseline{align-self:baseline!important}.is-align-self-stretch{align-self:stretch!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-grow-2{flex-grow:2!important}.is-flex-grow-3{flex-grow:3!important}.is-flex-grow-4{flex-grow:4!important}.is-flex-grow-5{flex-grow:5!important}.is-flex-shrink-0{flex-shrink:0!important}.is-flex-shrink-1{flex-shrink:1!important}.is-flex-shrink-2{flex-shrink:2!important}.is-flex-shrink-3{flex-shrink:3!important}.is-flex-shrink-4{flex-shrink:4!important}.is-flex-shrink-5{flex-shrink:5!important}.is-clearfix:after{clear:both;content:" ";display:table}.is-float-left,.is-pulled-left{float:left!important}.is-float-right,.is-pulled-right{float:right!important}.is-float-none{float:none!important}.is-clear-both{clear:both!important}.is-clear-left{clear:left!important}.is-clear-none{clear:none!important}.is-clear-right{clear:right!important}.is-gap-0,.is-gapless{gap:0!important}.is-gap-0\.5{gap:.25rem!important}.is-gap-1{gap:.5rem!important}.is-gap-1\.5{gap:.75rem!important}.is-gap-2{gap:1rem!important}.is-gap-2\.5{gap:1.25rem!important}.is-gap-3{gap:1.5rem!important}.is-gap-3\.5{gap:1.75rem!important}.is-gap-4{gap:2rem!important}.is-gap-4\.5{gap:2.25rem!important}.is-gap-5{gap:2.5rem!important}.is-gap-5\.5{gap:2.75rem!important}.is-gap-6{gap:3rem!important}.is-gap-6\.5{gap:3.25rem!important}.is-gap-7{gap:3.5rem!important}.is-gap-7\.5{gap:3.75rem!important}.is-gap-8{gap:4rem!important}.is-column-gap-0{column-gap:0!important}.is-column-gap-0\.5{column-gap:.25rem!important}.is-column-gap-1{column-gap:.5rem!important}.is-column-gap-1\.5{column-gap:.75rem!important}.is-column-gap-2{column-gap:1rem!important}.is-column-gap-2\.5{column-gap:1.25rem!important}.is-column-gap-3{column-gap:1.5rem!important}.is-column-gap-3\.5{column-gap:1.75rem!important}.is-column-gap-4{column-gap:2rem!important}.is-column-gap-4\.5{column-gap:2.25rem!important}.is-column-gap-5{column-gap:2.5rem!important}.is-column-gap-5\.5{column-gap:2.75rem!important}.is-column-gap-6{column-gap:3rem!important}.is-column-gap-6\.5{column-gap:3.25rem!important}.is-column-gap-7{column-gap:3.5rem!important}.is-column-gap-7\.5{column-gap:3.75rem!important}.is-column-gap-8{column-gap:4rem!important}.is-row-gap-0{row-gap:0!important}.is-row-gap-0\.5{row-gap:.25rem!important}.is-row-gap-1{row-gap:.5rem!important}.is-row-gap-1\.5{row-gap:.75rem!important}.is-row-gap-2{row-gap:1rem!important}.is-row-gap-2\.5{row-gap:1.25rem!important}.is-row-gap-3{row-gap:1.5rem!important}.is-row-gap-3\.5{row-gap:1.75rem!important}.is-row-gap-4{row-gap:2rem!important}.is-row-gap-4\.5{row-gap:2.25rem!important}.is-row-gap-5{row-gap:2.5rem!important}.is-row-gap-5\.5{row-gap:2.75rem!important}.is-row-gap-6{row-gap:3rem!important}.is-row-gap-6\.5{row-gap:3.25rem!important}.is-row-gap-7{row-gap:3.5rem!important}.is-row-gap-7\.5{row-gap:3.75rem!important}.is-row-gap-8{row-gap:4rem!important}.is-clipped{overflow:hidden!important}.is-overflow-auto{overflow:auto!important}.is-overflow-x-auto{overflow-x:auto!important}.is-overflow-y-auto{overflow-y:auto!important}.is-overflow-clip{overflow:clip!important}.is-overflow-x-clip{overflow-x:clip!important}.is-overflow-y-clip{overflow-y:clip!important}.is-overflow-hidden{overflow:hidden!important}.is-overflow-x-hidden{overflow-x:hidden!important}.is-overflow-y-hidden{overflow-y:hidden!important}.is-overflow-scroll{overflow:scroll!important}.is-overflow-x-scroll{overflow-x:scroll!important}.is-overflow-y-scroll{overflow-y:scroll!important}.is-overflow-visible{overflow:visible!important}.is-overflow-x-visible{overflow-x:visible!important}.is-overflow-y-visible{overflow-y:visible!important}.is-relative{position:relative!important}.is-position-absolute{position:absolute!important}.is-position-fixed{position:fixed!important}.is-position-relative{position:relative!important}.is-position-static{position:static!important}.is-position-sticky{position:sticky!important}.marginless{margin:0!important}.paddingless{padding:0!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.mx-0{margin-right:0!important}.my-0{margin-bottom:0!important;margin-top:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3,.mx-3{margin-left:.75rem!important}.mx-3{margin-right:.75rem!important}.my-3{margin-bottom:.75rem!important;margin-top:.75rem!important}.m-4{margin:1rem!important}.mt-4{margin-top:1rem!important}.mr-4{margin-right:1rem!important}.mb-4{margin-bottom:1rem!important}.ml-4,.mx-4{margin-left:1rem!important}.mx-4{margin-right:1rem!important}.my-4{margin-bottom:1rem!important;margin-top:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5,.mx-5{margin-left:1.5rem!important}.mx-5{margin-right:1.5rem!important}.my-5{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.m-6{margin:3rem!important}.mt-6{margin-top:3rem!important}.mr-6{margin-right:3rem!important}.mb-6{margin-bottom:3rem!important}.ml-6,.mx-6{margin-left:3rem!important}.mx-6{margin-right:3rem!important}.my-6{margin-bottom:3rem!important;margin-top:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}.mx-auto{margin-right:auto!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.px-0{padding-right:0!important}.py-0{padding-bottom:0!important;padding-top:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.p-3{padding:.75rem!important}.pt-3{padding-top:.75rem!important}.pr-3{padding-right:.75rem!important}.pb-3{padding-bottom:.75rem!important}.pl-3,.px-3{padding-left:.75rem!important}.px-3{padding-right:.75rem!important}.py-3{padding-bottom:.75rem!important;padding-top:.75rem!important}.p-4{padding:1rem!important}.pt-4{padding-top:1rem!important}.pr-4{padding-right:1rem!important}.pb-4{padding-bottom:1rem!important}.pl-4,.px-4{padding-left:1rem!important}.px-4{padding-right:1rem!important}.py-4{padding-bottom:1rem!important;padding-top:1rem!important}.p-5{padding:1.5rem!important}.pt-5{padding-top:1.5rem!important}.pr-5{padding-right:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.pl-5,.px-5{padding-left:1.5rem!important}.px-5{padding-right:1.5rem!important}.py-5{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.p-6{padding:3rem!important}.pt-6{padding-top:3rem!important}.pr-6{padding-right:3rem!important}.pb-6{padding-bottom:3rem!important}.pl-6,.px-6{padding-left:3rem!important}.px-6{padding-right:3rem!important}.py-6{padding-bottom:3rem!important;padding-top:3rem!important}.p-auto{padding:auto!important}.pt-auto{padding-top:auto!important}.pr-auto{padding-right:auto!important}.pb-auto{padding-bottom:auto!important}.pl-auto,.px-auto{padding-left:auto!important}.px-auto{padding-right:auto!important}.py-auto{padding-bottom:auto!important;padding-top:auto!important}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}.is-size-6{font-size:1rem!important}.is-size-7{font-size:.75rem!important}@media screen and (max-width:768px){.is-size-1-mobile{font-size:3rem!important}.is-size-2-mobile{font-size:2.5rem!important}.is-size-3-mobile{font-size:2rem!important}.is-size-4-mobile{font-size:1.5rem!important}.is-size-5-mobile{font-size:1.25rem!important}.is-size-6-mobile{font-size:1rem!important}.is-size-7-mobile{font-size:.75rem!important}}@media print,screen and (min-width:769px){.is-size-1-tablet{font-size:3rem!important}.is-size-2-tablet{font-size:2.5rem!important}.is-size-3-tablet{font-size:2rem!important}.is-size-4-tablet{font-size:1.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}.is-size-6-tablet{font-size:1rem!important}.is-size-7-tablet{font-size:.75rem!important}}@media screen and (max-width:1023px){.is-size-1-touch{font-size:3rem!important}.is-size-2-touch{font-size:2.5rem!important}.is-size-3-touch{font-size:2rem!important}.is-size-4-touch{font-size:1.5rem!important}.is-size-5-touch{font-size:1.25rem!important}.is-size-6-touch{font-size:1rem!important}.is-size-7-touch{font-size:.75rem!important}}@media screen and (min-width:1024px){.is-size-1-desktop{font-size:3rem!important}.is-size-2-desktop{font-size:2.5rem!important}.is-size-3-desktop{font-size:2rem!important}.is-size-4-desktop{font-size:1.5rem!important}.is-size-5-desktop{font-size:1.25rem!important}.is-size-6-desktop{font-size:1rem!important}.is-size-7-desktop{font-size:.75rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-2-widescreen{font-size:2.5rem!important}.is-size-3-widescreen{font-size:2rem!important}.is-size-4-widescreen{font-size:1.5rem!important}.is-size-5-widescreen{font-size:1.25rem!important}.is-size-6-widescreen{font-size:1rem!important}.is-size-7-widescreen{font-size:.75rem!important}}@media screen and (min-width:1408px){.is-size-1-fullhd{font-size:3rem!important}.is-size-2-fullhd{font-size:2.5rem!important}.is-size-3-fullhd{font-size:2rem!important}.is-size-4-fullhd{font-size:1.5rem!important}.is-size-5-fullhd{font-size:1.25rem!important}.is-size-6-fullhd{font-size:1rem!important}.is-size-7-fullhd{font-size:.75rem!important}}.has-text-centered{text-align:center!important}.has-text-justified{text-align:justify!important}.has-text-left{text-align:left!important}.has-text-right{text-align:right!important}@media screen and (max-width:768px){.has-text-centered-mobile{text-align:center!important}}@media print,screen and (min-width:769px){.has-text-centered-tablet{text-align:center!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-centered-tablet-only{text-align:center!important}}@media screen and (max-width:1023px){.has-text-centered-touch{text-align:center!important}}@media screen and (min-width:1024px){.has-text-centered-desktop{text-align:center!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-centered-desktop-only{text-align:center!important}}@media screen and (min-width:1216px){.has-text-centered-widescreen{text-align:center!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-centered-widescreen-only{text-align:center!important}}@media screen and (min-width:1408px){.has-text-centered-fullhd{text-align:center!important}}@media screen and (max-width:768px){.has-text-justified-mobile{text-align:justify!important}}@media print,screen and (min-width:769px){.has-text-justified-tablet{text-align:justify!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-justified-tablet-only{text-align:justify!important}}@media screen and (max-width:1023px){.has-text-justified-touch{text-align:justify!important}}@media screen and (min-width:1024px){.has-text-justified-desktop{text-align:justify!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-justified-desktop-only{text-align:justify!important}}@media screen and (min-width:1216px){.has-text-justified-widescreen{text-align:justify!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-justified-widescreen-only{text-align:justify!important}}@media screen and (min-width:1408px){.has-text-justified-fullhd{text-align:justify!important}}@media screen and (max-width:768px){.has-text-left-mobile{text-align:left!important}}@media print,screen and (min-width:769px){.has-text-left-tablet{text-align:left!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-left-tablet-only{text-align:left!important}}@media screen and (max-width:1023px){.has-text-left-touch{text-align:left!important}}@media screen and (min-width:1024px){.has-text-left-desktop{text-align:left!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-left-desktop-only{text-align:left!important}}@media screen and (min-width:1216px){.has-text-left-widescreen{text-align:left!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-left-widescreen-only{text-align:left!important}}@media screen and (min-width:1408px){.has-text-left-fullhd{text-align:left!important}}@media screen and (max-width:768px){.has-text-right-mobile{text-align:right!important}}@media print,screen and (min-width:769px){.has-text-right-tablet{text-align:right!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-right-tablet-only{text-align:right!important}}@media screen and (max-width:1023px){.has-text-right-touch{text-align:right!important}}@media screen and (min-width:1024px){.has-text-right-desktop{text-align:right!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-right-desktop-only{text-align:right!important}}@media screen and (min-width:1216px){.has-text-right-widescreen{text-align:right!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-right-widescreen-only{text-align:right!important}}@media screen and (min-width:1408px){.has-text-right-fullhd{text-align:right!important}}.is-capitalized{text-transform:capitalize!important}.is-lowercase{text-transform:lowercase!important}.is-uppercase{text-transform:uppercase!important}.is-italic{font-style:italic!important}.is-underlined{text-decoration:underline!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-medium{font-weight:500!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.has-text-weight-extrabold{font-weight:800!important}.is-family-primary,.is-family-sans-serif,.is-family-secondary{font-family:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif!important}.is-family-code,.is-family-monospace{font-family:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace!important}.is-display-none,.is-hidden{display:none!important}.is-block,.is-display-block{display:block!important}@media screen and (max-width:768px){.is-block-mobile,.is-display-block-mobile{display:block!important}}@media print,screen and (min-width:769px){.is-block-tablet,.is-display-block-tablet{display:block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-block-tablet-only,.is-display-block-tablet-only{display:block!important}}@media screen and (max-width:1023px){.is-block-touch,.is-display-block-touch{display:block!important}}@media screen and (min-width:1024px){.is-block-desktop,.is-display-block-desktop{display:block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-block-desktop-only,.is-display-block-desktop-only{display:block!important}}@media screen and (min-width:1216px){.is-block-widescreen,.is-display-block-widescreen{display:block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-block-widescreen-only,.is-display-block-widescreen-only{display:block!important}}@media screen and (min-width:1408px){.is-block-fullhd,.is-display-block-fullhd{display:block!important}}.is-display-flex,.is-flex{display:flex!important}@media screen and (max-width:768px){.is-display-flex-mobile,.is-flex-mobile{display:flex!important}}@media print,screen and (min-width:769px){.is-display-flex-tablet,.is-flex-tablet{display:flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-display-flex-tablet-only,.is-flex-tablet-only{display:flex!important}}@media screen and (max-width:1023px){.is-display-flex-touch,.is-flex-touch{display:flex!important}}@media screen and (min-width:1024px){.is-display-flex-desktop,.is-flex-desktop{display:flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-display-flex-desktop-only,.is-flex-desktop-only{display:flex!important}}@media screen and (min-width:1216px){.is-display-flex-widescreen,.is-flex-widescreen{display:flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-display-flex-widescreen-only,.is-flex-widescreen-only{display:flex!important}}@media screen and (min-width:1408px){.is-display-flex-fullhd,.is-flex-fullhd{display:flex!important}}.is-display-inline,.is-inline{display:inline!important}@media screen and (max-width:768px){.is-display-inline-mobile,.is-inline-mobile{display:inline!important}}@media print,screen and (min-width:769px){.is-display-inline-tablet,.is-inline-tablet{display:inline!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-display-inline-tablet-only,.is-inline-tablet-only{display:inline!important}}@media screen and (max-width:1023px){.is-display-inline-touch,.is-inline-touch{display:inline!important}}@media screen and (min-width:1024px){.is-display-inline-desktop,.is-inline-desktop{display:inline!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-display-inline-desktop-only,.is-inline-desktop-only{display:inline!important}}@media screen and (min-width:1216px){.is-display-inline-widescreen,.is-inline-widescreen{display:inline!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-display-inline-widescreen-only,.is-inline-widescreen-only{display:inline!important}}@media screen and (min-width:1408px){.is-display-inline-fullhd,.is-inline-fullhd{display:inline!important}}.is-display-inline-block,.is-inline-block{display:inline-block!important}@media screen and (max-width:768px){.is-display-inline-block-mobile,.is-inline-block-mobile{display:inline-block!important}}@media print,screen and (min-width:769px){.is-display-inline-block-tablet,.is-inline-block-tablet{display:inline-block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-display-inline-block-tablet-only,.is-inline-block-tablet-only{display:inline-block!important}}@media screen and (max-width:1023px){.is-display-inline-block-touch,.is-inline-block-touch{display:inline-block!important}}@media screen and (min-width:1024px){.is-display-inline-block-desktop,.is-inline-block-desktop{display:inline-block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-display-inline-block-desktop-only,.is-inline-block-desktop-only{display:inline-block!important}}@media screen and (min-width:1216px){.is-display-inline-block-widescreen,.is-inline-block-widescreen{display:inline-block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-display-inline-block-widescreen-only,.is-inline-block-widescreen-only{display:inline-block!important}}@media screen and (min-width:1408px){.is-display-inline-block-fullhd,.is-inline-block-fullhd{display:inline-block!important}}.is-display-inline-flex,.is-inline-flex{display:inline-flex!important}@media screen and (max-width:768px){.is-display-inline-flex-mobile,.is-inline-flex-mobile{display:inline-flex!important}}@media print,screen and (min-width:769px){.is-display-inline-flex-tablet,.is-inline-flex-tablet{display:inline-flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-display-inline-flex-tablet-only,.is-inline-flex-tablet-only{display:inline-flex!important}}@media screen and (max-width:1023px){.is-display-inline-flex-touch,.is-inline-flex-touch{display:inline-flex!important}}@media screen and (min-width:1024px){.is-display-inline-flex-desktop,.is-inline-flex-desktop{display:inline-flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-display-inline-flex-desktop-only,.is-inline-flex-desktop-only{display:inline-flex!important}}@media screen and (min-width:1216px){.is-display-inline-flex-widescreen,.is-inline-flex-widescreen{display:inline-flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-display-inline-flex-widescreen-only,.is-inline-flex-widescreen-only{display:inline-flex!important}}@media screen and (min-width:1408px){.is-display-inline-flex-fullhd,.is-inline-flex-fullhd{display:inline-flex!important}}.is-display-grid,.is-grid{display:grid!important}@media screen and (max-width:768px){.is-display-grid-mobile,.is-grid-mobile{display:grid!important}}@media print,screen and (min-width:769px){.is-display-grid-tablet,.is-grid-tablet{display:grid!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-display-grid-tablet-only,.is-grid-tablet-only{display:grid!important}}@media screen and (max-width:1023px){.is-display-grid-touch,.is-grid-touch{display:grid!important}}@media screen and (min-width:1024px){.is-display-grid-desktop,.is-grid-desktop{display:grid!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-display-grid-desktop-only,.is-grid-desktop-only{display:grid!important}}@media screen and (min-width:1216px){.is-display-grid-widescreen,.is-grid-widescreen{display:grid!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-display-grid-widescreen-only,.is-grid-widescreen-only{display:grid!important}}@media screen and (min-width:1408px){.is-display-grid-fullhd,.is-grid-fullhd{display:grid!important}}.is-sr-only{border:none!important;clip:rect(0,0,0,0)!important;height:.01em!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:.01em!important}@media screen and (max-width:768px){.is-display-none-mobile,.is-hidden-mobile{display:none!important}}@media print,screen and (min-width:769px){.is-display-none-tablet,.is-hidden-tablet{display:none!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-display-none-tablet-only,.is-hidden-tablet-only{display:none!important}}@media screen and (max-width:1023px){.is-display-none-touch,.is-hidden-touch{display:none!important}}@media screen and (min-width:1024px){.is-display-none-desktop,.is-hidden-desktop{display:none!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-display-none-desktop-only,.is-hidden-desktop-only{display:none!important}}@media screen and (min-width:1216px){.is-display-none-widescreen,.is-hidden-widescreen{display:none!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-display-none-widescreen-only,.is-hidden-widescreen-only{display:none!important}}@media screen and (min-width:1408px){.is-display-none-fullhd,.is-hidden-fullhd{display:none!important}}.is-invisible,.is-visibility-hidden{visibility:hidden!important}@media screen and (max-width:768px){.is-invisible-mobile,.is-visibility-hidden-mobile{visibility:hidden!important}}@media print,screen and (min-width:769px){.is-invisible-tablet,.is-visibility-hidden-tablet{visibility:hidden!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-invisible-tablet-only,.is-visibility-hidden-tablet-only{visibility:hidden!important}}@media screen and (max-width:1023px){.is-invisible-touch,.is-visibility-hidden-touch{visibility:hidden!important}}@media screen and (min-width:1024px){.is-invisible-desktop,.is-visibility-hidden-desktop{visibility:hidden!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-invisible-desktop-only,.is-visibility-hidden-desktop-only{visibility:hidden!important}}@media screen and (min-width:1216px){.is-invisible-widescreen,.is-visibility-hidden-widescreen{visibility:hidden!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-invisible-widescreen-only,.is-visibility-hidden-widescreen-only{visibility:hidden!important}}@media screen and (min-width:1408px){.is-invisible-fullhd,.is-visibility-hidden-fullhd{visibility:hidden!important}}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-clickable{cursor:pointer!important;pointer-events:all!important} \ No newline at end of file diff --git a/src/Flashsharp/wwwroot/vendor/htmx.min.js b/src/Flashsharp/wwwroot/vendor/htmx.min.js new file mode 100644 index 0000000..faafa3e --- /dev/null +++ b/src/Flashsharp/wwwroot/vendor/htmx.min.js @@ -0,0 +1 @@ +var htmx=function(){"use strict";const Q={onLoad:null,process:null,on:null,off:null,trigger:null,ajax:null,find:null,findAll:null,closest:null,values:function(e,t){const n=dn(e,t||"post");return n.values},remove:null,addClass:null,removeClass:null,toggleClass:null,takeClass:null,swap:null,defineExtension:null,removeExtension:null,logAll:null,logNone:null,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,allowScriptTags:true,inlineScriptNonce:"",inlineStyleNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",scrollBehavior:"instant",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:["get","delete"],selfRequestsOnly:true,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null,disableInheritance:false,responseHandling:[{code:"204",swap:false},{code:"[23]..",swap:true},{code:"[45]..",swap:false,error:true}],allowNestedOobSwaps:true,historyRestoreAsHxRequest:true,reportValidityOfForms:false},parseInterval:null,location:location,_:null,version:"2.0.8"};Q.onLoad=V;Q.process=Ft;Q.on=xe;Q.off=be;Q.trigger=ae;Q.ajax=Ln;Q.find=f;Q.findAll=x;Q.closest=g;Q.remove=_;Q.addClass=K;Q.removeClass=G;Q.toggleClass=W;Q.takeClass=Z;Q.swap=ze;Q.defineExtension=_n;Q.removeExtension=zn;Q.logAll=j;Q.logNone=$;Q.parseInterval=d;Q._=e;const n={addTriggerHandler:St,bodyContains:se,canAccessLocalStorage:X,findThisElement:Se,filterValues:yn,swap:ze,hasAttribute:s,getAttributeValue:a,getClosestAttributeValue:ne,getClosestMatch:q,getExpressionVars:Rn,getHeaders:mn,getInputValues:dn,getInternalData:oe,getSwapSpecification:bn,getTriggerSpecs:st,getTarget:Ee,makeFragment:D,mergeObjects:le,makeSettleInfo:Sn,oobSwap:Te,querySelectorExt:ue,settleImmediately:Yt,shouldCancel:ht,triggerEvent:ae,triggerErrorEvent:fe,withExtensions:Vt};const de=["get","post","put","delete","patch"];const R=de.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)=="ms"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)=="s"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)=="m"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e instanceof Element&&e.getAttribute(t)}function s(e,t){return!!e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function a(e,t){return ee(e,t)||ee(e,"data-"+t)}function u(e){const t=e.parentElement;if(!t&&e.parentNode instanceof ShadowRoot)return e.parentNode;return t}function te(){return document}function y(e,t){return e.getRootNode?e.getRootNode({composed:t}):te()}function q(e,t){while(e&&!t(e)){e=u(e)}return e||null}function o(e,t,n){const r=a(t,n);const o=a(t,"hx-disinherit");var i=a(t,"hx-inherit");if(e!==t){if(Q.config.disableInheritance){if(i&&(i==="*"||i.split(" ").indexOf(n)>=0)){return r}else{return null}}if(o&&(o==="*"||o.split(" ").indexOf(n)>=0)){return"unset"}}return r}function ne(t,n){let r=null;q(t,function(e){return!!(r=o(t,ce(e),n))});if(r!=="unset"){return r}}function h(e,t){return e instanceof Element&&e.matches(t)}function A(e){const t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;const n=t.exec(e);if(n){return n[1].toLowerCase()}else{return""}}function L(e){if("parseHTMLUnsafe"in Document){return Document.parseHTMLUnsafe(e)}const t=new DOMParser;return t.parseFromString(e,"text/html")}function N(e,t){while(t.childNodes.length>0){e.append(t.childNodes[0])}}function r(e){const t=te().createElement("script");ie(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}return t}function i(e){return e.matches("script")&&(e.type==="text/javascript"||e.type==="module"||e.type==="")}function I(e){Array.from(e.querySelectorAll("script")).forEach(e=>{if(i(e)){const t=r(e);const n=e.parentNode;try{n.insertBefore(t,e)}catch(e){H(e)}finally{e.remove()}}})}function D(e){const t=e.replace(/]*)?>[\s\S]*?<\/head>/i,"");const n=A(t);let r;if(n==="html"){r=new DocumentFragment;const i=L(e);N(r,i.body);r.title=i.title}else if(n==="body"){r=new DocumentFragment;const i=L(t);N(r,i.body);r.title=i.title}else{const i=L('");r=i.querySelector("template").content;r.title=i.title;var o=r.querySelector("title");if(o&&o.parentNode===r){o.remove();r.title=o.innerText}}if(r){if(Q.config.allowScriptTags){I(r)}else{r.querySelectorAll("script").forEach(e=>e.remove())}}return r}function re(e){if(e){e()}}function t(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function P(e){return typeof e==="function"}function k(e){return t(e,"Object")}function oe(e){const t="htmx-internal-data";let n=e[t];if(!n){n=e[t]={}}return n}function M(t){const n=[];if(t){for(let e=0;e=0}function se(e){return e.getRootNode({composed:true})===document}function B(e){return e.trim().split(/\s+/)}function le(e,t){for(const n in t){if(t.hasOwnProperty(n)){e[n]=t[n]}}return e}function v(e){try{return JSON.parse(e)}catch(e){H(e);return null}}function X(){const e="htmx:sessionStorageTest";try{sessionStorage.setItem(e,e);sessionStorage.removeItem(e);return true}catch(e){return false}}function U(e){const t=new URL(e,"http://x");if(t){e=t.pathname+t.search}if(e!="/"){e=e.replace(/\/+$/,"")}return e}function e(e){return On(te().body,function(){return eval(e)})}function V(t){const e=Q.on("htmx:load",function(e){t(e.detail.elt)});return e}function j(){Q.logger=function(e,t,n){if(console){console.log(t,e,n)}}}function $(){Q.logger=null}function f(e,t){if(typeof e!=="string"){return e.querySelector(t)}else{return f(te(),e)}}function x(e,t){if(typeof e!=="string"){return e.querySelectorAll(t)}else{return x(te(),e)}}function b(){return window}function _(e,t){e=w(e);if(t){b().setTimeout(function(){_(e);e=null},t)}else{u(e).removeChild(e)}}function ce(e){return e instanceof Element?e:null}function z(e){return e instanceof HTMLElement?e:null}function J(e){return typeof e==="string"?e:null}function p(e){return e instanceof Element||e instanceof Document||e instanceof DocumentFragment?e:null}function K(e,t,n){e=ce(w(e));if(!e){return}if(n){b().setTimeout(function(){K(e,t);e=null},n)}else{e.classList&&e.classList.add(t)}}function G(e,t,n){let r=ce(w(e));if(!r){return}if(n){b().setTimeout(function(){G(r,t);r=null},n)}else{if(r.classList){r.classList.remove(t);if(r.classList.length===0){r.removeAttribute("class")}}}}function W(e,t){e=w(e);e.classList.toggle(t)}function Z(e,t){e=w(e);ie(e.parentElement.children,function(e){G(e,t)});K(ce(e),t)}function g(e,t){e=ce(w(e));if(e){return e.closest(t)}return null}function l(e,t){return e.substring(0,t.length)===t}function Y(e,t){return e.substring(e.length-t.length)===t}function pe(e){const t=e.trim();if(l(t,"<")&&Y(t,"/>")){return t.substring(1,t.length-2)}else{return t}}function m(t,r,n){if(r.indexOf("global ")===0){return m(t,r.slice(7),true)}t=w(t);const o=[];{let t=0;let n=0;for(let e=0;e"){t--}}if(n0){const r=pe(o.shift());let e;if(r.indexOf("closest ")===0){e=g(ce(t),pe(r.slice(8)))}else if(r.indexOf("find ")===0){e=f(p(t),pe(r.slice(5)))}else if(r==="next"||r==="nextElementSibling"){e=ce(t).nextElementSibling}else if(r.indexOf("next ")===0){e=ge(t,pe(r.slice(5)),!!n)}else if(r==="previous"||r==="previousElementSibling"){e=ce(t).previousElementSibling}else if(r.indexOf("previous ")===0){e=me(t,pe(r.slice(9)),!!n)}else if(r==="document"){e=document}else if(r==="window"){e=window}else if(r==="body"){e=document.body}else if(r==="root"){e=y(t,!!n)}else if(r==="host"){e=t.getRootNode().host}else{s.push(r)}if(e){i.push(e)}}if(s.length>0){const e=s.join(",");const c=p(y(t,!!n));i.push(...M(c.querySelectorAll(e)))}return i}var ge=function(t,e,n){const r=p(y(t,n)).querySelectorAll(e);for(let e=0;e=0;e--){const o=r[e];if(o.compareDocumentPosition(t)===Node.DOCUMENT_POSITION_FOLLOWING){return o}}};function ue(e,t){if(typeof e!=="string"){return m(e,t)[0]}else{return m(te().body,e)[0]}}function w(e,t){if(typeof e==="string"){return f(p(t)||document,e)}else{return e}}function ye(e,t,n,r){if(P(t)){return{target:te().body,event:J(e),listener:t,options:n}}else{return{target:w(e),event:J(t),listener:n,options:r}}}function xe(t,n,r,o){Gn(function(){const e=ye(t,n,r,o);e.target.addEventListener(e.event,e.listener,e.options)});const e=P(n);return e?n:r}function be(t,n,r){Gn(function(){const e=ye(t,n,r);e.target.removeEventListener(e.event,e.listener)});return P(n)?n:r}const ve=te().createElement("output");function we(t,n){const e=ne(t,n);if(e){if(e==="this"){return[Se(t,n)]}else{const r=m(t,e);const o=/(^|,)(\s*)inherit(\s*)($|,)/.test(e);if(o){const i=ce(q(t,function(e){return e!==t&&s(ce(e),n)}));if(i){r.push(...we(i,n))}}if(r.length===0){H('The selector "'+e+'" on '+n+" returned no matches!");return[ve]}else{return r}}}}function Se(e,t){return ce(q(e,function(e){return a(ce(e),t)!=null}))}function Ee(e){const t=ne(e,"hx-target");if(t){if(t==="this"){return Se(e,"hx-target")}else{return ue(e,t)}}else{const n=oe(e);if(n.boosted){return te().body}else{return e}}}function Ce(e){return Q.config.attributesToSettle.includes(e)}function Oe(t,n){ie(Array.from(t.attributes),function(e){if(!n.hasAttribute(e.name)&&Ce(e.name)){t.removeAttribute(e.name)}});ie(n.attributes,function(e){if(Ce(e.name)){t.setAttribute(e.name,e.value)}})}function He(t,e){const n=Jn(e);for(let e=0;e0){s=e.substring(0,e.indexOf(":"));n=e.substring(e.indexOf(":")+1)}else{s=e}o.removeAttribute("hx-swap-oob");o.removeAttribute("data-hx-swap-oob");const r=m(t,n,false);if(r.length){ie(r,function(e){let t;const n=o.cloneNode(true);t=te().createDocumentFragment();t.appendChild(n);if(!He(s,e)){t=p(n)}const r={shouldSwap:true,target:e,fragment:t};if(!ae(e,"htmx:oobBeforeSwap",r))return;e=r.target;if(r.shouldSwap){qe(t);$e(s,e,e,t,i);Re()}ie(i.elts,function(e){ae(e,"htmx:oobAfterSwap",r)})});o.parentNode.removeChild(o)}else{o.parentNode.removeChild(o);fe(te().body,"htmx:oobErrorNoTarget",{content:o})}return e}function Re(){const e=f("#--htmx-preserve-pantry--");if(e){for(const t of[...e.children]){const n=f("#"+t.id);n.parentNode.moveBefore(t,n);n.remove()}e.remove()}}function qe(e){ie(x(e,"[hx-preserve], [data-hx-preserve]"),function(e){const t=a(e,"id");const n=te().getElementById(t);if(n!=null){if(e.moveBefore){let e=f("#--htmx-preserve-pantry--");if(e==null){te().body.insertAdjacentHTML("afterend","
");e=f("#--htmx-preserve-pantry--")}e.moveBefore(n,null)}else{e.parentNode.replaceChild(n,e)}}})}function Ae(l,e,c){ie(e.querySelectorAll("[id]"),function(t){const n=ee(t,"id");if(n&&n.length>0){const r=n.replace("'","\\'");const o=t.tagName.replace(":","\\:");const e=p(l);const i=e&&e.querySelector(o+"[id='"+r+"']");if(i&&i!==e){const s=t.cloneNode();Oe(t,i);c.tasks.push(function(){Oe(t,s)})}}})}function Le(e){return function(){G(e,Q.config.addedClass);Ft(ce(e));Ne(p(e));ae(e,"htmx:load")}}function Ne(e){const t="[autofocus]";const n=z(h(e,t)?e:e.querySelector(t));if(n!=null){n.focus()}}function c(e,t,n,r){Ae(e,n,r);while(n.childNodes.length>0){const o=n.firstChild;K(ce(o),Q.config.addedClass);e.insertBefore(o,t);if(o.nodeType!==Node.TEXT_NODE&&o.nodeType!==Node.COMMENT_NODE){r.tasks.push(Le(o))}}}function Ie(e,t){let n=0;while(n0}function ze(h,d,p,g){if(!g){g={}}let m=null;let n=null;let e=function(){re(g.beforeSwapCallback);h=w(h);const r=g.contextElement?y(g.contextElement,false):te();const e=document.activeElement;let t={};t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null};const o=Sn(h);if(p.swapStyle==="textContent"){h.textContent=d}else{let n=D(d);o.title=g.title||n.title;if(g.historyRequest){n=n.querySelector("[hx-history-elt],[data-hx-history-elt]")||n}if(g.selectOOB){const i=g.selectOOB.split(",");for(let t=0;t0){b().setTimeout(n,p.settleDelay)}else{n()}};let t=Q.config.globalViewTransitions;if(p.hasOwnProperty("transition")){t=p.transition}const r=g.contextElement||te();if(t&&ae(r,"htmx:beforeTransition",g.eventInfo)&&typeof Promise!=="undefined"&&document.startViewTransition){const o=new Promise(function(e,t){m=e;n=t});const i=e;e=function(){document.startViewTransition(function(){i();return o})}}try{if(p?.swapDelay&&p.swapDelay>0){b().setTimeout(e,p.swapDelay)}else{e()}}catch(e){fe(r,"htmx:swapError",g.eventInfo);re(n);throw e}}function Je(e,t,n){const r=e.getResponseHeader(t);if(r.indexOf("{")===0){const o=v(r);for(const i in o){if(o.hasOwnProperty(i)){let e=o[i];if(k(e)){n=e.target!==undefined?e.target:n}else{e={value:e}}ae(n,i,e)}}}else{const s=r.split(",");for(let e=0;e0){const s=o[0];if(s==="]"){e--;if(e===0){if(n===null){t=t+"true"}o.shift();t+=")})";try{const l=On(r,function(){return Function(t)()},function(){return true});l.source=t;return l}catch(e){fe(te().body,"htmx:syntax:error",{error:e,source:t});return null}}}else if(s==="["){e++}if(tt(s,n,i)){t+="(("+i+"."+s+") ? ("+i+"."+s+") : (window."+s+"))"}else{t=t+s}n=o.shift()}}}function O(e,t){let n="";while(e.length>0&&!t.test(e[0])){n+=e.shift()}return n}function rt(e){let t;if(e.length>0&&Ye.test(e[0])){e.shift();t=O(e,Qe).trim();e.shift()}else{t=O(e,E)}return t}const ot="input, textarea, select";function it(e,t,n){const r=[];const o=et(t);do{O(o,C);const l=o.length;const c=O(o,/[,\[\s]/);if(c!==""){if(c==="every"){const u={trigger:"every"};O(o,C);u.pollInterval=d(O(o,/[,\[\s]/));O(o,C);var i=nt(e,o,"event");if(i){u.eventFilter=i}r.push(u)}else{const f={trigger:c};var i=nt(e,o,"event");if(i){f.eventFilter=i}O(o,C);while(o.length>0&&o[0]!==","){const a=o.shift();if(a==="changed"){f.changed=true}else if(a==="once"){f.once=true}else if(a==="consume"){f.consume=true}else if(a==="delay"&&o[0]===":"){o.shift();f.delay=d(O(o,E))}else if(a==="from"&&o[0]===":"){o.shift();if(Ye.test(o[0])){var s=rt(o)}else{var s=O(o,E);if(s==="closest"||s==="find"||s==="next"||s==="previous"){o.shift();const h=rt(o);if(h.length>0){s+=" "+h}}}f.from=s}else if(a==="target"&&o[0]===":"){o.shift();f.target=rt(o)}else if(a==="throttle"&&o[0]===":"){o.shift();f.throttle=d(O(o,E))}else if(a==="queue"&&o[0]===":"){o.shift();f.queue=O(o,E)}else if(a==="root"&&o[0]===":"){o.shift();f[a]=rt(o)}else if(a==="threshold"&&o[0]===":"){o.shift();f[a]=O(o,E)}else{fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}r.push(f)}}if(o.length===l){fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}while(o[0]===","&&o.shift());if(n){n[t]=r}return r}function st(e){const t=a(e,"hx-trigger");let n=[];if(t){const r=Q.config.triggerSpecsCache;n=r&&r[t]||it(e,t,r)}if(n.length>0){return n}else if(h(e,"form")){return[{trigger:"submit"}]}else if(h(e,'input[type="button"], input[type="submit"]')){return[{trigger:"click"}]}else if(h(e,ot)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function lt(e){oe(e).cancelled=true}function ct(e,t,n){const r=oe(e);r.timeout=b().setTimeout(function(){if(se(e)&&r.cancelled!==true){if(!pt(n,e,Xt("hx:poll:trigger",{triggerSpec:n,target:e}))){t(e)}ct(e,t,n)}},n.pollInterval)}function ut(e){return location.hostname===e.hostname&&ee(e,"href")&&ee(e,"href").indexOf("#")!==0}function ft(e){return g(e,Q.config.disableSelector)}function at(t,n,e){if(t instanceof HTMLAnchorElement&&ut(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"&&String(ee(t,"method")).toLowerCase()!=="dialog"){n.boosted=true;let r,o;if(t.tagName==="A"){r="get";o=ee(t,"href")}else{const i=ee(t,"method");r=i?i.toLowerCase():"get";o=ee(t,"action");if(o==null||o===""){o=location.href}if(r==="get"&&o.includes("?")){o=o.replace(/\?[^#]+/,"")}}e.forEach(function(e){gt(t,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)},n,e,true)})}}function ht(e,t){if(e.type==="submit"&&t.tagName==="FORM"){return true}else if(e.type==="click"){const n=t.closest('input[type="submit"], button');if(n&&n.form&&n.type==="submit"){return true}const r=t.closest("a");const o=/^#.+/;if(r&&r.href&&!o.test(r.getAttribute("href"))){return true}}return false}function dt(e,t){return oe(e).boosted&&e instanceof HTMLAnchorElement&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function pt(e,t,n){const r=e.eventFilter;if(r){try{return r.call(t,n)!==true}catch(e){const o=r.source;fe(te().body,"htmx:eventFilter:error",{error:e,source:o});return true}}return false}function gt(l,c,e,u,f){const a=oe(l);let t;if(u.from){t=m(l,u.from)}else{t=[l]}if(u.changed){if(!("lastValue"in a)){a.lastValue=new WeakMap}t.forEach(function(e){if(!a.lastValue.has(u)){a.lastValue.set(u,new WeakMap)}a.lastValue.get(u).set(e,e.value)})}ie(t,function(i){const s=function(e){if(!se(l)){i.removeEventListener(u.trigger,s);return}if(dt(l,e)){return}if(f||ht(e,i)){e.preventDefault()}if(pt(u,l,e)){return}const t=oe(e);t.triggerSpec=u;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(l)<0){t.handledFor.push(l);if(u.consume){e.stopPropagation()}if(u.target&&e.target){if(!h(ce(e.target),u.target)){return}}if(u.once){if(a.triggeredOnce){return}else{a.triggeredOnce=true}}if(u.changed){const n=e.target;const r=n.value;const o=a.lastValue.get(u);if(o.has(n)&&o.get(n)===r){return}o.set(n,r)}if(a.delayed){clearTimeout(a.delayed)}if(a.throttle){return}if(u.throttle>0){if(!a.throttle){ae(l,"htmx:trigger");c(l,e);a.throttle=b().setTimeout(function(){a.throttle=null},u.throttle)}}else if(u.delay>0){a.delayed=b().setTimeout(function(){ae(l,"htmx:trigger");c(l,e)},u.delay)}else{ae(l,"htmx:trigger");c(l,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:u.trigger,listener:s,on:i});i.addEventListener(u.trigger,s)})}let mt=false;let yt=null;function xt(){if(!yt){yt=function(){mt=true};window.addEventListener("scroll",yt);window.addEventListener("resize",yt);setInterval(function(){if(mt){mt=false;ie(te().querySelectorAll("[hx-trigger*='revealed'],[data-hx-trigger*='revealed']"),function(e){bt(e)})}},200)}}function bt(e){if(!s(e,"data-hx-revealed")&&F(e)){e.setAttribute("data-hx-revealed","true");const t=oe(e);if(t.initHash){ae(e,"revealed")}else{e.addEventListener("htmx:afterProcessNode",function(){ae(e,"revealed")},{once:true})}}}function vt(e,t,n,r){const o=function(){if(!n.loaded){n.loaded=true;ae(e,"htmx:trigger");t(e)}};if(r>0){b().setTimeout(o,r)}else{o()}}function wt(t,n,e){let i=false;ie(de,function(r){if(s(t,"hx-"+r)){const o=a(t,"hx-"+r);i=true;n.path=o;n.verb=r;e.forEach(function(e){St(t,e,n,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)})})}});return i}function St(r,e,t,n){if(e.trigger==="revealed"){xt();gt(r,n,t,e);bt(ce(r))}else if(e.trigger==="intersect"){const o={};if(e.root){o.root=ue(r,e.root)}if(e.threshold){o.threshold=parseFloat(e.threshold)}const i=new IntersectionObserver(function(t){for(let e=0;e0){t.polling=true;ct(ce(r),n,e)}else{gt(r,n,t,e)}}function Et(e){const t=ce(e);if(!t){return false}const n=t.attributes;for(let e=0;e", "+e).join(""));return o}else{return[]}}function Rt(e){const t=At(e.target);const n=Nt(e);if(n){n.lastButtonClicked=t}}function qt(e){const t=Nt(e);if(t){t.lastButtonClicked=null}}function At(e){return g(ce(e),"button, input[type='submit']")}function Lt(e){return e.form||g(e,"form")}function Nt(e){const t=At(e.target);if(!t){return}const n=Lt(t);if(!n){return}return oe(n)}function It(e){e.addEventListener("click",Rt);e.addEventListener("focusin",Rt);e.addEventListener("focusout",qt)}function Dt(t,e,n){const r=oe(t);if(!Array.isArray(r.onHandlers)){r.onHandlers=[]}let o;const i=function(e){On(t,function(){if(ft(t)){return}if(!o){o=new Function("event",n)}o.call(t,e)})};t.addEventListener(e,i);r.onHandlers.push({event:e,listener:i})}function Pt(t){Pe(t);for(let e=0;eQ.config.historyCacheSize){i.shift()}while(i.length>0){try{sessionStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){fe(te().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function Jt(t){if(!X()){return null}t=U(t);const n=v(sessionStorage.getItem("htmx-history-cache"))||[];for(let e=0;e=200&&this.status<400){r.response=this.response;ae(te().body,"htmx:historyCacheMissLoad",r);ze(r.historyElt,r.response,n,{contextElement:r.historyElt,historyRequest:true});$t(r.path);ae(te().body,"htmx:historyRestore",{path:e,cacheMiss:true,serverResponse:r.response})}else{fe(te().body,"htmx:historyCacheMissLoadError",r)}};if(ae(te().body,"htmx:historyCacheMiss",r)){t.send()}}function en(e){Gt();e=e||location.pathname+location.search;const t=Jt(e);if(t){const n={swapStyle:"innerHTML",swapDelay:0,settleDelay:0,scroll:t.scroll};const r={path:e,item:t,historyElt:_t(),swapSpec:n};if(ae(te().body,"htmx:historyCacheHit",r)){ze(r.historyElt,t.content,n,{contextElement:r.historyElt,title:t.title});$t(r.path);ae(te().body,"htmx:historyRestore",r)}}else{if(Q.config.refreshOnHistoryMiss){Q.location.reload(true)}else{Qt(e)}}}function tn(e){let t=we(e,"hx-indicator");if(t==null){t=[e]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.classList.add.call(e.classList,Q.config.requestClass)});return t}function nn(e){let t=we(e,"hx-disabled-elt");if(t==null){t=[]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute("disabled","");e.setAttribute("data-disabled-by-htmx","")});return t}function rn(e,t){ie(e.concat(t),function(e){const t=oe(e);t.requestCount=(t.requestCount||1)-1});ie(e,function(e){const t=oe(e);if(t.requestCount===0){e.classList.remove.call(e.classList,Q.config.requestClass)}});ie(t,function(e){const t=oe(e);if(t.requestCount===0){e.removeAttribute("disabled");e.removeAttribute("data-disabled-by-htmx")}})}function on(t,n){for(let e=0;en.indexOf(e)<0)}else{e=e.filter(e=>e!==n)}r.delete(t);ie(e,e=>r.append(t,e))}}function un(e){if(e instanceof HTMLSelectElement&&e.multiple){return M(e.querySelectorAll("option:checked")).map(function(e){return e.value})}if(e instanceof HTMLInputElement&&e.files){return M(e.files)}return e.value}function fn(t,n,r,e,o){if(e==null||on(t,e)){return}else{t.push(e)}if(sn(e)){const i=ee(e,"name");ln(i,un(e),n);if(o){an(e,r)}}if(e instanceof HTMLFormElement){ie(e.elements,function(e){if(t.indexOf(e)>=0){cn(e.name,un(e),n)}else{t.push(e)}if(o){an(e,r)}});new FormData(e).forEach(function(e,t){if(e instanceof File&&e.name===""){return}ln(t,e,n)})}}function an(e,t){const n=e;if(n.willValidate){ae(n,"htmx:validation:validate");if(!n.checkValidity()){if(ae(n,"htmx:validation:failed",{message:n.validationMessage,validity:n.validity})&&!t.length&&Q.config.reportValidityOfForms){n.reportValidity()}t.push({elt:n,message:n.validationMessage,validity:n.validity})}}}function hn(n,e){for(const t of e.keys()){n.delete(t)}e.forEach(function(e,t){n.append(t,e)});return n}function dn(e,t){const n=[];const r=new FormData;const o=new FormData;const i=[];const s=oe(e);if(s.lastButtonClicked&&!se(s.lastButtonClicked)){s.lastButtonClicked=null}let l=e instanceof HTMLFormElement&&e.noValidate!==true||a(e,"hx-validate")==="true";if(s.lastButtonClicked){l=l&&s.lastButtonClicked.formNoValidate!==true}if(t!=="get"){fn(n,o,i,Lt(e),l)}fn(n,r,i,e,l);if(s.lastButtonClicked||e.tagName==="BUTTON"||e.tagName==="INPUT"&&ee(e,"type")==="submit"){const u=s.lastButtonClicked||e;const f=ee(u,"name");ln(f,u.value,o)}const c=we(e,"hx-include");ie(c,function(e){fn(n,r,i,ce(e),l);if(!h(e,"form")){ie(p(e).querySelectorAll(ot),function(e){fn(n,r,i,e,l)})}});hn(r,o);return{errors:i,formData:r,values:kn(r)}}function pn(e,t,n){if(e!==""){e+="&"}if(String(n)==="[object Object]"){n=JSON.stringify(n)}const r=encodeURIComponent(n);e+=encodeURIComponent(t)+"="+r;return e}function gn(e){e=Dn(e);let n="";e.forEach(function(e,t){n=pn(n,t,e)});return n}function mn(e,t,n){const r={"HX-Request":"true","HX-Trigger":ee(e,"id"),"HX-Trigger-Name":ee(e,"name"),"HX-Target":a(t,"id"),"HX-Current-URL":location.href};Cn(e,"hx-headers",false,r);if(n!==undefined){r["HX-Prompt"]=n}if(oe(e).boosted){r["HX-Boosted"]="true"}return r}function yn(n,e){const t=ne(e,"hx-params");if(t){if(t==="none"){return new FormData}else if(t==="*"){return n}else if(t.indexOf("not ")===0){ie(t.slice(4).split(","),function(e){e=e.trim();n.delete(e)});return n}else{const r=new FormData;ie(t.split(","),function(t){t=t.trim();if(n.has(t)){n.getAll(t).forEach(function(e){r.append(t,e)})}});return r}}else{return n}}function xn(e){return!!ee(e,"href")&&ee(e,"href").indexOf("#")>=0}function bn(e,t){const n=t||ne(e,"hx-swap");const r={swapStyle:oe(e).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&oe(e).boosted&&!xn(e)){r.show="top"}if(n){const s=B(n);if(s.length>0){for(let e=0;e0?o.join(":"):null;r.scroll=u;r.scrollTarget=i}else if(l.indexOf("show:")===0){const f=l.slice(5);var o=f.split(":");const a=o.pop();var i=o.length>0?o.join(":"):null;r.show=a;r.showTarget=i}else if(l.indexOf("focus-scroll:")===0){const h=l.slice("focus-scroll:".length);r.focusScroll=h=="true"}else if(e==0){r.swapStyle=l}else{H("Unknown modifier in hx-swap: "+l)}}}}return r}function vn(e){return ne(e,"hx-encoding")==="multipart/form-data"||h(e,"form")&&ee(e,"enctype")==="multipart/form-data"}function wn(t,n,r){let o=null;Vt(n,function(e){if(o==null){o=e.encodeParameters(t,r,n)}});if(o!=null){return o}else{if(vn(n)){return hn(new FormData,Dn(r))}else{return gn(r)}}}function Sn(e){return{tasks:[],elts:[e]}}function En(e,t){const n=e[0];const r=e[e.length-1];if(t.scroll){var o=null;if(t.scrollTarget){o=ce(ue(n,t.scrollTarget))}if(t.scroll==="top"&&(n||o)){o=o||n;o.scrollTop=0}if(t.scroll==="bottom"&&(r||o)){o=o||r;o.scrollTop=o.scrollHeight}if(typeof t.scroll==="number"){b().setTimeout(function(){window.scrollTo(0,t.scroll)},0)}}if(t.show){var o=null;if(t.showTarget){let e=t.showTarget;if(t.showTarget==="window"){e="body"}o=ce(ue(n,e))}if(t.show==="top"&&(n||o)){o=o||n;o.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})}if(t.show==="bottom"&&(r||o)){o=o||r;o.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior})}}}function Cn(r,e,o,i,s){if(i==null){i={}}if(r==null){return i}const l=a(r,e);if(l){let e=l.trim();let t=o;if(e==="unset"){return null}if(e.indexOf("javascript:")===0){e=e.slice(11);t=true}else if(e.indexOf("js:")===0){e=e.slice(3);t=true}if(e.indexOf("{")!==0){e="{"+e+"}"}let n;if(t){n=On(r,function(){if(s){return Function("event","return ("+e+")").call(r,s)}else{return Function("return ("+e+")").call(r)}},{})}else{n=v(e)}for(const c in n){if(n.hasOwnProperty(c)){if(i[c]==null){i[c]=n[c]}}}}return Cn(ce(u(r)),e,o,i,s)}function On(e,t,n){if(Q.config.allowEval){return t()}else{fe(e,"htmx:evalDisallowedError");return n}}function Hn(e,t,n){return Cn(e,"hx-vars",true,n,t)}function Tn(e,t,n){return Cn(e,"hx-vals",false,n,t)}function Rn(e,t){return le(Hn(e,t),Tn(e,t))}function qn(t,n,r){if(r!==null){try{t.setRequestHeader(n,r)}catch(e){t.setRequestHeader(n,encodeURIComponent(r));t.setRequestHeader(n+"-URI-AutoEncoded","true")}}}function An(t){if(t.responseURL){try{const e=new URL(t.responseURL);return e.pathname+e.search}catch(e){fe(te().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function T(e,t){return t.test(e.getAllResponseHeaders())}function Ln(t,n,r){t=t.toLowerCase();if(r){if(r instanceof Element||typeof r==="string"){return he(t,n,null,null,{targetOverride:w(r)||ve,returnPromise:true})}else{let e=w(r.target);if(r.target&&!e||r.source&&!e&&!w(r.source)){e=ve}return he(t,n,w(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:e,swapOverride:r.swap,select:r.select,returnPromise:true,push:r.push,replace:r.replace,selectOOB:r.selectOOB})}}else{return he(t,n,null,null,{returnPromise:true})}}function Nn(e){const t=[];while(e){t.push(e);e=e.parentElement}return t}function In(e,t,n){const r=new URL(t,location.protocol!=="about:"?location.href:window.origin);const o=location.protocol!=="about:"?location.origin:window.origin;const i=o===r.origin;if(Q.config.selfRequestsOnly){if(!i){return false}}return ae(e,"htmx:validateUrl",le({url:r,sameHost:i},n))}function Dn(e){if(e instanceof FormData)return e;const t=new FormData;for(const n in e){if(e.hasOwnProperty(n)){if(e[n]&&typeof e[n].forEach==="function"){e[n].forEach(function(e){t.append(n,e)})}else if(typeof e[n]==="object"&&!(e[n]instanceof Blob)){t.append(n,JSON.stringify(e[n]))}else{t.append(n,e[n])}}}return t}function Pn(r,o,e){return new Proxy(e,{get:function(t,e){if(typeof e==="number")return t[e];if(e==="length")return t.length;if(e==="push"){return function(e){t.push(e);r.append(o,e)}}if(typeof t[e]==="function"){return function(){t[e].apply(t,arguments);r.delete(o);t.forEach(function(e){r.append(o,e)})}}if(t[e]&&t[e].length===1){return t[e][0]}else{return t[e]}},set:function(e,t,n){e[t]=n;r.delete(o);e.forEach(function(e){r.append(o,e)});return true}})}function kn(o){return new Proxy(o,{get:function(e,t){if(typeof t==="symbol"){const r=Reflect.get(e,t);if(typeof r==="function"){return function(){return r.apply(o,arguments)}}else{return r}}if(t==="toJSON"){return()=>Object.fromEntries(o)}if(t in e){if(typeof e[t]==="function"){return function(){return o[t].apply(o,arguments)}}}const n=o.getAll(t);if(n.length===0){return undefined}else if(n.length===1){return n[0]}else{return Pn(e,t,n)}},set:function(t,n,e){if(typeof n!=="string"){return false}t.delete(n);if(e&&typeof e.forEach==="function"){e.forEach(function(e){t.append(n,e)})}else if(typeof e==="object"&&!(e instanceof Blob)){t.append(n,JSON.stringify(e))}else{t.append(n,e)}return true},deleteProperty:function(e,t){if(typeof t==="string"){e.delete(t)}return true},ownKeys:function(e){return Reflect.ownKeys(Object.fromEntries(e))},getOwnPropertyDescriptor:function(e,t){return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e),t)}})}function he(t,n,r,o,i,k){let s=null;let l=null;i=i!=null?i:{};if(i.returnPromise&&typeof Promise!=="undefined"){var e=new Promise(function(e,t){s=e;l=t})}if(r==null){r=te().body}const M=i.handler||Vn;const F=i.select||null;if(!se(r)){re(s);return e}const c=i.targetOverride||ce(Ee(r));if(c==null||c==ve){fe(r,"htmx:targetError",{target:ne(r,"hx-target")});re(l);return e}let u=oe(r);const f=u.lastButtonClicked;if(f){const A=ee(f,"formaction");if(A!=null){n=A}const L=ee(f,"formmethod");if(L!=null){if(de.includes(L.toLowerCase())){t=L}else{re(s);return e}}}const a=ne(r,"hx-confirm");if(k===undefined){const K=function(e){return he(t,n,r,o,i,!!e)};const G={target:c,elt:r,path:n,verb:t,triggeringEvent:o,etc:i,issueRequest:K,question:a};if(ae(r,"htmx:confirm",G)===false){re(s);return e}}let h=r;let d=ne(r,"hx-sync");let p=null;let B=false;if(d){const N=d.split(":");const I=N[0].trim();if(I==="this"){h=Se(r,"hx-sync")}else{h=ce(ue(r,I))}d=(N[1]||"drop").trim();u=oe(h);if(d==="drop"&&u.xhr&&u.abortable!==true){re(s);return e}else if(d==="abort"){if(u.xhr){re(s);return e}else{B=true}}else if(d==="replace"){ae(h,"htmx:abort")}else if(d.indexOf("queue")===0){const W=d.split(" ");p=(W[1]||"last").trim()}}if(u.xhr){if(u.abortable){ae(h,"htmx:abort")}else{if(p==null){if(o){const D=oe(o);if(D&&D.triggerSpec&&D.triggerSpec.queue){p=D.triggerSpec.queue}}if(p==null){p="last"}}if(u.queuedRequests==null){u.queuedRequests=[]}if(p==="first"&&u.queuedRequests.length===0){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="all"){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="last"){u.queuedRequests=[];u.queuedRequests.push(function(){he(t,n,r,o,i)})}re(s);return e}}const g=new XMLHttpRequest;u.xhr=g;u.abortable=B;const m=function(){u.xhr=null;u.abortable=false;if(u.queuedRequests!=null&&u.queuedRequests.length>0){const e=u.queuedRequests.shift();e()}};const X=ne(r,"hx-prompt");if(X){var y=prompt(X);if(y===null||!ae(r,"htmx:prompt",{prompt:y,target:c})){re(s);m();return e}}if(a&&!k){if(!confirm(a)){re(s);m();return e}}let x=mn(r,c,y);if(t!=="get"&&!vn(r)){x["Content-Type"]="application/x-www-form-urlencoded"}if(i.headers){x=le(x,i.headers)}const U=dn(r,t);let b=U.errors;const V=U.formData;if(i.values){hn(V,Dn(i.values))}const j=Dn(Rn(r,o));const v=hn(V,j);let w=yn(v,r);if(Q.config.getCacheBusterParam&&t==="get"){w.set("org.htmx.cache-buster",ee(c,"id")||"true")}if(n==null||n===""){n=location.href}const S=Cn(r,"hx-request");const $=oe(r).boosted;let E=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;const C={boosted:$,useUrlParams:E,formData:w,parameters:kn(w),unfilteredFormData:v,unfilteredParameters:kn(v),headers:x,elt:r,target:c,verb:t,errors:b,withCredentials:i.credentials||S.credentials||Q.config.withCredentials,timeout:i.timeout||S.timeout||Q.config.timeout,path:n,triggeringEvent:o};if(!ae(r,"htmx:configRequest",C)){re(s);m();return e}n=C.path;t=C.verb;x=C.headers;w=Dn(C.parameters);b=C.errors;E=C.useUrlParams;if(b&&b.length>0){ae(r,"htmx:validation:halted",C);re(s);m();return e}const _=n.split("#");const z=_[0];const O=_[1];let H=n;if(E){H=z;const Z=!w.keys().next().done;if(Z){if(H.indexOf("?")<0){H+="?"}else{H+="&"}H+=gn(w);if(O){H+="#"+O}}}if(!In(r,H,C)){fe(r,"htmx:invalidPath",C);re(l);m();return e}g.open(t.toUpperCase(),H,true);g.overrideMimeType("text/html");g.withCredentials=C.withCredentials;g.timeout=C.timeout;if(S.noHeaders){}else{for(const P in x){if(x.hasOwnProperty(P)){const Y=x[P];qn(g,P,Y)}}}const T={xhr:g,target:c,requestConfig:C,etc:i,boosted:$,select:F,pathInfo:{requestPath:n,finalRequestPath:H,responsePath:null,anchor:O}};g.onload=function(){try{const t=Nn(r);T.pathInfo.responsePath=An(g);M(r,T);if(T.keepIndicators!==true){rn(R,q)}ae(r,"htmx:afterRequest",T);ae(r,"htmx:afterOnLoad",T);if(!se(r)){let e=null;while(t.length>0&&e==null){const n=t.shift();if(se(n)){e=n}}if(e){ae(e,"htmx:afterRequest",T);ae(e,"htmx:afterOnLoad",T)}}re(s)}catch(e){fe(r,"htmx:onLoadError",le({error:e},T));throw e}finally{m()}};g.onerror=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:sendError",T);re(l);m()};g.onabort=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:sendAbort",T);re(l);m()};g.ontimeout=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:timeout",T);re(l);m()};if(!ae(r,"htmx:beforeRequest",T)){re(s);m();return e}var R=tn(r);var q=nn(r);ie(["loadstart","loadend","progress","abort"],function(t){ie([g,g.upload],function(e){e.addEventListener(t,function(e){ae(r,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ae(r,"htmx:beforeSend",T);const J=E?null:wn(g,r,w);g.send(J);return e}function Mn(e,t){const n=t.xhr;let r=null;let o=null;if(T(n,/HX-Push:/i)){r=n.getResponseHeader("HX-Push");o="push"}else if(T(n,/HX-Push-Url:/i)){r=n.getResponseHeader("HX-Push-Url");o="push"}else if(T(n,/HX-Replace-Url:/i)){r=n.getResponseHeader("HX-Replace-Url");o="replace"}if(r){if(r==="false"){return{}}else{return{type:o,path:r}}}const i=t.pathInfo.finalRequestPath;const s=t.pathInfo.responsePath;const l=t.etc.push||ne(e,"hx-push-url");const c=t.etc.replace||ne(e,"hx-replace-url");const u=oe(e).boosted;let f=null;let a=null;if(l){f="push";a=l}else if(c){f="replace";a=c}else if(u){f="push";a=s||i}if(a){if(a==="false"){return{}}if(a==="true"){a=s||i}if(t.pathInfo.anchor&&a.indexOf("#")===-1){a=a+"#"+t.pathInfo.anchor}return{type:f,path:a}}else{return{}}}function Fn(e,t){var n=new RegExp(e.code);return n.test(t.toString(10))}function Bn(e){for(var t=0;t`+`.${t}{opacity:0;visibility: hidden} `+`.${n} .${t}, .${n}.${t}{opacity:1;visibility: visible;transition: opacity 200ms ease-in}`+"")}}function Zn(){const e=te().querySelector('meta[name="htmx-config"]');if(e){return v(e.content)}else{return null}}function Yn(){const e=Zn();if(e){Q.config=le(Q.config,e)}}Gn(function(){Yn();Wn();let e=te().body;Ft(e);const t=te().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){const t=e.detail.elt||e.target;const n=oe(t);if(n&&n.xhr){n.xhr.abort()}});const n=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){en();ie(t,function(e){ae(e,"htmx:restored",{document:te(),triggerEvent:ae})})}else{if(n){n(e)}}};b().setTimeout(function(){ae(e,"htmx:load",{});e=null},0)});return Q}(); \ No newline at end of file diff --git a/tests/Flashsharp.Tests/Flashsharp.Tests.csproj b/tests/Flashsharp.Tests/Flashsharp.Tests.csproj new file mode 100644 index 0000000..998af82 --- /dev/null +++ b/tests/Flashsharp.Tests/Flashsharp.Tests.csproj @@ -0,0 +1,25 @@ + + + + net10.0 + enable + enable + false + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/Flashsharp.Tests/MarkdownRendererTests.cs b/tests/Flashsharp.Tests/MarkdownRendererTests.cs new file mode 100644 index 0000000..e2a9735 --- /dev/null +++ b/tests/Flashsharp.Tests/MarkdownRendererTests.cs @@ -0,0 +1,38 @@ +using Flashsharp.Ui; + +namespace Flashsharp.Tests; + +public sealed class MarkdownRendererTests +{ + [Fact] + public void Keeps_non_latin_text() + { + var html = new MarkdownRenderer().ToHtml("سلام دنیا"); + + Assert.Contains("سلام دنیا", html); + } + + [Fact] + public void Removes_javascript_links() + { + var html = new MarkdownRenderer().ToHtml("[click](javascript:alert(1))"); + + Assert.DoesNotContain("javascript:", html, StringComparison.OrdinalIgnoreCase); + } + + [Fact] + public void Removes_raw_html() + { + var html = new MarkdownRenderer().ToHtml(""); + + Assert.DoesNotContain("bold", html); + } +} diff --git a/tests/Flashsharp.Tests/SchedulerTests.cs b/tests/Flashsharp.Tests/SchedulerTests.cs new file mode 100644 index 0000000..aafd992 --- /dev/null +++ b/tests/Flashsharp.Tests/SchedulerTests.cs @@ -0,0 +1,77 @@ +using Flashsharp.Domain; +using Flashsharp.Scheduling; + +namespace Flashsharp.Tests; + +public sealed class SchedulerTests +{ + static readonly DateTime Now = new(2026, 10, 22, 12, 0, 0, DateTimeKind.Utc); + + [Fact] + public void First_good_review_is_due_tomorrow() + { + var next = Scheduler.Next(null, ReviewRating.Good, Now); + + Assert.Equal(86_400, next.IntervalSeconds); + Assert.Equal(1, next.Repetitions); + Assert.Equal(0, next.Lapses); + Assert.Equal(2.5, next.Ease, 3); + Assert.Equal(Now.AddDays(1), next.DueAt); + } + + [Fact] + public void Third_good_review_multiplies_by_ease() + { + var first = Scheduler.Next(null, ReviewRating.Good, Now); + var second = Scheduler.Next(first, ReviewRating.Good, Now); + var third = Scheduler.Next(second, ReviewRating.Good, Now); + + Assert.Equal(3 * 86_400, second.IntervalSeconds); + Assert.Equal((int)(3 * 86_400 * 2.5), third.IntervalSeconds); + Assert.Equal(3, third.Repetitions); + } + + [Fact] + public void Again_resets_repetitions_and_adds_a_lapse() + { + var first = Scheduler.Next(null, ReviewRating.Good, Now); + var next = Scheduler.Next(first, ReviewRating.Again, Now); + + Assert.Equal(600, next.IntervalSeconds); + Assert.Equal(0, next.Repetitions); + Assert.Equal(1, next.Lapses); + Assert.Equal(2.3, next.Ease, 3); + } + + [Fact] + public void Hard_does_not_reset_repetitions() + { + var first = Scheduler.Next(null, ReviewRating.Good, Now); + var next = Scheduler.Next(first, ReviewRating.Hard, Now); + + Assert.Equal(2, next.Repetitions); + Assert.Equal(0, next.Lapses); + Assert.True(next.IntervalSeconds >= 43_200); + } + + [Fact] + public void Easy_starts_at_three_days_and_raises_ease() + { + var next = Scheduler.Next(null, ReviewRating.Easy, Now); + + Assert.Equal(3 * 86_400, next.IntervalSeconds); + Assert.Equal(2.65, next.Ease, 3); + } + + [Fact] + public void Ease_never_goes_below_floor() + { + var state = Scheduler.Next(null, ReviewRating.Again, Now); + for (var i = 0; i < 20; i++) + { + state = Scheduler.Next(state, ReviewRating.Again, Now); + } + + Assert.Equal(1.3, state.Ease, 3); + } +}