diff --git a/.github/workflows/commit-release.yml b/.github/workflows/commit-release.yml index 98ce813..d509421 100644 --- a/.github/workflows/commit-release.yml +++ b/.github/workflows/commit-release.yml @@ -38,12 +38,12 @@ jobs: draft: false prerelease: true - name: Upload Ubuntu Release Asset - id: upload-ubuntu-release-asset + id: upload-ubuntu-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps - asset_path: "./desktop/build/compose/jars/kmppscriptbuilder.desktop-linux-x64-${{ env.version }}${{ env.additional_version }}.jar" + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: "./core/build/compose/jars/kmppscriptbuilder.desktop-linux-x64-${{ env.version }}${{ env.additional_version }}.jar" asset_name: KotlinPublicationScriptsBuilder-linux-x64.jar asset_content_type: application/java-archive diff --git a/build.gradle b/build.gradle index 4780292..9660076 100644 --- a/build.gradle +++ b/build.gradle @@ -7,11 +7,10 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:$dexcount_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" + classpath libs.buildscript.kt.gradle + classpath libs.buildscript.kt.serialization + classpath libs.buildscript.jb.dokka + classpath libs.buildscript.gh.release } } diff --git a/core/build.gradle b/core/build.gradle index fb2a4c1..d3fe531 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,20 +1,46 @@ plugins { id "org.jetbrains.kotlin.multiplatform" id "org.jetbrains.kotlin.plugin.serialization" - id "com.android.library" + alias(libs.plugins.jb.compose) } apply from: "$mppProjectWithSerializationPresetPath" kotlin { + js (IR) { + binaries.executable() + } sourceSets { commonMain { dependencies { - api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version" - api "dev.inmo:micro_utils.coroutines:$micro_utils_version" - - api "io.ktor:ktor-client-core:$ktor_version" + api libs.kt.coroutines + api libs.microutils.common + api libs.microutils.coroutines + api libs.ktor.client + api(compose.runtime) + } + } + jsMain { + dependencies { + implementation(compose.web.core) + api libs.ktor.client.js + api libs.jsuikit + } + } + jvmMain { + dependencies { + implementation(compose.desktop.currentOs) + api libs.ktor.client.cio } } } } + + +compose { + desktop { + application { + mainClass = "dev.inmo.kmppscriptbuilder.desktop.BuilderKt" + } + } +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt index 0a36c49..61dc9c8 100644 --- a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/License.kt @@ -4,6 +4,7 @@ import dev.inmo.kmppscriptbuilder.core.utils.serialFormat import io.ktor.client.HttpClient import io.ktor.client.request.get import io.ktor.client.request.url +import io.ktor.client.statement.bodyAsText import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.builtins.serializer @@ -20,9 +21,9 @@ private val commonLicensesListDeserializer = MapSerializer(String.serializer(), private var licenses: Map? = null suspend fun HttpClient.getLicenses(): Map { - val answer = get { + val answer = get { url("https://licenses.opendefinition.org/licenses/groups/all.json") - } + }.bodyAsText() return serialFormat.decodeFromString(commonLicensesListDeserializer, answer).also { gotLicenses -> licenses = gotLicenses } diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt index 8446f4e..555b1e2 100644 --- a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/models/MavenConfig.kt @@ -31,23 +31,84 @@ data class MavenConfig( @Serializable data class MavenPublishingRepository( val name: String, - val url: String + val url: String, + val credsType: CredentialsType = CredentialsType.UsernameAndPassword( + CredentialsType.UsernameAndPassword.defaultUsernameProperty(name), + CredentialsType.UsernameAndPassword.defaultPasswordProperty(name), + ) ) { - private val nameCapitalized by lazy { - name.toUpperCase() - } - fun build(indent: String): String { - val usernameProperty = "${nameCapitalized}_USER" - val passwordProperty = "${nameCapitalized}_PASSWORD" - return """if ((project.hasProperty('${usernameProperty}') || System.getenv('${usernameProperty}') != null) && (project.hasProperty('${passwordProperty}') || System.getenv('${passwordProperty}') != null)) { - maven { - name = "$name" - url = uri("$url") + @Serializable + sealed interface CredentialsType { + @Serializable + object Nothing: CredentialsType { + override fun buildCheckPart(): String = "true" + override fun buildCredsPart(): String = "" + } + @Serializable + data class UsernameAndPassword( + val usernameProperty: String, + val passwordProperty: String + ): CredentialsType { + constructor(baseParameter: String) : this( + defaultUsernameProperty(baseParameter), + defaultPasswordProperty(baseParameter) + ) + + override fun buildCheckPart(): String = "(project.hasProperty('${usernameProperty}') || System.getenv('${usernameProperty}') != null) && (project.hasProperty('${passwordProperty}') || System.getenv('${passwordProperty}') != null)" + override fun buildCredsPart(): String { +return """ credentials { username = project.hasProperty('${usernameProperty}') ? project.property('${usernameProperty}') : System.getenv('${usernameProperty}') password = project.hasProperty('${passwordProperty}') ? project.property('${passwordProperty}') : System.getenv('${passwordProperty}') } +""" + } + + companion object { + fun defaultUsernameProperty(name: String): String { + return "${name.uppercase()}_USER" + } + fun defaultPasswordProperty(name: String): String { + return "${name.uppercase()}_PASSWORD" + } + } + } + @Serializable + data class HttpHeaderCredentials( + val headerName: String, + val headerValueProperty: String + ): CredentialsType { + override fun buildCheckPart(): String = "project.hasProperty('${headerValueProperty}') || System.getenv('${headerValueProperty}') != null" + override fun buildCredsPart(): String { +return """ + credentials(HttpHeaderCredentials) { + name = "$headerName" + value = project.hasProperty('${headerValueProperty}') ? project.property('${headerValueProperty}') : System.getenv('${headerValueProperty}') + } +""" + } + + companion object { + fun defaultValueProperty(name: String): String { + return "${name.uppercase()}_TOKEN" + } + } + } + + fun buildCheckPart(): String + fun buildCredsPart(): String + } + private val nameCapitalized by lazy { + name.uppercase() + } + + fun build(indent: String): String { + return """if (${credsType.buildCheckPart()}) { + maven { + name = "$name" + url = uri("$url") +${credsType.buildCredsPart()} } }""".replace("\n", "\n$indent") } diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/BuilderView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/BuilderView.kt new file mode 100644 index 0000000..6b1a87c --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/BuilderView.kt @@ -0,0 +1,56 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import dev.inmo.kmppscriptbuilder.core.models.Config +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultDivider + +@Composable +expect fun TopAppBar( + config: Config, + saveAvailable: Boolean, + onSaveAvailable: (Boolean) -> Unit, + onNewConfig: (Config) -> Unit +) + +class BuilderView : View() { + internal val projectTypeView by mutableStateOf(ProjectTypeView()) + internal val mavenInfoView by mutableStateOf(MavenInfoView()) + internal val licensesView by mutableStateOf(LicensesView()) + + internal var saveAvailableState by mutableStateOf(false) + var config: Config + get() { + return Config(licensesView.licenses, mavenInfoView.mavenConfig, projectTypeView.projectType) + } + set(value) { + licensesView.licenses = value.licenses + mavenInfoView.mavenConfig = value.mavenConfig + projectTypeView.projectType = value.type + saveAvailableState = true + } + + @Composable + override fun build() { + TopAppBar( + config, + saveAvailableState, + { + saveAvailableState = it + } + ) { + config = it + } + + DefaultContentColumn { + projectTypeView.build() + DefaultDivider() + licensesView.build() + DefaultDivider() + mavenInfoView.build() + } + } +} diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/DevelopersView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/DevelopersView.kt similarity index 59% rename from desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/DevelopersView.kt rename to core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/DevelopersView.kt index 389185a..4fa883c 100644 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/DevelopersView.kt +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/DevelopersView.kt @@ -1,8 +1,13 @@ -package dev.inmo.kmppscriptbuilder.desktop.views +package dev.inmo.kmppscriptbuilder.core.ui -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import dev.inmo.kmppscriptbuilder.core.models.Developer -import dev.inmo.kmppscriptbuilder.desktop.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin class DeveloperState( id: String = "", @@ -22,10 +27,10 @@ class DevelopersView : ListView("Developers info") { var developers: List get() = itemsList.map { it.toDeveloper() } set(value) { - itemsList.clear() - itemsList.addAll( - value.map { it.toDeveloperState() } - ) + itemsList.apply { + clear() + addAll(value.map { it.toDeveloperState() }) + } } override val addItemText: String = "Add developer" @@ -34,18 +39,19 @@ class DevelopersView : ListView("Developers info") { override fun createItem(): DeveloperState = DeveloperState() @Composable override fun buildView(item: DeveloperState) { + CommonText("Developer username") CommonTextField( item.id, - "Developer username" ) { item.id = it } + DefaultSmallVerticalMargin() + CommonText("Developer name") CommonTextField( item.name, - "Developer name" ) { item.name = it } + DefaultSmallVerticalMargin() + CommonText("Developer E-Mail") CommonTextField( item.eMail, - "Developer E-Mail" ) { item.eMail = it } } - } diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesView.kt new file mode 100644 index 0000000..d9be525 --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesView.kt @@ -0,0 +1,103 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import dev.inmo.kmppscriptbuilder.core.models.License +import dev.inmo.kmppscriptbuilder.core.models.getLicenses +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import io.ktor.client.HttpClient +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +class LicenseState( + id: String = "", + title: String = "", + url: String? = null +) { + var id: String by mutableStateOf(id) + var title: String by mutableStateOf(title) + var url: String? by mutableStateOf(url) + + fun toLicense() = License(id, title, url) +} + +internal fun License.toLicenseState() = LicenseState(id, title, url) + +expect object LicensesDrawer : Drawer + +class LicensesView : ListView("Licenses") { + var licenses: List + get() = itemsList.map { it.toLicense() } + set(value) { + itemsList.clear() + itemsList.addAll(value.map { it.toLicenseState() }) + } + internal val availableLicensesState = mutableStateListOf() + internal var licenseSearchFilter by mutableStateOf("") + internal val searchFieldFocused = mutableStateOf(false) + internal val licensesOffersToShow = derivedStateOf { + val query = licenseSearchFilter.lowercase() + availableLicensesState.filter { + it.title.lowercase().contains(query) + } + } + + override val addItemText: String + get() = "Add empty license" + + init { + CoroutineScope(Dispatchers.Default).launch { + val client = HttpClient() + availableLicensesState.addAll(client.getLicenses().values) + client.close() + } + } + + override fun createItem(): LicenseState = LicenseState() + + @Composable + override fun buildView(item: LicenseState) { + CommonText("License ID") + CommonTextField( + item.id, + "Short name like \"Apache-2.0\"", + ) { item.id = it } + CommonText("License title") + CommonTextField( + item.title, + "Official title of license (like \"Apache Software License 2.0\")", + ) { item.title = it } + CommonText("License URL") + CommonTextField( + item.url ?: "", + "Link to your LICENSE file OR official license file (like \"https://opensource.org/licenses/Apache-2.0\")", + ) { item.url = it } + } + + override val content: @Composable () -> Unit = { + CommonTextField( + licenseSearchFilter, + "Search filter", + onFocusChanged = { + searchFieldFocused.value = it + } + ) { filterText -> + licenseSearchFilter = filterText + } + DefaultSmallVerticalMargin() + + with(LicensesDrawer) { draw() } + + DefaultSmallVerticalMargin() + + super.content() + } +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListView.kt new file mode 100644 index 0000000..6870cd0 --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListView.kt @@ -0,0 +1,26 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateListOf +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer + +expect class ListViewDrawer() : Drawer> + +abstract class ListView(title: String) : VerticalView(title) { + internal val itemsList = mutableStateListOf() + + internal open val addItemText: String = "Add" + internal open val removeItemText: String = "Remove" + + internal abstract fun createItem(): T + @Composable + internal abstract fun buildView(item: T) + + protected val drawer = ListViewDrawer() + + override val content: @Composable () -> Unit = { + with(drawer) { + draw() + } + } +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/MavenInfoView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/MavenInfoView.kt new file mode 100644 index 0000000..e15679b --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/MavenInfoView.kt @@ -0,0 +1,106 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.* +import dev.inmo.kmppscriptbuilder.core.models.GpgSigning +import dev.inmo.kmppscriptbuilder.core.models.MavenConfig +import dev.inmo.kmppscriptbuilder.core.models.SonatypeRepository +import dev.inmo.kmppscriptbuilder.core.models.defaultProjectDescription +import dev.inmo.kmppscriptbuilder.core.models.defaultProjectName +import dev.inmo.kmppscriptbuilder.core.ui.utils.ButtonsPanel +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import dev.inmo.kmppscriptbuilder.core.ui.utils.SwitchWithLabel + +expect class GpgSigningOptionDrawer : Drawer +expect fun GpgSigningOptionDrawerWithView(view: MavenInfoView): GpgSigningOptionDrawer + +class MavenInfoView : VerticalView("Project information") { + internal var projectNameProperty by mutableStateOf("") + internal var projectDescriptionProperty by mutableStateOf("") + internal var projectUrlProperty by mutableStateOf("") + internal var projectVcsUrlProperty by mutableStateOf("") + internal var gpgSignProperty by mutableStateOf(GpgSigning.Disabled) + internal var publishToMavenCentralProperty by mutableStateOf(false) + internal val developersView = DevelopersView() + internal val repositoriesView = RepositoriesView() + + var mavenConfig: MavenConfig + get() = MavenConfig( + projectNameProperty.ifBlank { defaultProjectName }, + projectDescriptionProperty.ifBlank { defaultProjectDescription }, + projectUrlProperty, + projectVcsUrlProperty, + developersView.developers, + repositoriesView.repositories + if (publishToMavenCentralProperty) { + listOf(SonatypeRepository) + } else { + emptyList() + }, + gpgSignProperty + ) + set(value) { + projectNameProperty = value.name + projectDescriptionProperty = value.description + projectUrlProperty = value.url + projectVcsUrlProperty = value.vcsUrl + gpgSignProperty = if (value.includeGpgSigning) { + GpgSigning.Enabled + } else { + value.gpgSigning + } + publishToMavenCentralProperty = value.repositories.any { it == SonatypeRepository } + developersView.developers = value.developers + repositoriesView.repositories = value.repositories.filter { it != SonatypeRepository } + } + + private val gpgSigningDrawer = GpgSigningOptionDrawerWithView(this) + + override val content: @Composable () -> Unit = { + CommonText("Public project name") + CommonTextField( + projectNameProperty, + "\${project.name}", + ) { projectNameProperty = it } + DefaultSmallVerticalMargin() + CommonText("Public project description") + CommonTextField( + projectDescriptionProperty, + "\${project.name}", + ) { projectDescriptionProperty = it } + DefaultSmallVerticalMargin() + CommonText("Public project URL") + CommonTextField( + projectUrlProperty, + "Type url to github or other source with readme", + ) { projectUrlProperty = it } + DefaultSmallVerticalMargin() + CommonText("Public project VCS URL (with .git)") + CommonTextField( + projectVcsUrlProperty, + "Type url to github .git file" + ) { projectVcsUrlProperty = it } + + ButtonsPanel( + "Gpg signing", + GpgSigning.Disabled, + GpgSigning.Optional, + GpgSigning.Enabled + ) { + with(gpgSigningDrawer) { + with (it) { + draw() + } + } + } + + SwitchWithLabel( + "Include publication to MavenCentral", + publishToMavenCentralProperty, + placeSwitchAtTheStart = true + ) { publishToMavenCentralProperty = it } + developersView.build() + repositoriesView.build() + } +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeView.kt new file mode 100644 index 0000000..1070fbf --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeView.kt @@ -0,0 +1,36 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import dev.inmo.kmppscriptbuilder.core.models.JSProjectType +import dev.inmo.kmppscriptbuilder.core.models.JVMProjectType +import dev.inmo.kmppscriptbuilder.core.models.MultiplatformProjectType +import dev.inmo.kmppscriptbuilder.core.models.ProjectType +import dev.inmo.kmppscriptbuilder.core.ui.utils.ButtonsPanel +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer + +expect class ProjectTypeDrawer : Drawer +expect fun ProjectTypeDrawerWithView(view: ProjectTypeView): ProjectTypeDrawer + +class ProjectTypeView : VerticalView("Project type") { + var projectType by mutableStateOf(MultiplatformProjectType) + private val typeDrawer = ProjectTypeDrawerWithView(this) + + override val content: @Composable () -> Unit = { + ButtonsPanel( + "Project type", + MultiplatformProjectType, + JVMProjectType, + JSProjectType + ) { + with(typeDrawer) { + with (it) { + draw() + } + } + } + } +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoriesView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoriesView.kt new file mode 100644 index 0000000..0f433ea --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoriesView.kt @@ -0,0 +1,142 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository +import dev.inmo.kmppscriptbuilder.core.ui.utils.ButtonsPanel +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer + +class RepositoryState( + name: String = "", + url: String = "", + credsType: MavenPublishingRepository.CredentialsType = MavenPublishingRepository.CredentialsType.UsernameAndPassword(name) +) { + var name: String by mutableStateOf(name) + var url: String by mutableStateOf(url) + var credsType by mutableStateOf(credsType) + + fun toRepository() = MavenPublishingRepository(name, url, credsType) +} + +private fun MavenPublishingRepository.toRepositoryState() = RepositoryState(name, url, credsType) + +expect class RepositoryCredentialTypeDrawer : Drawer +expect fun RepositoryCredentialTypeDrawerWithState(repositoryState: RepositoryState): RepositoryCredentialTypeDrawer + +class RepositoriesView : ListView("Repositories info") { + var repositories: List + get() = itemsList.map { it.toRepository() } + set(value) { + itemsList.clear() + itemsList.addAll( + value.map { it.toRepositoryState() } + ) + } + + override val addItemText: String = "Add repository" + override val removeItemText: String = "Remove repository" + + override fun createItem(): RepositoryState = RepositoryState() + + @Composable + override fun buildView(item: RepositoryState) { + val credsTypesDrawer = remember { + RepositoryCredentialTypeDrawerWithState(item) + } + + CommonText("Repository name") + CommonTextField( + item.name, + "This name will be used to identify repository in gradle" + ) { + val previous = item.name + item.name = it + when (val currentCredsType = item.credsType) { + is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> { + if (MavenPublishingRepository.CredentialsType.HttpHeaderCredentials.defaultValueProperty(previous) == currentCredsType.headerValueProperty) { + item.credsType = currentCredsType.copy( + headerValueProperty = MavenPublishingRepository.CredentialsType.HttpHeaderCredentials.defaultValueProperty(it) + ) + } + } + MavenPublishingRepository.CredentialsType.Nothing -> {} + is MavenPublishingRepository.CredentialsType.UsernameAndPassword -> { + var current: MavenPublishingRepository.CredentialsType.UsernameAndPassword = currentCredsType + if (MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultUsernameProperty(previous) == currentCredsType.usernameProperty) { + current = current.copy( + usernameProperty = MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultUsernameProperty(it) + ) + } + if (MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultPasswordProperty(previous) == currentCredsType.passwordProperty) { + current = current.copy( + passwordProperty = MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultPasswordProperty(it) + ) + } + item.credsType = current + } + } + } + DefaultSmallVerticalMargin() + CommonText("Repository url") + CommonTextField( + item.url, + "For example: https://repo.maven.apache.org/maven2/" + ) { item.url = it } + + ButtonsPanel( + "Credentials type", + MavenPublishingRepository.CredentialsType.Nothing.takeIf { item.credsType != it } ?: item.credsType, + MavenPublishingRepository.CredentialsType.UsernameAndPassword(item.name).takeIf { item.credsType !is MavenPublishingRepository.CredentialsType.UsernameAndPassword } ?: item.credsType, + MavenPublishingRepository.CredentialsType.HttpHeaderCredentials( + "Authorization", + MavenPublishingRepository.CredentialsType.HttpHeaderCredentials.defaultValueProperty(item.name) + ).takeIf { item.credsType !is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials } ?: item.credsType, + ) { + with(credsTypesDrawer) { + with(it) { + draw() + } + } + } + + DefaultContentColumn { + when (val credsType = item.credsType) { + is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> { + CommonText("Header name") + CommonTextField(credsType.headerName) { + item.credsType = credsType.copy(headerName = it) + } + DefaultSmallVerticalMargin() + + CommonText("Property name") + CommonTextField(credsType.headerValueProperty) { + item.credsType = credsType.copy(headerValueProperty = it) + } + } + MavenPublishingRepository.CredentialsType.Nothing -> { + CommonText("No parameters for absence of credentials") + } + is MavenPublishingRepository.CredentialsType.UsernameAndPassword -> { + CommonText("Username property name") + CommonTextField(credsType.usernameProperty) { + item.credsType = credsType.copy(usernameProperty = it) + } + DefaultSmallVerticalMargin() + + CommonText("Password property name") + CommonTextField(credsType.passwordProperty) { + item.credsType = credsType.copy(passwordProperty = it) + } + } + } + } + } + +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/VerticalView.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/VerticalView.kt new file mode 100644 index 0000000..0e3263b --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/VerticalView.kt @@ -0,0 +1,14 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn + +abstract class VerticalView(protected val title: String) : View() { + abstract val content: @Composable () -> Unit + @Composable + override fun build() { + DefaultContentColumn { + DrawVertically(title, content) + } + } +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/View.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/View.kt new file mode 100644 index 0000000..c2f5fbe --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/View.kt @@ -0,0 +1,16 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable + +expect abstract class View() { + @Composable + abstract fun build() +} + +@Composable +expect fun View.DrawVertically(title: String, block: @Composable () -> Unit) + +@Composable +fun T.init(): T = apply { + build() +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/Drawer.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/Drawer.kt new file mode 100644 index 0000000..7e6a66e --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/Drawer.kt @@ -0,0 +1,8 @@ +package dev.inmo.kmppscriptbuilder.core.ui.utils + +import androidx.compose.runtime.Composable + +fun interface Drawer { + @Composable + fun T.draw() +} diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/UIElements.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/UIElements.kt new file mode 100644 index 0000000..5cb57ca --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/UIElements.kt @@ -0,0 +1,49 @@ +package dev.inmo.kmppscriptbuilder.core.ui.utils + +import androidx.compose.runtime.Composable + +@Composable +expect fun TitleText(text: String) + +@Composable +expect fun CommonText(text: String, onClick: (() -> Unit)? = null) + +@Composable +expect fun CommonTextField( + presetText: String, + hint: String? = null, + onFocusChanged: (Boolean) -> Unit = {}, + onChange: (String) -> Unit +) + +@Composable +expect fun SwitchWithLabel( + label: String, + checked: Boolean, + placeSwitchAtTheStart: Boolean = false, + switchEnabled: Boolean = true, + onCheckedChange: (Boolean) -> Unit +) + +@Composable +expect fun ButtonsPanel( + title: String, + data: Iterable, + itemDrawer: @Composable (T) -> Unit +) + +@Composable +fun ButtonsPanel( + title: String, + vararg data: T, + itemDrawer: @Composable (T) -> Unit +) = ButtonsPanel(title, data.toList(), itemDrawer) + +@Composable +expect fun DefaultDivider() + +@Composable +expect fun DefaultSmallVerticalMargin() + +@Composable +expect fun DefaultContentColumn(block: @Composable () -> Unit) diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/FilesHandling.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/FilesHandling.kt new file mode 100644 index 0000000..bbeee98 --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/FilesHandling.kt @@ -0,0 +1,14 @@ +package dev.inmo.kmppscriptbuilder.core.utils + +import dev.inmo.kmppscriptbuilder.core.models.Config +import dev.inmo.micro_utils.common.MPPFile + +internal const val appExtension = "kpsb" + +expect fun openNewConfig(onParsed: (Config) -> Unit) + +expect fun saveConfig(config: Config): Boolean + +expect fun exportGradle(config: Config): Boolean + +expect fun saveAs(config: Config): Boolean diff --git a/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/OpenLink.kt b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/OpenLink.kt new file mode 100644 index 0000000..ab00379 --- /dev/null +++ b/core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/OpenLink.kt @@ -0,0 +1,3 @@ +package dev.inmo.kmppscriptbuilder.core.utils + +expect fun openLink(link: String): Boolean diff --git a/desktop/src/jvmMain/resources/images/export_gradle.svg b/core/src/commonMain/resources/images/export_gradle.svg similarity index 100% rename from desktop/src/jvmMain/resources/images/export_gradle.svg rename to core/src/commonMain/resources/images/export_gradle.svg diff --git a/desktop/src/jvmMain/resources/images/open_file.svg b/core/src/commonMain/resources/images/open_file.svg similarity index 100% rename from desktop/src/jvmMain/resources/images/open_file.svg rename to core/src/commonMain/resources/images/open_file.svg diff --git a/desktop/src/jvmMain/resources/images/save_as.svg b/core/src/commonMain/resources/images/save_as.svg similarity index 100% rename from desktop/src/jvmMain/resources/images/save_as.svg rename to core/src/commonMain/resources/images/save_as.svg diff --git a/desktop/src/jvmMain/resources/images/save_file.svg b/core/src/commonMain/resources/images/save_file.svg similarity index 100% rename from desktop/src/jvmMain/resources/images/save_file.svg rename to core/src/commonMain/resources/images/save_file.svg diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/main.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/main.kt new file mode 100644 index 0000000..10378da --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/main.kt @@ -0,0 +1,14 @@ +package dev.inmo.kmppscriptbuilder.core + +import dev.inmo.kmppscriptbuilder.core.ui.BuilderView +import kotlinx.browser.window +import org.jetbrains.compose.web.renderComposableInBody + +fun main() { + window.addEventListener("load", { + val builder = BuilderView() + renderComposableInBody { + builder.build() + } + }) +} diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/GpgSigningOptionDrawer.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/GpgSigningOptionDrawer.kt new file mode 100644 index 0000000..9a63241 --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/GpgSigningOptionDrawer.kt @@ -0,0 +1,35 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.elements.DefaultButton +import dev.inmo.jsuikit.modifiers.UIKitButton +import dev.inmo.jsuikit.modifiers.UIKitMargin +import dev.inmo.jsuikit.modifiers.UIKitTooltipModifier +import dev.inmo.jsuikit.modifiers.UIKitUtility +import dev.inmo.kmppscriptbuilder.core.models.GpgSigning +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import dev.inmo.kmppscriptbuilder.core.ui.utils.NoTransform + +actual class GpgSigningOptionDrawer( + private val mavenInfoView: MavenInfoView +) : Drawer { + @Composable + override fun GpgSigning.draw() { + val tooltipModifier = UIKitTooltipModifier( + when (this) { + GpgSigning.Disabled -> "Signing will not be added" + GpgSigning.Enabled -> "Signing will be always enabled" + GpgSigning.Optional -> "Signing will be added, but disabled in case of absence 'signatory.keyId'" + } + ) + if (mavenInfoView.gpgSignProperty == this) { + DefaultButton(name, UIKitButton.Type.Primary, UIKitButton.Size.Small, UIKitMargin.Small.Horizontal, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded, tooltipModifier) + } else { + DefaultButton(name, UIKitButton.Type.Default, UIKitButton.Size.Small, UIKitMargin.Small.Horizontal, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded, tooltipModifier) { + mavenInfoView.gpgSignProperty = this + } + } + } +} + +actual fun GpgSigningOptionDrawerWithView(view: MavenInfoView): GpgSigningOptionDrawer = GpgSigningOptionDrawer(mavenInfoView = view) diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesDrawer.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesDrawer.kt new file mode 100644 index 0000000..9997a20 --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesDrawer.kt @@ -0,0 +1,37 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.elements.DefaultButton +import dev.inmo.jsuikit.elements.Divider +import dev.inmo.jsuikit.modifiers.UIKitButton +import dev.inmo.jsuikit.modifiers.UIKitMargin +import dev.inmo.jsuikit.modifiers.UIKitUtility +import dev.inmo.jsuikit.modifiers.builder +import dev.inmo.jsuikit.utils.Attrs +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import dev.inmo.kmppscriptbuilder.core.ui.utils.NoTransform +import org.jetbrains.compose.web.dom.Div + +actual object LicensesDrawer : Drawer { + @Composable + override fun LicensesView.draw() { + dev.inmo.jsuikit.elements.List( + licensesOffersToShow.value, + Attrs { + if (!searchFieldFocused.value) { + hidden() + } + } + ) { + DefaultButton( + it.title, + UIKitButton.Type.Text + ) { _ -> + itemsList.add(it.toLicenseState()) + licenseSearchFilter = "" + } + Divider.Common() + } + } +} diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListViewDrawer.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListViewDrawer.kt new file mode 100644 index 0000000..e0e11c1 --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListViewDrawer.kt @@ -0,0 +1,28 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.elements.DefaultButton +import dev.inmo.jsuikit.modifiers.UIKitButton +import dev.inmo.jsuikit.modifiers.UIKitMargin +import dev.inmo.jsuikit.modifiers.UIKitUtility +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import dev.inmo.kmppscriptbuilder.core.ui.utils.NoTransform + +actual class ListViewDrawer : Drawer> { + @Composable + override fun ListView.draw() { + itemsList.forEach { item -> + DefaultContentColumn { + buildView(item) + DefaultButton(removeItemText, UIKitButton.Type.Default, UIKitMargin.Small, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) { + itemsList.remove(item) + } + } + DefaultButton(addItemText, UIKitButton.Type.Primary, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded ) { itemsList.add(createItem()) } + } + if (itemsList.isEmpty()) { + DefaultButton(addItemText, UIKitButton.Type.Primary, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded ) { itemsList.add(createItem()) } + } + } +} diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeDrawer.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeDrawer.kt new file mode 100644 index 0000000..b3e792a --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeDrawer.kt @@ -0,0 +1,28 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.elements.DefaultButton +import dev.inmo.jsuikit.modifiers.UIKitButton +import dev.inmo.jsuikit.modifiers.UIKitMargin +import dev.inmo.jsuikit.modifiers.UIKitText +import dev.inmo.jsuikit.modifiers.UIKitUtility +import dev.inmo.kmppscriptbuilder.core.models.ProjectType +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import dev.inmo.kmppscriptbuilder.core.ui.utils.NoTransform + +actual class ProjectTypeDrawer( + private val projectTypeView: ProjectTypeView +) : Drawer { + @Composable + override fun ProjectType.draw() { + if (projectTypeView.projectType == this) { + DefaultButton(name, UIKitButton.Type.Primary, UIKitButton.Size.Small, UIKitMargin.Small.Horizontal, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) + } else { + DefaultButton(name, UIKitButton.Type.Default, UIKitButton.Size.Small, UIKitMargin.Small.Horizontal, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) { + projectTypeView.projectType = this + } + } + } +} + +actual fun ProjectTypeDrawerWithView(view: ProjectTypeView): ProjectTypeDrawer = ProjectTypeDrawer(projectTypeView = view) diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoryCredentialTypeDrawer.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoryCredentialTypeDrawer.kt new file mode 100644 index 0000000..50f34d9 --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoryCredentialTypeDrawer.kt @@ -0,0 +1,32 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.elements.DefaultButton +import dev.inmo.jsuikit.modifiers.UIKitButton +import dev.inmo.jsuikit.modifiers.UIKitMargin +import dev.inmo.jsuikit.modifiers.UIKitUtility +import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import dev.inmo.kmppscriptbuilder.core.ui.utils.NoTransform + +actual class RepositoryCredentialTypeDrawer( + private val state: RepositoryState +) : Drawer { + @Composable + override fun MavenPublishingRepository.CredentialsType.draw() { + val name = when (this@draw) { + is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> "Headers" + MavenPublishingRepository.CredentialsType.Nothing -> "No" + is MavenPublishingRepository.CredentialsType.UsernameAndPassword -> "Username and password" + } + if (state.credsType == this) { + DefaultButton(name, UIKitButton.Type.Primary, UIKitButton.Size.Small, UIKitMargin.Small.Horizontal, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) + } else { + DefaultButton(name, UIKitButton.Type.Default, UIKitButton.Size.Small, UIKitMargin.Small.Horizontal, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) { + state.credsType = this + } + } + } +} + +actual fun RepositoryCredentialTypeDrawerWithState(repositoryState: RepositoryState): RepositoryCredentialTypeDrawer = RepositoryCredentialTypeDrawer(repositoryState) diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/TopAppBar.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/TopAppBar.kt new file mode 100644 index 0000000..2328966 --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/TopAppBar.kt @@ -0,0 +1,92 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.elements.Icon +import dev.inmo.jsuikit.elements.NavItemElement +import dev.inmo.jsuikit.elements.Navbar +import dev.inmo.jsuikit.elements.NavbarNav +import dev.inmo.jsuikit.elements.drawAsLink +import dev.inmo.jsuikit.modifiers.UIKitBackground +import dev.inmo.jsuikit.modifiers.UIKitInverse +import dev.inmo.jsuikit.modifiers.UIKitMargin +import dev.inmo.jsuikit.modifiers.UIKitModifier +import dev.inmo.jsuikit.modifiers.UIKitNavbar +import dev.inmo.jsuikit.modifiers.UIKitPadding +import dev.inmo.jsuikit.modifiers.UIKitSection +import dev.inmo.jsuikit.modifiers.UIKitText +import dev.inmo.jsuikit.modifiers.UIKitTooltipModifier +import dev.inmo.jsuikit.modifiers.attrsBuilder +import dev.inmo.jsuikit.modifiers.builder +import dev.inmo.jsuikit.modifiers.include +import dev.inmo.jsuikit.utils.AttrsWithContentBuilder +import dev.inmo.kmppscriptbuilder.core.models.Config +import dev.inmo.kmppscriptbuilder.core.utils.exportGradle +import dev.inmo.kmppscriptbuilder.core.utils.openNewConfig +import dev.inmo.kmppscriptbuilder.core.utils.saveConfig +import org.jetbrains.compose.web.dom.A +import org.jetbrains.compose.web.dom.Div +import org.jetbrains.compose.web.dom.Img +import org.jetbrains.compose.web.dom.Section +import org.jetbrains.compose.web.dom.Text + +@Composable +actual fun TopAppBar( + config: Config, + saveAvailable: Boolean, + onSaveAvailable: (Boolean) -> Unit, + onNewConfig: (Config) -> Unit +) { + Section(attrsBuilder(UIKitSection.Style.Primary, UIKitInverse.Light)) { + Navbar( + leftBuilder = AttrsWithContentBuilder { + Div( + { + onClick { + console.log(config) + } + include(UIKitPadding.Size.Small, UIKitText.Style.Lead) + } + ) { + Text("Kotlin publication scripts builder") + } + Div(UIKitMargin.Small.builder()) { + A("https://github.com/InsanusMokrassar/KotlinPublicationScriptsBuilder") { + Img("https://img.shields.io/github/stars/InsanusMokrassar/KotlinPublicationScriptsBuilder?label=Github&style=plastic") + } + } + }, + rightBuilder = AttrsWithContentBuilder { + NavbarNav( + AttrsWithContentBuilder { + NavItemElement( + UIKitTooltipModifier("Open file") + ) { + Icon.Storage.Pull.drawAsLink { + openNewConfig(onNewConfig) + } + } + }, + AttrsWithContentBuilder { + NavItemElement( + UIKitTooltipModifier("Save config") + ) { + Icon.Storage.Push.drawAsLink { + saveConfig(config) + } + } + }, + AttrsWithContentBuilder { + NavItemElement( + UIKitTooltipModifier("Export gradle script") + ) { + Icon.Storage.Upload.drawAsLink { + exportGradle(config) + } + } + }, + ) + }, + navModifiers = arrayOf(UIKitNavbar.Transparent) + ) + } +} diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/View.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/View.kt new file mode 100644 index 0000000..b3e3ebb --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/View.kt @@ -0,0 +1,23 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.modifiers.UIKitForm +import dev.inmo.jsuikit.modifiers.builder +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin +import org.jetbrains.compose.web.dom.Legend +import org.jetbrains.compose.web.dom.Text + +actual abstract class View { + @Composable + actual abstract fun build() +} + +@Composable +actual fun View.DrawVertically(title: String, block: @Composable () -> Unit) { + Legend(UIKitForm.Legend.builder()) { + Text(title) + } + DefaultSmallVerticalMargin() + block() + DefaultSmallVerticalMargin() +} diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/ActualUIElements.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/ActualUIElements.kt new file mode 100644 index 0000000..75be36b --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/ActualUIElements.kt @@ -0,0 +1,128 @@ +package dev.inmo.kmppscriptbuilder.core.ui.utils + +import androidx.compose.runtime.Composable +import dev.inmo.jsuikit.elements.DefaultButton +import dev.inmo.jsuikit.elements.DefaultInput +import dev.inmo.jsuikit.elements.Divider +import dev.inmo.jsuikit.elements.Flex +import dev.inmo.jsuikit.elements.Icon +import dev.inmo.jsuikit.elements.drawAsFormInputPart +import dev.inmo.jsuikit.modifiers.UIKitButton +import dev.inmo.jsuikit.modifiers.UIKitFlex +import dev.inmo.jsuikit.modifiers.UIKitForm +import dev.inmo.jsuikit.modifiers.UIKitInverse +import dev.inmo.jsuikit.modifiers.UIKitMargin +import dev.inmo.jsuikit.modifiers.UIKitUtility +import dev.inmo.jsuikit.modifiers.attrsBuilder +import dev.inmo.jsuikit.modifiers.builder +import dev.inmo.jsuikit.modifiers.include +import kotlinx.browser.window +import org.jetbrains.compose.web.attributes.InputType +import org.jetbrains.compose.web.dom.Div +import org.jetbrains.compose.web.dom.Legend +import org.jetbrains.compose.web.dom.Text + +@Composable +actual fun TitleText(text: String) { + Legend(UIKitForm.Legend.builder()) { + Text(text) + } +} + +@Composable +actual fun CommonText(text: String, onClick: (() -> Unit)?) { + Div( + { + onClick ?.let { + this.onClick { _ -> + it() + } + } + } + ) { + Text(text) + } +} + +@Composable +actual fun CommonTextField( + presetText: String, + hint: String?, + onFocusChanged: (Boolean) -> Unit, + onChange: (String) -> Unit +) { + DefaultInput( + InputType.Text, + presetText, + false, + placeholder = hint, + attributesCustomizer = { + onFocusIn { onFocusChanged(true) } + onFocusOut { + window.setTimeout( // avoid immediate hiding of potential interface data with additional delay + { onFocusChanged(false) }, + 100 + ) + } + }, + onChange = onChange + ) +} + +@Composable +actual fun SwitchWithLabel( + label: String, + checked: Boolean, + placeSwitchAtTheStart: Boolean, + switchEnabled: Boolean, + onCheckedChange: (Boolean) -> Unit +) { + DefaultButton( + if (checked) { + UIKitButton.Type.Primary + } else { + UIKitButton.Type.Default + }, + disabled = !switchEnabled, + onClick = { + onCheckedChange(!checked) + }, + attributesCustomizer = { + include(UIKitUtility.Inline, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) + } + ) { + if (checked) { + Icon.App.Check.drawAsFormInputPart(UIKitInverse.Light) + } + Text(label) + } +} + +@Composable +actual fun ButtonsPanel( + title: String, + data: Iterable, + itemDrawer: @Composable (T) -> Unit +) { + Flex(UIKitFlex.Alignment.Vertical.Middle, UIKitMargin.Small) { + Div(UIKitMargin.Small.Horizontal.builder()) { Text(title) } + data.forEach { itemDrawer(it) } + } +} + +@Composable +actual fun DefaultDivider() { + Divider.Common() +} + +@Composable +actual fun DefaultSmallVerticalMargin() { + Div(UIKitMargin.Small.Top.builder()) +} + +@Composable +actual fun DefaultContentColumn(block: @Composable () -> Unit) { + Div(attrsBuilder(UIKitMargin.Small.Horizontal, UIKitMargin.Small.Vertical)) { + block() + } +} diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/NoTransform.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/NoTransform.kt new file mode 100644 index 0000000..d39b514 --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/NoTransform.kt @@ -0,0 +1,9 @@ +package dev.inmo.kmppscriptbuilder.core.ui.utils + +import dev.inmo.jsuikit.modifiers.UIKitCustom +import dev.inmo.jsuikit.modifiers.UIKitUtility + +val ClassNoTransform = UIKitCustom(arrayOf("no-transform")) + +val UIKitUtility.Companion.NoTransform + get() = ClassNoTransform diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/ActualFilesHandling.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/ActualFilesHandling.kt new file mode 100644 index 0000000..091f20b --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/ActualFilesHandling.kt @@ -0,0 +1,83 @@ +package dev.inmo.kmppscriptbuilder.core.utils + +import dev.inmo.kmppscriptbuilder.core.models.Config +import kotlinx.browser.document +import kotlinx.dom.appendElement +import org.w3c.dom.HTMLAnchorElement +import org.w3c.dom.HTMLInputElement +import org.w3c.dom.url.URL +import org.w3c.files.Blob +import org.w3c.files.BlobPropertyBag +import org.w3c.files.FileReader +import org.w3c.files.get + +fun saveFile(content: String, filename: String) { + val a = document.body!!.appendElement("a") { + setAttribute("style", "visibility:hidden; display: none") + } as HTMLAnchorElement + val blob = Blob(arrayOf(content), BlobPropertyBag( + "application/*;charset=utf-8" + )) + val url = URL.createObjectURL(blob) + a.href = url + a.download = filename + a.click() + URL.revokeObjectURL(url) + a.remove() +} + +actual fun openNewConfig(onParsed: (Config) -> Unit) { + val targetInput = document.body!!.appendElement("input") { + setAttribute("style", "visibility:hidden; display: none") + } as HTMLInputElement + targetInput.type = "file" + targetInput.onchange = { + targetInput.files ?.also { files -> + for (i in (0 until files.length) ) { + files[i] ?.also { file -> + val reader = FileReader() + + reader.onload = { + val content = it.target.asDynamic().result as String + onParsed(serialFormat.decodeFromString(Config.serializer(), content)) + false + } + + reader.readAsText(file) + } + } + } + } + targetInput.click() + targetInput.remove() +} + +actual fun saveConfig(config: Config): Boolean { + saveFile( + serialFormat.encodeToString(Config.serializer(), config), + "publish.kpsb" + ) + return true +} + +actual fun exportGradle(config: Config): Boolean { + val filename = "publish.gradle" + + val content = config.run { + type.buildMavenGradleConfig( + mavenConfig, + licenses + ) + } + + saveFile(content, filename) + return true +} + +actual fun saveAs(config: Config): Boolean { + saveFile( + serialFormat.encodeToString(Config.serializer(), config), + "publish.kpsb" + ) + return true +} diff --git a/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/openLink.kt b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/openLink.kt new file mode 100644 index 0000000..fa8cebd --- /dev/null +++ b/core/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/openLink.kt @@ -0,0 +1,6 @@ +package dev.inmo.kmppscriptbuilder.core.utils + +actual fun openLink(link: String): Boolean { + dev.inmo.micro_utils.common.openLink(link) + return true +} diff --git a/core/src/jsMain/resources/css/internal.css b/core/src/jsMain/resources/css/internal.css new file mode 100644 index 0000000..da71244 --- /dev/null +++ b/core/src/jsMain/resources/css/internal.css @@ -0,0 +1,4 @@ +.no-transform { + text-transform: none; +} + diff --git a/core/src/jsMain/resources/css/uikit.min.css b/core/src/jsMain/resources/css/uikit.min.css new file mode 100644 index 0000000..cec2889 --- /dev/null +++ b/core/src/jsMain/resources/css/uikit.min.css @@ -0,0 +1 @@ +/*! UIkit 3.15.12 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */html{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:16px;font-weight:400;line-height:1.5;-webkit-text-size-adjust:100%;background:#fff;color:#666}body{margin:0}.uk-link,a{color:#1e87f0;text-decoration:none;cursor:pointer}.uk-link-toggle:hover .uk-link,.uk-link:hover,a:hover{color:#0f6ecd;text-decoration:underline}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration-style:dotted}b,strong{font-weight:bolder}:not(pre)>code,:not(pre)>kbd,:not(pre)>samp{font-family:Consolas,monaco,monospace;font-size:.875rem;color:#f0506e;white-space:nowrap;padding:2px 6px;background:#f8f8f8}em{color:#f0506e}ins{background:#ffd;color:#666;text-decoration:none}mark{background:#ffd;color:#666}q{font-style:italic}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}audio,canvas,iframe,img,svg,video{vertical-align:middle}canvas,img,svg,video{max-width:100%;height:auto;box-sizing:border-box}img:not([src]){visibility:hidden;min-width:1px}iframe{border:0}address,dl,fieldset,figure,ol,p,pre,ul{margin:0 0 20px 0}*+address,*+dl,*+fieldset,*+figure,*+ol,*+p,*+pre,*+ul{margin-top:20px}.uk-h1,.uk-h2,.uk-h3,.uk-h4,.uk-h5,.uk-h6,.uk-heading-2xlarge,.uk-heading-large,.uk-heading-medium,.uk-heading-small,.uk-heading-xlarge,h1,h2,h3,h4,h5,h6{margin:0 0 20px 0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-weight:400;color:#333;text-transform:none}*+.uk-h1,*+.uk-h2,*+.uk-h3,*+.uk-h4,*+.uk-h5,*+.uk-h6,*+.uk-heading-2xlarge,*+.uk-heading-large,*+.uk-heading-medium,*+.uk-heading-small,*+.uk-heading-xlarge,*+h1,*+h2,*+h3,*+h4,*+h5,*+h6{margin-top:40px}.uk-h1,h1{font-size:2.23125rem;line-height:1.2}.uk-h2,h2{font-size:1.7rem;line-height:1.3}.uk-h3,h3{font-size:1.5rem;line-height:1.4}.uk-h4,h4{font-size:1.25rem;line-height:1.4}.uk-h5,h5{font-size:16px;line-height:1.4}.uk-h6,h6{font-size:.875rem;line-height:1.4}@media (min-width:960px){.uk-h1,h1{font-size:2.625rem}.uk-h2,h2{font-size:2rem}}ol,ul{padding-left:30px}ol>li>ol,ol>li>ul,ul>li>ol,ul>li>ul{margin:0}dt{font-weight:700}dd{margin-left:0}.uk-hr,hr{overflow:visible;text-align:inherit;margin:0 0 20px 0;border:0;border-top:1px solid #e5e5e5}*+.uk-hr,*+hr{margin-top:20px}address{font-style:normal}blockquote{margin:0 0 20px 0;font-size:1.25rem;line-height:1.5;font-style:italic;color:#333}*+blockquote{margin-top:20px}blockquote p:last-of-type{margin-bottom:0}blockquote footer{margin-top:10px;font-size:.875rem;line-height:1.5;color:#666}blockquote footer::before{content:"— "}pre{font:0.875rem/1.5 Consolas,monaco,monospace;color:#666;-moz-tab-size:4;tab-size:4;overflow:auto;padding:10px;border:1px solid #e5e5e5;border-radius:3px;background:#fff}pre code{font-family:Consolas,monaco,monospace}:focus{outline:0}:focus-visible{outline:2px dotted #333}::selection{background:#39f;color:#fff;text-shadow:none}details,main{display:block}summary{display:list-item}template{display:none}:root{--uk-breakpoint-s:640px;--uk-breakpoint-m:960px;--uk-breakpoint-l:1200px;--uk-breakpoint-xl:1600px}.uk-link-muted a,.uk-link-toggle .uk-link-muted,a.uk-link-muted{color:#999}.uk-link-muted a:hover,.uk-link-toggle:hover .uk-link-muted,a.uk-link-muted:hover{color:#666}.uk-link-text a,.uk-link-toggle .uk-link-text,a.uk-link-text{color:inherit}.uk-link-text a:hover,.uk-link-toggle:hover .uk-link-text,a.uk-link-text:hover{color:#999}.uk-link-heading a,.uk-link-toggle .uk-link-heading,a.uk-link-heading{color:inherit}.uk-link-heading a:hover,.uk-link-toggle:hover .uk-link-heading,a.uk-link-heading:hover{color:#1e87f0;text-decoration:none}.uk-link-reset a,a.uk-link-reset{color:inherit!important;text-decoration:none!important}.uk-link-toggle{color:inherit!important;text-decoration:none!important}.uk-heading-small{font-size:2.6rem;line-height:1.2}.uk-heading-medium{font-size:2.8875rem;line-height:1.1}.uk-heading-large{font-size:3.4rem;line-height:1.1}.uk-heading-xlarge{font-size:4rem;line-height:1}.uk-heading-2xlarge{font-size:6rem;line-height:1}@media (min-width:960px){.uk-heading-small{font-size:3.25rem}.uk-heading-medium{font-size:3.5rem}.uk-heading-large{font-size:4rem}.uk-heading-xlarge{font-size:6rem}.uk-heading-2xlarge{font-size:8rem}}@media (min-width:1200px){.uk-heading-medium{font-size:4rem}.uk-heading-large{font-size:6rem}.uk-heading-xlarge{font-size:8rem}.uk-heading-2xlarge{font-size:11rem}}.uk-heading-divider{padding-bottom:calc(5px + .1em);border-bottom:calc(.2px + .05em) solid #e5e5e5}.uk-heading-bullet{position:relative}.uk-heading-bullet::before{content:"";display:inline-block;position:relative;top:calc(-.1 * 1em);vertical-align:middle;height:calc(4px + .7em);margin-right:calc(5px + .2em);border-left:calc(5px + .1em) solid #e5e5e5}.uk-heading-line{overflow:hidden}.uk-heading-line>*{display:inline-block;position:relative}.uk-heading-line>::after,.uk-heading-line>::before{content:"";position:absolute;top:calc(50% - (calc(.2px + .05em)/ 2));width:2000px;border-bottom:calc(.2px + .05em) solid #e5e5e5}.uk-heading-line>::before{right:100%;margin-right:calc(5px + .3em)}.uk-heading-line>::after{left:100%;margin-left:calc(5px + .3em)}[class*=uk-divider]{border:none;margin-bottom:20px}*+[class*=uk-divider]{margin-top:20px}.uk-divider-icon{position:relative;height:20px;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22%23e5e5e5%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A");background-repeat:no-repeat;background-position:50% 50%}.uk-divider-icon::after,.uk-divider-icon::before{content:"";position:absolute;top:50%;max-width:calc(50% - (50px / 2));border-bottom:1px solid #e5e5e5}.uk-divider-icon::before{right:calc(50% + (50px / 2));width:100%}.uk-divider-icon::after{left:calc(50% + (50px / 2));width:100%}.uk-divider-small{line-height:0}.uk-divider-small::after{content:"";display:inline-block;width:100px;max-width:100%;border-top:1px solid #e5e5e5;vertical-align:top}.uk-divider-vertical{width:max-content;height:100px;margin-left:auto;margin-right:auto;border-left:1px solid #e5e5e5}.uk-list{padding:0;list-style:none}.uk-list>*{break-inside:avoid-column}.uk-list>*>:last-child{margin-bottom:0}.uk-list>*>ul,.uk-list>:nth-child(n+2){margin-top:10px}.uk-list-circle>*,.uk-list-decimal>*,.uk-list-disc>*,.uk-list-hyphen>*,.uk-list-square>*{padding-left:30px}.uk-list-decimal{counter-reset:decimal}.uk-list-decimal>*{counter-increment:decimal}.uk-list-circle>::before,.uk-list-decimal>::before,.uk-list-disc>::before,.uk-list-hyphen>::before,.uk-list-square>::before{content:"";position:relative;left:-30px;width:30px;height:1.5em;margin-bottom:-1.5em;display:list-item;list-style-position:inside;text-align:right}.uk-list-disc>::before{list-style-type:disc}.uk-list-circle>::before{list-style-type:circle}.uk-list-square>::before{list-style-type:square}.uk-list-decimal>::before{content:counter(decimal,decimal) '\200A.\00A0'}.uk-list-hyphen>::before{content:'–\00A0\00A0'}.uk-list-muted>::before{color:#999!important}.uk-list-emphasis>::before{color:#333!important}.uk-list-primary>::before{color:#1e87f0!important}.uk-list-secondary>::before{color:#222!important}.uk-list-bullet>*{padding-left:30px}.uk-list-bullet>::before{content:"";display:list-item;position:relative;left:-30px;width:30px;height:1.5em;margin-bottom:-1.5em;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23666%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:50% 50%}.uk-list-divider>:nth-child(n+2){margin-top:10px;padding-top:10px;border-top:1px solid #e5e5e5}.uk-list-striped>*{padding:10px 10px}.uk-list-striped>:nth-of-type(odd){border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.uk-list-striped>:nth-of-type(odd){background:#f8f8f8}.uk-list-striped>:nth-child(n+2){margin-top:0}.uk-list-large>*>ul,.uk-list-large>:nth-child(n+2){margin-top:20px}.uk-list-collapse>*>ul,.uk-list-collapse>:nth-child(n+2){margin-top:0}.uk-list-large.uk-list-divider>:nth-child(n+2){margin-top:20px;padding-top:20px}.uk-list-collapse.uk-list-divider>:nth-child(n+2){margin-top:0;padding-top:0}.uk-list-large.uk-list-striped>*{padding:20px 10px}.uk-list-collapse.uk-list-striped>*{padding-top:0;padding-bottom:0}.uk-list-collapse.uk-list-striped>:nth-child(n+2),.uk-list-large.uk-list-striped>:nth-child(n+2){margin-top:0}.uk-description-list>dt{color:#333;font-size:.875rem;font-weight:400;text-transform:uppercase}.uk-description-list>dt:nth-child(n+2){margin-top:20px}.uk-description-list-divider>dt:nth-child(n+2){margin-top:20px;padding-top:20px;border-top:1px solid #e5e5e5}.uk-table{border-collapse:collapse;border-spacing:0;width:100%;margin-bottom:20px}*+.uk-table{margin-top:20px}.uk-table th{padding:16px 12px;text-align:left;vertical-align:bottom;font-size:.875rem;font-weight:400;color:#999;text-transform:uppercase}.uk-table td{padding:16px 12px;vertical-align:top}.uk-table td>:last-child{margin-bottom:0}.uk-table tfoot{font-size:.875rem}.uk-table caption{font-size:.875rem;text-align:left;color:#999}.uk-table-middle,.uk-table-middle td{vertical-align:middle!important}.uk-table-divider>:first-child>tr:not(:first-child),.uk-table-divider>:not(:first-child)>tr,.uk-table-divider>tr:not(:first-child){border-top:1px solid #e5e5e5}.uk-table-striped tbody tr:nth-of-type(odd),.uk-table-striped>tr:nth-of-type(odd){background:#f8f8f8;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.uk-table-hover tbody tr:hover,.uk-table-hover>tr:hover{background:#ffd}.uk-table tbody tr.uk-active,.uk-table>tr.uk-active{background:#ffd}.uk-table-small td,.uk-table-small th{padding:10px 12px}.uk-table-large td,.uk-table-large th{padding:22px 12px}.uk-table-justify td:first-child,.uk-table-justify th:first-child{padding-left:0}.uk-table-justify td:last-child,.uk-table-justify th:last-child{padding-right:0}.uk-table-shrink{width:1px}.uk-table-expand{min-width:150px}.uk-table-link{padding:0!important}.uk-table-link>a{display:block;padding:16px 12px}.uk-table-small .uk-table-link>a{padding:10px 12px}@media (max-width:959px){.uk-table-responsive,.uk-table-responsive tbody,.uk-table-responsive td,.uk-table-responsive th,.uk-table-responsive tr{display:block}.uk-table-responsive thead{display:none}.uk-table-responsive td,.uk-table-responsive th{width:auto!important;max-width:none!important;min-width:0!important;overflow:visible!important;white-space:normal!important}.uk-table-responsive .uk-table-link:not(:first-child)>a,.uk-table-responsive td:not(:first-child):not(.uk-table-link),.uk-table-responsive th:not(:first-child):not(.uk-table-link){padding-top:5px!important}.uk-table-responsive .uk-table-link:not(:last-child)>a,.uk-table-responsive td:not(:last-child):not(.uk-table-link),.uk-table-responsive th:not(:last-child):not(.uk-table-link){padding-bottom:5px!important}.uk-table-justify.uk-table-responsive td,.uk-table-justify.uk-table-responsive th{padding-left:0;padding-right:0}}.uk-table tbody tr{transition:background-color .1s linear}.uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-table-striped>tr:nth-of-type(2n):last-child{border-bottom:1px solid #e5e5e5}.uk-icon{margin:0;border:none;border-radius:0;overflow:visible;font:inherit;color:inherit;text-transform:none;padding:0;background-color:transparent;display:inline-block;fill:currentcolor;line-height:0}button.uk-icon:not(:disabled){cursor:pointer}.uk-icon::-moz-focus-inner{border:0;padding:0}.uk-icon:not(.uk-preserve) [fill*='#']:not(.uk-preserve){fill:currentcolor}.uk-icon:not(.uk-preserve) [stroke*='#']:not(.uk-preserve){stroke:currentcolor}.uk-icon>*{transform:translate(0,0)}.uk-icon-image{width:20px;height:20px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;vertical-align:middle;object-fit:scale-down;max-width:none}.uk-icon-link{color:#999;text-decoration:none!important}.uk-icon-link:hover{color:#666}.uk-active>.uk-icon-link,.uk-icon-link:active{color:#595959}.uk-icon-button{box-sizing:border-box;width:36px;height:36px;border-radius:500px;background:#f8f8f8;color:#999;vertical-align:middle;display:inline-flex;justify-content:center;align-items:center;transition:.1s ease-in-out;transition-property:color,background-color}.uk-icon-button:hover{background-color:#ebebeb;color:#666}.uk-active>.uk-icon-button,.uk-icon-button:active{background-color:#dfdfdf;color:#666}.uk-range{-webkit-appearance:none;box-sizing:border-box;margin:0;vertical-align:middle;max-width:100%;width:100%;background:0 0}.uk-range:focus{outline:0}.uk-range::-moz-focus-outer{border:none}.uk-range:not(:disabled)::-webkit-slider-thumb{cursor:pointer}.uk-range:not(:disabled)::-moz-range-thumb{cursor:pointer}.uk-range::-webkit-slider-runnable-track{height:3px;background:#ebebeb;border-radius:500px}.uk-range:active::-webkit-slider-runnable-track,.uk-range:focus::-webkit-slider-runnable-track{background:#dedede}.uk-range::-moz-range-track{height:3px;background:#ebebeb;border-radius:500px}.uk-range:focus::-moz-range-track{background:#dedede}.uk-range::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-7px;height:15px;width:15px;border-radius:500px;background:#fff;border:1px solid #ccc}.uk-range::-moz-range-thumb{border:none;height:15px;width:15px;margin-top:-7px;border-radius:500px;background:#fff;border:1px solid #ccc}.uk-checkbox,.uk-input,.uk-radio,.uk-select,.uk-textarea{box-sizing:border-box;margin:0;border-radius:0;font:inherit}.uk-input{overflow:visible}.uk-select{text-transform:none}.uk-select optgroup{font:inherit;font-weight:700}.uk-textarea{overflow:auto}.uk-input[type=search]::-webkit-search-cancel-button,.uk-input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.uk-input[type=number]::-webkit-inner-spin-button,.uk-input[type=number]::-webkit-outer-spin-button{height:auto}.uk-input::-moz-placeholder,.uk-textarea::-moz-placeholder{opacity:1}.uk-checkbox:not(:disabled),.uk-radio:not(:disabled){cursor:pointer}.uk-fieldset{border:none;margin:0;padding:0}.uk-input,.uk-textarea{-webkit-appearance:none}.uk-input,.uk-select,.uk-textarea{max-width:100%;width:100%;border:0 none;padding:0 10px;background:#fff;color:#666;border:1px solid #e5e5e5;transition:.2s ease-in-out;transition-property:color,background-color,border}.uk-input,.uk-select:not([multiple]):not([size]){height:40px;vertical-align:middle;display:inline-block}.uk-input:not(input),.uk-select:not(select){line-height:38px}.uk-select[multiple],.uk-select[size],.uk-textarea{padding-top:6px;padding-bottom:6px;vertical-align:top}.uk-select[multiple],.uk-select[size]{resize:vertical}.uk-input:focus,.uk-select:focus,.uk-textarea:focus{outline:0;background-color:#fff;color:#666;border-color:#1e87f0}.uk-input:disabled,.uk-select:disabled,.uk-textarea:disabled{background-color:#f8f8f8;color:#999;border-color:#e5e5e5}.uk-input::placeholder{color:#999}.uk-textarea::placeholder{color:#999}.uk-form-small{font-size:.875rem}.uk-form-small:not(textarea):not([multiple]):not([size]){height:30px;padding-left:8px;padding-right:8px}[multiple].uk-form-small,[size].uk-form-small,textarea.uk-form-small{padding:5px 8px}.uk-form-small:not(select):not(input):not(textarea){line-height:28px}.uk-form-large{font-size:1.25rem}.uk-form-large:not(textarea):not([multiple]):not([size]){height:55px;padding-left:12px;padding-right:12px}[multiple].uk-form-large,[size].uk-form-large,textarea.uk-form-large{padding:7px 12px}.uk-form-large:not(select):not(input):not(textarea){line-height:53px}.uk-form-danger,.uk-form-danger:focus{color:#f0506e;border-color:#f0506e}.uk-form-success,.uk-form-success:focus{color:#32d296;border-color:#32d296}.uk-form-blank{background:0 0;border-color:transparent}.uk-form-blank:focus{border-color:#e5e5e5;border-style:solid}input.uk-form-width-xsmall{width:50px}select.uk-form-width-xsmall{width:75px}.uk-form-width-small{width:130px}.uk-form-width-medium{width:200px}.uk-form-width-large{width:500px}.uk-select:not([multiple]):not([size]){-webkit-appearance:none;-moz-appearance:none;padding-right:20px;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A");background-repeat:no-repeat;background-position:100% 50%}.uk-select:not([multiple]):not([size]) option{color:#666}.uk-select:not([multiple]):not([size]):disabled{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-input[list]{padding-right:20px;background-repeat:no-repeat;background-position:100% 50%}.uk-input[list]:focus,.uk-input[list]:hover{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%2012%208%206%2016%206%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-input[list]::-webkit-calendar-picker-indicator{display:none!important}.uk-checkbox,.uk-radio{display:inline-block;height:16px;width:16px;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;background-color:transparent;background-repeat:no-repeat;background-position:50% 50%;border:1px solid #ccc;transition:.2s ease-in-out;transition-property:background-color,border}.uk-radio{border-radius:50%}.uk-checkbox:focus,.uk-radio:focus{background-color:rgba(0,0,0,0);outline:0;border-color:#1e87f0}.uk-checkbox:checked,.uk-checkbox:indeterminate,.uk-radio:checked{background-color:#1e87f0;border-color:transparent}.uk-checkbox:checked:focus,.uk-checkbox:indeterminate:focus,.uk-radio:checked:focus{background-color:#0e6dcd}.uk-radio:checked{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23fff%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-checkbox:checked{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23fff%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-checkbox:indeterminate{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23fff%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-checkbox:disabled,.uk-radio:disabled{background-color:#f8f8f8;border-color:#e5e5e5}.uk-radio:disabled:checked{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23999%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-checkbox:disabled:checked{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23999%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-checkbox:disabled:indeterminate{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23999%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-legend{width:100%;color:inherit;padding:0;font-size:1.5rem;line-height:1.4}.uk-form-custom{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-form-custom input[type=file],.uk-form-custom select{position:absolute;top:0;z-index:1;width:100%;height:100%;left:0;-webkit-appearance:none;opacity:0;cursor:pointer}.uk-form-custom input[type=file]{font-size:500px;overflow:hidden}.uk-form-label{color:#333;font-size:.875rem}.uk-form-stacked .uk-form-label{display:block;margin-bottom:5px}@media (max-width:959px){.uk-form-horizontal .uk-form-label{display:block;margin-bottom:5px}}@media (min-width:960px){.uk-form-horizontal .uk-form-label{width:200px;margin-top:7px;float:left}.uk-form-horizontal .uk-form-controls{margin-left:215px}.uk-form-horizontal .uk-form-controls-text{padding-top:7px}}.uk-form-icon{position:absolute;top:0;bottom:0;left:0;width:40px;display:inline-flex;justify-content:center;align-items:center;color:#999}.uk-form-icon:hover{color:#666}.uk-form-icon:not(a):not(button):not(input){pointer-events:none}.uk-form-icon:not(.uk-form-icon-flip)~.uk-input{padding-left:40px!important}.uk-form-icon-flip{right:0;left:auto}.uk-form-icon-flip~.uk-input{padding-right:40px!important}.uk-button{margin:0;border:none;overflow:visible;font:inherit;color:inherit;text-transform:none;-webkit-appearance:none;border-radius:0;display:inline-block;box-sizing:border-box;padding:0 30px;vertical-align:middle;font-size:.875rem;line-height:38px;text-align:center;text-decoration:none;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color,border-color}.uk-button:not(:disabled){cursor:pointer}.uk-button::-moz-focus-inner{border:0;padding:0}.uk-button:hover{text-decoration:none}.uk-button-default{background-color:transparent;color:#333;border:1px solid #e5e5e5}.uk-button-default:hover{background-color:transparent;color:#333;border-color:#b2b2b2}.uk-button-default.uk-active,.uk-button-default:active{background-color:transparent;color:#333;border-color:#999}.uk-button-primary{background-color:#1e87f0;color:#fff;border:1px solid transparent}.uk-button-primary:hover{background-color:#0f7ae5;color:#fff}.uk-button-primary.uk-active,.uk-button-primary:active{background-color:#0e6dcd;color:#fff}.uk-button-secondary{background-color:#222;color:#fff;border:1px solid transparent}.uk-button-secondary:hover{background-color:#151515;color:#fff}.uk-button-secondary.uk-active,.uk-button-secondary:active{background-color:#080808;color:#fff}.uk-button-danger{background-color:#f0506e;color:#fff;border:1px solid transparent}.uk-button-danger:hover{background-color:#ee395b;color:#fff}.uk-button-danger.uk-active,.uk-button-danger:active{background-color:#ec2147;color:#fff}.uk-button-danger:disabled,.uk-button-default:disabled,.uk-button-primary:disabled,.uk-button-secondary:disabled{background-color:transparent;color:#999;border-color:#e5e5e5}.uk-button-small{padding:0 15px;line-height:28px;font-size:.875rem}.uk-button-large{padding:0 40px;line-height:53px;font-size:.875rem}.uk-button-text{padding:0;line-height:1.5;background:0 0;color:#333;position:relative}.uk-button-text::before{content:"";position:absolute;bottom:0;left:0;right:100%;border-bottom:1px solid #333;transition:right .3s ease-out}.uk-button-text:hover{color:#333}.uk-button-text:hover::before{right:0}.uk-button-text:disabled{color:#999}.uk-button-text:disabled::before{display:none}.uk-button-link{padding:0;line-height:1.5;background:0 0;color:#333}.uk-button-link:hover{color:#999;text-decoration:none}.uk-button-link:disabled{color:#999;text-decoration:none}.uk-button-group{display:inline-flex;vertical-align:middle;position:relative}.uk-button-group>.uk-button:nth-child(n+2),.uk-button-group>div:nth-child(n+2) .uk-button{margin-left:-1px}.uk-button-group .uk-button.uk-active,.uk-button-group .uk-button:active,.uk-button-group .uk-button:hover{position:relative;z-index:1}.uk-progress{vertical-align:baseline;display:block;width:100%;border:0;background-color:#f8f8f8;margin-bottom:20px;height:15px;border-radius:500px;overflow:hidden}*+.uk-progress{margin-top:20px}.uk-progress::-webkit-progress-bar{background-color:transparent}.uk-progress::-webkit-progress-value{background-color:#1e87f0;transition:width .6s ease}.uk-progress::-moz-progress-bar{background-color:#1e87f0;transition:width .6s ease}.uk-section{display:flow-root;box-sizing:border-box;padding-top:40px;padding-bottom:40px}@media (min-width:960px){.uk-section{padding-top:70px;padding-bottom:70px}}.uk-section>:last-child{margin-bottom:0}.uk-section-xsmall{padding-top:20px;padding-bottom:20px}.uk-section-small{padding-top:40px;padding-bottom:40px}.uk-section-large{padding-top:70px;padding-bottom:70px}@media (min-width:960px){.uk-section-large{padding-top:140px;padding-bottom:140px}}.uk-section-xlarge{padding-top:140px;padding-bottom:140px}@media (min-width:960px){.uk-section-xlarge{padding-top:210px;padding-bottom:210px}}.uk-section-default{background:#fff}.uk-section-muted{background:#f8f8f8}.uk-section-primary{background:#1e87f0}.uk-section-secondary{background:#222}.uk-container{display:flow-root;box-sizing:content-box;max-width:1200px;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}@media (min-width:640px){.uk-container{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-container{padding-left:40px;padding-right:40px}}.uk-container>:last-child{margin-bottom:0}.uk-container .uk-container{padding-left:0;padding-right:0}.uk-container-xsmall{max-width:750px}.uk-container-small{max-width:900px}.uk-container-large{max-width:1400px}.uk-container-xlarge{max-width:1600px}.uk-container-expand{max-width:none}.uk-container-expand-left{margin-left:0}.uk-container-expand-right{margin-right:0}@media (min-width:640px){.uk-container-expand-left.uk-container-xsmall,.uk-container-expand-right.uk-container-xsmall{max-width:calc(50% + (750px / 2) - 30px)}.uk-container-expand-left.uk-container-small,.uk-container-expand-right.uk-container-small{max-width:calc(50% + (900px / 2) - 30px)}}@media (min-width:960px){.uk-container-expand-left,.uk-container-expand-right{max-width:calc(50% + (1200px / 2) - 40px)}.uk-container-expand-left.uk-container-xsmall,.uk-container-expand-right.uk-container-xsmall{max-width:calc(50% + (750px / 2) - 40px)}.uk-container-expand-left.uk-container-small,.uk-container-expand-right.uk-container-small{max-width:calc(50% + (900px / 2) - 40px)}.uk-container-expand-left.uk-container-large,.uk-container-expand-right.uk-container-large{max-width:calc(50% + (1400px / 2) - 40px)}.uk-container-expand-left.uk-container-xlarge,.uk-container-expand-right.uk-container-xlarge{max-width:calc(50% + (1600px / 2) - 40px)}}.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 15px)}.uk-container-item-padding-remove-left{margin-left:-15px}.uk-container-item-padding-remove-right{margin-right:-15px}@media (min-width:640px){.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 30px)}.uk-container-item-padding-remove-left{margin-left:-30px}.uk-container-item-padding-remove-right{margin-right:-30px}}@media (min-width:960px){.uk-container-item-padding-remove-left,.uk-container-item-padding-remove-right{width:calc(100% + 40px)}.uk-container-item-padding-remove-left{margin-left:-40px}.uk-container-item-padding-remove-right{margin-right:-40px}}.uk-tile{display:flow-root;position:relative;box-sizing:border-box;padding-left:15px;padding-right:15px;padding-top:40px;padding-bottom:40px}@media (min-width:640px){.uk-tile{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-tile{padding-left:40px;padding-right:40px;padding-top:70px;padding-bottom:70px}}.uk-tile>:last-child{margin-bottom:0}.uk-tile-xsmall{padding-top:20px;padding-bottom:20px}.uk-tile-small{padding-top:40px;padding-bottom:40px}.uk-tile-large{padding-top:70px;padding-bottom:70px}@media (min-width:960px){.uk-tile-large{padding-top:140px;padding-bottom:140px}}.uk-tile-xlarge{padding-top:140px;padding-bottom:140px}@media (min-width:960px){.uk-tile-xlarge{padding-top:210px;padding-bottom:210px}}.uk-tile-default{background-color:#fff}.uk-tile-muted{background-color:#f8f8f8}.uk-tile-primary{background-color:#1e87f0}.uk-tile-secondary{background-color:#222}.uk-card{position:relative;box-sizing:border-box;transition:box-shadow .1s ease-in-out}.uk-card-body{display:flow-root;padding:30px 30px}.uk-card-header{display:flow-root;padding:15px 30px}.uk-card-footer{display:flow-root;padding:15px 30px}@media (min-width:1200px){.uk-card-body{padding:40px 40px}.uk-card-header{padding:20px 40px}.uk-card-footer{padding:20px 40px}}.uk-card-body>:last-child,.uk-card-footer>:last-child,.uk-card-header>:last-child{margin-bottom:0}.uk-card-title{font-size:1.5rem;line-height:1.4}.uk-card-badge{position:absolute;top:15px;right:15px;z-index:1;height:22px;padding:0 10px;background:#1e87f0;color:#fff;font-size:.875rem;display:flex;justify-content:center;align-items:center;line-height:0;border-radius:2px;text-transform:uppercase}.uk-card-badge:first-child+*{margin-top:0}.uk-card-hover:not(.uk-card-default):not(.uk-card-primary):not(.uk-card-secondary):hover{background-color:#fff;box-shadow:0 14px 25px rgba(0,0,0,.16)}.uk-card-default{background-color:#fff;color:#666;box-shadow:0 5px 15px rgba(0,0,0,.08)}.uk-card-default .uk-card-title{color:#333}.uk-card-default.uk-card-hover:hover{background-color:#fff;box-shadow:0 14px 25px rgba(0,0,0,.16)}.uk-card-default .uk-card-header{border-bottom:1px solid #e5e5e5}.uk-card-default .uk-card-footer{border-top:1px solid #e5e5e5}.uk-card-primary{background-color:#1e87f0;color:#fff;box-shadow:0 5px 15px rgba(0,0,0,.08)}.uk-card-primary .uk-card-title{color:#fff}.uk-card-primary.uk-card-hover:hover{background-color:#1e87f0;box-shadow:0 14px 25px rgba(0,0,0,.16)}.uk-card-secondary{background-color:#222;color:#fff;box-shadow:0 5px 15px rgba(0,0,0,.08)}.uk-card-secondary .uk-card-title{color:#fff}.uk-card-secondary.uk-card-hover:hover{background-color:#222;box-shadow:0 14px 25px rgba(0,0,0,.16)}.uk-card-small .uk-card-body,.uk-card-small.uk-card-body{padding:20px 20px}.uk-card-small .uk-card-header{padding:13px 20px}.uk-card-small .uk-card-footer{padding:13px 20px}@media (min-width:1200px){.uk-card-large .uk-card-body,.uk-card-large.uk-card-body{padding:70px 70px}.uk-card-large .uk-card-header{padding:35px 70px}.uk-card-large .uk-card-footer{padding:35px 70px}}.uk-card-body>.uk-nav-default{margin-left:-30px;margin-right:-30px}.uk-card-body>.uk-nav-default:only-child{margin-top:-15px;margin-bottom:-15px}.uk-card-body>.uk-nav-default .uk-nav-divider,.uk-card-body>.uk-nav-default .uk-nav-header,.uk-card-body>.uk-nav-default>li>a{padding-left:30px;padding-right:30px}.uk-card-body>.uk-nav-default .uk-nav-sub{padding-left:45px}@media (min-width:1200px){.uk-card-body>.uk-nav-default{margin-left:-40px;margin-right:-40px}.uk-card-body>.uk-nav-default:only-child{margin-top:-25px;margin-bottom:-25px}.uk-card-body>.uk-nav-default .uk-nav-divider,.uk-card-body>.uk-nav-default .uk-nav-header,.uk-card-body>.uk-nav-default>li>a{padding-left:40px;padding-right:40px}.uk-card-body>.uk-nav-default .uk-nav-sub{padding-left:55px}}.uk-card-small>.uk-nav-default{margin-left:-20px;margin-right:-20px}.uk-card-small>.uk-nav-default:only-child{margin-top:-5px;margin-bottom:-5px}.uk-card-small>.uk-nav-default .uk-nav-divider,.uk-card-small>.uk-nav-default .uk-nav-header,.uk-card-small>.uk-nav-default>li>a{padding-left:20px;padding-right:20px}.uk-card-small>.uk-nav-default .uk-nav-sub{padding-left:35px}@media (min-width:1200px){.uk-card-large>.uk-nav-default{margin:0}.uk-card-large>.uk-nav-default:only-child{margin:0}.uk-card-large>.uk-nav-default .uk-nav-divider,.uk-card-large>.uk-nav-default .uk-nav-header,.uk-card-large>.uk-nav-default>li>a{padding-left:0;padding-right:0}.uk-card-large>.uk-nav-default .uk-nav-sub{padding-left:15px}}.uk-close{color:#999;transition:.1s ease-in-out;transition-property:color,opacity}.uk-close:hover{color:#666}.uk-spinner>*{animation:uk-spinner-rotate 1.4s linear infinite}@keyframes uk-spinner-rotate{0%{transform:rotate(0)}100%{transform:rotate(270deg)}}.uk-spinner>*>*{stroke-dasharray:88px;stroke-dashoffset:0;transform-origin:center;animation:uk-spinner-dash 1.4s ease-in-out infinite;stroke-width:1;stroke-linecap:round}@keyframes uk-spinner-dash{0%{stroke-dashoffset:88px}50%{stroke-dashoffset:22px;transform:rotate(135deg)}100%{stroke-dashoffset:88px;transform:rotate(450deg)}}.uk-totop{padding:5px;color:#999;transition:color .1s ease-in-out}.uk-totop:hover{color:#666}.uk-totop:active{color:#333}.uk-marker{padding:5px;background:#222;color:#fff;border-radius:500px}.uk-marker:hover{color:#fff}.uk-alert{position:relative;margin-bottom:20px;padding:15px 29px 15px 15px;background:#f8f8f8;color:#666}*+.uk-alert{margin-top:20px}.uk-alert>:last-child{margin-bottom:0}.uk-alert-close{position:absolute;top:20px;right:15px;color:inherit;opacity:.4}.uk-alert-close:first-child+*{margin-top:0}.uk-alert-close:hover{color:inherit;opacity:.8}.uk-alert-primary{background:#d8eafc;color:#1e87f0}.uk-alert-success{background:#edfbf6;color:#32d296}.uk-alert-warning{background:#fff6ee;color:#faa05a}.uk-alert-danger{background:#fef4f6;color:#f0506e}.uk-alert h1,.uk-alert h2,.uk-alert h3,.uk-alert h4,.uk-alert h5,.uk-alert h6{color:inherit}.uk-alert a:not([class]){color:inherit;text-decoration:underline}.uk-alert a:not([class]):hover{color:inherit;text-decoration:underline}.uk-placeholder{margin-bottom:20px;padding:30px 30px;background:0 0;border:1px dashed #e5e5e5}*+.uk-placeholder{margin-top:20px}.uk-placeholder>:last-child{margin-bottom:0}.uk-badge{box-sizing:border-box;min-width:18px;height:18px;padding:0 5px;border-radius:500px;vertical-align:middle;background:#1e87f0;color:#fff!important;font-size:11px;display:inline-flex;justify-content:center;align-items:center;line-height:0}.uk-badge:hover{text-decoration:none}.uk-label{display:inline-block;padding:0 10px;background:#1e87f0;line-height:1.5;font-size:.875rem;color:#fff;vertical-align:middle;white-space:nowrap;border-radius:2px;text-transform:uppercase}.uk-label-success{background-color:#32d296;color:#fff}.uk-label-warning{background-color:#faa05a;color:#fff}.uk-label-danger{background-color:#f0506e;color:#fff}.uk-overlay{padding:30px 30px}.uk-overlay>:last-child{margin-bottom:0}.uk-overlay-default{background:rgba(255,255,255,.8)}.uk-overlay-primary{background:rgba(34,34,34,.8)}.uk-article{display:flow-root}.uk-article>:last-child{margin-bottom:0}.uk-article+.uk-article{margin-top:70px}.uk-article-title{font-size:2.23125rem;line-height:1.2}@media (min-width:960px){.uk-article-title{font-size:2.625rem}}.uk-article-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-article-meta a{color:#999}.uk-article-meta a:hover{color:#666;text-decoration:none}.uk-comment-body{display:flow-root;overflow-wrap:break-word;word-wrap:break-word}.uk-comment-header{display:flow-root;margin-bottom:20px}.uk-comment-body>:last-child,.uk-comment-header>:last-child{margin-bottom:0}.uk-comment-title{font-size:1.25rem;line-height:1.4}.uk-comment-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-comment-list{padding:0;list-style:none}.uk-comment-list>:nth-child(n+2){margin-top:70px}.uk-comment-list .uk-comment~ul{margin:70px 0 0 0;padding-left:30px;list-style:none}@media (min-width:960px){.uk-comment-list .uk-comment~ul{padding-left:100px}}.uk-comment-list .uk-comment~ul>:nth-child(n+2){margin-top:70px}.uk-comment-primary{padding:30px;background-color:#f8f8f8}.uk-search{display:inline-block;position:relative;max-width:100%;margin:0}.uk-search-input::-webkit-search-cancel-button,.uk-search-input::-webkit-search-decoration{-webkit-appearance:none}.uk-search-input::-moz-placeholder{opacity:1}.uk-search-input{box-sizing:border-box;margin:0;border-radius:0;font:inherit;overflow:visible;-webkit-appearance:none;vertical-align:middle;width:100%;border:none;color:#666}.uk-search-input:focus{outline:0}.uk-search-input::placeholder{color:#999}.uk-search .uk-search-icon{position:absolute;top:0;bottom:0;left:0;display:inline-flex;justify-content:center;align-items:center;color:#999}.uk-search .uk-search-icon:hover{color:#999}.uk-search .uk-search-icon:not(a):not(button):not(input){pointer-events:none}.uk-search .uk-search-icon-flip{right:0;left:auto}.uk-search-default{width:240px}.uk-search-default .uk-search-input{height:40px;padding-left:10px;padding-right:10px;background:0 0;border:1px solid #e5e5e5}.uk-search-default .uk-search-input:focus{background-color:rgba(0,0,0,0);border-color:#1e87f0}.uk-search-default .uk-search-icon{width:40px}.uk-search-default .uk-search-icon:not(.uk-search-icon-flip)~.uk-search-input{padding-left:40px}.uk-search-default .uk-search-icon-flip~.uk-search-input{padding-right:40px}.uk-search-navbar{width:400px}.uk-search-navbar .uk-search-input{height:40px;background:0 0;font-size:1.5rem}.uk-search-navbar .uk-search-icon{width:40px}.uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip)~.uk-search-input{padding-left:40px}.uk-search-navbar .uk-search-icon-flip~.uk-search-input{padding-right:40px}.uk-search-large{width:500px}.uk-search-large .uk-search-input{height:80px;background:0 0;font-size:2.625rem}.uk-search-large .uk-search-icon{width:80px}.uk-search-large .uk-search-icon:not(.uk-search-icon-flip)~.uk-search-input{padding-left:80px}.uk-search-large .uk-search-icon-flip~.uk-search-input{padding-right:80px}.uk-search-toggle{color:#999}.uk-search-toggle:hover{color:#666}.uk-accordion{padding:0;list-style:none}.uk-accordion>:nth-child(n+2){margin-top:20px}.uk-accordion-title{display:block;font-size:1.25rem;line-height:1.4;color:#333;overflow:hidden}.uk-accordion-title::before{content:"";width:1.4em;height:1.4em;margin-left:10px;float:right;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:50% 50%}.uk-open>.uk-accordion-title::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-accordion-title:hover{color:#666;text-decoration:none}.uk-accordion-content{display:flow-root;margin-top:20px}.uk-accordion-content>:last-child{margin-bottom:0}.uk-drop{display:none;position:absolute;z-index:1020;--uk-position-offset:20px;--uk-position-viewport-offset:15px;box-sizing:border-box;width:300px}.uk-drop.uk-open{display:block}.uk-drop-stack .uk-drop-grid>*{width:100%!important}.uk-dropdown{display:none;position:absolute;z-index:1020;--uk-position-offset:10px;--uk-position-viewport-offset:15px;box-sizing:border-box;min-width:200px;padding:25px;background:#fff;color:#666;box-shadow:0 5px 12px rgba(0,0,0,.15)}.uk-dropdown.uk-open{display:block}.uk-dropdown>:last-child{margin-bottom:0}.uk-dropdown-large{padding:40px}.uk-dropdown-nav{font-size:.875rem}.uk-dropdown-nav>li>a{color:#999}.uk-dropdown-nav>li.uk-active>a,.uk-dropdown-nav>li>a:hover{color:#666}.uk-dropdown-nav .uk-nav-subtitle{font-size:12px}.uk-dropdown-nav .uk-nav-header{color:#333}.uk-dropdown-nav .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-dropdown-nav .uk-nav-sub a{color:#999}.uk-dropdown-nav .uk-nav-sub a:hover,.uk-dropdown-nav .uk-nav-sub li.uk-active>a{color:#666}.uk-dropdown-stack .uk-dropdown-grid>*{width:100%!important}.uk-dropbar{--uk-position-offset:0;--uk-position-shift-offset:0;--uk-position-viewport-offset:0;display:none;position:absolute;z-index:1020;box-sizing:border-box;padding:25px 15px 25px 15px;background:#fff;color:#666}.uk-dropbar.uk-open{display:block}.uk-dropbar>:last-child{margin-bottom:0}@media (min-width:640px){.uk-dropbar{padding-left:30px;padding-right:30px}}@media (min-width:960px){.uk-dropbar{padding-left:40px;padding-right:40px}}.uk-dropbar-large{padding-top:40px;padding-bottom:40px}.uk-dropbar-top{box-shadow:0 12px 7px -6px rgba(0,0,0,.05)}.uk-dropbar-bottom{box-shadow:0 -12px 7px -6px rgba(0,0,0,.05)}.uk-dropbar-left{box-shadow:12px 0 7px -6px rgba(0,0,0,.05)}.uk-dropbar-right{box-shadow:-12px 0 7px -6px rgba(0,0,0,.05)}.uk-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1010;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:15px 15px;background:rgba(0,0,0,.6);opacity:0;transition:opacity .15s linear}@media (min-width:640px){.uk-modal{padding:50px 30px}}@media (min-width:960px){.uk-modal{padding-left:40px;padding-right:40px}}.uk-modal.uk-open{opacity:1}.uk-modal-page{overflow:hidden}.uk-modal-dialog{position:relative;box-sizing:border-box;margin:0 auto;width:600px;max-width:100%!important;background:#fff;opacity:0;transform:translateY(-100px);transition:.3s linear;transition-property:opacity,transform}.uk-open>.uk-modal-dialog{opacity:1;transform:translateY(0)}.uk-modal-container .uk-modal-dialog{width:1200px}.uk-modal-full{padding:0;background:0 0}.uk-modal-full .uk-modal-dialog{margin:0;width:100%;max-width:100%;transform:translateY(0)}.uk-modal-body{display:flow-root;padding:20px 20px}.uk-modal-header{display:flow-root;padding:10px 20px;background:#fff;border-bottom:1px solid #e5e5e5}.uk-modal-footer{display:flow-root;padding:10px 20px;background:#fff;border-top:1px solid #e5e5e5}@media (min-width:640px){.uk-modal-body{padding:30px 30px}.uk-modal-header{padding:15px 30px}.uk-modal-footer{padding:15px 30px}}.uk-modal-body>:last-child,.uk-modal-footer>:last-child,.uk-modal-header>:last-child{margin-bottom:0}.uk-modal-title{font-size:2rem;line-height:1.3}[class*=uk-modal-close-]{position:absolute;z-index:1010;top:10px;right:10px;padding:5px}[class*=uk-modal-close-]:first-child+*{margin-top:0}.uk-modal-close-outside{top:0;right:-5px;transform:translate(0,-100%);color:#fff}.uk-modal-close-outside:hover{color:#fff}@media (min-width:960px){.uk-modal-close-outside{right:0;transform:translate(100%,-100%)}}.uk-modal-close-full{top:0;right:0;padding:20px;background:#fff}.uk-slideshow{-webkit-tap-highlight-color:transparent}.uk-slideshow-items{position:relative;z-index:0;margin:0;padding:0;list-style:none;overflow:hidden;-webkit-touch-callout:none;touch-action:pan-y}.uk-slideshow-items>*{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;will-change:transform,opacity}.uk-slideshow-items>:not(.uk-active){display:none}.uk-slider{-webkit-tap-highlight-color:transparent}.uk-slider-container{overflow:hidden}.uk-slider-container-offset{margin:-11px -25px -39px -25px;padding:11px 25px 39px 25px}.uk-slider-items{will-change:transform;position:relative;touch-action:pan-y}.uk-slider-items:not(.uk-grid){display:flex;margin:0;padding:0;list-style:none;-webkit-touch-callout:none}.uk-slider-items.uk-grid{flex-wrap:nowrap}.uk-slider-items>*{flex:none;max-width:100%;position:relative}.uk-sticky{position:relative;box-sizing:border-box}.uk-sticky-fixed{z-index:980;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden}.uk-sticky[class*=uk-animation-]{animation-duration:.2s}.uk-sticky.uk-animation-reverse{animation-duration:.2s}.uk-sticky-placeholder{pointer-events:none}.uk-offcanvas{display:none;position:fixed;top:0;bottom:0;left:0;z-index:1000}.uk-offcanvas-flip .uk-offcanvas{right:0;left:auto}.uk-offcanvas-bar{position:absolute;top:0;bottom:0;left:-270px;box-sizing:border-box;width:270px;padding:20px 20px;background:#222;overflow-y:auto;-webkit-overflow-scrolling:touch}@media (min-width:640px){.uk-offcanvas-bar{left:-350px;width:350px;padding:30px 30px}}.uk-offcanvas-flip .uk-offcanvas-bar{left:auto;right:-270px}@media (min-width:640px){.uk-offcanvas-flip .uk-offcanvas-bar{right:-350px}}.uk-open>.uk-offcanvas-bar{left:0}.uk-offcanvas-flip .uk-open>.uk-offcanvas-bar{left:auto;right:0}.uk-offcanvas-bar-animation{transition:left .3s ease-out}.uk-offcanvas-flip .uk-offcanvas-bar-animation{transition-property:right}.uk-offcanvas-reveal{position:absolute;top:0;bottom:0;left:0;width:0;overflow:hidden;transition:width .3s ease-out}.uk-offcanvas-reveal .uk-offcanvas-bar{left:0}.uk-offcanvas-flip .uk-offcanvas-reveal .uk-offcanvas-bar{left:auto;right:0}.uk-open>.uk-offcanvas-reveal{width:270px}@media (min-width:640px){.uk-open>.uk-offcanvas-reveal{width:350px}}.uk-offcanvas-flip .uk-offcanvas-reveal{right:0;left:auto}.uk-offcanvas-close{position:absolute;z-index:1000;top:5px;right:5px;padding:5px}@media (min-width:640px){.uk-offcanvas-close{top:10px;right:10px}}.uk-offcanvas-close:first-child+*{margin-top:0}.uk-offcanvas-overlay{width:100vw;touch-action:none}.uk-offcanvas-overlay::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(0,0,0,.1);opacity:0;transition:opacity .15s linear}.uk-offcanvas-overlay.uk-open::before{opacity:1}.uk-offcanvas-container,.uk-offcanvas-page{overflow-x:hidden}.uk-offcanvas-container{position:relative;left:0;transition:left .3s ease-out;box-sizing:border-box;width:100%}:not(.uk-offcanvas-flip).uk-offcanvas-container-animation{left:270px}.uk-offcanvas-flip.uk-offcanvas-container-animation{left:-270px}@media (min-width:640px){:not(.uk-offcanvas-flip).uk-offcanvas-container-animation{left:350px}.uk-offcanvas-flip.uk-offcanvas-container-animation{left:-350px}}.uk-switcher{margin:0;padding:0;list-style:none}.uk-switcher>:not(.uk-active){display:none}.uk-switcher>*>:last-child{margin-bottom:0}.uk-leader{overflow:hidden}.uk-leader-fill::after{display:inline-block;margin-left:15px;width:0;content:attr(data-fill);white-space:nowrap}.uk-leader-fill.uk-leader-hide::after{display:none}:root{--uk-leader-fill-content:.}.uk-notification{position:fixed;top:10px;left:10px;z-index:1040;box-sizing:border-box;width:350px}.uk-notification-bottom-right,.uk-notification-top-right{left:auto;right:10px}.uk-notification-bottom-center,.uk-notification-top-center{left:50%;margin-left:-175px}.uk-notification-bottom-center,.uk-notification-bottom-left,.uk-notification-bottom-right{top:auto;bottom:10px}@media (max-width:639px){.uk-notification{left:10px;right:10px;width:auto;margin:0}}.uk-notification-message{position:relative;padding:15px;background:#f8f8f8;color:#666;font-size:1.25rem;line-height:1.4;cursor:pointer}*+.uk-notification-message{margin-top:10px}.uk-notification-close{display:none;position:absolute;top:20px;right:15px}.uk-notification-message:hover .uk-notification-close{display:block}.uk-notification-message-primary{color:#1e87f0}.uk-notification-message-success{color:#32d296}.uk-notification-message-warning{color:#faa05a}.uk-notification-message-danger{color:#f0506e}.uk-tooltip{display:none;position:absolute;z-index:1030;--uk-position-offset:10px;--uk-position-viewport-offset:10;top:0;box-sizing:border-box;max-width:200px;padding:3px 6px;background:#666;border-radius:2px;color:#fff;font-size:12px}.uk-tooltip.uk-active{display:block}.uk-sortable{position:relative}.uk-sortable>:last-child{margin-bottom:0}.uk-sortable-drag{position:fixed!important;z-index:1050!important;pointer-events:none}.uk-sortable-placeholder{opacity:0;pointer-events:none}.uk-sortable-empty{min-height:50px}.uk-sortable-handle:hover{cursor:move}.uk-countdown-number{font-variant-numeric:tabular-nums;font-size:2rem;line-height:.8}@media (min-width:640px){.uk-countdown-number{font-size:4rem}}@media (min-width:960px){.uk-countdown-number{font-size:6rem}}.uk-countdown-separator{font-size:1rem;line-height:1.6}@media (min-width:640px){.uk-countdown-separator{font-size:2rem}}@media (min-width:960px){.uk-countdown-separator{font-size:3rem}}.uk-grid{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none}.uk-grid>*{margin:0}.uk-grid>*>:last-child{margin-bottom:0}.uk-grid{margin-left:-30px}.uk-grid>*{padding-left:30px}*+.uk-grid-margin,.uk-grid+.uk-grid,.uk-grid>.uk-grid-margin{margin-top:30px}@media (min-width:1200px){.uk-grid{margin-left:-40px}.uk-grid>*{padding-left:40px}*+.uk-grid-margin,.uk-grid+.uk-grid,.uk-grid>.uk-grid-margin{margin-top:40px}}.uk-grid-column-small,.uk-grid-small{margin-left:-15px}.uk-grid-column-small>*,.uk-grid-small>*{padding-left:15px}*+.uk-grid-margin-small,.uk-grid+.uk-grid-row-small,.uk-grid+.uk-grid-small,.uk-grid-row-small>.uk-grid-margin,.uk-grid-small>.uk-grid-margin{margin-top:15px}.uk-grid-column-medium,.uk-grid-medium{margin-left:-30px}.uk-grid-column-medium>*,.uk-grid-medium>*{padding-left:30px}*+.uk-grid-margin-medium,.uk-grid+.uk-grid-medium,.uk-grid+.uk-grid-row-medium,.uk-grid-medium>.uk-grid-margin,.uk-grid-row-medium>.uk-grid-margin{margin-top:30px}.uk-grid-column-large,.uk-grid-large{margin-left:-40px}.uk-grid-column-large>*,.uk-grid-large>*{padding-left:40px}*+.uk-grid-margin-large,.uk-grid+.uk-grid-large,.uk-grid+.uk-grid-row-large,.uk-grid-large>.uk-grid-margin,.uk-grid-row-large>.uk-grid-margin{margin-top:40px}@media (min-width:1200px){.uk-grid-column-large,.uk-grid-large{margin-left:-70px}.uk-grid-column-large>*,.uk-grid-large>*{padding-left:70px}*+.uk-grid-margin-large,.uk-grid+.uk-grid-large,.uk-grid+.uk-grid-row-large,.uk-grid-large>.uk-grid-margin,.uk-grid-row-large>.uk-grid-margin{margin-top:70px}}.uk-grid-collapse,.uk-grid-column-collapse{margin-left:0}.uk-grid-collapse>*,.uk-grid-column-collapse>*{padding-left:0}.uk-grid+.uk-grid-collapse,.uk-grid+.uk-grid-row-collapse,.uk-grid-collapse>.uk-grid-margin,.uk-grid-row-collapse>.uk-grid-margin{margin-top:0}.uk-grid-divider>*{position:relative}.uk-grid-divider>:not(.uk-first-column)::before{content:"";position:absolute;top:0;bottom:0;border-left:1px solid #e5e5e5}.uk-grid-divider.uk-grid-stack>.uk-grid-margin::before{content:"";position:absolute;left:0;right:0;border-top:1px solid #e5e5e5}.uk-grid-divider{margin-left:-60px}.uk-grid-divider>*{padding-left:60px}.uk-grid-divider>:not(.uk-first-column)::before{left:30px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin{margin-top:60px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin::before{top:-30px;left:60px}@media (min-width:1200px){.uk-grid-divider{margin-left:-80px}.uk-grid-divider>*{padding-left:80px}.uk-grid-divider>:not(.uk-first-column)::before{left:40px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin{margin-top:80px}.uk-grid-divider.uk-grid-stack>.uk-grid-margin::before{top:-40px;left:80px}}.uk-grid-divider.uk-grid-column-small,.uk-grid-divider.uk-grid-small{margin-left:-30px}.uk-grid-divider.uk-grid-column-small>*,.uk-grid-divider.uk-grid-small>*{padding-left:30px}.uk-grid-divider.uk-grid-column-small>:not(.uk-first-column)::before,.uk-grid-divider.uk-grid-small>:not(.uk-first-column)::before{left:15px}.uk-grid-divider.uk-grid-row-small.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-small.uk-grid-stack>.uk-grid-margin{margin-top:30px}.uk-grid-divider.uk-grid-small.uk-grid-stack>.uk-grid-margin::before{top:-15px;left:30px}.uk-grid-divider.uk-grid-row-small.uk-grid-stack>.uk-grid-margin::before{top:-15px}.uk-grid-divider.uk-grid-column-small.uk-grid-stack>.uk-grid-margin::before{left:30px}.uk-grid-divider.uk-grid-column-medium,.uk-grid-divider.uk-grid-medium{margin-left:-60px}.uk-grid-divider.uk-grid-column-medium>*,.uk-grid-divider.uk-grid-medium>*{padding-left:60px}.uk-grid-divider.uk-grid-column-medium>:not(.uk-first-column)::before,.uk-grid-divider.uk-grid-medium>:not(.uk-first-column)::before{left:30px}.uk-grid-divider.uk-grid-medium.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-medium.uk-grid-stack>.uk-grid-margin{margin-top:60px}.uk-grid-divider.uk-grid-medium.uk-grid-stack>.uk-grid-margin::before{top:-30px;left:60px}.uk-grid-divider.uk-grid-row-medium.uk-grid-stack>.uk-grid-margin::before{top:-30px}.uk-grid-divider.uk-grid-column-medium.uk-grid-stack>.uk-grid-margin::before{left:60px}.uk-grid-divider.uk-grid-column-large,.uk-grid-divider.uk-grid-large{margin-left:-80px}.uk-grid-divider.uk-grid-column-large>*,.uk-grid-divider.uk-grid-large>*{padding-left:80px}.uk-grid-divider.uk-grid-column-large>:not(.uk-first-column)::before,.uk-grid-divider.uk-grid-large>:not(.uk-first-column)::before{left:40px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin{margin-top:80px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin::before{top:-40px;left:80px}.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin::before{top:-40px}.uk-grid-divider.uk-grid-column-large.uk-grid-stack>.uk-grid-margin::before{left:80px}@media (min-width:1200px){.uk-grid-divider.uk-grid-column-large,.uk-grid-divider.uk-grid-large{margin-left:-140px}.uk-grid-divider.uk-grid-column-large>*,.uk-grid-divider.uk-grid-large>*{padding-left:140px}.uk-grid-divider.uk-grid-column-large>:not(.uk-first-column)::before,.uk-grid-divider.uk-grid-large>:not(.uk-first-column)::before{left:70px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin,.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin{margin-top:140px}.uk-grid-divider.uk-grid-large.uk-grid-stack>.uk-grid-margin::before{top:-70px;left:140px}.uk-grid-divider.uk-grid-row-large.uk-grid-stack>.uk-grid-margin::before{top:-70px}.uk-grid-divider.uk-grid-column-large.uk-grid-stack>.uk-grid-margin::before{left:140px}}.uk-grid-item-match,.uk-grid-match>*{display:flex;flex-wrap:wrap}.uk-grid-item-match>:not([class*=uk-width]),.uk-grid-match>*>:not([class*=uk-width]){box-sizing:border-box;width:100%;flex:auto}.uk-nav,.uk-nav ul{margin:0;padding:0;list-style:none}.uk-nav li>a{display:flex;align-items:center;column-gap:.25em;text-decoration:none}.uk-nav>li>a{padding:5px 0}ul.uk-nav-sub{padding:5px 0 5px 15px}.uk-nav-sub ul{padding-left:15px}.uk-nav-sub a{padding:2px 0}.uk-nav-parent-icon{margin-left:auto}.uk-nav>li>a[aria-expanded=true] .uk-nav-parent-icon{transform:rotate(180deg)}.uk-nav-header{padding:5px 0;text-transform:uppercase;font-size:.875rem}.uk-nav-header:not(:first-child){margin-top:20px}.uk-nav .uk-nav-divider{margin:5px 0}.uk-nav-default{font-size:.875rem;line-height:1.5}.uk-nav-default>li>a{color:#999}.uk-nav-default>li>a:hover{color:#666}.uk-nav-default>li.uk-active>a{color:#333}.uk-nav-default .uk-nav-subtitle{font-size:12px}.uk-nav-default .uk-nav-header{color:#333}.uk-nav-default .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-default .uk-nav-sub{font-size:.875rem;line-height:1.5}.uk-nav-default .uk-nav-sub a{color:#999}.uk-nav-default .uk-nav-sub a:hover{color:#666}.uk-nav-default .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-primary{font-size:1.5rem;line-height:1.5}.uk-nav-primary>li>a{color:#999}.uk-nav-primary>li>a:hover{color:#666}.uk-nav-primary>li.uk-active>a{color:#333}.uk-nav-primary .uk-nav-subtitle{font-size:1.25rem}.uk-nav-primary .uk-nav-header{color:#333}.uk-nav-primary .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-primary .uk-nav-sub{font-size:1.25rem;line-height:1.5}.uk-nav-primary .uk-nav-sub a{color:#999}.uk-nav-primary .uk-nav-sub a:hover{color:#666}.uk-nav-primary .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-secondary{font-size:16px;line-height:1.5}.uk-nav-secondary>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){margin-top:0}.uk-nav-secondary>li>a{color:#333;padding:10px 10px}.uk-nav-secondary>li>a:hover{color:#333;background-color:#f8f8f8}.uk-nav-secondary>li.uk-active>a{color:#333;background-color:#f8f8f8}.uk-nav-secondary .uk-nav-subtitle{font-size:.875rem;color:#999}.uk-nav-secondary>li>a:hover .uk-nav-subtitle{color:#666}.uk-nav-secondary>li.uk-active>a .uk-nav-subtitle{color:#333}.uk-nav-secondary .uk-nav-header{color:#333}.uk-nav-secondary .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-nav-secondary .uk-nav-sub{font-size:.875rem;line-height:1.5}.uk-nav-secondary .uk-nav-sub a{color:#999}.uk-nav-secondary .uk-nav-sub a:hover{color:#666}.uk-nav-secondary .uk-nav-sub li.uk-active>a{color:#333}.uk-nav-center{text-align:center}.uk-nav-center li>a{justify-content:center}.uk-nav-center .uk-nav-sub,.uk-nav-center .uk-nav-sub ul{padding-left:0}.uk-nav-center .uk-nav-parent-icon{margin-left:4px}.uk-nav.uk-nav-divider>:not(.uk-nav-header,.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){margin-top:5px;padding-top:5px;border-top:1px solid #e5e5e5}.uk-navbar{display:flex;position:relative}.uk-navbar-container:not(.uk-navbar-transparent){background:#f8f8f8}.uk-navbar-left,.uk-navbar-right,[class*=uk-navbar-center]{display:flex;gap:30px;align-items:center}.uk-navbar-right{margin-left:auto}.uk-navbar-center:only-child{margin-left:auto;margin-right:auto;position:relative}.uk-navbar-center:not(:only-child){position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max-content;box-sizing:border-box;z-index:990}.uk-navbar-center-left,.uk-navbar-center-right{position:absolute;top:0}.uk-navbar-center-left{right:calc(100% + 30px)}.uk-navbar-center-right{left:calc(100% + 30px)}[class*=uk-navbar-center-]{width:max-content;box-sizing:border-box}.uk-navbar-nav{display:flex;gap:30px;margin:0;padding:0;list-style:none}.uk-navbar-center:only-child,.uk-navbar-left,.uk-navbar-right{flex-wrap:wrap}.uk-navbar-item,.uk-navbar-nav>li>a,.uk-navbar-toggle{display:flex;justify-content:center;align-items:center;column-gap:.25em;box-sizing:border-box;min-height:80px;font-size:.875rem;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";text-decoration:none}.uk-navbar-nav>li>a{padding:0 0;color:#999;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color}.uk-navbar-nav>li:hover>a,.uk-navbar-nav>li>a[aria-expanded=true]{color:#666}.uk-navbar-nav>li>a:active{color:#333}.uk-navbar-nav>li.uk-active>a{color:#333}.uk-navbar-parent-icon{margin-left:4px}.uk-navbar-nav>li>a[aria-expanded=true] .uk-navbar-parent-icon{transform:rotate(180deg)}.uk-navbar-item{padding:0 0;color:#666}.uk-navbar-item>:last-child{margin-bottom:0}.uk-navbar-toggle{padding:0 0;color:#999}.uk-navbar-toggle:hover,.uk-navbar-toggle[aria-expanded=true]{color:#666;text-decoration:none}.uk-navbar-subtitle{font-size:.875rem}.uk-navbar-justify .uk-navbar-item,.uk-navbar-justify .uk-navbar-left,.uk-navbar-justify .uk-navbar-nav,.uk-navbar-justify .uk-navbar-nav>li,.uk-navbar-justify .uk-navbar-right,.uk-navbar-justify .uk-navbar-toggle{flex-grow:1}.uk-navbar-dropdown{display:none;position:absolute;z-index:1020;--uk-position-offset:15px;--uk-position-shift-offset:0;--uk-position-viewport-offset:15px;box-sizing:border-box;width:200px;padding:25px;background:#fff;color:#666;box-shadow:0 5px 12px rgba(0,0,0,.15)}.uk-navbar-dropdown.uk-open{display:block}.uk-navbar-dropdown>:last-child{margin-bottom:0}.uk-navbar-dropdown-grid{margin-left:-30px}.uk-navbar-dropdown-grid>*{padding-left:30px}.uk-navbar-dropdown-grid>.uk-grid-margin{margin-top:30px}.uk-navbar-dropdown-stack .uk-navbar-dropdown-grid>*{width:100%!important}.uk-navbar-dropdown-width-2:not(.uk-navbar-dropdown-stack){width:400px}.uk-navbar-dropdown-width-3:not(.uk-navbar-dropdown-stack){width:600px}.uk-navbar-dropdown-width-4:not(.uk-navbar-dropdown-stack){width:800px}.uk-navbar-dropdown-width-5:not(.uk-navbar-dropdown-stack){width:1000px}.uk-navbar-dropdown-large{--uk-position-shift-offset:0;padding:40px}.uk-navbar-dropdown-dropbar{width:auto;background:0 0;padding:25px 0 25px 0;--uk-position-offset:0;--uk-position-shift-offset:0;--uk-position-viewport-offset:15px;box-shadow:none}@media (min-width:640px){.uk-navbar-dropdown-dropbar{--uk-position-viewport-offset:30px}}@media (min-width:960px){.uk-navbar-dropdown-dropbar{--uk-position-viewport-offset:40px}}.uk-navbar-dropdown-dropbar-large{--uk-position-shift-offset:0;padding-top:40px;padding-bottom:40px}.uk-navbar-dropdown-nav{font-size:.875rem}.uk-navbar-dropdown-nav>li>a{color:#999}.uk-navbar-dropdown-nav>li>a:hover{color:#666}.uk-navbar-dropdown-nav>li.uk-active>a{color:#333}.uk-navbar-dropdown-nav .uk-nav-subtitle{font-size:12px}.uk-navbar-dropdown-nav .uk-nav-header{color:#333}.uk-navbar-dropdown-nav .uk-nav-divider{border-top:1px solid #e5e5e5}.uk-navbar-dropdown-nav .uk-nav-sub a{color:#999}.uk-navbar-dropdown-nav .uk-nav-sub a:hover{color:#666}.uk-navbar-dropdown-nav .uk-nav-sub li.uk-active>a{color:#333}.uk-navbar-dropbar{display:block!important;z-index:980;padding:0;left:0;right:0}.uk-subnav{display:flex;flex-wrap:wrap;align-items:center;margin-left:-20px;padding:0;list-style:none}.uk-subnav>*{flex:none;padding-left:20px;position:relative}.uk-subnav>*>:first-child{display:flex;align-items:center;column-gap:.25em;color:#999;font-size:.875rem;text-transform:uppercase;transition:.1s ease-in-out;transition-property:color,background-color}.uk-subnav>*>a:hover{color:#666;text-decoration:none}.uk-subnav>.uk-active>a{color:#333}.uk-subnav-divider{margin-left:-41px}.uk-subnav-divider>*{display:flex;align-items:center}.uk-subnav-divider>::before{content:"";height:1.5em;margin-left:0;margin-right:20px;border-left:1px solid transparent}.uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before{border-left-color:#e5e5e5}.uk-subnav-pill>*>:first-child{padding:5px 10px;background:0 0;color:#999}.uk-subnav-pill>*>a:hover{background-color:#f8f8f8;color:#666}.uk-subnav-pill>*>a:active{background-color:#f8f8f8;color:#666}.uk-subnav-pill>.uk-active>a{background-color:#1e87f0;color:#fff}.uk-subnav>.uk-disabled>a{color:#999}.uk-breadcrumb{padding:0;list-style:none}.uk-breadcrumb>*{display:contents}.uk-breadcrumb>*>*{font-size:.875rem;color:#999}.uk-breadcrumb>*>:hover{color:#666;text-decoration:none}.uk-breadcrumb>:last-child>a:not([href]),.uk-breadcrumb>:last-child>span{color:#666}.uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before{content:"/";display:inline-block;margin:0 20px 0 calc(20px - 4px);font-size:.875rem;color:#999}.uk-pagination{display:flex;flex-wrap:wrap;margin-left:0;padding:0;list-style:none}.uk-pagination>*{flex:none;padding-left:0;position:relative}.uk-pagination>*>*{display:block;padding:5px 10px;color:#999;transition:color .1s ease-in-out}.uk-pagination>*>:hover{color:#666;text-decoration:none}.uk-pagination>.uk-active>*{color:#666}.uk-pagination>.uk-disabled>*{color:#999}.uk-tab{display:flex;flex-wrap:wrap;margin-left:-20px;padding:0;list-style:none;position:relative}.uk-tab::before{content:"";position:absolute;bottom:0;left:20px;right:0;border-bottom:1px solid #e5e5e5}.uk-tab>*{flex:none;padding-left:20px;position:relative}.uk-tab>*>a{display:flex;align-items:center;column-gap:.25em;justify-content:center;padding:5px 10px;color:#999;border-bottom:1px solid transparent;font-size:.875rem;text-transform:uppercase;transition:color .1s ease-in-out}.uk-tab>*>a:hover{color:#666;text-decoration:none}.uk-tab>.uk-active>a{color:#333;border-color:#1e87f0}.uk-tab>.uk-disabled>a{color:#999}.uk-tab-bottom::before{top:0;bottom:auto}.uk-tab-bottom>*>a{border-top:1px solid transparent;border-bottom:none}.uk-tab-left,.uk-tab-right{flex-direction:column;margin-left:0}.uk-tab-left>*,.uk-tab-right>*{padding-left:0}.uk-tab-left::before{top:0;bottom:0;left:auto;right:0;border-left:1px solid #e5e5e5;border-bottom:none}.uk-tab-right::before{top:0;bottom:0;left:0;right:auto;border-left:1px solid #e5e5e5;border-bottom:none}.uk-tab-left>*>a{justify-content:left;border-right:1px solid transparent;border-bottom:none}.uk-tab-right>*>a{justify-content:left;border-left:1px solid transparent;border-bottom:none}.uk-tab .uk-dropdown{margin-left:30px}.uk-slidenav{padding:5px 10px;color:rgba(102,102,102,.5);transition:color .1s ease-in-out}.uk-slidenav:hover{color:rgba(102,102,102,.9)}.uk-slidenav:active{color:rgba(102,102,102,.5)}.uk-slidenav-large{padding:10px 10px}.uk-slidenav-container{display:flex}.uk-dotnav{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;margin-left:-12px}.uk-dotnav>*{flex:none;padding-left:12px}.uk-dotnav>*>*{display:block;box-sizing:border-box;width:10px;height:10px;border-radius:50%;background:0 0;text-indent:100%;overflow:hidden;white-space:nowrap;border:1px solid rgba(102,102,102,.4);transition:.2s ease-in-out;transition-property:background-color,border-color}.uk-dotnav>*>:hover{background-color:rgba(102,102,102,.6);border-color:transparent}.uk-dotnav>*>:active{background-color:rgba(102,102,102,.2);border-color:transparent}.uk-dotnav>.uk-active>*{background-color:rgba(102,102,102,.6);border-color:transparent}.uk-dotnav-vertical{flex-direction:column;margin-left:0;margin-top:-12px}.uk-dotnav-vertical>*{padding-left:0;padding-top:12px}.uk-thumbnav{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;margin-left:-15px}.uk-thumbnav>*{padding-left:15px}.uk-thumbnav>*>*{display:inline-block;position:relative}.uk-thumbnav>*>::after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(255,255,255,.4);transition:background-color .1s ease-in-out}.uk-thumbnav>*>:hover::after{background-color:transparent}.uk-thumbnav>.uk-active>::after{background-color:transparent}.uk-thumbnav-vertical{flex-direction:column;margin-left:0;margin-top:-15px}.uk-thumbnav-vertical>*{padding-left:0;padding-top:15px}.uk-iconnav{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;margin-left:-10px}.uk-iconnav>*{padding-left:10px}.uk-iconnav>*>a{display:flex;align-items:center;column-gap:.25em;line-height:0;color:#999;text-decoration:none;font-size:.875rem;transition:.1s ease-in-out;transition-property:color,background-color}.uk-iconnav>*>a:hover{color:#666}.uk-iconnav>.uk-active>a{color:#666}.uk-iconnav-vertical{flex-direction:column;margin-left:0;margin-top:-10px}.uk-iconnav-vertical>*{padding-left:0;padding-top:10px}.uk-lightbox{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1010;background:#000;opacity:0;transition:opacity .15s linear;touch-action:pinch-zoom}.uk-lightbox.uk-open{display:block;opacity:1}.uk-lightbox :focus{outline-color:rgba(255,255,255,.7)}.uk-lightbox :focus-visible{outline-color:rgba(255,255,255,.7)}.uk-lightbox-page{overflow:hidden}.uk-lightbox-items>*{position:absolute;top:0;right:0;bottom:0;left:0;display:none;justify-content:center;align-items:center;color:rgba(255,255,255,.7);will-change:transform,opacity}.uk-lightbox-items>*>*{max-width:100vw;max-height:100vh}.uk-lightbox-items>*>:not(iframe){width:auto;height:auto}.uk-lightbox-items>.uk-active{display:flex}.uk-lightbox-toolbar{padding:10px 10px;background:rgba(0,0,0,.3);color:rgba(255,255,255,.7)}.uk-lightbox-toolbar>*{color:rgba(255,255,255,.7)}.uk-lightbox-toolbar-icon{padding:5px;color:rgba(255,255,255,.7)}.uk-lightbox-toolbar-icon:hover{color:#fff}.uk-lightbox-button{box-sizing:border-box;width:50px;height:50px;background:rgba(0,0,0,.3);color:rgba(255,255,255,.7);display:inline-flex;justify-content:center;align-items:center}.uk-lightbox-button:hover{color:#fff}.uk-lightbox-caption:empty{display:none}.uk-lightbox-iframe{width:80%;height:80%}[class*=uk-animation-]{animation:.5s ease-out both}.uk-animation-fade{animation-name:uk-fade;animation-duration:.8s;animation-timing-function:linear}.uk-animation-scale-up{animation-name:uk-fade,uk-scale-up}.uk-animation-scale-down{animation-name:uk-fade,uk-scale-down}.uk-animation-slide-top{animation-name:uk-fade,uk-slide-top}.uk-animation-slide-bottom{animation-name:uk-fade,uk-slide-bottom}.uk-animation-slide-left{animation-name:uk-fade,uk-slide-left}.uk-animation-slide-right{animation-name:uk-fade,uk-slide-right}.uk-animation-slide-top-small{animation-name:uk-fade,uk-slide-top-small}.uk-animation-slide-bottom-small{animation-name:uk-fade,uk-slide-bottom-small}.uk-animation-slide-left-small{animation-name:uk-fade,uk-slide-left-small}.uk-animation-slide-right-small{animation-name:uk-fade,uk-slide-right-small}.uk-animation-slide-top-medium{animation-name:uk-fade,uk-slide-top-medium}.uk-animation-slide-bottom-medium{animation-name:uk-fade,uk-slide-bottom-medium}.uk-animation-slide-left-medium{animation-name:uk-fade,uk-slide-left-medium}.uk-animation-slide-right-medium{animation-name:uk-fade,uk-slide-right-medium}.uk-animation-kenburns{animation-name:uk-kenburns;animation-duration:15s}.uk-animation-shake{animation-name:uk-shake}.uk-animation-stroke{animation-name:uk-stroke;animation-duration:2s;stroke-dasharray:var(--uk-animation-stroke)}.uk-animation-reverse{animation-direction:reverse;animation-timing-function:ease-in}.uk-animation-fast{animation-duration:.1s}.uk-animation-toggle:not(:hover):not(:focus) [class*=uk-animation-]{animation-name:none}@keyframes uk-fade{0%{opacity:0}100%{opacity:1}}@keyframes uk-scale-up{0%{transform:scale(.9)}100%{transform:scale(1)}}@keyframes uk-scale-down{0%{transform:scale(1.1)}100%{transform:scale(1)}}@keyframes uk-slide-top{0%{transform:translateY(-100%)}100%{transform:translateY(0)}}@keyframes uk-slide-bottom{0%{transform:translateY(100%)}100%{transform:translateY(0)}}@keyframes uk-slide-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes uk-slide-right{0%{transform:translateX(100%)}100%{transform:translateX(0)}}@keyframes uk-slide-top-small{0%{transform:translateY(-10px)}100%{transform:translateY(0)}}@keyframes uk-slide-bottom-small{0%{transform:translateY(10px)}100%{transform:translateY(0)}}@keyframes uk-slide-left-small{0%{transform:translateX(-10px)}100%{transform:translateX(0)}}@keyframes uk-slide-right-small{0%{transform:translateX(10px)}100%{transform:translateX(0)}}@keyframes uk-slide-top-medium{0%{transform:translateY(-50px)}100%{transform:translateY(0)}}@keyframes uk-slide-bottom-medium{0%{transform:translateY(50px)}100%{transform:translateY(0)}}@keyframes uk-slide-left-medium{0%{transform:translateX(-50px)}100%{transform:translateX(0)}}@keyframes uk-slide-right-medium{0%{transform:translateX(50px)}100%{transform:translateX(0)}}@keyframes uk-kenburns{0%{transform:scale(1)}100%{transform:scale(1.2)}}@keyframes uk-shake{0%,100%{transform:translateX(0)}10%{transform:translateX(-9px)}20%{transform:translateX(8px)}30%{transform:translateX(-7px)}40%{transform:translateX(6px)}50%{transform:translateX(-5px)}60%{transform:translateX(4px)}70%{transform:translateX(-3px)}80%{transform:translateX(2px)}90%{transform:translateX(-1px)}}@keyframes uk-stroke{0%{stroke-dashoffset:var(--uk-animation-stroke)}100%{stroke-dashoffset:0}}[class*=uk-child-width]>*{box-sizing:border-box;width:100%}.uk-child-width-1-2>*{width:50%}.uk-child-width-1-3>*{width:calc(100% * 1 / 3.001)}.uk-child-width-1-4>*{width:25%}.uk-child-width-1-5>*{width:20%}.uk-child-width-1-6>*{width:calc(100% * 1 / 6.001)}.uk-child-width-auto>*{width:auto}.uk-child-width-expand>:not([class*=uk-width]){flex:1;min-width:1px}@media (min-width:640px){.uk-child-width-1-1\@s>*{width:100%}.uk-child-width-1-2\@s>*{width:50%}.uk-child-width-1-3\@s>*{width:calc(100% * 1 / 3.001)}.uk-child-width-1-4\@s>*{width:25%}.uk-child-width-1-5\@s>*{width:20%}.uk-child-width-1-6\@s>*{width:calc(100% * 1 / 6.001)}.uk-child-width-auto\@s>*{width:auto}.uk-child-width-expand\@s>:not([class*=uk-width]){flex:1;min-width:1px}}@media (min-width:960px){.uk-child-width-1-1\@m>*{width:100%}.uk-child-width-1-2\@m>*{width:50%}.uk-child-width-1-3\@m>*{width:calc(100% * 1 / 3.001)}.uk-child-width-1-4\@m>*{width:25%}.uk-child-width-1-5\@m>*{width:20%}.uk-child-width-1-6\@m>*{width:calc(100% * 1 / 6.001)}.uk-child-width-auto\@m>*{width:auto}.uk-child-width-expand\@m>:not([class*=uk-width]){flex:1;min-width:1px}}@media (min-width:1200px){.uk-child-width-1-1\@l>*{width:100%}.uk-child-width-1-2\@l>*{width:50%}.uk-child-width-1-3\@l>*{width:calc(100% * 1 / 3.001)}.uk-child-width-1-4\@l>*{width:25%}.uk-child-width-1-5\@l>*{width:20%}.uk-child-width-1-6\@l>*{width:calc(100% * 1 / 6.001)}.uk-child-width-auto\@l>*{width:auto}.uk-child-width-expand\@l>:not([class*=uk-width]){flex:1;min-width:1px}}@media (min-width:1600px){.uk-child-width-1-1\@xl>*{width:100%}.uk-child-width-1-2\@xl>*{width:50%}.uk-child-width-1-3\@xl>*{width:calc(100% * 1 / 3.001)}.uk-child-width-1-4\@xl>*{width:25%}.uk-child-width-1-5\@xl>*{width:20%}.uk-child-width-1-6\@xl>*{width:calc(100% * 1 / 6.001)}.uk-child-width-auto\@xl>*{width:auto}.uk-child-width-expand\@xl>:not([class*=uk-width]){flex:1;min-width:1px}}[class*=uk-width]{box-sizing:border-box;width:100%;max-width:100%}.uk-width-1-2{width:50%}.uk-width-1-3{width:calc(100% * 1 / 3.001)}.uk-width-2-3{width:calc(100% * 2 / 3.001)}.uk-width-1-4{width:25%}.uk-width-3-4{width:75%}.uk-width-1-5{width:20%}.uk-width-2-5{width:40%}.uk-width-3-5{width:60%}.uk-width-4-5{width:80%}.uk-width-1-6{width:calc(100% * 1 / 6.001)}.uk-width-5-6{width:calc(100% * 5 / 6.001)}.uk-width-small{width:150px}.uk-width-medium{width:300px}.uk-width-large{width:450px}.uk-width-xlarge{width:600px}.uk-width-2xlarge{width:750px}.uk-width-auto{width:auto}.uk-width-expand{flex:1;min-width:1px}@media (min-width:640px){.uk-width-1-1\@s{width:100%}.uk-width-1-2\@s{width:50%}.uk-width-1-3\@s{width:calc(100% * 1 / 3.001)}.uk-width-2-3\@s{width:calc(100% * 2 / 3.001)}.uk-width-1-4\@s{width:25%}.uk-width-3-4\@s{width:75%}.uk-width-1-5\@s{width:20%}.uk-width-2-5\@s{width:40%}.uk-width-3-5\@s{width:60%}.uk-width-4-5\@s{width:80%}.uk-width-1-6\@s{width:calc(100% * 1 / 6.001)}.uk-width-5-6\@s{width:calc(100% * 5 / 6.001)}.uk-width-small\@s{width:150px}.uk-width-medium\@s{width:300px}.uk-width-large\@s{width:450px}.uk-width-xlarge\@s{width:600px}.uk-width-2xlarge\@s{width:750px}.uk-width-auto\@s{width:auto}.uk-width-expand\@s{flex:1;min-width:1px}}@media (min-width:960px){.uk-width-1-1\@m{width:100%}.uk-width-1-2\@m{width:50%}.uk-width-1-3\@m{width:calc(100% * 1 / 3.001)}.uk-width-2-3\@m{width:calc(100% * 2 / 3.001)}.uk-width-1-4\@m{width:25%}.uk-width-3-4\@m{width:75%}.uk-width-1-5\@m{width:20%}.uk-width-2-5\@m{width:40%}.uk-width-3-5\@m{width:60%}.uk-width-4-5\@m{width:80%}.uk-width-1-6\@m{width:calc(100% * 1 / 6.001)}.uk-width-5-6\@m{width:calc(100% * 5 / 6.001)}.uk-width-small\@m{width:150px}.uk-width-medium\@m{width:300px}.uk-width-large\@m{width:450px}.uk-width-xlarge\@m{width:600px}.uk-width-2xlarge\@m{width:750px}.uk-width-auto\@m{width:auto}.uk-width-expand\@m{flex:1;min-width:1px}}@media (min-width:1200px){.uk-width-1-1\@l{width:100%}.uk-width-1-2\@l{width:50%}.uk-width-1-3\@l{width:calc(100% * 1 / 3.001)}.uk-width-2-3\@l{width:calc(100% * 2 / 3.001)}.uk-width-1-4\@l{width:25%}.uk-width-3-4\@l{width:75%}.uk-width-1-5\@l{width:20%}.uk-width-2-5\@l{width:40%}.uk-width-3-5\@l{width:60%}.uk-width-4-5\@l{width:80%}.uk-width-1-6\@l{width:calc(100% * 1 / 6.001)}.uk-width-5-6\@l{width:calc(100% * 5 / 6.001)}.uk-width-small\@l{width:150px}.uk-width-medium\@l{width:300px}.uk-width-large\@l{width:450px}.uk-width-xlarge\@l{width:600px}.uk-width-2xlarge\@l{width:750px}.uk-width-auto\@l{width:auto}.uk-width-expand\@l{flex:1;min-width:1px}}@media (min-width:1600px){.uk-width-1-1\@xl{width:100%}.uk-width-1-2\@xl{width:50%}.uk-width-1-3\@xl{width:calc(100% * 1 / 3.001)}.uk-width-2-3\@xl{width:calc(100% * 2 / 3.001)}.uk-width-1-4\@xl{width:25%}.uk-width-3-4\@xl{width:75%}.uk-width-1-5\@xl{width:20%}.uk-width-2-5\@xl{width:40%}.uk-width-3-5\@xl{width:60%}.uk-width-4-5\@xl{width:80%}.uk-width-1-6\@xl{width:calc(100% * 1 / 6.001)}.uk-width-5-6\@xl{width:calc(100% * 5 / 6.001)}.uk-width-small\@xl{width:150px}.uk-width-medium\@xl{width:300px}.uk-width-large\@xl{width:450px}.uk-width-xlarge\@xl{width:600px}.uk-width-2xlarge\@xl{width:750px}.uk-width-auto\@xl{width:auto}.uk-width-expand\@xl{flex:1;min-width:1px}}.uk-width-max-content{width:max-content}.uk-width-min-content{width:min-content}[class*=uk-height]{box-sizing:border-box}.uk-height-1-1{height:100%}.uk-height-viewport{min-height:100vh}.uk-height-viewport-2{min-height:200vh}.uk-height-viewport-3{min-height:300vh}.uk-height-viewport-4{min-height:400vh}.uk-height-small{height:150px}.uk-height-medium{height:300px}.uk-height-large{height:450px}.uk-height-max-small{max-height:150px}.uk-height-max-medium{max-height:300px}.uk-height-max-large{max-height:450px}.uk-text-lead{font-size:1.5rem;line-height:1.5;color:#333}.uk-text-meta{font-size:.875rem;line-height:1.4;color:#999}.uk-text-meta a{color:#999}.uk-text-meta a:hover{color:#666;text-decoration:none}.uk-text-small{font-size:.875rem;line-height:1.5}.uk-text-large{font-size:1.5rem;line-height:1.5}.uk-text-default{font-size:16px;line-height:1.5}.uk-text-light{font-weight:300}.uk-text-normal{font-weight:400}.uk-text-bold{font-weight:700}.uk-text-lighter{font-weight:lighter}.uk-text-bolder{font-weight:bolder}.uk-text-italic{font-style:italic}.uk-text-capitalize{text-transform:capitalize!important}.uk-text-uppercase{text-transform:uppercase!important}.uk-text-lowercase{text-transform:lowercase!important}.uk-text-decoration-none{text-decoration:none!important}.uk-text-muted{color:#999!important}.uk-text-emphasis{color:#333!important}.uk-text-primary{color:#1e87f0!important}.uk-text-secondary{color:#222!important}.uk-text-success{color:#32d296!important}.uk-text-warning{color:#faa05a!important}.uk-text-danger{color:#f0506e!important}.uk-text-background{-webkit-background-clip:text;color:transparent!important;display:inline-block;background-color:#1e87f0}.uk-text-left{text-align:left!important}.uk-text-right{text-align:right!important}.uk-text-center{text-align:center!important}.uk-text-justify{text-align:justify!important}@media (min-width:640px){.uk-text-left\@s{text-align:left!important}.uk-text-right\@s{text-align:right!important}.uk-text-center\@s{text-align:center!important}}@media (min-width:960px){.uk-text-left\@m{text-align:left!important}.uk-text-right\@m{text-align:right!important}.uk-text-center\@m{text-align:center!important}}@media (min-width:1200px){.uk-text-left\@l{text-align:left!important}.uk-text-right\@l{text-align:right!important}.uk-text-center\@l{text-align:center!important}}@media (min-width:1600px){.uk-text-left\@xl{text-align:left!important}.uk-text-right\@xl{text-align:right!important}.uk-text-center\@xl{text-align:center!important}}.uk-text-top{vertical-align:top!important}.uk-text-middle{vertical-align:middle!important}.uk-text-bottom{vertical-align:bottom!important}.uk-text-baseline{vertical-align:baseline!important}.uk-text-nowrap{white-space:nowrap}.uk-text-truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.uk-text-truncate,th.uk-text-truncate{max-width:0}.uk-text-break{overflow-wrap:break-word}td.uk-text-break,th.uk-text-break{word-break:break-word}[class*=uk-column-]{column-gap:30px}@media (min-width:1200px){[class*=uk-column-]{column-gap:40px}}[class*=uk-column-] img{transform:translate3d(0,0,0)}.uk-column-divider{column-rule:1px solid #e5e5e5;column-gap:60px}@media (min-width:1200px){.uk-column-divider{column-gap:80px}}.uk-column-1-2{column-count:2}.uk-column-1-3{column-count:3}.uk-column-1-4{column-count:4}.uk-column-1-5{column-count:5}.uk-column-1-6{column-count:6}@media (min-width:640px){.uk-column-1-2\@s{column-count:2}.uk-column-1-3\@s{column-count:3}.uk-column-1-4\@s{column-count:4}.uk-column-1-5\@s{column-count:5}.uk-column-1-6\@s{column-count:6}}@media (min-width:960px){.uk-column-1-2\@m{column-count:2}.uk-column-1-3\@m{column-count:3}.uk-column-1-4\@m{column-count:4}.uk-column-1-5\@m{column-count:5}.uk-column-1-6\@m{column-count:6}}@media (min-width:1200px){.uk-column-1-2\@l{column-count:2}.uk-column-1-3\@l{column-count:3}.uk-column-1-4\@l{column-count:4}.uk-column-1-5\@l{column-count:5}.uk-column-1-6\@l{column-count:6}}@media (min-width:1600px){.uk-column-1-2\@xl{column-count:2}.uk-column-1-3\@xl{column-count:3}.uk-column-1-4\@xl{column-count:4}.uk-column-1-5\@xl{column-count:5}.uk-column-1-6\@xl{column-count:6}}.uk-column-span{column-span:all}[data-uk-cover],[uk-cover]{max-width:none;position:absolute;left:50%;top:50%;--uk-position-translate-x:-50%;--uk-position-translate-y:-50%;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y))}iframe[data-uk-cover],iframe[uk-cover]{pointer-events:none}.uk-cover-container{overflow:hidden;position:relative}.uk-background-default{background-color:#fff}.uk-background-muted{background-color:#f8f8f8}.uk-background-primary{background-color:#1e87f0}.uk-background-secondary{background-color:#222}.uk-background-contain,.uk-background-cover,.uk-background-height-1-1,.uk-background-width-1-1{background-position:50% 50%;background-repeat:no-repeat}.uk-background-cover{background-size:cover}.uk-background-contain{background-size:contain}.uk-background-width-1-1{background-size:100%}.uk-background-height-1-1{background-size:auto 100%}.uk-background-top-left{background-position:0 0}.uk-background-top-center{background-position:50% 0}.uk-background-top-right{background-position:100% 0}.uk-background-center-left{background-position:0 50%}.uk-background-center-center{background-position:50% 50%}.uk-background-center-right{background-position:100% 50%}.uk-background-bottom-left{background-position:0 100%}.uk-background-bottom-center{background-position:50% 100%}.uk-background-bottom-right{background-position:100% 100%}.uk-background-norepeat{background-repeat:no-repeat}.uk-background-fixed{background-attachment:fixed;backface-visibility:hidden}@media (pointer:coarse){.uk-background-fixed{background-attachment:scroll}}@media (max-width:639px){.uk-background-image\@s{background-image:none!important}}@media (max-width:959px){.uk-background-image\@m{background-image:none!important}}@media (max-width:1199px){.uk-background-image\@l{background-image:none!important}}@media (max-width:1599px){.uk-background-image\@xl{background-image:none!important}}.uk-background-blend-multiply{background-blend-mode:multiply}.uk-background-blend-screen{background-blend-mode:screen}.uk-background-blend-overlay{background-blend-mode:overlay}.uk-background-blend-darken{background-blend-mode:darken}.uk-background-blend-lighten{background-blend-mode:lighten}.uk-background-blend-color-dodge{background-blend-mode:color-dodge}.uk-background-blend-color-burn{background-blend-mode:color-burn}.uk-background-blend-hard-light{background-blend-mode:hard-light}.uk-background-blend-soft-light{background-blend-mode:soft-light}.uk-background-blend-difference{background-blend-mode:difference}.uk-background-blend-exclusion{background-blend-mode:exclusion}.uk-background-blend-hue{background-blend-mode:hue}.uk-background-blend-saturation{background-blend-mode:saturation}.uk-background-blend-color{background-blend-mode:color}.uk-background-blend-luminosity{background-blend-mode:luminosity}[class*=uk-align]{display:block;margin-bottom:30px}*+[class*=uk-align]{margin-top:30px}.uk-align-center{margin-left:auto;margin-right:auto}.uk-align-left{margin-top:0;margin-right:30px;float:left}.uk-align-right{margin-top:0;margin-left:30px;float:right}@media (min-width:640px){.uk-align-left\@s{margin-top:0;margin-right:30px;float:left}.uk-align-right\@s{margin-top:0;margin-left:30px;float:right}}@media (min-width:960px){.uk-align-left\@m{margin-top:0;margin-right:30px;float:left}.uk-align-right\@m{margin-top:0;margin-left:30px;float:right}}@media (min-width:1200px){.uk-align-left\@l{margin-top:0;float:left}.uk-align-right\@l{margin-top:0;float:right}.uk-align-left,.uk-align-left\@l,.uk-align-left\@m,.uk-align-left\@s{margin-right:40px}.uk-align-right,.uk-align-right\@l,.uk-align-right\@m,.uk-align-right\@s{margin-left:40px}}@media (min-width:1600px){.uk-align-left\@xl{margin-top:0;margin-right:40px;float:left}.uk-align-right\@xl{margin-top:0;margin-left:40px;float:right}}.uk-svg,.uk-svg:not(.uk-preserve) [fill*='#']:not(.uk-preserve){fill:currentcolor}.uk-svg:not(.uk-preserve) [stroke*='#']:not(.uk-preserve){stroke:currentcolor}.uk-svg{transform:translate(0,0)}.uk-panel{display:flow-root;position:relative;box-sizing:border-box}.uk-panel>:last-child{margin-bottom:0}.uk-panel-scrollable{height:170px;padding:10px;border:1px solid #e5e5e5;overflow:auto;-webkit-overflow-scrolling:touch;resize:both}.uk-clearfix::before{content:"";display:table-cell}.uk-clearfix::after{content:"";display:table;clear:both}.uk-float-left{float:left}.uk-float-right{float:right}[class*=uk-float-]{max-width:100%}.uk-overflow-hidden{overflow:hidden}.uk-overflow-auto{overflow:auto;-webkit-overflow-scrolling:touch}.uk-overflow-auto>:last-child{margin-bottom:0}.uk-box-sizing-content{box-sizing:content-box}.uk-box-sizing-border{box-sizing:border-box}.uk-resize{resize:both}.uk-resize-horizontal{resize:horizontal}.uk-resize-vertical{resize:vertical}.uk-display-block{display:block!important}.uk-display-inline{display:inline!important}.uk-display-inline-block{display:inline-block!important}[class*=uk-inline]{display:inline-block;position:relative;max-width:100%;vertical-align:middle;-webkit-backface-visibility:hidden}.uk-inline-clip{overflow:hidden}.uk-preserve-width,.uk-preserve-width canvas,.uk-preserve-width img,.uk-preserve-width svg,.uk-preserve-width video{max-width:none}.uk-responsive-height,.uk-responsive-width{box-sizing:border-box}.uk-responsive-width{max-width:100%!important;height:auto}.uk-responsive-height{max-height:100%;width:auto;max-width:none}[data-uk-responsive],[uk-responsive]{max-width:100%}.uk-object-cover{object-fit:cover}.uk-object-contain{object-fit:contain}.uk-object-fill{object-fit:fill}.uk-object-none{object-fit:none}.uk-object-scale-down{object-fit:scale-down}.uk-object-top-left{object-position:0 0}.uk-object-top-center{object-position:50% 0}.uk-object-top-right{object-position:100% 0}.uk-object-center-left{object-position:0 50%}.uk-object-center-center{object-position:50% 50%}.uk-object-center-right{object-position:100% 50%}.uk-object-bottom-left{object-position:0 100%}.uk-object-bottom-center{object-position:50% 100%}.uk-object-bottom-right{object-position:100% 100%}.uk-border-circle{border-radius:50%}.uk-border-pill{border-radius:500px}.uk-border-rounded{border-radius:5px}.uk-inline-clip[class*=uk-border-]{-webkit-transform:translateZ(0)}.uk-box-shadow-small{box-shadow:0 2px 8px rgba(0,0,0,.08)}.uk-box-shadow-medium{box-shadow:0 5px 15px rgba(0,0,0,.08)}.uk-box-shadow-large{box-shadow:0 14px 25px rgba(0,0,0,.16)}.uk-box-shadow-xlarge{box-shadow:0 28px 50px rgba(0,0,0,.16)}[class*=uk-box-shadow-hover]{transition:box-shadow .1s ease-in-out}.uk-box-shadow-hover-small:hover{box-shadow:0 2px 8px rgba(0,0,0,.08)}.uk-box-shadow-hover-medium:hover{box-shadow:0 5px 15px rgba(0,0,0,.08)}.uk-box-shadow-hover-large:hover{box-shadow:0 14px 25px rgba(0,0,0,.16)}.uk-box-shadow-hover-xlarge:hover{box-shadow:0 28px 50px rgba(0,0,0,.16)}@supports (filter:blur(0)){.uk-box-shadow-bottom{display:inline-block;position:relative;z-index:0;max-width:100%;vertical-align:middle}.uk-box-shadow-bottom::after{content:"";position:absolute;bottom:-30px;left:0;right:0;z-index:-1;height:30px;border-radius:100%;background:#444;filter:blur(20px);will-change:filter}}.uk-dropcap::first-letter,.uk-dropcap>p:first-of-type::first-letter{display:block;margin-right:10px;float:left;font-size:4.5em;line-height:1;margin-bottom:-2px}@-moz-document url-prefix(){.uk-dropcap::first-letter,.uk-dropcap>p:first-of-type::first-letter{margin-top:1.1%}}.uk-logo{font-size:1.5rem;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";color:#333;text-decoration:none}:where(.uk-logo){display:inline-block;vertical-align:middle}.uk-logo:hover{color:#333;text-decoration:none}.uk-logo :where(img,svg,video){display:block}.uk-logo-inverse{display:none}.uk-disabled{pointer-events:none}.uk-drag,.uk-drag *{cursor:move}.uk-drag iframe{pointer-events:none}.uk-dragover{box-shadow:0 0 20px rgba(100,100,100,.3)}.uk-blend-multiply{mix-blend-mode:multiply}.uk-blend-screen{mix-blend-mode:screen}.uk-blend-overlay{mix-blend-mode:overlay}.uk-blend-darken{mix-blend-mode:darken}.uk-blend-lighten{mix-blend-mode:lighten}.uk-blend-color-dodge{mix-blend-mode:color-dodge}.uk-blend-color-burn{mix-blend-mode:color-burn}.uk-blend-hard-light{mix-blend-mode:hard-light}.uk-blend-soft-light{mix-blend-mode:soft-light}.uk-blend-difference{mix-blend-mode:difference}.uk-blend-exclusion{mix-blend-mode:exclusion}.uk-blend-hue{mix-blend-mode:hue}.uk-blend-saturation{mix-blend-mode:saturation}.uk-blend-color{mix-blend-mode:color}.uk-blend-luminosity{mix-blend-mode:luminosity}.uk-transform-center{transform:translate(-50%,-50%)}.uk-transform-origin-top-left{transform-origin:0 0}.uk-transform-origin-top-center{transform-origin:50% 0}.uk-transform-origin-top-right{transform-origin:100% 0}.uk-transform-origin-center-left{transform-origin:0 50%}.uk-transform-origin-center-right{transform-origin:100% 50%}.uk-transform-origin-bottom-left{transform-origin:0 100%}.uk-transform-origin-bottom-center{transform-origin:50% 100%}.uk-transform-origin-bottom-right{transform-origin:100% 100%}.uk-flex{display:flex}.uk-flex-inline{display:inline-flex}.uk-flex-left{justify-content:flex-start}.uk-flex-center{justify-content:center}.uk-flex-right{justify-content:flex-end}.uk-flex-between{justify-content:space-between}.uk-flex-around{justify-content:space-around}@media (min-width:640px){.uk-flex-left\@s{justify-content:flex-start}.uk-flex-center\@s{justify-content:center}.uk-flex-right\@s{justify-content:flex-end}.uk-flex-between\@s{justify-content:space-between}.uk-flex-around\@s{justify-content:space-around}}@media (min-width:960px){.uk-flex-left\@m{justify-content:flex-start}.uk-flex-center\@m{justify-content:center}.uk-flex-right\@m{justify-content:flex-end}.uk-flex-between\@m{justify-content:space-between}.uk-flex-around\@m{justify-content:space-around}}@media (min-width:1200px){.uk-flex-left\@l{justify-content:flex-start}.uk-flex-center\@l{justify-content:center}.uk-flex-right\@l{justify-content:flex-end}.uk-flex-between\@l{justify-content:space-between}.uk-flex-around\@l{justify-content:space-around}}@media (min-width:1600px){.uk-flex-left\@xl{justify-content:flex-start}.uk-flex-center\@xl{justify-content:center}.uk-flex-right\@xl{justify-content:flex-end}.uk-flex-between\@xl{justify-content:space-between}.uk-flex-around\@xl{justify-content:space-around}}.uk-flex-stretch{align-items:stretch}.uk-flex-top{align-items:flex-start}.uk-flex-middle{align-items:center}.uk-flex-bottom{align-items:flex-end}.uk-flex-row{flex-direction:row}.uk-flex-row-reverse{flex-direction:row-reverse}.uk-flex-column{flex-direction:column}.uk-flex-column-reverse{flex-direction:column-reverse}.uk-flex-nowrap{flex-wrap:nowrap}.uk-flex-wrap{flex-wrap:wrap}.uk-flex-wrap-reverse{flex-wrap:wrap-reverse}.uk-flex-wrap-stretch{align-content:stretch}.uk-flex-wrap-top{align-content:flex-start}.uk-flex-wrap-middle{align-content:center}.uk-flex-wrap-bottom{align-content:flex-end}.uk-flex-wrap-between{align-content:space-between}.uk-flex-wrap-around{align-content:space-around}.uk-flex-first{order:-1}.uk-flex-last{order:99}@media (min-width:640px){.uk-flex-first\@s{order:-1}.uk-flex-last\@s{order:99}}@media (min-width:960px){.uk-flex-first\@m{order:-1}.uk-flex-last\@m{order:99}}@media (min-width:1200px){.uk-flex-first\@l{order:-1}.uk-flex-last\@l{order:99}}@media (min-width:1600px){.uk-flex-first\@xl{order:-1}.uk-flex-last\@xl{order:99}}.uk-flex-none{flex:none}.uk-flex-auto{flex:auto}.uk-flex-1{flex:1}.uk-margin{margin-bottom:20px}*+.uk-margin{margin-top:20px!important}.uk-margin-top{margin-top:20px!important}.uk-margin-bottom{margin-bottom:20px!important}.uk-margin-left{margin-left:20px!important}.uk-margin-right{margin-right:20px!important}.uk-margin-small{margin-bottom:10px}*+.uk-margin-small{margin-top:10px!important}.uk-margin-small-top{margin-top:10px!important}.uk-margin-small-bottom{margin-bottom:10px!important}.uk-margin-small-left{margin-left:10px!important}.uk-margin-small-right{margin-right:10px!important}.uk-margin-medium{margin-bottom:40px}*+.uk-margin-medium{margin-top:40px!important}.uk-margin-medium-top{margin-top:40px!important}.uk-margin-medium-bottom{margin-bottom:40px!important}.uk-margin-medium-left{margin-left:40px!important}.uk-margin-medium-right{margin-right:40px!important}.uk-margin-large{margin-bottom:40px}*+.uk-margin-large{margin-top:40px!important}.uk-margin-large-top{margin-top:40px!important}.uk-margin-large-bottom{margin-bottom:40px!important}.uk-margin-large-left{margin-left:40px!important}.uk-margin-large-right{margin-right:40px!important}@media (min-width:1200px){.uk-margin-large{margin-bottom:70px}*+.uk-margin-large{margin-top:70px!important}.uk-margin-large-top{margin-top:70px!important}.uk-margin-large-bottom{margin-bottom:70px!important}.uk-margin-large-left{margin-left:70px!important}.uk-margin-large-right{margin-right:70px!important}}.uk-margin-xlarge{margin-bottom:70px}*+.uk-margin-xlarge{margin-top:70px!important}.uk-margin-xlarge-top{margin-top:70px!important}.uk-margin-xlarge-bottom{margin-bottom:70px!important}.uk-margin-xlarge-left{margin-left:70px!important}.uk-margin-xlarge-right{margin-right:70px!important}@media (min-width:1200px){.uk-margin-xlarge{margin-bottom:140px}*+.uk-margin-xlarge{margin-top:140px!important}.uk-margin-xlarge-top{margin-top:140px!important}.uk-margin-xlarge-bottom{margin-bottom:140px!important}.uk-margin-xlarge-left{margin-left:140px!important}.uk-margin-xlarge-right{margin-right:140px!important}}.uk-margin-auto{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-top{margin-top:auto!important}.uk-margin-auto-bottom{margin-bottom:auto!important}.uk-margin-auto-left{margin-left:auto!important}.uk-margin-auto-right{margin-right:auto!important}.uk-margin-auto-vertical{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:640px){.uk-margin-auto\@s{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@s{margin-left:auto!important}.uk-margin-auto-right\@s{margin-right:auto!important}}@media (min-width:960px){.uk-margin-auto\@m{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@m{margin-left:auto!important}.uk-margin-auto-right\@m{margin-right:auto!important}}@media (min-width:1200px){.uk-margin-auto\@l{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@l{margin-left:auto!important}.uk-margin-auto-right\@l{margin-right:auto!important}}@media (min-width:1600px){.uk-margin-auto\@xl{margin-left:auto!important;margin-right:auto!important}.uk-margin-auto-left\@xl{margin-left:auto!important}.uk-margin-auto-right\@xl{margin-right:auto!important}}.uk-margin-remove{margin:0!important}.uk-margin-remove-top{margin-top:0!important}.uk-margin-remove-bottom{margin-bottom:0!important}.uk-margin-remove-left{margin-left:0!important}.uk-margin-remove-right{margin-right:0!important}.uk-margin-remove-vertical{margin-top:0!important;margin-bottom:0!important}.uk-margin-remove-adjacent+*,.uk-margin-remove-first-child>:first-child{margin-top:0!important}.uk-margin-remove-last-child>:last-child{margin-bottom:0!important}@media (min-width:640px){.uk-margin-remove-left\@s{margin-left:0!important}.uk-margin-remove-right\@s{margin-right:0!important}}@media (min-width:960px){.uk-margin-remove-left\@m{margin-left:0!important}.uk-margin-remove-right\@m{margin-right:0!important}}@media (min-width:1200px){.uk-margin-remove-left\@l{margin-left:0!important}.uk-margin-remove-right\@l{margin-right:0!important}}@media (min-width:1600px){.uk-margin-remove-left\@xl{margin-left:0!important}.uk-margin-remove-right\@xl{margin-right:0!important}}.uk-padding{padding:30px}@media (min-width:1200px){.uk-padding{padding:40px}}.uk-padding-small{padding:15px}.uk-padding-large{padding:40px}@media (min-width:1200px){.uk-padding-large{padding:70px}}.uk-padding-remove{padding:0!important}.uk-padding-remove-top{padding-top:0!important}.uk-padding-remove-bottom{padding-bottom:0!important}.uk-padding-remove-left{padding-left:0!important}.uk-padding-remove-right{padding-right:0!important}.uk-padding-remove-vertical{padding-top:0!important;padding-bottom:0!important}.uk-padding-remove-horizontal{padding-left:0!important;padding-right:0!important}:root{--uk-position-margin-offset:0px}[class*=uk-position-bottom],[class*=uk-position-center],[class*=uk-position-left],[class*=uk-position-right],[class*=uk-position-top]{position:absolute!important;max-width:calc(100% - (var(--uk-position-margin-offset) * 2));box-sizing:border-box}.uk-position-top{top:0;left:0;right:0}.uk-position-bottom{bottom:0;left:0;right:0}.uk-position-left{top:0;bottom:0;left:0}.uk-position-right{top:0;bottom:0;right:0}.uk-position-top-left{top:0;left:0}.uk-position-top-right{top:0;right:0}.uk-position-bottom-left{bottom:0;left:0}.uk-position-bottom-right{bottom:0;right:0}.uk-position-center{top:calc(50% - var(--uk-position-margin-offset));left:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-x:-50%;--uk-position-translate-y:-50%;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y));width:max-content}[class*=uk-position-center-left],[class*=uk-position-center-right]{top:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-y:-50%;transform:translate(0,var(--uk-position-translate-y))}.uk-position-center-left{left:0}.uk-position-center-right{right:0}.uk-position-center-left-out{right:100%;width:max-content}.uk-position-center-right-out{left:100%;width:max-content}.uk-position-bottom-center,.uk-position-top-center{left:calc(50% - var(--uk-position-margin-offset));--uk-position-translate-x:-50%;transform:translate(var(--uk-position-translate-x),0);width:max-content}.uk-position-top-center{top:0}.uk-position-bottom-center{bottom:0}.uk-position-cover{position:absolute;top:0;bottom:0;left:0;right:0}.uk-position-small{margin:15px;--uk-position-margin-offset:15px}.uk-position-medium{margin:30px;--uk-position-margin-offset:30px}.uk-position-large{margin:30px;--uk-position-margin-offset:30px}@media (min-width:1200px){.uk-position-large{margin:50px;--uk-position-margin-offset:50px}}.uk-position-relative{position:relative!important}.uk-position-absolute{position:absolute!important}.uk-position-fixed{position:fixed!important}.uk-position-sticky{position:sticky!important}.uk-position-z-index{z-index:1}.uk-position-z-index-zero{z-index:0}.uk-position-z-index-negative{z-index:-1}:where(.uk-transition-fade),:where([class*=uk-transition-scale]),:where([class*=uk-transition-slide]){--uk-position-translate-x:0;--uk-position-translate-y:0}.uk-transition-fade,[class*=uk-transition-scale],[class*=uk-transition-slide]{--uk-translate-x:0;--uk-translate-y:0;--uk-scale-x:1;--uk-scale-y:1;transform:translate(var(--uk-position-translate-x),var(--uk-position-translate-y)) translate(var(--uk-translate-x),var(--uk-translate-y)) scale(var(--uk-scale-x),var(--uk-scale-y));transition:.3s ease-out;transition-property:opacity,transform,filter;opacity:0}.uk-transition-active.uk-active .uk-transition-fade,.uk-transition-toggle .uk-transition-fade:focus-within,.uk-transition-toggle:focus .uk-transition-fade,.uk-transition-toggle:hover .uk-transition-fade{opacity:1}[class*=uk-transition-scale]{-webkit-backface-visibility:hidden}.uk-transition-scale-up{--uk-scale-x:1;--uk-scale-y:1}.uk-transition-scale-down{--uk-scale-x:1.03;--uk-scale-y:1.03}.uk-transition-active.uk-active .uk-transition-scale-up,.uk-transition-toggle .uk-transition-scale-up:focus-within,.uk-transition-toggle:focus .uk-transition-scale-up,.uk-transition-toggle:hover .uk-transition-scale-up{--uk-scale-x:1.03;--uk-scale-y:1.03;opacity:1}.uk-transition-active.uk-active .uk-transition-scale-down,.uk-transition-toggle .uk-transition-scale-down:focus-within,.uk-transition-toggle:focus .uk-transition-scale-down,.uk-transition-toggle:hover .uk-transition-scale-down{--uk-scale-x:1;--uk-scale-y:1;opacity:1}.uk-transition-slide-top{--uk-translate-y:-100%}.uk-transition-slide-bottom{--uk-translate-y:100%}.uk-transition-slide-left{--uk-translate-x:-100%}.uk-transition-slide-right{--uk-translate-x:100%}.uk-transition-slide-top-small{--uk-translate-y:calc(-1 * 10px)}.uk-transition-slide-bottom-small{--uk-translate-y:10px}.uk-transition-slide-left-small{--uk-translate-x:calc(-1 * 10px)}.uk-transition-slide-right-small{--uk-translate-x:10px}.uk-transition-slide-top-medium{--uk-translate-y:calc(-1 * 50px)}.uk-transition-slide-bottom-medium{--uk-translate-y:50px}.uk-transition-slide-left-medium{--uk-translate-x:calc(-1 * 50px)}.uk-transition-slide-right-medium{--uk-translate-x:50px}.uk-transition-active.uk-active [class*=uk-transition-slide],.uk-transition-toggle [class*=uk-transition-slide]:focus-within,.uk-transition-toggle:focus [class*=uk-transition-slide],.uk-transition-toggle:hover [class*=uk-transition-slide]{--uk-translate-x:0;--uk-translate-y:0;opacity:1}.uk-transition-opaque{opacity:1}.uk-transition-slow{transition-duration:.7s}.uk-hidden,[hidden]{display:none!important}@media (min-width:640px){.uk-hidden\@s{display:none!important}}@media (min-width:960px){.uk-hidden\@m{display:none!important}}@media (min-width:1200px){.uk-hidden\@l{display:none!important}}@media (min-width:1600px){.uk-hidden\@xl{display:none!important}}@media (max-width:639px){.uk-visible\@s{display:none!important}}@media (max-width:959px){.uk-visible\@m{display:none!important}}@media (max-width:1199px){.uk-visible\@l{display:none!important}}@media (max-width:1599px){.uk-visible\@xl{display:none!important}}.uk-invisible{visibility:hidden!important}.uk-visible-toggle:not(:hover):not(:focus) .uk-hidden-hover:not(:focus-within){position:absolute!important;width:0!important;height:0!important;padding:0!important;margin:0!important;overflow:hidden!important}.uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within){opacity:0!important}@media (hover:none){.uk-hidden-touch{display:none!important}}@media (hover){.uk-hidden-notouch{display:none!important}}.uk-card-primary.uk-card-body,.uk-card-primary>:not([class*=uk-card-media]),.uk-card-secondary.uk-card-body,.uk-card-secondary>:not([class*=uk-card-media]),.uk-light,.uk-offcanvas-bar,.uk-overlay-primary,.uk-section-primary:not(.uk-preserve-color),.uk-section-secondary:not(.uk-preserve-color),.uk-tile-primary:not(.uk-preserve-color),.uk-tile-secondary:not(.uk-preserve-color){color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-link,.uk-card-primary.uk-card-body a,.uk-card-primary>:not([class*=uk-card-media]) .uk-link,.uk-card-primary>:not([class*=uk-card-media]) a,.uk-card-secondary.uk-card-body .uk-link,.uk-card-secondary.uk-card-body a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link,.uk-card-secondary>:not([class*=uk-card-media]) a,.uk-light .uk-link,.uk-light a,.uk-offcanvas-bar .uk-link,.uk-offcanvas-bar a,.uk-overlay-primary .uk-link,.uk-overlay-primary a,.uk-section-primary:not(.uk-preserve-color) .uk-link,.uk-section-primary:not(.uk-preserve-color) a,.uk-section-secondary:not(.uk-preserve-color) .uk-link,.uk-section-secondary:not(.uk-preserve-color) a,.uk-tile-primary:not(.uk-preserve-color) .uk-link,.uk-tile-primary:not(.uk-preserve-color) a,.uk-tile-secondary:not(.uk-preserve-color) .uk-link,.uk-tile-secondary:not(.uk-preserve-color) a{color:#fff}.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link,.uk-card-primary.uk-card-body .uk-link:hover,.uk-card-primary.uk-card-body a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-link:hover,.uk-card-primary>:not([class*=uk-card-media]) a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link,.uk-card-secondary.uk-card-body .uk-link:hover,.uk-card-secondary.uk-card-body a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) a:hover,.uk-light .uk-link-toggle:hover .uk-link,.uk-light .uk-link:hover,.uk-light a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link,.uk-offcanvas-bar .uk-link:hover,.uk-offcanvas-bar a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link,.uk-overlay-primary .uk-link:hover,.uk-overlay-primary a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-section-primary:not(.uk-preserve-color) .uk-link:hover,.uk-section-primary:not(.uk-preserve-color) a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-section-secondary:not(.uk-preserve-color) .uk-link:hover,.uk-section-secondary:not(.uk-preserve-color) a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-tile-primary:not(.uk-preserve-color) .uk-link:hover,.uk-tile-primary:not(.uk-preserve-color) a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-link:hover,.uk-tile-secondary:not(.uk-preserve-color) a:hover{color:#fff}.uk-card-primary.uk-card-body :not(pre)>code,.uk-card-primary.uk-card-body :not(pre)>kbd,.uk-card-primary.uk-card-body :not(pre)>samp,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>code,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>kbd,.uk-card-primary>:not([class*=uk-card-media]) :not(pre)>samp,.uk-card-secondary.uk-card-body :not(pre)>code,.uk-card-secondary.uk-card-body :not(pre)>kbd,.uk-card-secondary.uk-card-body :not(pre)>samp,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>code,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>kbd,.uk-card-secondary>:not([class*=uk-card-media]) :not(pre)>samp,.uk-light :not(pre)>code,.uk-light :not(pre)>kbd,.uk-light :not(pre)>samp,.uk-offcanvas-bar :not(pre)>code,.uk-offcanvas-bar :not(pre)>kbd,.uk-offcanvas-bar :not(pre)>samp,.uk-overlay-primary :not(pre)>code,.uk-overlay-primary :not(pre)>kbd,.uk-overlay-primary :not(pre)>samp,.uk-section-primary:not(.uk-preserve-color) :not(pre)>code,.uk-section-primary:not(.uk-preserve-color) :not(pre)>kbd,.uk-section-primary:not(.uk-preserve-color) :not(pre)>samp,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>code,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>kbd,.uk-section-secondary:not(.uk-preserve-color) :not(pre)>samp,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>code,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>kbd,.uk-tile-primary:not(.uk-preserve-color) :not(pre)>samp,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>code,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>kbd,.uk-tile-secondary:not(.uk-preserve-color) :not(pre)>samp{color:rgba(255,255,255,.7);background:rgba(255,255,255,.1)}.uk-card-primary.uk-card-body em,.uk-card-primary>:not([class*=uk-card-media]) em,.uk-card-secondary.uk-card-body em,.uk-card-secondary>:not([class*=uk-card-media]) em,.uk-light em,.uk-offcanvas-bar em,.uk-overlay-primary em,.uk-section-primary:not(.uk-preserve-color) em,.uk-section-secondary:not(.uk-preserve-color) em,.uk-tile-primary:not(.uk-preserve-color) em,.uk-tile-secondary:not(.uk-preserve-color) em{color:#fff}.uk-card-primary.uk-card-body .uk-h1,.uk-card-primary.uk-card-body .uk-h2,.uk-card-primary.uk-card-body .uk-h3,.uk-card-primary.uk-card-body .uk-h4,.uk-card-primary.uk-card-body .uk-h5,.uk-card-primary.uk-card-body .uk-h6,.uk-card-primary.uk-card-body .uk-heading-2xlarge,.uk-card-primary.uk-card-body .uk-heading-large,.uk-card-primary.uk-card-body .uk-heading-medium,.uk-card-primary.uk-card-body .uk-heading-small,.uk-card-primary.uk-card-body .uk-heading-xlarge,.uk-card-primary.uk-card-body h1,.uk-card-primary.uk-card-body h2,.uk-card-primary.uk-card-body h3,.uk-card-primary.uk-card-body h4,.uk-card-primary.uk-card-body h5,.uk-card-primary.uk-card-body h6,.uk-card-primary>:not([class*=uk-card-media]) .uk-h1,.uk-card-primary>:not([class*=uk-card-media]) .uk-h2,.uk-card-primary>:not([class*=uk-card-media]) .uk-h3,.uk-card-primary>:not([class*=uk-card-media]) .uk-h4,.uk-card-primary>:not([class*=uk-card-media]) .uk-h5,.uk-card-primary>:not([class*=uk-card-media]) .uk-h6,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-2xlarge,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-large,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-medium,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-small,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-xlarge,.uk-card-primary>:not([class*=uk-card-media]) h1,.uk-card-primary>:not([class*=uk-card-media]) h2,.uk-card-primary>:not([class*=uk-card-media]) h3,.uk-card-primary>:not([class*=uk-card-media]) h4,.uk-card-primary>:not([class*=uk-card-media]) h5,.uk-card-primary>:not([class*=uk-card-media]) h6,.uk-card-secondary.uk-card-body .uk-h1,.uk-card-secondary.uk-card-body .uk-h2,.uk-card-secondary.uk-card-body .uk-h3,.uk-card-secondary.uk-card-body .uk-h4,.uk-card-secondary.uk-card-body .uk-h5,.uk-card-secondary.uk-card-body .uk-h6,.uk-card-secondary.uk-card-body .uk-heading-2xlarge,.uk-card-secondary.uk-card-body .uk-heading-large,.uk-card-secondary.uk-card-body .uk-heading-medium,.uk-card-secondary.uk-card-body .uk-heading-small,.uk-card-secondary.uk-card-body .uk-heading-xlarge,.uk-card-secondary.uk-card-body h1,.uk-card-secondary.uk-card-body h2,.uk-card-secondary.uk-card-body h3,.uk-card-secondary.uk-card-body h4,.uk-card-secondary.uk-card-body h5,.uk-card-secondary.uk-card-body h6,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h1,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h2,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h3,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h4,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h5,.uk-card-secondary>:not([class*=uk-card-media]) .uk-h6,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-2xlarge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-large,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-medium,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-small,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-xlarge,.uk-card-secondary>:not([class*=uk-card-media]) h1,.uk-card-secondary>:not([class*=uk-card-media]) h2,.uk-card-secondary>:not([class*=uk-card-media]) h3,.uk-card-secondary>:not([class*=uk-card-media]) h4,.uk-card-secondary>:not([class*=uk-card-media]) h5,.uk-card-secondary>:not([class*=uk-card-media]) h6,.uk-light .uk-h1,.uk-light .uk-h2,.uk-light .uk-h3,.uk-light .uk-h4,.uk-light .uk-h5,.uk-light .uk-h6,.uk-light .uk-heading-2xlarge,.uk-light .uk-heading-large,.uk-light .uk-heading-medium,.uk-light .uk-heading-small,.uk-light .uk-heading-xlarge,.uk-light h1,.uk-light h2,.uk-light h3,.uk-light h4,.uk-light h5,.uk-light h6,.uk-offcanvas-bar .uk-h1,.uk-offcanvas-bar .uk-h2,.uk-offcanvas-bar .uk-h3,.uk-offcanvas-bar .uk-h4,.uk-offcanvas-bar .uk-h5,.uk-offcanvas-bar .uk-h6,.uk-offcanvas-bar .uk-heading-2xlarge,.uk-offcanvas-bar .uk-heading-large,.uk-offcanvas-bar .uk-heading-medium,.uk-offcanvas-bar .uk-heading-small,.uk-offcanvas-bar .uk-heading-xlarge,.uk-offcanvas-bar h1,.uk-offcanvas-bar h2,.uk-offcanvas-bar h3,.uk-offcanvas-bar h4,.uk-offcanvas-bar h5,.uk-offcanvas-bar h6,.uk-overlay-primary .uk-h1,.uk-overlay-primary .uk-h2,.uk-overlay-primary .uk-h3,.uk-overlay-primary .uk-h4,.uk-overlay-primary .uk-h5,.uk-overlay-primary .uk-h6,.uk-overlay-primary .uk-heading-2xlarge,.uk-overlay-primary .uk-heading-large,.uk-overlay-primary .uk-heading-medium,.uk-overlay-primary .uk-heading-small,.uk-overlay-primary .uk-heading-xlarge,.uk-overlay-primary h1,.uk-overlay-primary h2,.uk-overlay-primary h3,.uk-overlay-primary h4,.uk-overlay-primary h5,.uk-overlay-primary h6,.uk-section-primary:not(.uk-preserve-color) .uk-h1,.uk-section-primary:not(.uk-preserve-color) .uk-h2,.uk-section-primary:not(.uk-preserve-color) .uk-h3,.uk-section-primary:not(.uk-preserve-color) .uk-h4,.uk-section-primary:not(.uk-preserve-color) .uk-h5,.uk-section-primary:not(.uk-preserve-color) .uk-h6,.uk-section-primary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-section-primary:not(.uk-preserve-color) .uk-heading-large,.uk-section-primary:not(.uk-preserve-color) .uk-heading-medium,.uk-section-primary:not(.uk-preserve-color) .uk-heading-small,.uk-section-primary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-section-primary:not(.uk-preserve-color) h1,.uk-section-primary:not(.uk-preserve-color) h2,.uk-section-primary:not(.uk-preserve-color) h3,.uk-section-primary:not(.uk-preserve-color) h4,.uk-section-primary:not(.uk-preserve-color) h5,.uk-section-primary:not(.uk-preserve-color) h6,.uk-section-secondary:not(.uk-preserve-color) .uk-h1,.uk-section-secondary:not(.uk-preserve-color) .uk-h2,.uk-section-secondary:not(.uk-preserve-color) .uk-h3,.uk-section-secondary:not(.uk-preserve-color) .uk-h4,.uk-section-secondary:not(.uk-preserve-color) .uk-h5,.uk-section-secondary:not(.uk-preserve-color) .uk-h6,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-large,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-medium,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-small,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-section-secondary:not(.uk-preserve-color) h1,.uk-section-secondary:not(.uk-preserve-color) h2,.uk-section-secondary:not(.uk-preserve-color) h3,.uk-section-secondary:not(.uk-preserve-color) h4,.uk-section-secondary:not(.uk-preserve-color) h5,.uk-section-secondary:not(.uk-preserve-color) h6,.uk-tile-primary:not(.uk-preserve-color) .uk-h1,.uk-tile-primary:not(.uk-preserve-color) .uk-h2,.uk-tile-primary:not(.uk-preserve-color) .uk-h3,.uk-tile-primary:not(.uk-preserve-color) .uk-h4,.uk-tile-primary:not(.uk-preserve-color) .uk-h5,.uk-tile-primary:not(.uk-preserve-color) .uk-h6,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-large,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-medium,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-small,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-tile-primary:not(.uk-preserve-color) h1,.uk-tile-primary:not(.uk-preserve-color) h2,.uk-tile-primary:not(.uk-preserve-color) h3,.uk-tile-primary:not(.uk-preserve-color) h4,.uk-tile-primary:not(.uk-preserve-color) h5,.uk-tile-primary:not(.uk-preserve-color) h6,.uk-tile-secondary:not(.uk-preserve-color) .uk-h1,.uk-tile-secondary:not(.uk-preserve-color) .uk-h2,.uk-tile-secondary:not(.uk-preserve-color) .uk-h3,.uk-tile-secondary:not(.uk-preserve-color) .uk-h4,.uk-tile-secondary:not(.uk-preserve-color) .uk-h5,.uk-tile-secondary:not(.uk-preserve-color) .uk-h6,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-2xlarge,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-large,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-medium,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-small,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-xlarge,.uk-tile-secondary:not(.uk-preserve-color) h1,.uk-tile-secondary:not(.uk-preserve-color) h2,.uk-tile-secondary:not(.uk-preserve-color) h3,.uk-tile-secondary:not(.uk-preserve-color) h4,.uk-tile-secondary:not(.uk-preserve-color) h5,.uk-tile-secondary:not(.uk-preserve-color) h6{color:#fff}.uk-card-primary.uk-card-body blockquote,.uk-card-primary>:not([class*=uk-card-media]) blockquote,.uk-card-secondary.uk-card-body blockquote,.uk-card-secondary>:not([class*=uk-card-media]) blockquote,.uk-light blockquote,.uk-offcanvas-bar blockquote,.uk-overlay-primary blockquote,.uk-section-primary:not(.uk-preserve-color) blockquote,.uk-section-secondary:not(.uk-preserve-color) blockquote,.uk-tile-primary:not(.uk-preserve-color) blockquote,.uk-tile-secondary:not(.uk-preserve-color) blockquote{color:#fff}.uk-card-primary.uk-card-body blockquote footer,.uk-card-primary>:not([class*=uk-card-media]) blockquote footer,.uk-card-secondary.uk-card-body blockquote footer,.uk-card-secondary>:not([class*=uk-card-media]) blockquote footer,.uk-light blockquote footer,.uk-offcanvas-bar blockquote footer,.uk-overlay-primary blockquote footer,.uk-section-primary:not(.uk-preserve-color) blockquote footer,.uk-section-secondary:not(.uk-preserve-color) blockquote footer,.uk-tile-primary:not(.uk-preserve-color) blockquote footer,.uk-tile-secondary:not(.uk-preserve-color) blockquote footer{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-hr,.uk-card-primary.uk-card-body hr,.uk-card-primary>:not([class*=uk-card-media]) .uk-hr,.uk-card-primary>:not([class*=uk-card-media]) hr,.uk-card-secondary.uk-card-body .uk-hr,.uk-card-secondary.uk-card-body hr,.uk-card-secondary>:not([class*=uk-card-media]) .uk-hr,.uk-card-secondary>:not([class*=uk-card-media]) hr,.uk-light .uk-hr,.uk-light hr,.uk-offcanvas-bar .uk-hr,.uk-offcanvas-bar hr,.uk-overlay-primary .uk-hr,.uk-overlay-primary hr,.uk-section-primary:not(.uk-preserve-color) .uk-hr,.uk-section-primary:not(.uk-preserve-color) hr,.uk-section-secondary:not(.uk-preserve-color) .uk-hr,.uk-section-secondary:not(.uk-preserve-color) hr,.uk-tile-primary:not(.uk-preserve-color) .uk-hr,.uk-tile-primary:not(.uk-preserve-color) hr,.uk-tile-secondary:not(.uk-preserve-color) .uk-hr,.uk-tile-secondary:not(.uk-preserve-color) hr{border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body :focus,.uk-card-primary>:not([class*=uk-card-media]) :focus,.uk-card-secondary.uk-card-body :focus,.uk-card-secondary>:not([class*=uk-card-media]) :focus,.uk-light :focus,.uk-offcanvas-bar :focus,.uk-overlay-primary :focus,.uk-section-primary:not(.uk-preserve-color) :focus,.uk-section-secondary:not(.uk-preserve-color) :focus,.uk-tile-primary:not(.uk-preserve-color) :focus,.uk-tile-secondary:not(.uk-preserve-color) :focus{outline-color:#fff}.uk-card-primary.uk-card-body :focus-visible,.uk-card-primary>:not([class*=uk-card-media]) :focus-visible,.uk-card-secondary.uk-card-body :focus-visible,.uk-card-secondary>:not([class*=uk-card-media]) :focus-visible,.uk-light :focus-visible,.uk-offcanvas-bar :focus-visible,.uk-overlay-primary :focus-visible,.uk-section-primary:not(.uk-preserve-color) :focus-visible,.uk-section-secondary:not(.uk-preserve-color) :focus-visible,.uk-tile-primary:not(.uk-preserve-color) :focus-visible,.uk-tile-secondary:not(.uk-preserve-color) :focus-visible{outline-color:#fff}.uk-card-primary.uk-card-body .uk-link-muted a,.uk-card-primary.uk-card-body a.uk-link-muted,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-muted a,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-muted,.uk-card-secondary.uk-card-body .uk-link-muted a,.uk-card-secondary.uk-card-body a.uk-link-muted,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-muted a,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-muted,.uk-light .uk-link-muted a,.uk-light a.uk-link-muted,.uk-offcanvas-bar .uk-link-muted a,.uk-offcanvas-bar a.uk-link-muted,.uk-overlay-primary .uk-link-muted a,.uk-overlay-primary a.uk-link-muted,.uk-section-primary:not(.uk-preserve-color) .uk-link-muted a,.uk-section-primary:not(.uk-preserve-color) a.uk-link-muted,.uk-section-secondary:not(.uk-preserve-color) .uk-link-muted a,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-muted,.uk-tile-primary:not(.uk-preserve-color) .uk-link-muted a,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-muted,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-muted a,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-muted{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-link-muted a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-muted,.uk-card-primary.uk-card-body a.uk-link-muted:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-muted a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-muted,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-muted:hover,.uk-card-secondary.uk-card-body .uk-link-muted a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-muted,.uk-card-secondary.uk-card-body a.uk-link-muted:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-muted a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-muted,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-muted:hover,.uk-light .uk-link-muted a:hover,.uk-light .uk-link-toggle:hover .uk-link-muted,.uk-light a.uk-link-muted:hover,.uk-offcanvas-bar .uk-link-muted a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-muted,.uk-offcanvas-bar a.uk-link-muted:hover,.uk-overlay-primary .uk-link-muted a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-muted,.uk-overlay-primary a.uk-link-muted:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-section-primary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-muted:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-muted a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-muted,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-muted:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-link-text a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-text,.uk-card-primary.uk-card-body a.uk-link-text:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-text a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-text,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-text:hover,.uk-card-secondary.uk-card-body .uk-link-text a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-text,.uk-card-secondary.uk-card-body a.uk-link-text:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-text a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-text,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-text:hover,.uk-light .uk-link-text a:hover,.uk-light .uk-link-toggle:hover .uk-link-text,.uk-light a.uk-link-text:hover,.uk-offcanvas-bar .uk-link-text a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-text,.uk-offcanvas-bar a.uk-link-text:hover,.uk-overlay-primary .uk-link-text a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-text,.uk-overlay-primary a.uk-link-text:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-section-primary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-text:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-text a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-text,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-text:hover{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-link-heading a:hover,.uk-card-primary.uk-card-body .uk-link-toggle:hover .uk-link-heading,.uk-card-primary.uk-card-body a.uk-link-heading:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-heading a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-heading,.uk-card-primary>:not([class*=uk-card-media]) a.uk-link-heading:hover,.uk-card-secondary.uk-card-body .uk-link-heading a:hover,.uk-card-secondary.uk-card-body .uk-link-toggle:hover .uk-link-heading,.uk-card-secondary.uk-card-body a.uk-link-heading:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-heading a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-link-toggle:hover .uk-link-heading,.uk-card-secondary>:not([class*=uk-card-media]) a.uk-link-heading:hover,.uk-light .uk-link-heading a:hover,.uk-light .uk-link-toggle:hover .uk-link-heading,.uk-light a.uk-link-heading:hover,.uk-offcanvas-bar .uk-link-heading a:hover,.uk-offcanvas-bar .uk-link-toggle:hover .uk-link-heading,.uk-offcanvas-bar a.uk-link-heading:hover,.uk-overlay-primary .uk-link-heading a:hover,.uk-overlay-primary .uk-link-toggle:hover .uk-link-heading,.uk-overlay-primary a.uk-link-heading:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-section-primary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-section-secondary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-tile-primary:not(.uk-preserve-color) a.uk-link-heading:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-heading a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-link-toggle:hover .uk-link-heading,.uk-tile-secondary:not(.uk-preserve-color) a.uk-link-heading:hover{color:#fff}.uk-card-primary.uk-card-body .uk-heading-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-divider,.uk-card-secondary.uk-card-body .uk-heading-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-divider,.uk-light .uk-heading-divider,.uk-offcanvas-bar .uk-heading-divider,.uk-overlay-primary .uk-heading-divider,.uk-section-primary:not(.uk-preserve-color) .uk-heading-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-divider{border-bottom-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-heading-bullet::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-bullet::before,.uk-card-secondary.uk-card-body .uk-heading-bullet::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-bullet::before,.uk-light .uk-heading-bullet::before,.uk-offcanvas-bar .uk-heading-bullet::before,.uk-overlay-primary .uk-heading-bullet::before,.uk-section-primary:not(.uk-preserve-color) .uk-heading-bullet::before,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-bullet::before,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-bullet::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-bullet::before{border-left-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-heading-line>::after,.uk-card-primary.uk-card-body .uk-heading-line>::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-line>::after,.uk-card-primary>:not([class*=uk-card-media]) .uk-heading-line>::before,.uk-card-secondary.uk-card-body .uk-heading-line>::after,.uk-card-secondary.uk-card-body .uk-heading-line>::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-line>::after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-heading-line>::before,.uk-light .uk-heading-line>::after,.uk-light .uk-heading-line>::before,.uk-offcanvas-bar .uk-heading-line>::after,.uk-offcanvas-bar .uk-heading-line>::before,.uk-overlay-primary .uk-heading-line>::after,.uk-overlay-primary .uk-heading-line>::before,.uk-section-primary:not(.uk-preserve-color) .uk-heading-line>::after,.uk-section-primary:not(.uk-preserve-color) .uk-heading-line>::before,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-line>::after,.uk-section-secondary:not(.uk-preserve-color) .uk-heading-line>::before,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-line>::after,.uk-tile-primary:not(.uk-preserve-color) .uk-heading-line>::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-line>::after,.uk-tile-secondary:not(.uk-preserve-color) .uk-heading-line>::before{border-bottom-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-divider-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon,.uk-card-secondary.uk-card-body .uk-divider-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon,.uk-light .uk-divider-icon,.uk-offcanvas-bar .uk-divider-icon,.uk-overlay-primary .uk-divider-icon,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22rgba%28255,%20255,%20255,%200.2%29%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-card-primary.uk-card-body .uk-divider-icon::after,.uk-card-primary.uk-card-body .uk-divider-icon::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon::after,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-icon::before,.uk-card-secondary.uk-card-body .uk-divider-icon::after,.uk-card-secondary.uk-card-body .uk-divider-icon::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon::after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-icon::before,.uk-light .uk-divider-icon::after,.uk-light .uk-divider-icon::before,.uk-offcanvas-bar .uk-divider-icon::after,.uk-offcanvas-bar .uk-divider-icon::before,.uk-overlay-primary .uk-divider-icon::after,.uk-overlay-primary .uk-divider-icon::before,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon::after,.uk-section-primary:not(.uk-preserve-color) .uk-divider-icon::before,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon::after,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-icon::before,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon::after,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-icon::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon::after,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-icon::before{border-bottom-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-divider-small::after,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-small::after,.uk-card-secondary.uk-card-body .uk-divider-small::after,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-small::after,.uk-light .uk-divider-small::after,.uk-offcanvas-bar .uk-divider-small::after,.uk-overlay-primary .uk-divider-small::after,.uk-section-primary:not(.uk-preserve-color) .uk-divider-small::after,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-small::after,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-small::after,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-small::after{border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-divider-vertical,.uk-card-primary>:not([class*=uk-card-media]) .uk-divider-vertical,.uk-card-secondary.uk-card-body .uk-divider-vertical,.uk-card-secondary>:not([class*=uk-card-media]) .uk-divider-vertical,.uk-light .uk-divider-vertical,.uk-offcanvas-bar .uk-divider-vertical,.uk-overlay-primary .uk-divider-vertical,.uk-section-primary:not(.uk-preserve-color) .uk-divider-vertical,.uk-section-secondary:not(.uk-preserve-color) .uk-divider-vertical,.uk-tile-primary:not(.uk-preserve-color) .uk-divider-vertical,.uk-tile-secondary:not(.uk-preserve-color) .uk-divider-vertical{border-left-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-list-muted>::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-muted>::before,.uk-card-secondary.uk-card-body .uk-list-muted>::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-muted>::before,.uk-light .uk-list-muted>::before,.uk-offcanvas-bar .uk-list-muted>::before,.uk-overlay-primary .uk-list-muted>::before,.uk-section-primary:not(.uk-preserve-color) .uk-list-muted>::before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-muted>::before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-muted>::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-muted>::before{color:rgba(255,255,255,.5)!important}.uk-card-primary.uk-card-body .uk-list-emphasis>::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-emphasis>::before,.uk-card-secondary.uk-card-body .uk-list-emphasis>::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-emphasis>::before,.uk-light .uk-list-emphasis>::before,.uk-offcanvas-bar .uk-list-emphasis>::before,.uk-overlay-primary .uk-list-emphasis>::before,.uk-section-primary:not(.uk-preserve-color) .uk-list-emphasis>::before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-emphasis>::before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-emphasis>::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-emphasis>::before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-primary>::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-primary>::before,.uk-card-secondary.uk-card-body .uk-list-primary>::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-primary>::before,.uk-light .uk-list-primary>::before,.uk-offcanvas-bar .uk-list-primary>::before,.uk-overlay-primary .uk-list-primary>::before,.uk-section-primary:not(.uk-preserve-color) .uk-list-primary>::before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-primary>::before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-primary>::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-primary>::before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-secondary>::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-secondary>::before,.uk-card-secondary.uk-card-body .uk-list-secondary>::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-secondary>::before,.uk-light .uk-list-secondary>::before,.uk-offcanvas-bar .uk-list-secondary>::before,.uk-overlay-primary .uk-list-secondary>::before,.uk-section-primary:not(.uk-preserve-color) .uk-list-secondary>::before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-secondary>::before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-secondary>::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-secondary>::before{color:#fff!important}.uk-card-primary.uk-card-body .uk-list-bullet>::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-list-bullet>::before,.uk-card-secondary.uk-card-body .uk-list-bullet>::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-bullet>::before,.uk-light .uk-list-bullet>::before,.uk-offcanvas-bar .uk-list-bullet>::before,.uk-overlay-primary .uk-list-bullet>::before,.uk-section-primary:not(.uk-preserve-color) .uk-list-bullet>::before,.uk-section-secondary:not(.uk-preserve-color) .uk-list-bullet>::before,.uk-tile-primary:not(.uk-preserve-color) .uk-list-bullet>::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-list-bullet>::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20cx%3D%223%22%20cy%3D%223%22%20r%3D%223%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-card-primary.uk-card-body .uk-list-divider>:nth-child(n+2),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-divider>:nth-child(n+2),.uk-card-secondary.uk-card-body .uk-list-divider>:nth-child(n+2),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-divider>:nth-child(n+2),.uk-light .uk-list-divider>:nth-child(n+2),.uk-offcanvas-bar .uk-list-divider>:nth-child(n+2),.uk-overlay-primary .uk-list-divider>:nth-child(n+2),.uk-section-primary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-section-secondary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-tile-primary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-divider>:nth-child(n+2){border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-light .uk-list-striped>:nth-of-type(odd),.uk-offcanvas-bar .uk-list-striped>:nth-of-type(odd),.uk-overlay-primary .uk-list-striped>:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd){border-top-color:rgba(255,255,255,.2);border-bottom-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-list-striped>:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-list-striped>:nth-of-type(odd),.uk-light .uk-list-striped>:nth-of-type(odd),.uk-offcanvas-bar .uk-list-striped>:nth-of-type(odd),.uk-overlay-primary .uk-list-striped>:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-list-striped>:nth-of-type(odd){background-color:rgba(255,255,255,.1)}.uk-card-primary.uk-card-body .uk-table th,.uk-card-primary>:not([class*=uk-card-media]) .uk-table th,.uk-card-secondary.uk-card-body .uk-table th,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table th,.uk-light .uk-table th,.uk-offcanvas-bar .uk-table th,.uk-overlay-primary .uk-table th,.uk-section-primary:not(.uk-preserve-color) .uk-table th,.uk-section-secondary:not(.uk-preserve-color) .uk-table th,.uk-tile-primary:not(.uk-preserve-color) .uk-table th,.uk-tile-secondary:not(.uk-preserve-color) .uk-table th{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-table caption,.uk-card-primary>:not([class*=uk-card-media]) .uk-table caption,.uk-card-secondary.uk-card-body .uk-table caption,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table caption,.uk-light .uk-table caption,.uk-offcanvas-bar .uk-table caption,.uk-overlay-primary .uk-table caption,.uk-section-primary:not(.uk-preserve-color) .uk-table caption,.uk-section-secondary:not(.uk-preserve-color) .uk-table caption,.uk-tile-primary:not(.uk-preserve-color) .uk-table caption,.uk-tile-secondary:not(.uk-preserve-color) .uk-table caption{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-table tbody tr.uk-active,.uk-card-primary.uk-card-body .uk-table>tr.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-table tbody tr.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-table>tr.uk-active,.uk-card-secondary.uk-card-body .uk-table tbody tr.uk-active,.uk-card-secondary.uk-card-body .uk-table>tr.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table tbody tr.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table>tr.uk-active,.uk-light .uk-table tbody tr.uk-active,.uk-light .uk-table>tr.uk-active,.uk-offcanvas-bar .uk-table tbody tr.uk-active,.uk-offcanvas-bar .uk-table>tr.uk-active,.uk-overlay-primary .uk-table tbody tr.uk-active,.uk-overlay-primary .uk-table>tr.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-table>tr.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-table tbody tr.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-table>tr.uk-active{background:rgba(255,255,255,.08)}.uk-card-primary.uk-card-body .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-primary.uk-card-body .uk-table-divider>:not(:first-child)>tr,.uk-card-primary.uk-card-body .uk-table-divider>tr:not(:first-child),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>:not(:first-child)>tr,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-divider>tr:not(:first-child),.uk-card-secondary.uk-card-body .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-secondary.uk-card-body .uk-table-divider>:not(:first-child)>tr,.uk-card-secondary.uk-card-body .uk-table-divider>tr:not(:first-child),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>:first-child>tr:not(:first-child),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>:not(:first-child)>tr,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-divider>tr:not(:first-child),.uk-light .uk-table-divider>:first-child>tr:not(:first-child),.uk-light .uk-table-divider>:not(:first-child)>tr,.uk-light .uk-table-divider>tr:not(:first-child),.uk-offcanvas-bar .uk-table-divider>:first-child>tr:not(:first-child),.uk-offcanvas-bar .uk-table-divider>:not(:first-child)>tr,.uk-offcanvas-bar .uk-table-divider>tr:not(:first-child),.uk-overlay-primary .uk-table-divider>:first-child>tr:not(:first-child),.uk-overlay-primary .uk-table-divider>:not(:first-child)>tr,.uk-overlay-primary .uk-table-divider>tr:not(:first-child),.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-section-primary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-section-secondary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-tile-primary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>:first-child>tr:not(:first-child),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>:not(:first-child)>tr,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-divider>tr:not(:first-child){border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-primary.uk-card-body .uk-table-striped>tr:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-secondary.uk-card-body .uk-table-striped>tr:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(odd),.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(odd),.uk-light .uk-table-striped tbody tr:nth-of-type(odd),.uk-light .uk-table-striped>tr:nth-of-type(odd),.uk-offcanvas-bar .uk-table-striped tbody tr:nth-of-type(odd),.uk-offcanvas-bar .uk-table-striped>tr:nth-of-type(odd),.uk-overlay-primary .uk-table-striped tbody tr:nth-of-type(odd),.uk-overlay-primary .uk-table-striped>tr:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-section-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(odd),.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(odd){background:rgba(255,255,255,.1);border-top-color:rgba(255,255,255,.2);border-bottom-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-table-hover tbody tr:hover,.uk-card-primary.uk-card-body .uk-table-hover>tr:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-hover tbody tr:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-hover>tr:hover,.uk-card-secondary.uk-card-body .uk-table-hover tbody tr:hover,.uk-card-secondary.uk-card-body .uk-table-hover>tr:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-hover tbody tr:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-hover>tr:hover,.uk-light .uk-table-hover tbody tr:hover,.uk-light .uk-table-hover>tr:hover,.uk-offcanvas-bar .uk-table-hover tbody tr:hover,.uk-offcanvas-bar .uk-table-hover>tr:hover,.uk-overlay-primary .uk-table-hover tbody tr:hover,.uk-overlay-primary .uk-table-hover>tr:hover,.uk-section-primary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-section-primary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-table-hover>tr:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-hover tbody tr:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-hover>tr:hover{background:rgba(255,255,255,.08)}.uk-card-primary.uk-card-body .uk-icon-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link,.uk-card-secondary.uk-card-body .uk-icon-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link,.uk-light .uk-icon-link,.uk-offcanvas-bar .uk-icon-link,.uk-overlay-primary .uk-icon-link,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-icon-link:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link:hover,.uk-card-secondary.uk-card-body .uk-icon-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link:hover,.uk-light .uk-icon-link:hover,.uk-offcanvas-bar .uk-icon-link:hover,.uk-overlay-primary .uk-icon-link:hover,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-active>.uk-icon-link,.uk-card-primary.uk-card-body .uk-icon-link:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-active>.uk-icon-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-link:active,.uk-card-secondary.uk-card-body .uk-active>.uk-icon-link,.uk-card-secondary.uk-card-body .uk-icon-link:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-active>.uk-icon-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-link:active,.uk-light .uk-active>.uk-icon-link,.uk-light .uk-icon-link:active,.uk-offcanvas-bar .uk-active>.uk-icon-link,.uk-offcanvas-bar .uk-icon-link:active,.uk-overlay-primary .uk-active>.uk-icon-link,.uk-overlay-primary .uk-icon-link:active,.uk-section-primary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-section-primary:not(.uk-preserve-color) .uk-icon-link:active,.uk-section-secondary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-link:active,.uk-tile-primary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-link:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-active>.uk-icon-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-link:active{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-icon-button,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button,.uk-card-secondary.uk-card-body .uk-icon-button,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button,.uk-light .uk-icon-button,.uk-offcanvas-bar .uk-icon-button,.uk-overlay-primary .uk-icon-button,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button{background-color:rgba(255,255,255,.1);color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-icon-button:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button:hover,.uk-card-secondary.uk-card-body .uk-icon-button:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button:hover,.uk-light .uk-icon-button:hover,.uk-offcanvas-bar .uk-icon-button:hover,.uk-overlay-primary .uk-icon-button:hover,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button:hover{background-color:rgba(255,255,255,.15);color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-icon-button:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-icon-button:active,.uk-card-secondary.uk-card-body .uk-icon-button:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-icon-button:active,.uk-light .uk-icon-button:active,.uk-offcanvas-bar .uk-icon-button:active,.uk-overlay-primary .uk-icon-button:active,.uk-section-primary:not(.uk-preserve-color) .uk-icon-button:active,.uk-section-secondary:not(.uk-preserve-color) .uk-icon-button:active,.uk-tile-primary:not(.uk-preserve-color) .uk-icon-button:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-icon-button:active{background-color:rgba(255,255,255,.2);color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-input,.uk-card-primary.uk-card-body .uk-select,.uk-card-primary.uk-card-body .uk-textarea,.uk-card-primary>:not([class*=uk-card-media]) .uk-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-select,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea,.uk-card-secondary.uk-card-body .uk-input,.uk-card-secondary.uk-card-body .uk-select,.uk-card-secondary.uk-card-body .uk-textarea,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-select,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea,.uk-light .uk-input,.uk-light .uk-select,.uk-light .uk-textarea,.uk-offcanvas-bar .uk-input,.uk-offcanvas-bar .uk-select,.uk-offcanvas-bar .uk-textarea,.uk-overlay-primary .uk-input,.uk-overlay-primary .uk-select,.uk-overlay-primary .uk-textarea,.uk-section-primary:not(.uk-preserve-color) .uk-input,.uk-section-primary:not(.uk-preserve-color) .uk-select,.uk-section-primary:not(.uk-preserve-color) .uk-textarea,.uk-section-secondary:not(.uk-preserve-color) .uk-input,.uk-section-secondary:not(.uk-preserve-color) .uk-select,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea,.uk-tile-primary:not(.uk-preserve-color) .uk-input,.uk-tile-primary:not(.uk-preserve-color) .uk-select,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea,.uk-tile-secondary:not(.uk-preserve-color) .uk-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-select,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea{background-color:rgba(255,255,255,.1);color:rgba(255,255,255,.7);background-clip:padding-box;border-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-input:focus,.uk-card-primary.uk-card-body .uk-select:focus,.uk-card-primary.uk-card-body .uk-textarea:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-select:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea:focus,.uk-card-secondary.uk-card-body .uk-input:focus,.uk-card-secondary.uk-card-body .uk-select:focus,.uk-card-secondary.uk-card-body .uk-textarea:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-select:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea:focus,.uk-light .uk-input:focus,.uk-light .uk-select:focus,.uk-light .uk-textarea:focus,.uk-offcanvas-bar .uk-input:focus,.uk-offcanvas-bar .uk-select:focus,.uk-offcanvas-bar .uk-textarea:focus,.uk-overlay-primary .uk-input:focus,.uk-overlay-primary .uk-select:focus,.uk-overlay-primary .uk-textarea:focus,.uk-section-primary:not(.uk-preserve-color) .uk-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-select:focus,.uk-section-primary:not(.uk-preserve-color) .uk-textarea:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-select:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-select:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-select:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea:focus{background-color:rgba(255,255,255,.15);color:rgba(255,255,255,.7);border-color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-input::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-input::placeholder,.uk-card-secondary.uk-card-body .uk-input::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input::placeholder,.uk-light .uk-input::placeholder,.uk-offcanvas-bar .uk-input::placeholder,.uk-overlay-primary .uk-input::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-input::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-input::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-input::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-input::placeholder{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-textarea::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-textarea::placeholder,.uk-card-secondary.uk-card-body .uk-textarea::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-textarea::placeholder,.uk-light .uk-textarea::placeholder,.uk-offcanvas-bar .uk-textarea::placeholder,.uk-overlay-primary .uk-textarea::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-textarea::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-textarea::placeholder{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-select:not([multiple]):not([size]),.uk-card-primary>:not([class*=uk-card-media]) .uk-select:not([multiple]):not([size]),.uk-card-secondary.uk-card-body .uk-select:not([multiple]):not([size]),.uk-card-secondary>:not([class*=uk-card-media]) .uk-select:not([multiple]):not([size]),.uk-light .uk-select:not([multiple]):not([size]),.uk-offcanvas-bar .uk-select:not([multiple]):not([size]),.uk-overlay-primary .uk-select:not([multiple]):not([size]),.uk-section-primary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-section-secondary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-tile-primary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]),.uk-tile-secondary:not(.uk-preserve-color) .uk-select:not([multiple]):not([size]){background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-card-primary.uk-card-body .uk-input[list]:focus,.uk-card-primary.uk-card-body .uk-input[list]:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-input[list]:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-input[list]:hover,.uk-card-secondary.uk-card-body .uk-input[list]:focus,.uk-card-secondary.uk-card-body .uk-input[list]:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input[list]:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-input[list]:hover,.uk-light .uk-input[list]:focus,.uk-light .uk-input[list]:hover,.uk-offcanvas-bar .uk-input[list]:focus,.uk-offcanvas-bar .uk-input[list]:hover,.uk-overlay-primary .uk-input[list]:focus,.uk-overlay-primary .uk-input[list]:hover,.uk-section-primary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-section-primary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-input[list]:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-input[list]:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-input[list]:hover{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20points%3D%2212%2012%208%206%2016%206%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-card-primary.uk-card-body .uk-checkbox,.uk-card-primary.uk-card-body .uk-radio,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio,.uk-card-secondary.uk-card-body .uk-checkbox,.uk-card-secondary.uk-card-body .uk-radio,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio,.uk-light .uk-checkbox,.uk-light .uk-radio,.uk-offcanvas-bar .uk-checkbox,.uk-offcanvas-bar .uk-radio,.uk-overlay-primary .uk-checkbox,.uk-overlay-primary .uk-radio,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox,.uk-section-primary:not(.uk-preserve-color) .uk-radio,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox,.uk-section-secondary:not(.uk-preserve-color) .uk-radio,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox,.uk-tile-primary:not(.uk-preserve-color) .uk-radio,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio{background-color:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-checkbox:focus,.uk-card-primary.uk-card-body .uk-radio:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:focus,.uk-card-secondary.uk-card-body .uk-checkbox:focus,.uk-card-secondary.uk-card-body .uk-radio:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:focus,.uk-light .uk-checkbox:focus,.uk-light .uk-radio:focus,.uk-offcanvas-bar .uk-checkbox:focus,.uk-offcanvas-bar .uk-radio:focus,.uk-overlay-primary .uk-checkbox:focus,.uk-overlay-primary .uk-radio:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-section-primary:not(.uk-preserve-color) .uk-radio:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:focus{background-color:rgba(255,255,255,.15);border-color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-checkbox:checked,.uk-card-primary.uk-card-body .uk-checkbox:indeterminate,.uk-card-primary.uk-card-body .uk-radio:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-card-secondary.uk-card-body .uk-checkbox:checked,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate,.uk-card-secondary.uk-card-body .uk-radio:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-light .uk-checkbox:checked,.uk-light .uk-checkbox:indeterminate,.uk-light .uk-radio:checked,.uk-offcanvas-bar .uk-checkbox:checked,.uk-offcanvas-bar .uk-checkbox:indeterminate,.uk-offcanvas-bar .uk-radio:checked,.uk-overlay-primary .uk-checkbox:checked,.uk-overlay-primary .uk-checkbox:indeterminate,.uk-overlay-primary .uk-radio:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked{background-color:#fff;border-color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-checkbox:checked:focus,.uk-card-primary.uk-card-body .uk-checkbox:indeterminate:focus,.uk-card-primary.uk-card-body .uk-radio:checked:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked:focus,.uk-card-secondary.uk-card-body .uk-checkbox:checked:focus,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate:focus,.uk-card-secondary.uk-card-body .uk-radio:checked:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked:focus,.uk-light .uk-checkbox:checked:focus,.uk-light .uk-checkbox:indeterminate:focus,.uk-light .uk-radio:checked:focus,.uk-offcanvas-bar .uk-checkbox:checked:focus,.uk-offcanvas-bar .uk-checkbox:indeterminate:focus,.uk-offcanvas-bar .uk-radio:checked:focus,.uk-overlay-primary .uk-checkbox:checked:focus,.uk-overlay-primary .uk-checkbox:indeterminate:focus,.uk-overlay-primary .uk-radio:checked:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked:focus{background-color:#fff}.uk-card-primary.uk-card-body .uk-radio:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-card-secondary.uk-card-body .uk-radio:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-radio:checked,.uk-light .uk-radio:checked,.uk-offcanvas-bar .uk-radio:checked,.uk-overlay-primary .uk-radio:checked,.uk-section-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-radio:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-radio:checked{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22%23666%22%20cx%3D%228%22%20cy%3D%228%22%20r%3D%222%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-card-primary.uk-card-body .uk-checkbox:checked,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-card-secondary.uk-card-body .uk-checkbox:checked,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:checked,.uk-light .uk-checkbox:checked,.uk-offcanvas-bar .uk-checkbox:checked,.uk-overlay-primary .uk-checkbox:checked,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:checked,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:checked{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2211%22%20viewBox%3D%220%200%2014%2011%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%201%205%207.5%202%205%201%205.5%205%2010%2013%201.5%22%20%2F%3E%0A%3C%2Fsvg%3E%0A")}.uk-card-primary.uk-card-body .uk-checkbox:indeterminate,.uk-card-primary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-card-secondary.uk-card-body .uk-checkbox:indeterminate,.uk-card-secondary>:not([class*=uk-card-media]) .uk-checkbox:indeterminate,.uk-light .uk-checkbox:indeterminate,.uk-offcanvas-bar .uk-checkbox:indeterminate,.uk-overlay-primary .uk-checkbox:indeterminate,.uk-section-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-section-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-primary:not(.uk-preserve-color) .uk-checkbox:indeterminate,.uk-tile-secondary:not(.uk-preserve-color) .uk-checkbox:indeterminate{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%23666%22%20x%3D%223%22%20y%3D%228%22%20width%3D%2210%22%20height%3D%221%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-card-primary.uk-card-body .uk-form-label,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-label,.uk-card-secondary.uk-card-body .uk-form-label,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-label,.uk-light .uk-form-label,.uk-offcanvas-bar .uk-form-label,.uk-overlay-primary .uk-form-label,.uk-section-primary:not(.uk-preserve-color) .uk-form-label,.uk-section-secondary:not(.uk-preserve-color) .uk-form-label,.uk-tile-primary:not(.uk-preserve-color) .uk-form-label,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-label{color:#fff}.uk-card-primary.uk-card-body .uk-form-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-icon,.uk-card-secondary.uk-card-body .uk-form-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-icon,.uk-light .uk-form-icon,.uk-offcanvas-bar .uk-form-icon,.uk-overlay-primary .uk-form-icon,.uk-section-primary:not(.uk-preserve-color) .uk-form-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-form-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-form-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-icon{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-form-icon:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-form-icon:hover,.uk-card-secondary.uk-card-body .uk-form-icon:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-form-icon:hover,.uk-light .uk-form-icon:hover,.uk-offcanvas-bar .uk-form-icon:hover,.uk-overlay-primary .uk-form-icon:hover,.uk-section-primary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-form-icon:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-form-icon:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-button-default,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default,.uk-card-secondary.uk-card-body .uk-button-default,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default,.uk-light .uk-button-default,.uk-offcanvas-bar .uk-button-default,.uk-overlay-primary .uk-button-default,.uk-section-primary:not(.uk-preserve-color) .uk-button-default,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default{background-color:transparent;color:#fff;border-color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-button-default:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default:hover,.uk-card-secondary.uk-card-body .uk-button-default:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default:hover,.uk-light .uk-button-default:hover,.uk-offcanvas-bar .uk-button-default:hover,.uk-overlay-primary .uk-button-default:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-default:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default:hover{background-color:transparent;color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-button-default.uk-active,.uk-card-primary.uk-card-body .uk-button-default:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-default:active,.uk-card-secondary.uk-card-body .uk-button-default.uk-active,.uk-card-secondary.uk-card-body .uk-button-default:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-default:active,.uk-light .uk-button-default.uk-active,.uk-light .uk-button-default:active,.uk-offcanvas-bar .uk-button-default.uk-active,.uk-offcanvas-bar .uk-button-default:active,.uk-overlay-primary .uk-button-default.uk-active,.uk-overlay-primary .uk-button-default:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-default:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-default:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-default:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-default:active{background-color:transparent;color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-button-primary,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary,.uk-card-secondary.uk-card-body .uk-button-primary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary,.uk-light .uk-button-primary,.uk-offcanvas-bar .uk-button-primary,.uk-overlay-primary .uk-button-primary,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-button-primary:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary:hover,.uk-card-secondary.uk-card-body .uk-button-primary:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary:hover,.uk-light .uk-button-primary:hover,.uk-offcanvas-bar .uk-button-primary:hover,.uk-overlay-primary .uk-button-primary:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary:hover{background-color:#f2f2f2;color:#666}.uk-card-primary.uk-card-body .uk-button-primary.uk-active,.uk-card-primary.uk-card-body .uk-button-primary:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-primary:active,.uk-card-secondary.uk-card-body .uk-button-primary.uk-active,.uk-card-secondary.uk-card-body .uk-button-primary:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-primary:active,.uk-light .uk-button-primary.uk-active,.uk-light .uk-button-primary:active,.uk-offcanvas-bar .uk-button-primary.uk-active,.uk-offcanvas-bar .uk-button-primary:active,.uk-overlay-primary .uk-button-primary.uk-active,.uk-overlay-primary .uk-button-primary:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-primary:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-primary:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-primary:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-primary:active{background-color:#e6e6e6;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary,.uk-card-secondary.uk-card-body .uk-button-secondary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary,.uk-light .uk-button-secondary,.uk-offcanvas-bar .uk-button-secondary,.uk-overlay-primary .uk-button-secondary,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary:hover,.uk-card-secondary.uk-card-body .uk-button-secondary:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary:hover,.uk-light .uk-button-secondary:hover,.uk-offcanvas-bar .uk-button-secondary:hover,.uk-overlay-primary .uk-button-secondary:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary:hover{background-color:#f2f2f2;color:#666}.uk-card-primary.uk-card-body .uk-button-secondary.uk-active,.uk-card-primary.uk-card-body .uk-button-secondary:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary.uk-active,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-secondary:active,.uk-card-secondary.uk-card-body .uk-button-secondary.uk-active,.uk-card-secondary.uk-card-body .uk-button-secondary:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary.uk-active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-secondary:active,.uk-light .uk-button-secondary.uk-active,.uk-light .uk-button-secondary:active,.uk-offcanvas-bar .uk-button-secondary.uk-active,.uk-offcanvas-bar .uk-button-secondary:active,.uk-overlay-primary .uk-button-secondary.uk-active,.uk-overlay-primary .uk-button-secondary:active,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-section-primary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary.uk-active,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-secondary:active{background-color:#e6e6e6;color:#666}.uk-card-primary.uk-card-body .uk-button-text,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text,.uk-card-secondary.uk-card-body .uk-button-text,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text,.uk-light .uk-button-text,.uk-offcanvas-bar .uk-button-text,.uk-overlay-primary .uk-button-text,.uk-section-primary:not(.uk-preserve-color) .uk-button-text,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text{color:#fff}.uk-card-primary.uk-card-body .uk-button-text::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text::before,.uk-card-secondary.uk-card-body .uk-button-text::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text::before,.uk-light .uk-button-text::before,.uk-offcanvas-bar .uk-button-text::before,.uk-overlay-primary .uk-button-text::before,.uk-section-primary:not(.uk-preserve-color) .uk-button-text::before,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text::before,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text::before{border-bottom-color:#fff}.uk-card-primary.uk-card-body .uk-button-text:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:hover,.uk-card-secondary.uk-card-body .uk-button-text:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:hover,.uk-light .uk-button-text:hover,.uk-offcanvas-bar .uk-button-text:hover,.uk-overlay-primary .uk-button-text:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:hover{color:#fff}.uk-card-primary.uk-card-body .uk-button-text:disabled,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-text:disabled,.uk-card-secondary.uk-card-body .uk-button-text:disabled,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-text:disabled,.uk-light .uk-button-text:disabled,.uk-offcanvas-bar .uk-button-text:disabled,.uk-overlay-primary .uk-button-text:disabled,.uk-section-primary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-section-secondary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-tile-primary:not(.uk-preserve-color) .uk-button-text:disabled,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-text:disabled{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-button-link,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-link,.uk-card-secondary.uk-card-body .uk-button-link,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-link,.uk-light .uk-button-link,.uk-offcanvas-bar .uk-button-link,.uk-overlay-primary .uk-button-link,.uk-section-primary:not(.uk-preserve-color) .uk-button-link,.uk-section-secondary:not(.uk-preserve-color) .uk-button-link,.uk-tile-primary:not(.uk-preserve-color) .uk-button-link,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-link{color:#fff}.uk-card-primary.uk-card-body .uk-button-link:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-button-link:hover,.uk-card-secondary.uk-card-body .uk-button-link:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-button-link:hover,.uk-light .uk-button-link:hover,.uk-offcanvas-bar .uk-button-link:hover,.uk-overlay-primary .uk-button-link:hover,.uk-section-primary:not(.uk-preserve-color) .uk-button-link:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-button-link:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-button-link:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-button-link:hover{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body.uk-card-badge,.uk-card-primary>:not([class*=uk-card-media]).uk-card-badge,.uk-card-secondary.uk-card-body.uk-card-badge,.uk-card-secondary>:not([class*=uk-card-media]).uk-card-badge,.uk-light.uk-card-badge,.uk-offcanvas-bar.uk-card-badge,.uk-overlay-primary.uk-card-badge,.uk-section-primary:not(.uk-preserve-color).uk-card-badge,.uk-section-secondary:not(.uk-preserve-color).uk-card-badge,.uk-tile-primary:not(.uk-preserve-color).uk-card-badge,.uk-tile-secondary:not(.uk-preserve-color).uk-card-badge{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-close,.uk-card-primary>:not([class*=uk-card-media]) .uk-close,.uk-card-secondary.uk-card-body .uk-close,.uk-card-secondary>:not([class*=uk-card-media]) .uk-close,.uk-light .uk-close,.uk-offcanvas-bar .uk-close,.uk-overlay-primary .uk-close,.uk-section-primary:not(.uk-preserve-color) .uk-close,.uk-section-secondary:not(.uk-preserve-color) .uk-close,.uk-tile-primary:not(.uk-preserve-color) .uk-close,.uk-tile-secondary:not(.uk-preserve-color) .uk-close{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-close:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-close:hover,.uk-card-secondary.uk-card-body .uk-close:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-close:hover,.uk-light .uk-close:hover,.uk-offcanvas-bar .uk-close:hover,.uk-overlay-primary .uk-close:hover,.uk-section-primary:not(.uk-preserve-color) .uk-close:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-close:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-close:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-close:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-totop,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop,.uk-card-secondary.uk-card-body .uk-totop,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop,.uk-light .uk-totop,.uk-offcanvas-bar .uk-totop,.uk-overlay-primary .uk-totop,.uk-section-primary:not(.uk-preserve-color) .uk-totop,.uk-section-secondary:not(.uk-preserve-color) .uk-totop,.uk-tile-primary:not(.uk-preserve-color) .uk-totop,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-totop:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop:hover,.uk-card-secondary.uk-card-body .uk-totop:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop:hover,.uk-light .uk-totop:hover,.uk-offcanvas-bar .uk-totop:hover,.uk-overlay-primary .uk-totop:hover,.uk-section-primary:not(.uk-preserve-color) .uk-totop:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-totop:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-totop:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-totop:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-totop:active,.uk-card-secondary.uk-card-body .uk-totop:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-totop:active,.uk-light .uk-totop:active,.uk-offcanvas-bar .uk-totop:active,.uk-overlay-primary .uk-totop:active,.uk-section-primary:not(.uk-preserve-color) .uk-totop:active,.uk-section-secondary:not(.uk-preserve-color) .uk-totop:active,.uk-tile-primary:not(.uk-preserve-color) .uk-totop:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-totop:active{color:#fff}.uk-card-primary.uk-card-body .uk-marker,.uk-card-primary>:not([class*=uk-card-media]) .uk-marker,.uk-card-secondary.uk-card-body .uk-marker,.uk-card-secondary>:not([class*=uk-card-media]) .uk-marker,.uk-light .uk-marker,.uk-offcanvas-bar .uk-marker,.uk-overlay-primary .uk-marker,.uk-section-primary:not(.uk-preserve-color) .uk-marker,.uk-section-secondary:not(.uk-preserve-color) .uk-marker,.uk-tile-primary:not(.uk-preserve-color) .uk-marker,.uk-tile-secondary:not(.uk-preserve-color) .uk-marker{background:#f8f8f8;color:#666}.uk-card-primary.uk-card-body .uk-marker:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-marker:hover,.uk-card-secondary.uk-card-body .uk-marker:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-marker:hover,.uk-light .uk-marker:hover,.uk-offcanvas-bar .uk-marker:hover,.uk-overlay-primary .uk-marker:hover,.uk-section-primary:not(.uk-preserve-color) .uk-marker:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-marker:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-marker:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-marker:hover{color:#666}.uk-card-primary.uk-card-body .uk-badge,.uk-card-primary>:not([class*=uk-card-media]) .uk-badge,.uk-card-secondary.uk-card-body .uk-badge,.uk-card-secondary>:not([class*=uk-card-media]) .uk-badge,.uk-light .uk-badge,.uk-offcanvas-bar .uk-badge,.uk-overlay-primary .uk-badge,.uk-section-primary:not(.uk-preserve-color) .uk-badge,.uk-section-secondary:not(.uk-preserve-color) .uk-badge,.uk-tile-primary:not(.uk-preserve-color) .uk-badge,.uk-tile-secondary:not(.uk-preserve-color) .uk-badge{background-color:#fff;color:#666!important}.uk-card-primary.uk-card-body .uk-label,.uk-card-primary>:not([class*=uk-card-media]) .uk-label,.uk-card-secondary.uk-card-body .uk-label,.uk-card-secondary>:not([class*=uk-card-media]) .uk-label,.uk-light .uk-label,.uk-offcanvas-bar .uk-label,.uk-overlay-primary .uk-label,.uk-section-primary:not(.uk-preserve-color) .uk-label,.uk-section-secondary:not(.uk-preserve-color) .uk-label,.uk-tile-primary:not(.uk-preserve-color) .uk-label,.uk-tile-secondary:not(.uk-preserve-color) .uk-label{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-article-meta,.uk-card-primary>:not([class*=uk-card-media]) .uk-article-meta,.uk-card-secondary.uk-card-body .uk-article-meta,.uk-card-secondary>:not([class*=uk-card-media]) .uk-article-meta,.uk-light .uk-article-meta,.uk-offcanvas-bar .uk-article-meta,.uk-overlay-primary .uk-article-meta,.uk-section-primary:not(.uk-preserve-color) .uk-article-meta,.uk-section-secondary:not(.uk-preserve-color) .uk-article-meta,.uk-tile-primary:not(.uk-preserve-color) .uk-article-meta,.uk-tile-secondary:not(.uk-preserve-color) .uk-article-meta{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-input,.uk-light .uk-search-input,.uk-offcanvas-bar .uk-search-input,.uk-overlay-primary .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-input{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-search-input::placeholder,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-input::placeholder,.uk-card-secondary.uk-card-body .uk-search-input::placeholder,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-input::placeholder,.uk-light .uk-search-input::placeholder,.uk-offcanvas-bar .uk-search-input::placeholder,.uk-overlay-primary .uk-search-input::placeholder,.uk-section-primary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-section-secondary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-tile-primary:not(.uk-preserve-color) .uk-search-input::placeholder,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-input::placeholder{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-search .uk-search-icon,.uk-card-primary>:not([class*=uk-card-media]) .uk-search .uk-search-icon,.uk-card-secondary.uk-card-body .uk-search .uk-search-icon,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search .uk-search-icon,.uk-light .uk-search .uk-search-icon,.uk-offcanvas-bar .uk-search .uk-search-icon,.uk-overlay-primary .uk-search .uk-search-icon,.uk-section-primary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-section-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-tile-primary:not(.uk-preserve-color) .uk-search .uk-search-icon,.uk-tile-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-search .uk-search-icon:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-search .uk-search-icon:hover,.uk-card-secondary.uk-card-body .uk-search .uk-search-icon:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search .uk-search-icon:hover,.uk-light .uk-search .uk-search-icon:hover,.uk-offcanvas-bar .uk-search .uk-search-icon:hover,.uk-overlay-primary .uk-search .uk-search-icon:hover,.uk-section-primary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-search .uk-search-icon:hover{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-search-default .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-default .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input,.uk-light .uk-search-default .uk-search-input,.uk-offcanvas-bar .uk-search-default .uk-search-input,.uk-overlay-primary .uk-search-default .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input{background-color:transparent;border-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-search-default .uk-search-input:focus,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input:focus,.uk-card-secondary.uk-card-body .uk-search-default .uk-search-input:focus,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-default .uk-search-input:focus,.uk-light .uk-search-default .uk-search-input:focus,.uk-offcanvas-bar .uk-search-default .uk-search-input:focus,.uk-overlay-primary .uk-search-default .uk-search-input:focus,.uk-section-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-section-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-tile-primary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-default .uk-search-input:focus{background-color:rgba(0,0,0,.05)}.uk-card-primary.uk-card-body .uk-search-navbar .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-navbar .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-navbar .uk-search-input,.uk-light .uk-search-navbar .uk-search-input,.uk-offcanvas-bar .uk-search-navbar .uk-search-input,.uk-overlay-primary .uk-search-navbar .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-navbar .uk-search-input{background-color:transparent}.uk-card-primary.uk-card-body .uk-search-large .uk-search-input,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-large .uk-search-input,.uk-card-secondary.uk-card-body .uk-search-large .uk-search-input,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-large .uk-search-input,.uk-light .uk-search-large .uk-search-input,.uk-offcanvas-bar .uk-search-large .uk-search-input,.uk-overlay-primary .uk-search-large .uk-search-input,.uk-section-primary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-section-secondary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-tile-primary:not(.uk-preserve-color) .uk-search-large .uk-search-input,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-large .uk-search-input{background-color:transparent}.uk-card-primary.uk-card-body .uk-search-toggle,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-toggle,.uk-card-secondary.uk-card-body .uk-search-toggle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-toggle,.uk-light .uk-search-toggle,.uk-offcanvas-bar .uk-search-toggle,.uk-overlay-primary .uk-search-toggle,.uk-section-primary:not(.uk-preserve-color) .uk-search-toggle,.uk-section-secondary:not(.uk-preserve-color) .uk-search-toggle,.uk-tile-primary:not(.uk-preserve-color) .uk-search-toggle,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-toggle{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-search-toggle:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-search-toggle:hover,.uk-card-secondary.uk-card-body .uk-search-toggle:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-search-toggle:hover,.uk-light .uk-search-toggle:hover,.uk-offcanvas-bar .uk-search-toggle:hover,.uk-overlay-primary .uk-search-toggle:hover,.uk-section-primary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-search-toggle:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-search-toggle:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-accordion-title,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title,.uk-card-secondary.uk-card-body .uk-accordion-title,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title,.uk-light .uk-accordion-title,.uk-offcanvas-bar .uk-accordion-title,.uk-overlay-primary .uk-accordion-title,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title{color:#fff}.uk-card-primary.uk-card-body .uk-accordion-title:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title:hover,.uk-card-secondary.uk-card-body .uk-accordion-title:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title:hover,.uk-light .uk-accordion-title:hover,.uk-offcanvas-bar .uk-accordion-title:hover,.uk-overlay-primary .uk-accordion-title:hover,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-grid-divider>:not(.uk-first-column)::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-grid-divider>:not(.uk-first-column)::before,.uk-card-secondary.uk-card-body .uk-grid-divider>:not(.uk-first-column)::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-grid-divider>:not(.uk-first-column)::before,.uk-light .uk-grid-divider>:not(.uk-first-column)::before,.uk-offcanvas-bar .uk-grid-divider>:not(.uk-first-column)::before,.uk-overlay-primary .uk-grid-divider>:not(.uk-first-column)::before,.uk-section-primary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column)::before,.uk-section-secondary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column)::before,.uk-tile-primary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column)::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-grid-divider>:not(.uk-first-column)::before{border-left-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-card-secondary.uk-card-body .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-light .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-offcanvas-bar .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-overlay-primary .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-section-primary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-section-secondary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-tile-primary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-grid-divider.uk-grid-stack>.uk-grid-margin::before{border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-nav-default>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li>a,.uk-card-secondary.uk-card-body .uk-nav-default>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li>a,.uk-light .uk-nav-default>li>a,.uk-offcanvas-bar .uk-nav-default>li>a,.uk-overlay-primary .uk-nav-default>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li>a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-nav-default>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-default>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li>a:hover,.uk-light .uk-nav-default>li>a:hover,.uk-offcanvas-bar .uk-nav-default>li>a:hover,.uk-overlay-primary .uk-nav-default>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li>a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-nav-default>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-default>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default>li.uk-active>a,.uk-light .uk-nav-default>li.uk-active>a,.uk-offcanvas-bar .uk-nav-default>li.uk-active>a,.uk-overlay-primary .uk-nav-default>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-header,.uk-light .uk-nav-default .uk-nav-header,.uk-offcanvas-bar .uk-nav-default .uk-nav-header,.uk-overlay-primary .uk-nav-default .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-divider,.uk-light .uk-nav-default .uk-nav-divider,.uk-offcanvas-bar .uk-nav-default .uk-nav-divider,.uk-overlay-primary .uk-nav-default .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-divider{border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a,.uk-light .uk-nav-default .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub a,.uk-overlay-primary .uk-nav-default .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub a:hover,.uk-light .uk-nav-default .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-default .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-default .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li>a,.uk-card-secondary.uk-card-body .uk-nav-primary>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li>a,.uk-light .uk-nav-primary>li>a,.uk-offcanvas-bar .uk-nav-primary>li>a,.uk-overlay-primary .uk-nav-primary>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-nav-primary>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-primary>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li>a:hover,.uk-light .uk-nav-primary>li>a:hover,.uk-offcanvas-bar .uk-nav-primary>li>a:hover,.uk-overlay-primary .uk-nav-primary>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li>a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-nav-primary>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-primary>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary>li.uk-active>a,.uk-light .uk-nav-primary>li.uk-active>a,.uk-offcanvas-bar .uk-nav-primary>li.uk-active>a,.uk-overlay-primary .uk-nav-primary>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-header,.uk-light .uk-nav-primary .uk-nav-header,.uk-offcanvas-bar .uk-nav-primary .uk-nav-header,.uk-overlay-primary .uk-nav-primary .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-divider,.uk-light .uk-nav-primary .uk-nav-divider,.uk-offcanvas-bar .uk-nav-primary .uk-nav-divider,.uk-overlay-primary .uk-nav-primary .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-divider{border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a,.uk-light .uk-nav-primary .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub a,.uk-overlay-primary .uk-nav-primary .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub a:hover,.uk-light .uk-nav-primary .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-primary .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-primary .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a,.uk-light .uk-nav-secondary>li>a,.uk-offcanvas-bar .uk-nav-secondary>li>a,.uk-overlay-primary .uk-nav-secondary>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover,.uk-light .uk-nav-secondary>li>a:hover,.uk-offcanvas-bar .uk-nav-secondary>li>a:hover,.uk-overlay-primary .uk-nav-secondary>li>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover{color:#fff;background-color:rgba(255,255,255,.1)}.uk-card-primary.uk-card-body .uk-nav-secondary>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-secondary>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a,.uk-light .uk-nav-secondary>li.uk-active>a,.uk-offcanvas-bar .uk-nav-secondary>li.uk-active>a,.uk-overlay-primary .uk-nav-secondary>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a{color:#fff;background-color:rgba(255,255,255,.1)}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-subtitle,.uk-light .uk-nav-secondary .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-subtitle{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-light .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li>a:hover .uk-nav-subtitle{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-secondary.uk-card-body .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-light .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-offcanvas-bar .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-overlay-primary .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary>li.uk-active>a .uk-nav-subtitle{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-header,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-header,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-header,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-header,.uk-light .uk-nav-secondary .uk-nav-header,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-header,.uk-overlay-primary .uk-nav-secondary .uk-nav-header,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-header{color:#fff}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-divider,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-divider,.uk-light .uk-nav-secondary .uk-nav-divider,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-divider,.uk-overlay-primary .uk-nav-secondary .uk-nav-divider,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-divider{border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a,.uk-light .uk-nav-secondary .uk-nav-sub a,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub a,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub a:hover,.uk-light .uk-nav-secondary .uk-nav-sub a:hover,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub a:hover,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-secondary.uk-card-body .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-light .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-offcanvas-bar .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-overlay-primary .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-nav-secondary .uk-nav-sub li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-primary>:not([class*=uk-card-media]) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-secondary.uk-card-body .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-card-secondary>:not([class*=uk-card-media]) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-light .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-offcanvas-bar .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-overlay-primary .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-section-primary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-section-secondary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-tile-primary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider),.uk-tile-secondary:not(.uk-preserve-color) .uk-nav.uk-nav-divider>:not(.uk-nav-divider)+:not(.uk-nav-header,.uk-nav-divider){border-top-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-navbar-nav>li>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a,.uk-light .uk-navbar-nav>li>a,.uk-offcanvas-bar .uk-navbar-nav>li>a,.uk-overlay-primary .uk-navbar-nav>li>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-navbar-nav>li:hover>a,.uk-card-primary.uk-card-body .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li:hover>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-secondary.uk-card-body .uk-navbar-nav>li:hover>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a[aria-expanded=true],.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li:hover>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a[aria-expanded=true],.uk-light .uk-navbar-nav>li:hover>a,.uk-light .uk-navbar-nav>li>a[aria-expanded=true],.uk-offcanvas-bar .uk-navbar-nav>li:hover>a,.uk-offcanvas-bar .uk-navbar-nav>li>a[aria-expanded=true],.uk-overlay-primary .uk-navbar-nav>li:hover>a,.uk-overlay-primary .uk-navbar-nav>li>a[aria-expanded=true],.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true],.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a[aria-expanded=true]{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-navbar-nav>li>a:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a:active,.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li>a:active,.uk-light .uk-navbar-nav>li>a:active,.uk-offcanvas-bar .uk-navbar-nav>li>a:active,.uk-overlay-primary .uk-navbar-nav>li>a:active,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active{color:#fff}.uk-card-primary.uk-card-body .uk-navbar-nav>li.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-nav>li.uk-active>a,.uk-card-secondary.uk-card-body .uk-navbar-nav>li.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-nav>li.uk-active>a,.uk-light .uk-navbar-nav>li.uk-active>a,.uk-offcanvas-bar .uk-navbar-nav>li.uk-active>a,.uk-overlay-primary .uk-navbar-nav>li.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-navbar-item,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-item,.uk-card-secondary.uk-card-body .uk-navbar-item,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-item,.uk-light .uk-navbar-item,.uk-offcanvas-bar .uk-navbar-item,.uk-overlay-primary .uk-navbar-item,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-item,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-item,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-item,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-item{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-navbar-toggle,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle,.uk-card-secondary.uk-card-body .uk-navbar-toggle,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle,.uk-light .uk-navbar-toggle,.uk-offcanvas-bar .uk-navbar-toggle,.uk-overlay-primary .uk-navbar-toggle,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-navbar-toggle:hover,.uk-card-primary.uk-card-body .uk-navbar-toggle[aria-expanded=true],.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-navbar-toggle[aria-expanded=true],.uk-card-secondary.uk-card-body .uk-navbar-toggle:hover,.uk-card-secondary.uk-card-body .uk-navbar-toggle[aria-expanded=true],.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-navbar-toggle[aria-expanded=true],.uk-light .uk-navbar-toggle:hover,.uk-light .uk-navbar-toggle[aria-expanded=true],.uk-offcanvas-bar .uk-navbar-toggle:hover,.uk-offcanvas-bar .uk-navbar-toggle[aria-expanded=true],.uk-overlay-primary .uk-navbar-toggle:hover,.uk-overlay-primary .uk-navbar-toggle[aria-expanded=true],.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-section-primary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true],.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-navbar-toggle[aria-expanded=true]{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-subnav>*>:first-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>*>:first-child,.uk-card-secondary.uk-card-body .uk-subnav>*>:first-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>*>:first-child,.uk-light .uk-subnav>*>:first-child,.uk-offcanvas-bar .uk-subnav>*>:first-child,.uk-overlay-primary .uk-subnav>*>:first-child,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>*>:first-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>*>:first-child{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-subnav>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>*>a:hover,.uk-card-secondary.uk-card-body .uk-subnav>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>*>a:hover,.uk-light .uk-subnav>*>a:hover,.uk-offcanvas-bar .uk-subnav>*>a:hover,.uk-overlay-primary .uk-subnav>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>*>a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-subnav>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>.uk-active>a,.uk-card-secondary.uk-card-body .uk-subnav>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>.uk-active>a,.uk-light .uk-subnav>.uk-active>a,.uk-offcanvas-bar .uk-subnav>.uk-active>a,.uk-overlay-primary .uk-subnav>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>.uk-active>a{color:#fff}.uk-card-primary.uk-card-body .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-card-secondary.uk-card-body .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-light .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-offcanvas-bar .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-overlay-primary .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-divider>:nth-child(n+2):not(.uk-first-column)::before{border-left-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-subnav-pill>*>:first-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>:first-child,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>:first-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>:first-child,.uk-light .uk-subnav-pill>*>:first-child,.uk-offcanvas-bar .uk-subnav-pill>*>:first-child,.uk-overlay-primary .uk-subnav-pill>*>:first-child,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>:first-child{background-color:transparent;color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-subnav-pill>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:hover,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:hover,.uk-light .uk-subnav-pill>*>a:hover,.uk-offcanvas-bar .uk-subnav-pill>*>a:hover,.uk-overlay-primary .uk-subnav-pill>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:hover{background-color:rgba(255,255,255,.1);color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-subnav-pill>*>a:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:active,.uk-card-secondary.uk-card-body .uk-subnav-pill>*>a:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>*>a:active,.uk-light .uk-subnav-pill>*>a:active,.uk-offcanvas-bar .uk-subnav-pill>*>a:active,.uk-overlay-primary .uk-subnav-pill>*>a:active,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>*>a:active{background-color:rgba(255,255,255,.1);color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-subnav-pill>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav-pill>.uk-active>a,.uk-card-secondary.uk-card-body .uk-subnav-pill>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav-pill>.uk-active>a,.uk-light .uk-subnav-pill>.uk-active>a,.uk-offcanvas-bar .uk-subnav-pill>.uk-active>a,.uk-overlay-primary .uk-subnav-pill>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav-pill>.uk-active>a{background-color:#fff;color:#666}.uk-card-primary.uk-card-body .uk-subnav>.uk-disabled>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-subnav>.uk-disabled>a,.uk-card-secondary.uk-card-body .uk-subnav>.uk-disabled>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-subnav>.uk-disabled>a,.uk-light .uk-subnav>.uk-disabled>a,.uk-offcanvas-bar .uk-subnav>.uk-disabled>a,.uk-overlay-primary .uk-subnav>.uk-disabled>a,.uk-section-primary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-section-secondary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-tile-primary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-subnav>.uk-disabled>a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-breadcrumb>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>*>*,.uk-card-secondary.uk-card-body .uk-breadcrumb>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>*>*,.uk-light .uk-breadcrumb>*>*,.uk-offcanvas-bar .uk-breadcrumb>*>*,.uk-overlay-primary .uk-breadcrumb>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>*{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-breadcrumb>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>*>:hover,.uk-card-secondary.uk-card-body .uk-breadcrumb>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>*>:hover,.uk-light .uk-breadcrumb>*>:hover,.uk-offcanvas-bar .uk-breadcrumb>*>:hover,.uk-overlay-primary .uk-breadcrumb>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>*>:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-breadcrumb>:last-child>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>:last-child>*,.uk-card-secondary.uk-card-body .uk-breadcrumb>:last-child>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>:last-child>*,.uk-light .uk-breadcrumb>:last-child>*,.uk-offcanvas-bar .uk-breadcrumb>:last-child>*,.uk-overlay-primary .uk-breadcrumb>:last-child>*,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>:last-child>*{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-card-secondary.uk-card-body .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-light .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-offcanvas-bar .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-overlay-primary .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-section-primary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-section-secondary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-tile-primary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-breadcrumb>:nth-child(n+2):not(.uk-first-column)::before{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-pagination>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>*>*,.uk-card-secondary.uk-card-body .uk-pagination>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>*>*,.uk-light .uk-pagination>*>*,.uk-offcanvas-bar .uk-pagination>*>*,.uk-overlay-primary .uk-pagination>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>*>*{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-pagination>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>*>:hover,.uk-card-secondary.uk-card-body .uk-pagination>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>*>:hover,.uk-light .uk-pagination>*>:hover,.uk-offcanvas-bar .uk-pagination>*>:hover,.uk-overlay-primary .uk-pagination>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>*>:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-pagination>.uk-active>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>.uk-active>*,.uk-card-secondary.uk-card-body .uk-pagination>.uk-active>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>.uk-active>*,.uk-light .uk-pagination>.uk-active>*,.uk-offcanvas-bar .uk-pagination>.uk-active>*,.uk-overlay-primary .uk-pagination>.uk-active>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>.uk-active>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>.uk-active>*{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-pagination>.uk-disabled>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-pagination>.uk-disabled>*,.uk-card-secondary.uk-card-body .uk-pagination>.uk-disabled>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-pagination>.uk-disabled>*,.uk-light .uk-pagination>.uk-disabled>*,.uk-offcanvas-bar .uk-pagination>.uk-disabled>*,.uk-overlay-primary .uk-pagination>.uk-disabled>*,.uk-section-primary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-section-secondary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-tile-primary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-pagination>.uk-disabled>*{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-tab::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab::before,.uk-card-secondary.uk-card-body .uk-tab::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab::before,.uk-light .uk-tab::before,.uk-offcanvas-bar .uk-tab::before,.uk-overlay-primary .uk-tab::before,.uk-section-primary:not(.uk-preserve-color) .uk-tab::before,.uk-section-secondary:not(.uk-preserve-color) .uk-tab::before,.uk-tile-primary:not(.uk-preserve-color) .uk-tab::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab::before{border-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-tab>*>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>*>a,.uk-card-secondary.uk-card-body .uk-tab>*>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>*>a,.uk-light .uk-tab>*>a,.uk-offcanvas-bar .uk-tab>*>a,.uk-overlay-primary .uk-tab>*>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>*>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>*>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>*>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>*>a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-tab>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>*>a:hover,.uk-card-secondary.uk-card-body .uk-tab>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>*>a:hover,.uk-light .uk-tab>*>a:hover,.uk-offcanvas-bar .uk-tab>*>a:hover,.uk-overlay-primary .uk-tab>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>*>a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-tab>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>.uk-active>a,.uk-card-secondary.uk-card-body .uk-tab>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>.uk-active>a,.uk-light .uk-tab>.uk-active>a,.uk-offcanvas-bar .uk-tab>.uk-active>a,.uk-overlay-primary .uk-tab>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>.uk-active>a{color:#fff;border-color:#fff}.uk-card-primary.uk-card-body .uk-tab>.uk-disabled>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-tab>.uk-disabled>a,.uk-card-secondary.uk-card-body .uk-tab>.uk-disabled>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-tab>.uk-disabled>a,.uk-light .uk-tab>.uk-disabled>a,.uk-offcanvas-bar .uk-tab>.uk-disabled>a,.uk-overlay-primary .uk-tab>.uk-disabled>a,.uk-section-primary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-section-secondary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-tile-primary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-tab>.uk-disabled>a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-slidenav,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav,.uk-card-secondary.uk-card-body .uk-slidenav,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav,.uk-light .uk-slidenav,.uk-offcanvas-bar .uk-slidenav,.uk-overlay-primary .uk-slidenav,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-slidenav:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav:hover,.uk-card-secondary.uk-card-body .uk-slidenav:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav:hover,.uk-light .uk-slidenav:hover,.uk-offcanvas-bar .uk-slidenav:hover,.uk-overlay-primary .uk-slidenav:hover,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav:hover{color:rgba(255,255,255,.95)}.uk-card-primary.uk-card-body .uk-slidenav:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-slidenav:active,.uk-card-secondary.uk-card-body .uk-slidenav:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-slidenav:active,.uk-light .uk-slidenav:active,.uk-offcanvas-bar .uk-slidenav:active,.uk-overlay-primary .uk-slidenav:active,.uk-section-primary:not(.uk-preserve-color) .uk-slidenav:active,.uk-section-secondary:not(.uk-preserve-color) .uk-slidenav:active,.uk-tile-primary:not(.uk-preserve-color) .uk-slidenav:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-slidenav:active{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-dotnav>*>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>*,.uk-card-secondary.uk-card-body .uk-dotnav>*>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>*,.uk-light .uk-dotnav>*>*,.uk-offcanvas-bar .uk-dotnav>*>*,.uk-overlay-primary .uk-dotnav>*>*,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>*{background-color:transparent;border-color:rgba(255,255,255,.9)}.uk-card-primary.uk-card-body .uk-dotnav>*>:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>:hover,.uk-card-secondary.uk-card-body .uk-dotnav>*>:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>:hover,.uk-light .uk-dotnav>*>:hover,.uk-offcanvas-bar .uk-dotnav>*>:hover,.uk-overlay-primary .uk-dotnav>*>:hover,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>:hover{background-color:rgba(255,255,255,.9);border-color:transparent}.uk-card-primary.uk-card-body .uk-dotnav>*>:active,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>*>:active,.uk-card-secondary.uk-card-body .uk-dotnav>*>:active,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>*>:active,.uk-light .uk-dotnav>*>:active,.uk-offcanvas-bar .uk-dotnav>*>:active,.uk-overlay-primary .uk-dotnav>*>:active,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>*>:active,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>*>:active{background-color:rgba(255,255,255,.5);border-color:transparent}.uk-card-primary.uk-card-body .uk-dotnav>.uk-active>*,.uk-card-primary>:not([class*=uk-card-media]) .uk-dotnav>.uk-active>*,.uk-card-secondary.uk-card-body .uk-dotnav>.uk-active>*,.uk-card-secondary>:not([class*=uk-card-media]) .uk-dotnav>.uk-active>*,.uk-light .uk-dotnav>.uk-active>*,.uk-offcanvas-bar .uk-dotnav>.uk-active>*,.uk-overlay-primary .uk-dotnav>.uk-active>*,.uk-section-primary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-section-secondary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-tile-primary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*,.uk-tile-secondary:not(.uk-preserve-color) .uk-dotnav>.uk-active>*{background-color:rgba(255,255,255,.9);border-color:transparent}.uk-card-primary.uk-card-body .uk-iconnav>*>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>*>a,.uk-card-secondary.uk-card-body .uk-iconnav>*>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>*>a,.uk-light .uk-iconnav>*>a,.uk-offcanvas-bar .uk-iconnav>*>a,.uk-overlay-primary .uk-iconnav>*>a,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>*>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>*>a{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-iconnav>*>a:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>*>a:hover,.uk-card-secondary.uk-card-body .uk-iconnav>*>a:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>*>a:hover,.uk-light .uk-iconnav>*>a:hover,.uk-offcanvas-bar .uk-iconnav>*>a:hover,.uk-overlay-primary .uk-iconnav>*>a:hover,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>*>a:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>*>a:hover{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-iconnav>.uk-active>a,.uk-card-primary>:not([class*=uk-card-media]) .uk-iconnav>.uk-active>a,.uk-card-secondary.uk-card-body .uk-iconnav>.uk-active>a,.uk-card-secondary>:not([class*=uk-card-media]) .uk-iconnav>.uk-active>a,.uk-light .uk-iconnav>.uk-active>a,.uk-offcanvas-bar .uk-iconnav>.uk-active>a,.uk-overlay-primary .uk-iconnav>.uk-active>a,.uk-section-primary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-section-secondary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-tile-primary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a,.uk-tile-secondary:not(.uk-preserve-color) .uk-iconnav>.uk-active>a{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-text-lead,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-lead,.uk-card-secondary.uk-card-body .uk-text-lead,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-lead,.uk-light .uk-text-lead,.uk-offcanvas-bar .uk-text-lead,.uk-overlay-primary .uk-text-lead,.uk-section-primary:not(.uk-preserve-color) .uk-text-lead,.uk-section-secondary:not(.uk-preserve-color) .uk-text-lead,.uk-tile-primary:not(.uk-preserve-color) .uk-text-lead,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-lead{color:rgba(255,255,255,.7)}.uk-card-primary.uk-card-body .uk-text-meta,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-meta,.uk-card-secondary.uk-card-body .uk-text-meta,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-meta,.uk-light .uk-text-meta,.uk-offcanvas-bar .uk-text-meta,.uk-overlay-primary .uk-text-meta,.uk-section-primary:not(.uk-preserve-color) .uk-text-meta,.uk-section-secondary:not(.uk-preserve-color) .uk-text-meta,.uk-tile-primary:not(.uk-preserve-color) .uk-text-meta,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-meta{color:rgba(255,255,255,.5)}.uk-card-primary.uk-card-body .uk-text-muted,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-muted,.uk-card-secondary.uk-card-body .uk-text-muted,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-muted,.uk-light .uk-text-muted,.uk-offcanvas-bar .uk-text-muted,.uk-overlay-primary .uk-text-muted,.uk-section-primary:not(.uk-preserve-color) .uk-text-muted,.uk-section-secondary:not(.uk-preserve-color) .uk-text-muted,.uk-tile-primary:not(.uk-preserve-color) .uk-text-muted,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-muted{color:rgba(255,255,255,.5)!important}.uk-card-primary.uk-card-body .uk-text-emphasis,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-emphasis,.uk-card-secondary.uk-card-body .uk-text-emphasis,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-emphasis,.uk-light .uk-text-emphasis,.uk-offcanvas-bar .uk-text-emphasis,.uk-overlay-primary .uk-text-emphasis,.uk-section-primary:not(.uk-preserve-color) .uk-text-emphasis,.uk-section-secondary:not(.uk-preserve-color) .uk-text-emphasis,.uk-tile-primary:not(.uk-preserve-color) .uk-text-emphasis,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-emphasis{color:#fff!important}.uk-card-primary.uk-card-body .uk-text-primary,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-primary,.uk-card-secondary.uk-card-body .uk-text-primary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-primary,.uk-light .uk-text-primary,.uk-offcanvas-bar .uk-text-primary,.uk-overlay-primary .uk-text-primary,.uk-section-primary:not(.uk-preserve-color) .uk-text-primary,.uk-section-secondary:not(.uk-preserve-color) .uk-text-primary,.uk-tile-primary:not(.uk-preserve-color) .uk-text-primary,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-primary{color:#fff!important}.uk-card-primary.uk-card-body .uk-text-secondary,.uk-card-primary>:not([class*=uk-card-media]) .uk-text-secondary,.uk-card-secondary.uk-card-body .uk-text-secondary,.uk-card-secondary>:not([class*=uk-card-media]) .uk-text-secondary,.uk-light .uk-text-secondary,.uk-offcanvas-bar .uk-text-secondary,.uk-overlay-primary .uk-text-secondary,.uk-section-primary:not(.uk-preserve-color) .uk-text-secondary,.uk-section-secondary:not(.uk-preserve-color) .uk-text-secondary,.uk-tile-primary:not(.uk-preserve-color) .uk-text-secondary,.uk-tile-secondary:not(.uk-preserve-color) .uk-text-secondary{color:#fff!important}.uk-card-primary.uk-card-body .uk-column-divider,.uk-card-primary>:not([class*=uk-card-media]) .uk-column-divider,.uk-card-secondary.uk-card-body .uk-column-divider,.uk-card-secondary>:not([class*=uk-card-media]) .uk-column-divider,.uk-light .uk-column-divider,.uk-offcanvas-bar .uk-column-divider,.uk-overlay-primary .uk-column-divider,.uk-section-primary:not(.uk-preserve-color) .uk-column-divider,.uk-section-secondary:not(.uk-preserve-color) .uk-column-divider,.uk-tile-primary:not(.uk-preserve-color) .uk-column-divider,.uk-tile-secondary:not(.uk-preserve-color) .uk-column-divider{column-rule-color:rgba(255,255,255,0.2)}.uk-card-primary.uk-card-body .uk-logo,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo,.uk-card-secondary.uk-card-body .uk-logo,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo,.uk-light .uk-logo,.uk-offcanvas-bar .uk-logo,.uk-overlay-primary .uk-logo,.uk-section-primary:not(.uk-preserve-color) .uk-logo,.uk-section-secondary:not(.uk-preserve-color) .uk-logo,.uk-tile-primary:not(.uk-preserve-color) .uk-logo,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo{color:#fff}.uk-card-primary.uk-card-body .uk-logo:hover,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo:hover,.uk-card-secondary.uk-card-body .uk-logo:hover,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo:hover,.uk-light .uk-logo:hover,.uk-offcanvas-bar .uk-logo:hover,.uk-overlay-primary .uk-logo:hover,.uk-section-primary:not(.uk-preserve-color) .uk-logo:hover,.uk-section-secondary:not(.uk-preserve-color) .uk-logo:hover,.uk-tile-primary:not(.uk-preserve-color) .uk-logo:hover,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo:hover{color:#fff}.uk-card-primary.uk-card-body .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-card-primary.uk-card-body .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-card-primary>:not([class*=uk-card-media]) .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-card-primary>:not([class*=uk-card-media]) .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-card-secondary.uk-card-body .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-card-secondary.uk-card-body .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-light .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-light .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-offcanvas-bar .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-offcanvas-bar .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-overlay-primary .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-overlay-primary .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-section-primary:not(.uk-preserve-color) .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-section-primary:not(.uk-preserve-color) .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-section-secondary:not(.uk-preserve-color) .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-section-secondary:not(.uk-preserve-color) .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-tile-primary:not(.uk-preserve-color) .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-tile-primary:not(.uk-preserve-color) .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse),.uk-tile-secondary:not(.uk-preserve-color) .uk-logo>:not(picture):not(.uk-logo-inverse):not(:only-of-type),.uk-tile-secondary:not(.uk-preserve-color) .uk-logo>picture:not(:only-of-type)>:not(.uk-logo-inverse){display:none}.uk-card-primary.uk-card-body .uk-logo-inverse,.uk-card-primary>:not([class*=uk-card-media]) .uk-logo-inverse,.uk-card-secondary.uk-card-body .uk-logo-inverse,.uk-card-secondary>:not([class*=uk-card-media]) .uk-logo-inverse,.uk-light .uk-logo-inverse,.uk-offcanvas-bar .uk-logo-inverse,.uk-overlay-primary .uk-logo-inverse,.uk-section-primary:not(.uk-preserve-color) .uk-logo-inverse,.uk-section-secondary:not(.uk-preserve-color) .uk-logo-inverse,.uk-tile-primary:not(.uk-preserve-color) .uk-logo-inverse,.uk-tile-secondary:not(.uk-preserve-color) .uk-logo-inverse{display:block}.uk-card-primary.uk-card-body .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-primary.uk-card-body .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-primary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-secondary.uk-card-body .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-secondary.uk-card-body .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-card-secondary>:not([class*=uk-card-media]) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-light .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-light .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-offcanvas-bar .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-offcanvas-bar .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-overlay-primary .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-overlay-primary .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-section-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-section-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-section-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-tile-primary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped tbody tr:nth-of-type(2n):last-child,.uk-tile-secondary:not(.uk-preserve-color) .uk-table-striped>tr:nth-of-type(2n):last-child{border-bottom-color:rgba(255,255,255,.2)}.uk-card-primary.uk-card-body .uk-accordion-title::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-accordion-title::before,.uk-card-secondary.uk-card-body .uk-accordion-title::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-accordion-title::before,.uk-light .uk-accordion-title::before,.uk-offcanvas-bar .uk-accordion-title::before,.uk-overlay-primary .uk-accordion-title::before,.uk-section-primary:not(.uk-preserve-color) .uk-accordion-title::before,.uk-section-secondary:not(.uk-preserve-color) .uk-accordion-title::before,.uk-tile-primary:not(.uk-preserve-color) .uk-accordion-title::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-accordion-title::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%20%2F%3E%0A%3C%2Fsvg%3E")}.uk-card-primary.uk-card-body .uk-open>.uk-accordion-title::before,.uk-card-primary>:not([class*=uk-card-media]) .uk-open>.uk-accordion-title::before,.uk-card-secondary.uk-card-body .uk-open>.uk-accordion-title::before,.uk-card-secondary>:not([class*=uk-card-media]) .uk-open>.uk-accordion-title::before,.uk-light .uk-open>.uk-accordion-title::before,.uk-offcanvas-bar .uk-open>.uk-accordion-title::before,.uk-overlay-primary .uk-open>.uk-accordion-title::before,.uk-section-primary:not(.uk-preserve-color) .uk-open>.uk-accordion-title::before,.uk-section-secondary:not(.uk-preserve-color) .uk-open>.uk-accordion-title::before,.uk-tile-primary:not(.uk-preserve-color) .uk-open>.uk-accordion-title::before,.uk-tile-secondary:not(.uk-preserve-color) .uk-open>.uk-accordion-title::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22rgba%28255,%20255,%20255,%200.7%29%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%20%2F%3E%0A%3C%2Fsvg%3E")}@media print{*,::after,::before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}} \ No newline at end of file diff --git a/core/src/jsMain/resources/index.html b/core/src/jsMain/resources/index.html new file mode 100644 index 0000000..eb56fb2 --- /dev/null +++ b/core/src/jsMain/resources/index.html @@ -0,0 +1,73 @@ + + + + + Kotlin Publication Scripts Builder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/src/jsMain/resources/js/uikit-icons.min.js b/core/src/jsMain/resources/js/uikit-icons.min.js new file mode 100644 index 0000000..0e91c5b --- /dev/null +++ b/core/src/jsMain/resources/js/uikit-icons.min.js @@ -0,0 +1 @@ +/*! UIkit 3.15.12 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */(function(t,i){typeof exports=="object"&&typeof module<"u"?module.exports=i():typeof define=="function"&&define.amd?define("uikiticons",i):(t=typeof globalThis<"u"?globalThis:t||self,t.UIkitIcons=i())})(this,function(){"use strict";function t(i){t.installed||i.icon.add({"500px":'',album:'',"arrow-down":'',"arrow-left":'',"arrow-right":'',"arrow-up":'',bag:'',ban:'',behance:'',bell:'',bold:'',bolt:'',bookmark:'',calendar:'',camera:'',cart:'',check:'',"chevron-double-left":'',"chevron-double-right":'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',clock:'',close:'',"cloud-download":'',"cloud-upload":'',code:'',cog:'',comment:'',commenting:'',comments:'',copy:'',"credit-card":'',crosshairs:'',database:'',desktop:'',discord:'',download:'',dribbble:'',etsy:'',expand:'',facebook:'',"file-edit":'',"file-pdf":'',"file-text":'',file:'',flickr:'',folder:'',forward:'',foursquare:'',future:'',"git-branch":'',"git-fork":'',"github-alt":'',github:'',gitter:'',google:'',grid:'',happy:'',hashtag:'',heart:'',history:'',home:'',image:'',info:'',instagram:'',italic:'',joomla:'',laptop:'',lifesaver:'',link:'',linkedin:'',list:'',location:'',lock:'',mail:'',menu:'',microphone:'',"minus-circle":'',minus:'',"more-vertical":'',more:'',move:'',nut:'',pagekit:'',"paint-bucket":'',pencil:'',"phone-landscape":'',phone:'',pinterest:'',"play-circle":'',play:'',"plus-circle":'',plus:'',print:'',pull:'',push:'',question:'',"quote-right":'',receiver:'',reddit:'',refresh:'',reply:'',rss:'',search:'',server:'',settings:'',shrink:'',"sign-in":'',"sign-out":'',social:'',soundcloud:'',star:'',strikethrough:'',table:'',"tablet-landscape":'',tablet:'',tag:'',thumbnails:'',tiktok:'',trash:'',"triangle-down":'',"triangle-left":'',"triangle-right":'',"triangle-up":'',tripadvisor:'',tumblr:'',tv:'',twitch:'',twitter:'',uikit:'',unlock:'',upload:'',user:'',users:'',"video-camera":'',vimeo:'',warning:'',whatsapp:'',wordpress:'',world:'',xing:'',yelp:'',youtube:''})}return typeof window<"u"&&window.UIkit&&window.UIkit.use(t),t}); diff --git a/core/src/jsMain/resources/js/uikit.min.js b/core/src/jsMain/resources/js/uikit.min.js new file mode 100644 index 0000000..cb55395 --- /dev/null +++ b/core/src/jsMain/resources/js/uikit.min.js @@ -0,0 +1 @@ +/*! UIkit 3.15.12 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */(function(ue,de){typeof exports=="object"&&typeof module<"u"?module.exports=de():typeof define=="function"&&define.amd?define("uikit",de):(ue=typeof globalThis<"u"?globalThis:ue||self,ue.UIkit=de())})(this,function(){"use strict";const{hasOwnProperty:ue,toString:de}=Object.prototype;function Bt(t,e){return ue.call(t,e)}const uo=/\B([A-Z])/g,Xt=ft(t=>t.replace(uo,"-$1").toLowerCase()),fo=/-(\w)/g,fe=ft(t=>t.replace(fo,us)),St=ft(t=>t.length?us(null,t.charAt(0))+t.slice(1):"");function us(t,e){return e?e.toUpperCase():""}function lt(t,e){return t==null||t.startsWith==null?void 0:t.startsWith(e)}function Gt(t,e){return t==null||t.endsWith==null?void 0:t.endsWith(e)}function p(t,e){return t==null||t.includes==null?void 0:t.includes(e)}function bt(t,e){return t==null||t.findIndex==null?void 0:t.findIndex(e)}const{isArray:Q,from:xi}=Array,{assign:xt}=Object;function mt(t){return typeof t=="function"}function Tt(t){return t!==null&&typeof t=="object"}function yt(t){return de.call(t)==="[object Object]"}function Jt(t){return Tt(t)&&t===t.window}function De(t){return $i(t)===9}function yi(t){return $i(t)>=1}function Kt(t){return $i(t)===1}function $i(t){return!Jt(t)&&Tt(t)&&t.nodeType}function Me(t){return typeof t=="boolean"}function D(t){return typeof t=="string"}function Zt(t){return typeof t=="number"}function Dt(t){return Zt(t)||D(t)&&!isNaN(t-parseFloat(t))}function pe(t){return!(Q(t)?t.length:Tt(t)?Object.keys(t).length:!1)}function R(t){return t===void 0}function ki(t){return Me(t)?t:t==="true"||t==="1"||t===""?!0:t==="false"||t==="0"?!1:t}function Ct(t){const e=Number(t);return isNaN(e)?!1:e}function v(t){return parseFloat(t)||0}function j(t){return y(t)[0]}function y(t){return t&&(yi(t)?[t]:Array.from(t).filter(yi))||[]}function Mt(t){var e;if(Jt(t))return t;t=j(t);const i=De(t)?t:(e=t)==null?void 0:e.ownerDocument;return(i==null?void 0:i.defaultView)||window}function ge(t,e){return t===e||Tt(t)&&Tt(e)&&Object.keys(t).length===Object.keys(e).length&&$t(t,(i,s)=>i===e[s])}function Si(t,e,i){return t.replace(new RegExp(e+"|"+i,"g"),s=>s===e?i:e)}function Qt(t){return t[t.length-1]}function $t(t,e){for(const i in t)if(e(t[i],i)===!1)return!1;return!0}function Ne(t,e){return t.slice().sort((i,s)=>{let{[e]:n=0}=i,{[e]:o=0}=s;return n>o?1:o>n?-1:0})}function ds(t,e){const i=new Set;return t.filter(s=>{let{[e]:n}=s;return i.has(n)?!1:i.add(n)})}function U(t,e,i){return e===void 0&&(e=0),i===void 0&&(i=1),Math.min(Math.max(Ct(t)||0,e),i)}function T(){}function Ti(){for(var t=arguments.length,e=new Array(t),i=0;i{let[n,o]=s;return Math.min(...e.map(r=>{let{[n]:a}=r;return a}))-Math.max(...e.map(r=>{let{[o]:a}=r;return a}))>0})}function ze(t,e){return t.x<=e.right&&t.x>=e.left&&t.y<=e.bottom&&t.y>=e.top}function Ci(t,e,i){const s=e==="width"?"height":"width";return{[s]:t[e]?Math.round(i*t[s]/t[e]):t[s],[e]:i}}function fs(t,e){t={...t};for(const i in t)t=t[i]>e[i]?Ci(t,i,e[i]):t;return t}function po(t,e){t=fs(t,e);for(const i in t)t=t[i]e[i]||(e[i]=t(i))}class He{constructor(){this.promise=new Promise((e,i)=>{this.reject=i,this.resolve=e})}}function w(t,e,i){if(Tt(e)){for(const n in e)w(t,n,e[n]);return}if(R(i)){var s;return(s=j(t))==null?void 0:s.getAttribute(e)}else for(const n of y(t))mt(i)&&(i=i.call(n,w(n,e))),i===null?me(n,e):n.setAttribute(e,i)}function It(t,e){return y(t).some(i=>i.hasAttribute(e))}function me(t,e){const i=y(t);for(const s of e.split(" "))for(const n of i)n.removeAttribute(s)}function ot(t,e){for(const i of[e,"data-"+e])if(It(t,i))return w(t,i)}const go={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function Ii(t){return y(t).some(e=>go[e.tagName.toLowerCase()])}function q(t){return y(t).some(e=>e.offsetWidth||e.offsetHeight||e.getClientRects().length)}const ve="input,select,textarea,button";function Pi(t){return y(t).some(e=>F(e,ve))}const Le=ve+",a[href],[tabindex]";function We(t){return F(t,Le)}function E(t){var e;return(e=j(t))==null?void 0:e.parentElement}function Re(t,e){return y(t).filter(i=>F(i,e))}function F(t,e){return y(t).some(i=>i.matches(e))}function et(t,e){return Kt(t)?t.closest(lt(e,">")?e.slice(1):e):y(t).map(i=>et(i,e)).filter(Boolean)}function P(t,e){return D(e)?!!et(t,e):j(e).contains(j(t))}function te(t,e){const i=[];for(;t=E(t);)(!e||F(t,e))&&i.push(t);return i}function O(t,e){t=j(t);const i=t?y(t.children):[];return e?Re(i,e):i}function ee(t,e){return e?y(t).indexOf(j(e)):O(E(t)).indexOf(t)}function ht(t,e){return Ai(t,gs(t,e))}function we(t,e){return be(t,gs(t,e))}function Ai(t,e){return j(ms(t,e,"querySelector"))}function be(t,e){return y(ms(t,e,"querySelectorAll"))}const mo=/(^|[^\\],)\s*[!>+~-]/,ps=ft(t=>t.match(mo));function gs(t,e){return e===void 0&&(e=document),D(t)&&ps(t)||De(e)?e:e.ownerDocument}const vo=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g,wo=ft(t=>t.replace(vo,"$1 *"));function ms(t,e,i){if(e===void 0&&(e=document),!t||!D(t))return t;if(t=wo(t),ps(t)){const s=xo(t);t="";for(let n of s){let o=e;if(n[0]==="!"){const r=n.substr(1).trim().split(" ");if(o=et(E(e),r[0]),n=r.slice(1).join(" ").trim(),!n.length&&s.length===1)return o}if(n[0]==="-"){const r=n.substr(1).trim().split(" "),a=(o||e).previousElementSibling;o=F(a,n.substr(1))?a:null,n=r.slice(1).join(" ")}o&&(t+=(t?",":"")+yo(o)+" "+n)}e=document}try{return e[i](t)}catch{return null}}const bo=/.*?[^\\](?:,|$)/g,xo=ft(t=>t.match(bo).map(e=>e.replace(/,$/,"").trim()));function yo(t){const e=[];for(;t.parentNode;){const i=w(t,"id");if(i){e.unshift("#"+Ei(i));break}else{let{tagName:s}=t;s!=="HTML"&&(s+=":nth-child("+(ee(t)+1)+")"),e.unshift(s),t=t.parentNode}}return e.join(" > ")}function Ei(t){return D(t)?CSS.escape(t):""}function k(){for(var t=arguments.length,e=new Array(t),i=0;i1&&(r=ko(r)),a!=null&&a.self&&(r=So(r)),o&&(r=$o(o,r));for(const l of n)for(const h of s)h.addEventListener(l,r,a);return()=>Nt(s,n,r,a)}function Nt(){for(var t=arguments.length,e=new Array(t),i=0;i{const d=!l||l(u);d&&(h(),r(u,d))},a);return h}function g(t,e,i){return Oi(t).every(s=>s.dispatchEvent(zt(e,!0,!0,i)))}function zt(t,e,i,s){return e===void 0&&(e=!0),i===void 0&&(i=!1),D(t)&&(t=new CustomEvent(t,{bubbles:e,cancelable:i,detail:s})),t}function _i(t){return t[0]=Oi(t[0]),D(t[1])&&(t[1]=t[1].split(" ")),mt(t[2])&&t.splice(2,0,!1),t}function $o(t,e){return i=>{const s=t[0]===">"?be(t,i.currentTarget).reverse().filter(n=>P(i.target,n))[0]:et(i.target,t);s&&(i.current=s,e.call(this,i))}}function ko(t){return e=>Q(e.detail)?t(e,...e.detail):t(e)}function So(t){return function(e){if(e.target===e.currentTarget||e.target===e.current)return t.call(null,e)}}function vs(t){return t&&"addEventListener"in t}function To(t){return vs(t)?t:j(t)}function Oi(t){return Q(t)?t.map(To).filter(Boolean):D(t)?be(t):vs(t)?[t]:y(t)}function kt(t){return t.pointerType==="touch"||!!t.touches}function ie(t){var e,i;const{clientX:s,clientY:n}=((e=t.touches)==null?void 0:e[0])||((i=t.changedTouches)==null?void 0:i[0])||t;return{x:s,y:n}}function ws(t,e){const i={data:null,method:"GET",headers:{},xhr:new XMLHttpRequest,beforeSend:T,responseType:"",...e};return Promise.resolve().then(()=>i.beforeSend(i)).then(()=>Co(t,i))}function Co(t,e){return new Promise((i,s)=>{const{xhr:n}=e;for(const o in e)if(o in n)try{n[o]=e[o]}catch{}n.open(e.method.toUpperCase(),t);for(const o in e.headers)n.setRequestHeader(o,e.headers[o]);k(n,"load",()=>{n.status===0||n.status>=200&&n.status<300||n.status===304?i(n):s(xt(Error(n.statusText),{xhr:n,status:n.status}))}),k(n,"error",()=>s(xt(Error("Network Error"),{xhr:n}))),k(n,"timeout",()=>s(xt(Error("Network Timeout"),{xhr:n}))),n.send(e.data)})}function bs(t,e,i){return new Promise((s,n)=>{const o=new Image;o.onerror=r=>{n(r)},o.onload=()=>{s(o)},i&&(o.sizes=i),e&&(o.srcset=e),o.src=t})}const Io={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,"stroke-dasharray":!0,"stroke-dashoffset":!0,widows:!0,"z-index":!0,zoom:!0};function c(t,e,i,s){s===void 0&&(s="");const n=y(t);for(const o of n)if(D(e)){if(e=Bi(e),R(i))return getComputedStyle(o).getPropertyValue(e);o.style.setProperty(e,Dt(i)&&!Io[e]?i+"px":i||Zt(i)?i:"",s)}else if(Q(e)){const r={};for(const a of e)r[a]=c(o,a);return r}else Tt(e)&&(s=i,$t(e,(r,a)=>c(o,a,r,s)));return n[0]}const Bi=ft(t=>Po(t));function Po(t){if(lt(t,"--"))return t;t=Xt(t);const{style:e}=document.documentElement;if(t in e)return t;for(const i of["webkit","moz"]){const s="-"+i+"-"+t;if(s in e)return s}}function x(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),s=1;s1?e-1:0),s=1;s(i||"").replace(new RegExp("\\b"+e+"\\b\\s?","g"),""))}function Mi(t){!(arguments.length<=1)&&arguments[1]&&B(t,arguments.length<=1?void 0:arguments[1]),!(arguments.length<=2)&&arguments[2]&&x(t,arguments.length<=2?void 0:arguments[2])}function _(t,e){return[e]=Ni(e),!!e&&y(t).some(i=>i.classList.contains(e))}function H(t,e,i){const s=Ni(e);R(i)||(i=!!i);for(const n of y(t))for(const o of s)n.classList.toggle(o,i)}function xs(t,e,i){e=e.reduce((s,n)=>s.concat(Ni(n)),[]);for(const s of y(t))s.classList[i](...e)}function Ni(t){return String(t).split(/\s|,/).filter(Boolean)}function Ao(t,e,i,s){return i===void 0&&(i=400),s===void 0&&(s="linear"),i=Math.round(i),Promise.all(y(t).map(n=>new Promise((o,r)=>{for(const l in e){const h=c(n,l);h===""&&c(n,l,h)}const a=setTimeout(()=>g(n,"transitionend"),i);N(n,"transitionend transitioncanceled",l=>{let{type:h}=l;clearTimeout(a),B(n,"uk-transition"),c(n,{transitionProperty:"",transitionDuration:"",transitionTimingFunction:""}),h==="transitioncanceled"?r():o(n)},{self:!0}),x(n,"uk-transition"),c(n,{transitionProperty:Object.keys(e).map(Bi).join(","),transitionDuration:i+"ms",transitionTimingFunction:s,...e})})))}const S={start:Ao,async stop(t){g(t,"transitionend"),await Promise.resolve()},async cancel(t){g(t,"transitioncanceled"),await Promise.resolve()},inProgress(t){return _(t,"uk-transition")}},xe="uk-animation-";function ys(t,e,i,s,n){return i===void 0&&(i=200),Promise.all(y(t).map(o=>new Promise((r,a)=>{g(o,"animationcanceled");const l=setTimeout(()=>g(o,"animationend"),i);N(o,"animationend animationcanceled",h=>{let{type:u}=h;clearTimeout(l),u==="animationcanceled"?a():r(o),c(o,"animationDuration",""),Di(o,xe+"\\S*")},{self:!0}),c(o,"animationDuration",i+"ms"),x(o,e,xe+(n?"leave":"enter")),lt(e,xe)&&(s&&x(o,"uk-transform-origin-"+s),n&&x(o,xe+"reverse"))})))}const Eo=new RegExp(xe+"(enter|leave)"),pt={in:ys,out(t,e,i,s){return ys(t,e,i,s,!0)},inProgress(t){return Eo.test(w(t,"class"))},cancel(t){g(t,"animationcanceled")}},Ft={width:["left","right"],height:["top","bottom"]};function $(t){const e=Kt(t)?j(t).getBoundingClientRect():{height:J(t),width:ye(t),top:0,left:0};return{height:e.height,width:e.width,top:e.top,left:e.left,bottom:e.top+e.height,right:e.left+e.width}}function C(t,e){const i=$(t);if(t){const{scrollY:n,scrollX:o}=Mt(t),r={height:n,width:o};for(const a in Ft)for(const l of Ft[a])i[l]+=r[a]}if(!e)return i;const s=c(t,"position");$t(c(t,["left","top"]),(n,o)=>c(t,o,e[o]-i[o]+v(s==="absolute"&&n==="auto"?je(t)[o]:n)))}function je(t){let{top:e,left:i}=C(t);const{ownerDocument:{body:s,documentElement:n},offsetParent:o}=j(t);let r=o||n;for(;r&&(r===s||r===n)&&c(r,"position")==="static";)r=r.parentNode;if(Kt(r)){const a=C(r);e-=a.top+v(c(r,"borderTopWidth")),i-=a.left+v(c(r,"borderLeftWidth"))}return{top:e-v(c(t,"marginTop")),left:i-v(c(t,"marginLeft"))}}function Ht(t){t=j(t);const e=[t.offsetTop,t.offsetLeft];for(;t=t.offsetParent;)if(e[0]+=t.offsetTop+v(c(t,"borderTopWidth")),e[1]+=t.offsetLeft+v(c(t,"borderLeftWidth")),c(t,"position")==="fixed"){const i=Mt(t);return e[0]+=i.scrollY,e[1]+=i.scrollX,e}return e}const J=$s("height"),ye=$s("width");function $s(t){const e=St(t);return(i,s)=>{if(R(s)){if(Jt(i))return i["inner"+e];if(De(i)){const n=i.documentElement;return Math.max(n["offset"+e],n["scroll"+e])}return i=j(i),s=c(i,t),s=s==="auto"?i["offset"+e]:v(s)||0,s-se(i,t)}else return c(i,t,!s&&s!==0?"":+s+se(i,t)+"px")}}function se(t,e,i){return i===void 0&&(i="border-box"),c(t,"boxSizing")===i?Ft[e].map(St).reduce((s,n)=>s+v(c(t,"padding"+n))+v(c(t,"border"+n+"Width")),0):0}function qe(t){for(const e in Ft)for(const i in Ft[e])if(Ft[e][i]===t)return Ft[e][1-i];return t}function K(t,e,i,s){return e===void 0&&(e="width"),i===void 0&&(i=window),s===void 0&&(s=!1),D(t)?Oo(t).reduce((n,o)=>{const r=Do(o);return r&&(o=Mo(r==="vh"?J(Mt(i)):r==="vw"?ye(Mt(i)):s?i["offset"+St(e)]:$(i)[e],o)),n+v(o)},0):v(t)}const _o=/-?\d+(?:\.\d+)?(?:v[wh]|%|px)?/g,Oo=ft(t=>t.toString().replace(/\s/g,"").match(_o)||[]),Bo=/(?:v[hw]|%)$/,Do=ft(t=>(t.match(Bo)||[])[0]);function Mo(t,e){return t*v(e)/100}function No(t){if(document.readyState!=="loading"){t();return}N(document,"DOMContentLoaded",t)}function ct(t,e){var i;return(t==null||(i=t.tagName)==null?void 0:i.toLowerCase())===e.toLowerCase()}function ks(t){return t=b(t),t.innerHTML="",t}function Pt(t,e){return R(e)?b(t).innerHTML:L(ks(t),e)}const zo=Ye("prepend"),L=Ye("append"),zi=Ye("before"),Ve=Ye("after");function Ye(t){return function(e,i){var s;const n=y(D(i)?Lt(i):i);return(s=b(e))==null||s[t](...n),Ss(n)}}function ut(t){y(t).forEach(e=>e.remove())}function Xe(t,e){for(e=j(zi(t,e));e.firstChild;)e=e.firstChild;return L(e,t),e}function Fi(t,e){return y(y(t).map(i=>i.hasChildNodes()?Xe(y(i.childNodes),e):L(i,e)))}function $e(t){y(t).map(E).filter((e,i,s)=>s.indexOf(e)===i).forEach(e=>e.replaceWith(...e.childNodes))}const Fo=/^\s*<(\w+|!)[^>]*>/,Ho=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function Lt(t){const e=Ho.exec(t);if(e)return document.createElement(e[1]);const i=document.createElement("div");return Fo.test(t)?i.insertAdjacentHTML("beforeend",t.trim()):i.textContent=t,Ss(i.childNodes)}function Ss(t){return t.length>1?t:t[0]}function vt(t,e){if(!!Kt(t))for(e(t),t=t.firstElementChild;t;){const i=t.nextElementSibling;vt(t,e),t=i}}function b(t,e){return Ts(t)?j(Lt(t)):Ai(t,e)}function M(t,e){return Ts(t)?y(Lt(t)):be(t,e)}function Ts(t){return D(t)&<(t.trim(),"<")}const Wt=typeof window<"u",X=Wt&&document.dir==="rtl",Rt=Wt&&"ontouchstart"in window,ne=Wt&&window.PointerEvent,gt=ne?"pointerdown":Rt?"touchstart":"mousedown",Ge=ne?"pointermove":Rt?"touchmove":"mousemove",At=ne?"pointerup":Rt?"touchend":"mouseup",jt=ne?"pointerenter":Rt?"":"mouseenter",oe=ne?"pointerleave":Rt?"":"mouseleave",Je=ne?"pointercancel":"touchcancel",G={reads:[],writes:[],read(t){return this.reads.push(t),Li(),t},write(t){return this.writes.push(t),Li(),t},clear(t){Is(this.reads,t),Is(this.writes,t)},flush:Hi};function Hi(t){Cs(G.reads),Cs(G.writes.splice(0)),G.scheduled=!1,(G.reads.length||G.writes.length)&&Li(t+1)}const Lo=4;function Li(t){G.scheduled||(G.scheduled=!0,t&&tHi(t)):requestAnimationFrame(()=>Hi(1)))}function Cs(t){let e;for(;e=t.shift();)try{e()}catch(i){console.error(i)}}function Is(t,e){const i=t.indexOf(e);return~i&&t.splice(i,1)}function Wi(){}Wi.prototype={positions:[],init(){this.positions=[];let t;this.unbind=k(document,"mousemove",e=>t=ie(e)),this.interval=setInterval(()=>{!t||(this.positions.push(t),this.positions.length>5&&this.positions.shift())},50)},cancel(){var t;(t=this.unbind)==null||t.call(this),this.interval&&clearInterval(this.interval)},movesTo(t){if(this.positions.length<2)return!1;const e=t.getBoundingClientRect(),{left:i,right:s,top:n,bottom:o}=e,[r]=this.positions,a=Qt(this.positions),l=[r,a];return ze(a,e)?!1:[[{x:i,y:n},{x:s,y:o}],[{x:i,y:o},{x:s,y:n}]].some(u=>{const d=Wo(l,u);return d&&ze(d,e)})}};function Wo(t,e){let[{x:i,y:s},{x:n,y:o}]=t,[{x:r,y:a},{x:l,y:h}]=e;const u=(h-a)*(n-i)-(l-r)*(o-s);if(u===0)return!1;const d=((l-r)*(s-a)-(h-a)*(i-r))/u;return d<0?!1:{x:i+d*(n-i),y:s+d*(o-s)}}function re(t,e,i,s){s===void 0&&(s=!0);const n=new IntersectionObserver(s?(o,r)=>{o.some(a=>a.isIntersecting)&&e(o,r)}:e,i);for(const o of y(t))n.observe(o);return n}const Ro=Wt&&window.ResizeObserver;function Ke(t,e,i){return i===void 0&&(i={box:"border-box"}),Ro?As(ResizeObserver,t,e,i):(jo(),ke.add(e),{disconnect(){ke.delete(e)}})}let ke;function jo(){if(ke)return;ke=new Set;let t;const e=()=>{if(!t){t=!0,requestAnimationFrame(()=>t=!1);for(const i of ke)i()}};k(window,"load resize",e),k(document,"loadedmetadata load",e,!0)}function Ps(t,e,i){return As(MutationObserver,t,e,i)}function As(t,e,i,s){const n=new t(i);for(const o of y(e))n.observe(o,s);return n}const Z={};Z.events=Z.created=Z.beforeConnect=Z.connected=Z.beforeDisconnect=Z.disconnected=Z.destroy=Ri,Z.args=function(t,e){return e!==!1&&Ri(e||t)},Z.update=function(t,e){return Ne(Ri(t,mt(e)?{read:e}:e),"order")},Z.props=function(t,e){if(Q(e)){const i={};for(const s of e)i[s]=String;e=i}return Z.methods(t,e)},Z.computed=Z.methods=function(t,e){return e?t?{...t,...e}:e:t},Z.data=function(t,e,i){return i?Es(t,e,i):e?t?function(s){return Es(t,e,s)}:e:t};function Es(t,e,i){return Z.computed(mt(t)?t.call(i,i):t,mt(e)?e.call(i,i):e)}function Ri(t,e){return t=t&&!Q(t)?[t]:t,e?t?t.concat(e):Q(e)?e:[e]:t}function qo(t,e){return R(e)?t:e}function ae(t,e,i){const s={};if(mt(e)&&(e=e.options),e.extends&&(t=ae(t,e.extends,i)),e.mixins)for(const o of e.mixins)t=ae(t,o,i);for(const o in t)n(o);for(const o in e)Bt(t,o)||n(o);function n(o){s[o]=(Z[o]||qo)(t[o],e[o],i)}return s}function Se(t,e){e===void 0&&(e=[]);try{return t?lt(t,"{")?JSON.parse(t):e.length&&!p(t,":")?{[e[0]]:t}:t.split(";").reduce((i,s)=>{const[n,o]=s.split(/:(.*)/);return n&&!R(o)&&(i[n.trim()]=o.trim()),i},{}):{}}catch{return{}}}function _s(t){if(Qe(t)&&ji(t,{func:"playVideo",method:"play"}),Ze(t))try{t.play().catch(T)}catch{}}function Os(t){Qe(t)&&ji(t,{func:"pauseVideo",method:"pause"}),Ze(t)&&t.pause()}function Bs(t){Qe(t)&&ji(t,{func:"mute",method:"setVolume",value:0}),Ze(t)&&(t.muted=!0)}function Ds(t){return Ze(t)||Qe(t)}function Ze(t){return ct(t,"video")}function Qe(t){return ct(t,"iframe")&&(Ms(t)||Ns(t))}function Ms(t){return!!t.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)}function Ns(t){return!!t.src.match(/vimeo\.com\/video\/.*/)}async function ji(t,e){await Yo(t),zs(t,e)}function zs(t,e){try{t.contentWindow.postMessage(JSON.stringify({event:"command",...e}),"*")}catch{}}const qi="_ukPlayer";let Vo=0;function Yo(t){if(t[qi])return t[qi];const e=Ms(t),i=Ns(t),s=++Vo;let n;return t[qi]=new Promise(o=>{e&&N(t,"load",()=>{const r=()=>zs(t,{event:"listening",id:s});n=setInterval(r,100),r()}),N(window,"message",o,!1,r=>{let{data:a}=r;try{return a=JSON.parse(a),a&&(e&&a.id===s&&a.event==="onReady"||i&&Number(a.player_id)===s)}catch{}}),t.src=""+t.src+(p(t.src,"?")?"&":"?")+(e?"enablejsapi=1":"api=1&player_id="+s)}).then(()=>clearInterval(n))}function Vi(t,e,i){return e===void 0&&(e=0),i===void 0&&(i=0),q(t)?Ti(...tt(t).map(s=>{const{top:n,left:o,bottom:r,right:a}=rt(s);return{top:n-e,left:o-i,bottom:r+e,right:a+i}}).concat(C(t))):!1}function Fs(t,e){let{offset:i=0}=e===void 0?{}:e;const s=q(t)?tt(t):[];return s.reduce((a,l,h)=>{const{scrollTop:u,scrollHeight:d,offsetHeight:f}=l,m=rt(l),I=d-m.height,{height:A,top:W}=s[h-1]?rt(s[h-1]):C(t);let Y=Math.ceil(W-m.top-i+u);return i>0&&fI?(i-=Y-I,Y=I):Y<0&&(i-=Y,Y=0),()=>n(l,Y-u).then(a)},()=>Promise.resolve())();function n(a,l){return new Promise(h=>{const u=a.scrollTop,d=o(Math.abs(l)),f=Date.now();(function m(){const I=r(U((Date.now()-f)/d));a.scrollTop=u+l*I,I===1?h():requestAnimationFrame(m)})()})}function o(a){return 40*Math.pow(a,.375)}function r(a){return .5*(1-Math.cos(Math.PI*a))}}function Yi(t,e,i){if(e===void 0&&(e=0),i===void 0&&(i=0),!q(t))return 0;const[s]=tt(t,/auto|scroll/,!0),{scrollHeight:n,scrollTop:o}=s,{height:r}=rt(s),a=n-r,l=Ht(t)[0]-Ht(s)[0],h=Math.max(0,l-r+e),u=Math.min(a,l+t.offsetHeight-i);return U((o-h)/(u-h))}function tt(t,e,i){e===void 0&&(e=/auto|scroll|hidden|clip/),i===void 0&&(i=!1);const s=Hs(t);let n=te(t).reverse();n=n.slice(n.indexOf(s)+1);const o=bt(n,r=>c(r,"position")==="fixed");return~o&&(n=n.slice(o)),[s].concat(n.filter(r=>e.test(c(r,"overflow"))&&(!i||r.scrollHeight>rt(r).height))).reverse()}function rt(t){const e=Mt(t),{document:{documentElement:i}}=e;let s=t===Hs(t)?e:t;const{visualViewport:n}=e;if(Jt(s)&&n){let{height:r,width:a,scale:l,pageTop:h,pageLeft:u}=n;return r=Math.round(r*l),a=Math.round(a*l),{height:r,width:a,top:h,left:u,bottom:h+r,right:u+a}}let o=C(s);for(let[r,a,l,h]of[["width","x","left","right"],["height","y","top","bottom"]])Jt(s)?s=i:o[l]+=v(c(s,"border-"+l+"-width")),o[r]=o[a]=s["client"+St(r)],o[h]=o[r]+o[l];return o}function Hs(t){return Mt(t).document.scrollingElement}const at=[["width","x","left","right"],["height","y","top","bottom"]];function Ls(t,e,i){i={attach:{element:["left","top"],target:["left","top"],...i.attach},offset:[0,0],placement:[],...i},Q(e)||(e=[e,e]),C(t,Ws(t,e,i))}function Ws(t,e,i){const s=Rs(t,e,i),{boundary:n,viewportOffset:o=0,placement:r}=i;let a=s;for(const[l,[h,,u,d]]of Object.entries(at)){const f=Xo(t,e[l],o,n,l);if(Ue(s,f,l))continue;let m=0;if(r[l]==="flip"){const I=i.attach.target[l];if(I===d&&s[d]<=f[d]||I===u&&s[u]>=f[u])continue;m=Jo(t,e,i,l)[u]-s[u];const A=Go(t,e[l],o,l);if(!Ue(Xi(s,m,l),A,l)){if(Ue(s,A,l))continue;if(i.recursion)return!1;const W=Ko(t,e,i);if(W&&Ue(W,A,1-l))return W;continue}}else if(r[l]==="shift"){const I=C(e[l]),{offset:A}=i;m=U(U(s[u],f[u],f[d]-s[h]),I[u]-s[h]+A[l],I[d]-A[l])-s[u]}a=Xi(a,m,l)}return a}function Rs(t,e,i){let{attach:s,offset:n}={attach:{element:["left","top"],target:["left","top"],...i.attach},offset:[0,0],...i},o=C(t);for(const[r,[a,,l,h]]of Object.entries(at)){const u=s.target[r]===s.element[r]?rt(e[r]):C(e[r]);o=Xi(o,u[l]-o[l]+js(s.target[r],h,u[a])-js(s.element[r],h,o[a])+ +n[r],r)}return o}function Xi(t,e,i){const[,s,n,o]=at[i],r={...t};return r[n]=t[s]=t[n]+e,r[o]+=e,r}function js(t,e,i){return t==="center"?i/2:t===e?i:0}function Xo(t,e,i,s,n){let o=Vs(...qs(t,e).map(rt));return i&&(o[at[n][2]]+=i,o[at[n][3]]-=i),s&&(o=Vs(o,C(Q(s)?s[n]:s))),o}function Go(t,e,i,s){const[n,,o,r]=at[s],[a]=qs(t,e),l=rt(a);return l[o]-=a["scroll"+St(o)]-i,l[r]=l[o]+a["scroll"+St(n)]-i,l}function qs(t,e){return tt(e).filter(i=>P(t,i))}function Vs(){let t={};for(var e=arguments.length,i=new Array(e),s=0;s=e[s]&&t[n]<=e[n]}function Jo(t,e,i,s){let{offset:n,attach:o}=i;return Rs(t,e,{attach:{element:Ys(o.element,s),target:Ys(o.target,s)},offset:Zo(n,s)})}function Ko(t,e,i){return Ws(t,e,{...i,attach:{element:i.attach.element.map(Xs).reverse(),target:i.attach.target.map(Xs).reverse()},offset:i.offset.reverse(),placement:i.placement.reverse(),recursion:!0})}function Ys(t,e){const i=[...t],s=at[e].indexOf(t[e]);return~s&&(i[e]=at[e][1-s%2+2]),i}function Xs(t){for(let e=0;es(r[e],o))};let i;Object.defineProperty(t,"container",{get(){return i||document.body},set(n){i=b(n)}});function s(n,o){if(!!n)for(const r in n)n[r]._connected&&n[r]._callUpdate(o)}}function tr(t){t.prototype._callHook=function(s){var n;(n=this.$options[s])==null||n.forEach(o=>o.call(this))},t.prototype._callConnected=function(){this._connected||(this._data={},this._computed={},this._initProps(),this._callHook("beforeConnect"),this._connected=!0,this._initEvents(),this._initObservers(),this._callHook("connected"),this._callUpdate())},t.prototype._callDisconnected=function(){!this._connected||(this._callHook("beforeDisconnect"),this._disconnectObservers(),this._unbindEvents(),this._callHook("disconnected"),this._connected=!1,delete this._watch)},t.prototype._callUpdate=function(s){s===void 0&&(s="update"),this._connected&&((s==="update"||s==="resize")&&this._callWatches(),this.$options.update&&(this._updates||(this._updates=new Set,G.read(()=>{this._connected&&e.call(this,this._updates),delete this._updates})),this._updates.add(s.type||s)))},t.prototype._callWatches=function(){if(this._watch)return;const s=!Bt(this,"_watch");this._watch=G.read(()=>{this._connected&&i.call(this,s),this._watch=null})};function e(s){for(const{read:n,write:o,events:r=[]}of this.$options.update){if(!s.has("update")&&!r.some(l=>s.has(l)))continue;let a;n&&(a=n.call(this,this._data,s),a&&yt(a)&&xt(this._data,a)),o&&a!==!1&&G.write(()=>{this._connected&&o.call(this,this._data,s)})}}function i(s){const{$options:{computed:n}}=this,o={...this._computed};this._computed={};for(const r in n){const{watch:a,immediate:l}=n[r];a&&(s&&l||Bt(o,r)&&!ge(o[r],this[r]))&&a.call(this,this[r],o[r])}}}function er(t){let e=0;t.prototype._init=function(i){i=i||{},i.data=or(i,this.constructor.options),this.$options=ae(this.constructor.options,i,this),this.$el=null,this.$props={},this._uid=e++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook("created"),i.el&&this.$mount(i.el)},t.prototype._initData=function(){const{data:i={}}=this.$options;for(const s in i)this.$props[s]=this[s]=i[s]},t.prototype._initMethods=function(){const{methods:i}=this.$options;if(i)for(const s in i)this[s]=i[s].bind(this)},t.prototype._initComputeds=function(){const{computed:i}=this.$options;if(this._computed={},i)for(const s in i)ir(this,s,i[s])},t.prototype._initProps=function(i){let s;i=i||Gs(this.$options);for(s in i)R(i[s])||(this.$props[s]=i[s]);const n=[this.$options.computed,this.$options.methods];for(s in this.$props)s in i&&sr(n,s)&&(this[s]=this.$props[s])},t.prototype._initEvents=function(){this._events=[];for(const i of this.$options.events||[])if(Bt(i,"handler"))ti(this,i);else for(const s in i)ti(this,i[s],s)},t.prototype._unbindEvents=function(){this._events.forEach(i=>i()),delete this._events},t.prototype._initObservers=function(){this._observers=[ar(this),rr(this)]},t.prototype.registerObserver=function(){this._observers.push(...arguments)},t.prototype._disconnectObservers=function(){this._observers.forEach(i=>i==null?void 0:i.disconnect())}}function Gs(t){const e={},{args:i=[],props:s={},el:n,id:o}=t;if(!s)return e;for(const a in s){const l=Xt(a);let h=ot(n,l);R(h)||(h=s[a]===Boolean&&h===""?!0:Gi(s[a],h),!(l==="target"&<(h,"_"))&&(e[a]=h))}const r=Se(ot(n,o),i);for(const a in r){const l=fe(a);R(s[l])||(e[l]=Gi(s[l],r[a]))}return e}function ir(t,e,i){Object.defineProperty(t,e,{enumerable:!0,get(){const{_computed:s,$props:n,$el:o}=t;return Bt(s,e)||(s[e]=(i.get||i).call(t,n,o)),s[e]},set(s){const{_computed:n}=t;n[e]=i.set?i.set.call(t,s):s,R(n[e])&&delete n[e]}})}function ti(t,e,i){yt(e)||(e={name:i,handler:e});let{name:s,el:n,handler:o,capture:r,passive:a,delegate:l,filter:h,self:u}=e;if(n=mt(n)?n.call(t):n||t.$el,Q(n)){n.forEach(d=>ti(t,{...e,el:d},i));return}!n||h&&!h.call(t)||t._events.push(k(n,s,l?D(l)?l:l.call(t):null,D(o)?t[o]:o.bind(t),{passive:a,capture:r,self:u}))}function sr(t,e){return t.every(i=>!i||!Bt(i,e))}function Gi(t,e){return t===Boolean?ki(e):t===Number?Ct(e):t==="list"?nr(e):t?t(e):e}function nr(t){return Q(t)?t:D(t)?t.split(/,(?![^(]*\))/).map(e=>Dt(e)?Ct(e):ki(e.trim())):[t]}function or(t,e){let{data:i={}}=t,{args:s=[],props:n={}}=e;Q(i)&&(i=i.slice(0,s.length).reduce((o,r,a)=>(yt(r)?xt(o,r):o[s[a]]=r,o),{}));for(const o in i)R(i[o])?delete i[o]:n[o]&&(i[o]=Gi(n[o],i[o]));return i}function rr(t){let{el:e,computed:i}=t.$options;if(!i)return;for(const n in i)if(i[n].document){e=e.ownerDocument;break}const s=new MutationObserver(()=>t._callWatches());return s.observe(e,{childList:!0,subtree:!0}),s}function ar(t){const{$options:e,$props:i}=t,{id:s,attrs:n,props:o,el:r}=e;if(!o||n===!1)return;const a=Q(n)?n:Object.keys(o),l=a.map(u=>Xt(u)).concat(s),h=new MutationObserver(u=>{const d=Gs(e);u.some(f=>{let{attributeName:m}=f;const I=m.replace("data-","");return(I===s?a:[fe(I),fe(m)]).some(A=>!R(d[A])&&d[A]!==i[A])})&&t.$reset()});return h.observe(r,{attributes:!0,attributeFilter:l.concat(l.map(u=>"data-"+u))}),h}function lr(t){const e=t.data;t.prototype.$create=function(i,s,n){return t[i](s,n)},t.prototype.$mount=function(i){const{name:s}=this.$options;i[e]||(i[e]={}),!i[e][s]&&(i[e][s]=this,this.$el=this.$options.el=this.$options.el||i,P(i,document)&&this._callConnected())},t.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},t.prototype.$destroy=function(i){i===void 0&&(i=!1);const{el:s,name:n}=this.$options;s&&this._callDisconnected(),this._callHook("destroy"),s!=null&&s[e]&&(delete s[e][n],pe(s[e])||delete s[e],i&&ut(this.$el))},t.prototype.$emit=function(i){this._callUpdate(i)},t.prototype.$update=function(i,s){i===void 0&&(i=this.$el),t.update(i,s)},t.prototype.$getComponent=t.getComponent,Object.defineProperty(t.prototype,"$container",Object.getOwnPropertyDescriptor(t,"container"))}const Et={};function hr(t){const{data:e,prefix:i}=t;t.component=function(s,n){s=Xt(s);const o=i+s;if(!n)return yt(Et[o])&&(Et[o]=Et["data-"+o]=t.extend(Et[o])),Et[o];s=fe(s),t[s]=function(a,l){const h=t.component(s);return h.options.functional?new h({data:yt(a)?a:[...arguments]}):a?M(a).map(u)[0]:u();function u(d){const f=t.getComponent(d,s);if(f)if(l)f.$destroy();else return f;return new h({el:d,data:l})}};const r=yt(n)?{...n}:n.options;return r.id=o,r.name=s,r.install==null||r.install(t,r,s),t._initialized&&!r.functional&&requestAnimationFrame(()=>t[s]("["+o+"],[data-"+o+"]")),Et[o]=Et["data-"+o]=yt(n)?r:n},t.getComponents=s=>(s==null?void 0:s[e])||{},t.getComponent=(s,n)=>t.getComponents(s)[n],t.connect=s=>{if(s[e])for(const n in s[e])s[e][n]._callConnected();for(const n of s.getAttributeNames()){const o=Js(n);o&&t[o](s)}},t.disconnect=s=>{for(const n in s[e])s[e][n]._callDisconnected()}}function Js(t){const e=Et[t];return e&&(yt(e)?e:e.options).name}const it=function(t){this._init(t)};it.util=Qo,it.data="__uikit__",it.prefix="uk-",it.options={},it.version="3.15.12",Uo(it),tr(it),er(it),hr(it),lr(it);function cr(t){const{connect:e,disconnect:i}=t;if(!Wt||!window.MutationObserver)return;requestAnimationFrame(function(){g(document,"uikit:init",t),document.body&&vt(document.body,e),new MutationObserver(o=>o.forEach(s)).observe(document,{childList:!0,subtree:!0}),new MutationObserver(o=>o.forEach(n)).observe(document,{attributes:!0,subtree:!0}),t._initialized=!0});function s(o){let{addedNodes:r,removedNodes:a}=o;for(const l of r)vt(l,e);for(const l of a)vt(l,i)}function n(o){let{target:r,attributeName:a}=o;const l=Js(a);if(l){var h;if(It(r,a)){t[l](r);return}(h=t.getComponent(r,l))==null||h.$destroy()}}}var st={connected(){x(this.$el,this.$options.id)}},Te={data:{preload:5},methods:{lazyload(t,e){t===void 0&&(t=this.$el),e===void 0&&(e=this.$el),this.registerObserver(re(t,(i,s)=>{for(const n of y(mt(e)?e():e))M('[loading="lazy"]',n).slice(0,this.preload-1).forEach(o=>me(o,"loading"));for(const n of i.filter(o=>{let{isIntersecting:r}=o;return r}).map(o=>{let{target:r}=o;return r}))s.unobserve(n)}))}}},_t={props:{cls:Boolean,animation:"list",duration:Number,velocity:Number,origin:String,transition:String},data:{cls:!1,animation:[!1],duration:200,velocity:.2,origin:!1,transition:"ease",clsEnter:"uk-togglabe-enter",clsLeave:"uk-togglabe-leave"},computed:{hasAnimation(t){let{animation:e}=t;return!!e[0]},hasTransition(t){let{animation:e}=t;return["slide","reveal"].some(i=>lt(e[0],i))}},methods:{toggleElement(t,e,i){return new Promise(s=>Promise.all(y(t).map(n=>{const o=Me(e)?e:!this.isToggled(n);if(!g(n,"before"+(o?"show":"hide"),[this]))return Promise.reject();const r=(mt(i)?i:i===!1||!this.hasAnimation?ur:this.hasTransition?dr:fr)(n,o,this),a=o?this.clsEnter:this.clsLeave;x(n,a),g(n,o?"show":"hide",[this]);const l=()=>{B(n,a),g(n,o?"shown":"hidden",[this])};return r?r.then(l,()=>(B(n,a),Promise.reject())):l()})).then(s,T))},isToggled(t){return t===void 0&&(t=this.$el),[t]=y(t),_(t,this.clsEnter)?!0:_(t,this.clsLeave)?!1:this.cls?_(t,this.cls.split(" ")[0]):q(t)},_toggle(t,e){if(!t)return;e=Boolean(e);let i;this.cls?(i=p(this.cls," ")||e!==_(t,this.cls),i&&H(t,this.cls,p(this.cls," ")?void 0:e)):(i=e===t.hidden,i&&(t.hidden=!e)),M("[autofocus]",t).some(s=>q(s)?s.focus()||!0:s.blur()),i&&g(t,"toggled",[e,this])}}};function ur(t,e,i){let{_toggle:s}=i;return pt.cancel(t),S.cancel(t),s(t,e)}async function dr(t,e,i){var s;let{animation:n,duration:o,velocity:r,transition:a,_toggle:l}=i;const[h="reveal",u="top"]=((s=n[0])==null?void 0:s.split("-"))||[],d=[["left","right"],["top","bottom"]],f=d[p(d[0],u)?0:1],m=f[1]===u,A=["width","height"][d.indexOf(f)],W="margin-"+f[0],Y="margin-"+u;let Ot=$(t)[A];const hs=S.inProgress(t);await S.cancel(t),e&&l(t,!0);const Hl=Object.fromEntries(["padding","border","width","height","minWidth","minHeight","overflowY","overflowX",W,Y].map(co=>[co,t.style[co]])),Be=$(t),cs=v(c(t,W)),ao=v(c(t,Y)),Yt=Be[A]+ao;!hs&&!e&&(Ot+=ao);const[bi]=Fi(t,"
");c(bi,{boxSizing:"border-box",height:Be.height,width:Be.width,...c(t,["overflow","padding","borderTop","borderRight","borderBottom","borderLeft","borderImage",Y])}),c(t,{padding:0,border:0,minWidth:0,minHeight:0,[Y]:0,width:Be.width,height:Be.height,overflow:"hidden",[A]:Ot});const lo=Ot/Yt;o=(r*Yt+o)*(e?1-lo:lo);const ho={[A]:e?Yt:0};m&&(c(t,W,Yt-Ot+cs),ho[W]=e?cs:Yt+cs),!m^h==="reveal"&&(c(bi,W,-Yt+Ot),S.start(bi,{[W]:e?0:-Yt},o,a));try{await S.start(t,ho,o,a)}finally{c(t,Hl),$e(bi.firstChild),e||l(t,!1)}}function fr(t,e,i){pt.cancel(t);const{animation:s,duration:n,_toggle:o}=i;return e?(o(t,!0),pt.in(t,s[0],n,i.origin)):pt.out(t,s[1]||s[0],n,i.origin).then(()=>o(t,!1))}var Ks={mixins:[st,Te,_t],props:{animation:Boolean,targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,offset:Number},data:{targets:"> *",active:!1,animation:!0,collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",offset:0},computed:{items:{get(t,e){let{targets:i}=t;return M(i,e)},watch(t,e){if(e||_(t,this.clsOpen))return;const i=this.active!==!1&&t[Number(this.active)]||!this.collapsible&&t[0];i&&this.toggle(i,!1)},immediate:!0},toggles(t){let{toggle:e}=t;return this.items.map(i=>b(e,i))},contents:{get(t){let{content:e}=t;return this.items.map(i=>b(e,i))},watch(t){for(const e of t)ei(e,!_(this.items.find(i=>P(e,i)),this.clsOpen))},immediate:!0}},connected(){this.lazyload()},events:[{name:"click",delegate(){return this.targets+" "+this.$props.toggle},async handler(t){var e;t.preventDefault(),(e=this._off)==null||e.call(this),this._off=gr(t.target),await this.toggle(ee(this.toggles,t.current)),this._off()}}],methods:{async toggle(t,e){t=this.items[Ut(t,this.items)];let i=[t];const s=Re(this.items,"."+this.clsOpen);!this.multiple&&!p(s,i[0])&&(i=i.concat(s)),!(!this.collapsible&&s.length<2&&p(s,t))&&await Promise.all(i.map(n=>this.toggleElement(n,!p(s,n),(o,r)=>{if(H(o,this.clsOpen,r),w(b(this.$props.toggle,o),"aria-expanded",r),e===!1||!this.animation){ei(b(this.content,o),!r);return}return pr(o,r,this)})))}}};function ei(t,e){t&&(t.hidden=e)}async function pr(t,e,i){var s;let{content:n,duration:o,velocity:r,transition:a}=i;n=((s=t._wrapper)==null?void 0:s.firstElementChild)||b(n,t),t._wrapper||(t._wrapper=Xe(n,"
"));const l=t._wrapper;c(l,"overflow","hidden");const h=v(c(l,"height"));await S.cancel(l),ei(n,!1);const u=v(c(n,"height"))+v(c(n,"marginTop"))+v(c(n,"marginBottom")),d=h/u;o=(r*u+o)*(e?1-d:d),c(l,"height",h),await S.start(l,{height:e?u:0},o,a),$e(n),delete t._wrapper,e||ei(n,!0)}function gr(t){const e=tt(t)[0];let i;return function s(){i=requestAnimationFrame(()=>{const{top:n}=t.getBoundingClientRect();n<0&&(e.scrollTop+=n),s()})}(),()=>requestAnimationFrame(()=>cancelAnimationFrame(i))}var mr={mixins:[st,_t],args:"animation",props:{animation:Boolean,close:String},data:{animation:!0,selClose:".uk-alert-close",duration:150},events:{name:"click",delegate(){return this.selClose},handler(t){t.preventDefault(),this.close()}},methods:{async close(){await this.toggleElement(this.$el,!1,vr),this.$destroy(!0)}}};function vr(t,e,i){let{duration:s,transition:n,velocity:o}=i;const r=v(c(t,"height"));return c(t,"height",r),S.start(t,{height:0,marginTop:0,marginBottom:0,paddingTop:0,paddingBottom:0,borderTop:0,borderBottom:0,opacity:0},o*r+s,n)}var Zs={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},connected(){this.inView=this.autoplay==="inview",this.inView&&!It(this.$el,"preload")&&(this.$el.preload="none"),ct(this.$el,"iframe")&&!It(this.$el,"allow")&&(this.$el.allow="autoplay"),this.automute&&Bs(this.$el),this.registerObserver(re(this.$el,()=>this.$emit(),{},!1))},update:{read(t){let{visible:e}=t;return Ds(this.$el)?{prev:e,visible:q(this.$el)&&c(this.$el,"visibility")!=="hidden",inView:this.inView&&Vi(this.$el)}:!1},write(t){let{prev:e,visible:i,inView:s}=t;!i||this.inView&&!s?Os(this.$el):(this.autoplay===!0&&!e||this.inView&&s)&&_s(this.$el)}}},wt={connected(){var t;this.registerObserver(Ke(((t=this.$options.resizeTargets)==null?void 0:t.call(this))||this.$el,()=>this.$emit("resize")))}},wr={mixins:[wt,Zs],props:{width:Number,height:Number},data:{automute:!0},events:{"load loadedmetadata"(){this.$emit("resize")}},resizeTargets(){return[this.$el,Qs(this.$el)||E(this.$el)]},update:{read(){const{ratio:t,cover:e}=Fe,{$el:i,width:s,height:n}=this;let o={width:s,height:n};if(!o.width||!o.height){const h={width:i.naturalWidth||i.videoWidth||i.clientWidth,height:i.naturalHeight||i.videoHeight||i.clientHeight};o.width?o=t(h,"width",o.width):n?o=t(h,"height",o.height):o=h}const{offsetHeight:r,offsetWidth:a}=Qs(i)||E(i),l=e(o,{width:a+(a%2?1:0),height:r+(r%2?1:0)});return!l.width||!l.height?!1:l},write(t){let{height:e,width:i}=t;c(this.$el,{height:e,width:i})},events:["resize"]}};function Qs(t){for(;t=E(t);)if(c(t,"position")!=="static")return t}var le={props:{container:Boolean},data:{container:!0},computed:{container(t){let{container:e}=t;return e===!0&&this.$container||e&&b(e)}}},Us={props:{pos:String,offset:null,flip:Boolean,shift:Boolean,inset:Boolean},data:{pos:"bottom-"+(X?"right":"left"),offset:!1,flip:!0,shift:!0,inset:!1},connected(){this.pos=this.$props.pos.split("-").concat("center").slice(0,2),[this.dir,this.align]=this.pos,this.axis=p(["top","bottom"],this.dir)?"y":"x"},methods:{positionAt(t,e,i){let s=[this.getPositionOffset(t),this.getShiftOffset(t)];const n=[this.flip&&"flip",this.shift&&"shift"],o={element:[this.inset?this.dir:qe(this.dir),this.align],target:[this.dir,this.align]};if(this.axis==="y"){for(const u in o)o[u].reverse();s.reverse(),n.reverse()}const[r]=tt(t,/auto|scroll/),{scrollTop:a,scrollLeft:l}=r,h=$(t);c(t,{top:-h.height,left:-h.width}),Ls(t,e,{attach:o,offset:s,boundary:i,placement:n,viewportOffset:this.getViewportOffset(t)}),r.scrollTop=a,r.scrollLeft=l},getPositionOffset(t){return K(this.offset===!1?c(t,"--uk-position-offset"):this.offset,this.axis==="x"?"width":"height",t)*(p(["left","top"],this.dir)?-1:1)*(this.inset?-1:1)},getShiftOffset(t){return this.align==="center"?0:K(c(t,"--uk-position-shift-offset"),this.axis==="y"?"width":"height",t)*(p(["left","top"],this.align)?1:-1)},getViewportOffset(t){return K(c(t,"--uk-position-viewport-offset"))}}},br={beforeConnect(){this._style=w(this.$el,"style")},disconnected(){w(this.$el,"style",this._style)}};const nt=[];var Ji={mixins:[st,le,_t],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel(t,e){let{selPanel:i}=t;return b(i,e)},transitionElement(){return this.panel},bgClose(t){let{bgClose:e}=t;return e&&this.panel}},beforeDisconnect(){p(nt,this)&&this.toggleElement(this.$el,!1,!1)},events:[{name:"click",delegate(){return this.selClose},handler(t){t.preventDefault(),this.hide()}},{name:"click",delegate(){return'a[href*="#"]'},handler(t){let{current:e,defaultPrevented:i}=t;const{hash:s}=e;!i&&s&&Zi(e)&&!P(s,this.$el)&&b(s,document.body)&&this.hide()}},{name:"toggle",self:!0,handler(t){t.defaultPrevented||(t.preventDefault(),this.isToggled()===p(nt,this)&&this.toggle())}},{name:"beforeshow",self:!0,handler(t){if(p(nt,this))return!1;!this.stack&&nt.length?(Promise.all(nt.map(e=>e.hide())).then(this.show),t.preventDefault()):nt.push(this)}},{name:"show",self:!0,handler(){N(this.$el,"hide",k(document,"focusin",t=>{Qt(nt)===this&&!P(t.target,this.$el)&&this.$el.focus()})),this.overlay&&(N(this.$el,"hidden",en(this.$el),{self:!0}),N(this.$el,"hidden",sn(),{self:!0})),this.stack&&c(this.$el,"zIndex",v(c(this.$el,"zIndex"))+nt.length),x(document.documentElement,this.clsPage),this.bgClose&&N(this.$el,"hide",k(document,gt,t=>{let{target:e}=t;Qt(nt)!==this||this.overlay&&!P(e,this.$el)||P(e,this.panel)||N(document,At+" "+Je+" scroll",i=>{let{defaultPrevented:s,type:n,target:o}=i;!s&&n===At&&e===o&&this.hide()},!0)}),{self:!0}),this.escClose&&N(this.$el,"hide",k(document,"keydown",t=>{t.keyCode===27&&Qt(nt)===this&&this.hide()}),{self:!0})}},{name:"shown",self:!0,handler(){We(this.$el)||w(this.$el,"tabindex","-1"),b(":focus",this.$el)||this.$el.focus()}},{name:"hidden",self:!0,handler(){p(nt,this)&&nt.splice(nt.indexOf(this),1),c(this.$el,"zIndex",""),nt.some(t=>t.clsPage===this.clsPage)||B(document.documentElement,this.clsPage)}}],methods:{toggle(){return this.isToggled()?this.hide():this.show()},show(){return this.container&&E(this.$el)!==this.container?(L(this.container,this.$el),new Promise(t=>requestAnimationFrame(()=>this.show().then(t)))):this.toggleElement(this.$el,!0,tn)},hide(){return this.toggleElement(this.$el,!1,tn)}}};function tn(t,e,i){let{transitionElement:s,_toggle:n}=i;return new Promise((o,r)=>N(t,"show hide",()=>{t._reject==null||t._reject(),t._reject=r,n(t,e);const a=N(s,"transitionstart",()=>{N(s,"transitionend transitioncancel",o,{self:!0}),clearTimeout(l)},{self:!0}),l=setTimeout(()=>{a(),o()},xr(c(s,"transitionDuration")))})).then(()=>delete t._reject)}function xr(t){return t?Gt(t,"ms")?v(t):v(t)*1e3:0}function en(t){if(CSS.supports("overscroll-behavior","contain")){const s=yr(t,n=>/auto|scroll/.test(c(n,"overflow")));return c(s,"overscrollBehavior","contain"),()=>c(s,"overscrollBehavior","")}let e;const i=[k(t,"touchstart",s=>{let{targetTouches:n}=s;n.length===1&&(e=n[0].clientY)},{passive:!0}),k(t,"touchmove",s=>{if(s.targetTouches.length!==1)return;let[n]=tt(s.target,/auto|scroll/);P(n,t)||(n=t);const o=s.targetTouches[0].clientY-e,{scrollTop:r,scrollHeight:a,clientHeight:l}=n;(l>=a||r===0&&o>0||a-r<=l&&o<0)&&s.cancelable&&s.preventDefault()},{passive:!1})];return()=>i.forEach(s=>s())}let Ki;function sn(){if(Ki)return T;Ki=!0;const{scrollingElement:t}=document;return c(t,{overflowY:"hidden",touchAction:"none",paddingRight:ye(window)-t.clientWidth}),()=>{Ki=!1,c(t,{overflowY:"",touchAction:"",paddingRight:""})}}function yr(t,e){const i=[];return vt(t,s=>{e(s)&&i.push(s)}),i}function Zi(t){return["origin","pathname","search"].every(e=>t[e]===location[e])}let V;var nn={mixins:[le,Te,Us,br,_t],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryX:Boolean,boundaryY:Boolean,target:Boolean,targetX:Boolean,targetY:Boolean,stretch:Boolean,delayShow:Number,delayHide:Number,autoUpdate:Boolean,clsDrop:String,animateOut:Boolean,bgScroll:Boolean},data:{mode:["click","hover"],toggle:"- *",boundary:!1,boundaryX:!1,boundaryY:!1,target:!1,targetX:!1,targetY:!1,stretch:!1,delayShow:0,delayHide:800,autoUpdate:!0,clsDrop:!1,animateOut:!1,bgScroll:!0,animation:["uk-animation-fade"],cls:"uk-open",container:!1},computed:{boundary(t,e){let{boundary:i,boundaryX:s,boundaryY:n}=t;return[ht(s||i,e)||window,ht(n||i,e)||window]},target(t,e){let{target:i,targetX:s,targetY:n}=t;return s=s||i||this.targetEl,n=n||i||this.targetEl,[s===!0?window:ht(s,e),n===!0?window:ht(n,e)]}},created(){this.tracker=new Wi},beforeConnect(){this.clsDrop=this.$props.clsDrop||"uk-"+this.$options.name},connected(){x(this.$el,this.clsDrop),this.toggle&&!this.targetEl&&(this.targetEl=this.$create("toggle",ht(this.toggle,this.$el),{target:this.$el,mode:this.mode}).$el,w(this.targetEl,"aria-haspopup",!0),this.lazyload(this.targetEl))},disconnected(){this.isActive()&&(this.hide(!1),V=null)},events:[{name:"click",delegate(){return"."+this.clsDrop+"-close"},handler(t){t.preventDefault(),this.hide(!1)}},{name:"click",delegate(){return'a[href*="#"]'},handler(t){let{defaultPrevented:e,current:i}=t;const{hash:s}=i;!e&&s&&Zi(i)&&!P(s,this.$el)&&this.hide(!1)}},{name:"beforescroll",handler(){this.hide(!1)}},{name:"toggle",self:!0,handler(t,e){t.preventDefault(),this.isToggled()?this.hide(!1):this.show(e==null?void 0:e.$el,!1)}},{name:"toggleshow",self:!0,handler(t,e){t.preventDefault(),this.show(e==null?void 0:e.$el)}},{name:"togglehide",self:!0,handler(t){t.preventDefault(),F(this.$el,":focus,:hover")||this.hide()}},{name:jt+" focusin",filter(){return p(this.mode,"hover")},handler(t){kt(t)||this.clearTimers()}},{name:oe+" focusout",filter(){return p(this.mode,"hover")},handler(t){!kt(t)&&t.relatedTarget&&this.hide()}},{name:"toggled",self:!0,handler(t,e){!e||(this.clearTimers(),this.position())}},{name:"show",self:!0,handler(){V=this,this.tracker.init();const t=()=>this.$emit(),e=[k(document,gt,i=>{let{target:s}=i;return!P(s,this.$el)&&N(document,At+" "+Je+" scroll",n=>{let{defaultPrevented:o,type:r,target:a}=n;!o&&r===At&&s===a&&!(this.targetEl&&P(s,this.targetEl))&&this.hide(!1)},!0)}),k(document,"keydown",i=>{i.keyCode===27&&this.hide(!1)}),k(window,"resize",t),(()=>{const i=Ke(tt(this.$el).concat(this.target),t);return()=>i.disconnect()})(),...this.autoUpdate?[k([document,tt(this.$el)],"scroll",t,{passive:!0})]:[],...this.bgScroll?[]:[en(this.$el),sn()]];N(this.$el,"hide",()=>e.forEach(i=>i()),{self:!0})}},{name:"beforehide",self:!0,handler(){this.clearTimers()}},{name:"hide",handler(t){let{target:e}=t;if(this.$el!==e){V=V===null&&P(e,this.$el)&&this.isToggled()?this:V;return}V=this.isActive()?null:V,this.tracker.cancel()}}],update:{write(){this.isToggled()&&!_(this.$el,this.clsEnter)&&this.position()}},methods:{show(t,e){if(t===void 0&&(t=this.targetEl),e===void 0&&(e=!0),this.isToggled()&&t&&this.targetEl&&t!==this.targetEl&&this.hide(!1,!1),this.targetEl=t,this.clearTimers(),!this.isActive()){if(V){if(e&&V.isDelaying){this.showTimer=setTimeout(()=>F(t,":hover")&&this.show(),10);return}let i;for(;V&&i!==V&&!P(this.$el,V.$el);)i=V,V.hide(!1,!1)}this.container&&E(this.$el)!==this.container&&L(this.container,this.$el),this.showTimer=setTimeout(()=>this.toggleElement(this.$el,!0),e&&this.delayShow||0)}},hide(t,e){t===void 0&&(t=!0),e===void 0&&(e=!0);const i=()=>this.toggleElement(this.$el,!1,this.animateOut&&e);this.clearTimers(),this.isDelaying=$r(this.$el).some(s=>this.tracker.movesTo(s)),t&&this.isDelaying?this.hideTimer=setTimeout(this.hide,50):t&&this.delayHide?this.hideTimer=setTimeout(i,this.delayHide):i()},clearTimers(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive(){return V===this},position(){B(this.$el,this.clsDrop+"-stack"),w(this.$el,"style",this._style),this.$el.hidden=!0;const t=this.target.map(n=>kr(this.$el,n)),e=this.getViewportOffset(this.$el),i=[[0,["x","width","left","right"]],[1,["y","height","top","bottom"]]];for(const[n,[o,r]]of i)this.axis!==o&&p([o,!0],this.stretch)&&c(this.$el,{[r]:Math.min(C(this.boundary[n])[r],t[n][r]-2*e),["overflow-"+o]:"auto"});const s=t[0].width-2*e;this.$el.offsetWidth>s&&x(this.$el,this.clsDrop+"-stack"),c(this.$el,"maxWidth",s),this.$el.hidden=!1,this.positionAt(this.$el,this.target,this.boundary);for(const[n,[o,r,a,l]]of i)if(this.axis===o&&p([o,!0],this.stretch)){const h=Math.abs(this.getPositionOffset(this.$el)),u=C(this.target[n]),d=C(this.$el);c(this.$el,{[r]:(u[a]>d[a]?u[a]-Math.max(C(this.boundary[n])[a],t[n][a]+e):Math.min(C(this.boundary[n])[l],t[n][l]-e)-u[l])-h,["overflow-"+o]:"auto"}),this.positionAt(this.$el,this.target,this.boundary)}}}};function $r(t){const e=[];return vt(t,i=>c(i,"position")!=="static"&&e.push(i)),e}function kr(t,e){return rt(tt(e).find(i=>P(t,i)))}var Sr={mixins:[st],args:"target",props:{target:Boolean},data:{target:!1},computed:{input(t,e){return b(ve,e)},state(){return this.input.nextElementSibling},target(t,e){let{target:i}=t;return i&&(i===!0&&E(this.input)===e&&this.input.nextElementSibling||b(i,e))}},update(){var t;const{target:e,input:i}=this;if(!e)return;let s;const n=Pi(e)?"value":"textContent",o=e[n],r=(t=i.files)!=null&&t[0]?i.files[0].name:F(i,"select")&&(s=M("option",i).filter(a=>a.selected)[0])?s.textContent:i.value;o!==r&&(e[n]=r)},events:[{name:"change",handler(){this.$emit()}},{name:"reset",el(){return et(this.$el,"form")},handler(){this.$emit()}}]},on={mixins:[wt],props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},resizeTargets(){return[this.$el,...xi(this.$el.children)]},connected(){this.registerObserver(Ps(this.$el,()=>this.$reset(),{childList:!0,attributes:!0,attributeFilter:["style"]}))},update:{read(){const t=Qi(this.$el.children);return{rows:t,columns:Tr(t)}},write(t){let{columns:e,rows:i}=t;for(const s of i)for(const n of s)H(n,this.margin,i[0]!==s),H(n,this.firstColumn,e[0].includes(n))},events:["resize"]}};function Qi(t){return rn(t,"top","bottom")}function Tr(t){const e=[];for(const i of t){const s=rn(i,"left","right");for(let n=0;n=0;r--){const a=s[r];if(!a[0]){a.push(n);break}let l;if(a[0].offsetParent===n.offsetParent?l=ii(a[0]):(o=ii(n,!0),l=ii(a[0],!0)),o[e]>=l[i]-1&&o[e]!==l[e]){s.push([n]);break}if(o[i]-1>l[e]||o[e]===l[e]){a.push(n);break}if(r===0){s.unshift([n]);break}}}return s}function ii(t,e){e===void 0&&(e=!1);let{offsetTop:i,offsetLeft:s,offsetHeight:n,offsetWidth:o}=t;return e&&([i,s]=Ht(t)),{top:i,left:s,bottom:i+n,right:s+o}}var si={connected(){an(this._uid,()=>this.$emit("scroll"))},disconnected(){ln(this._uid)}};const ni=new Map;let Ce;function an(t,e){Ce=Ce||k(window,"scroll",()=>ni.forEach(i=>i()),{passive:!0,capture:!0}),ni.set(t,e)}function ln(t){ni.delete(t),Ce&&!ni.size&&(Ce(),Ce=null)}var Cr={extends:on,mixins:[st],name:"grid",props:{masonry:Boolean,parallax:Number},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0},connected(){this.masonry&&x(this.$el,"uk-flex-top uk-flex-wrap-top"),this.parallax&&an(this._uid,()=>this.$emit("scroll"))},disconnected(){ln(this._uid)},update:[{write(t){let{columns:e}=t;H(this.$el,this.clsStack,e.length<2)},events:["resize"]},{read(t){let{columns:e,rows:i}=t;if(!e.length||!this.masonry&&!this.parallax||hn(this.$el))return t.translates=!1,!1;let s=!1;const n=O(this.$el),o=Ar(e),r=Pr(n,this.margin)*(i.length-1),a=Math.max(...o)+r;this.masonry&&(e=e.map(h=>Ne(h,"offsetTop")),s=Ir(i,e));let l=Math.abs(this.parallax);return l&&(l=o.reduce((h,u,d)=>Math.max(h,u+r+(d%2?l:l/8)-a),0)),{padding:l,columns:e,translates:s,height:s?a:""}},write(t){let{height:e,padding:i}=t;c(this.$el,"paddingBottom",i||""),e!==!1&&c(this.$el,"height",e)},events:["resize"]},{read(){return this.parallax&&hn(this.$el)?!1:{scrolled:this.parallax?Yi(this.$el)*Math.abs(this.parallax):!1}},write(t){let{columns:e,scrolled:i,translates:s}=t;i===!1&&!s||e.forEach((n,o)=>n.forEach((r,a)=>c(r,"transform",!i&&!s?"":"translateY("+((s&&-s[o][a])+(i?o%2?i:i/8:0))+"px)")))},events:["scroll","resize"]}]};function hn(t){return O(t).some(e=>c(e,"position")==="absolute")}function Ir(t,e){const i=t.map(s=>Math.max(...s.map(n=>n.offsetHeight)));return e.map(s=>{let n=0;return s.map((o,r)=>n+=r?i[r-1]-s[r-1].offsetHeight:0)})}function Pr(t,e){const[i]=t.filter(s=>_(s,e));return v(i?c(i,"marginTop"):c(t[0],"paddingLeft"))}function Ar(t){return t.map(e=>e.reduce((i,s)=>i+s.offsetHeight,0))}var Er={mixins:[wt],args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:{get(t,e){let{target:i}=t;return M(i,e)},watch(){this.$reset()}}},resizeTargets(){return[this.$el,...this.elements]},update:{read(){return{rows:(this.row?Qi(this.elements):[this.elements]).map(_r)}},write(t){let{rows:e}=t;for(const{heights:i,elements:s}of e)s.forEach((n,o)=>c(n,"minHeight",i[o]))},events:["resize"]}};function _r(t){if(t.length<2)return{heights:[""],elements:t};c(t,"minHeight","");let e=t.map(Or);const i=Math.max(...e);return{heights:t.map((s,n)=>e[n].toFixed(2)===i.toFixed(2)?"":i),elements:t}}function Or(t){let e=!1;q(t)||(e=t.style.display,c(t,"display","block","important"));const i=$(t).height-se(t,"height","content-box");return e!==!1&&c(t,"display",e),i}var Br={mixins:[wt],props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},resizeTargets(){return[this.$el,...tt(this.$el,/auto|scroll/)]},update:{read(t){let{minHeight:e}=t;if(!q(this.$el))return!1;let i="";const s=se(this.$el,"height","content-box"),{body:n,scrollingElement:o}=document,[r]=tt(this.$el,/auto|scroll/),{height:a}=rt(r===n?o:r);if(this.expand)i=Math.max(a-($(r).height-$(this.$el).height)-s,0);else{const l=o===r||n===r;if(i="calc("+(l?"100vh":a+"px"),this.offsetTop)if(l){const h=Ht(this.$el)[0]-Ht(r)[0];i+=h>0&&h{if(this._connected){const e=zr(t,this.$el);return this.svgEl&&e!==this.svgEl&&ut(this.svgEl),this.applyAttributes(e,t),this.svgEl=e}},T),this.strokeAnimation&&this.svg.then(t=>{this._connected&&(dn(t),this.registerObserver(re(t,(e,i)=>{dn(t),i.disconnect()})))})},disconnected(){this.svg.then(t=>{this._connected||(Ii(this.$el)&&(this.$el.hidden=!1),ut(t),this.svgEl=null)}),this.svg=null},methods:{async getSvg(){return ct(this.$el,"img")&&!this.$el.complete&&this.$el.loading==="lazy"?new Promise(t=>N(this.$el,"load",()=>t(this.getSvg()))):Mr(await Dr(this.src),this.icon)||Promise.reject("SVG not found.")},applyAttributes(t,e){for(const o in this.$options.props)p(this.include,o)&&o in this&&w(t,o,this[o]);for(const o in this.attributes){const[r,a]=this.attributes[o].split(":",2);w(t,r,a)}this.id||me(t,"id");const i=["width","height"];let s=i.map(o=>this[o]);s.some(o=>o)||(s=i.map(o=>w(e,o)));const n=w(e,"viewBox");n&&!s.some(o=>o)&&(s=n.split(" ").slice(2)),s.forEach((o,r)=>w(t,i[r],v(o)*this.ratio||null))}}};const Dr=ft(async t=>t?lt(t,"data:")?decodeURIComponent(t.split(",")[1]):(await fetch(t)).text():Promise.reject());function Mr(t,e){var i;return e&&p(t,"/g,oi={};function Nr(t,e){if(!oi[t]){oi[t]={},un.lastIndex=0;let i;for(;i=un.exec(t);)oi[t][i[3]]='"}return oi[t][e]}function dn(t){const e=fn(t);e&&t.style.setProperty("--uk-animation-stroke",e)}function fn(t){return Math.ceil(Math.max(0,...M("[stroke]",t).map(e=>{try{return e.getTotalLength()}catch{return 0}})))}function zr(t,e){if(Ii(e)||ct(e,"canvas")){e.hidden=!0;const s=e.nextElementSibling;return pn(t,s)?s:Ve(e,t)}const i=e.lastElementChild;return pn(t,i)?i:L(e,t)}function pn(t,e){return ct(t,"svg")&&ct(e,"svg")&&t.innerHTML===e.innerHTML}var Fr='',Hr='',Lr='',Wr='',Rr='',jr='',qr='',Vr='',Yr='',Xr='',Gr='',Jr='',Kr='',Zr='',Qr='',Ur='',ta='',ea='',ia='';const ri={spinner:ea,totop:ia,marker:Lr,"close-icon":Fr,"close-large":Hr,"nav-parent-icon":Wr,"nav-parent-icon-large":Rr,"navbar-parent-icon":jr,"navbar-toggle-icon":qr,"overlay-icon":Vr,"pagination-next":Yr,"pagination-previous":Xr,"search-icon":Gr,"search-large":Jr,"search-navbar":Kr,"slidenav-next":Zr,"slidenav-next-large":Qr,"slidenav-previous":Ur,"slidenav-previous-large":ta},Ui={install:aa,extends:cn,args:"icon",props:["icon"],data:{include:[]},isIcon:!0,beforeConnect(){x(this.$el,"uk-icon")},methods:{async getSvg(){const t=la(this.icon);if(!t)throw"Icon not found.";return t}}},dt={args:!1,extends:Ui,data:t=>({icon:Xt(t.constructor.options.name)}),beforeConnect(){x(this.$el,this.$options.id)}},sa={extends:dt,beforeConnect(){const t=this.$props.icon;this.icon=et(this.$el,".uk-nav-primary")?t+"-large":t}},gn={extends:dt,beforeConnect(){x(this.$el,"uk-slidenav");const t=this.$props.icon;this.icon=_(this.$el,"uk-slidenav-large")?t+"-large":t}},na={extends:dt,beforeConnect(){this.icon=_(this.$el,"uk-search-icon")&&te(this.$el,".uk-search-large").length?"search-large":te(this.$el,".uk-search-navbar").length?"search-navbar":this.$props.icon}},oa={extends:dt,beforeConnect(){this.icon="close-"+(_(this.$el,"uk-close-large")?"large":"icon")}},ra={extends:dt,methods:{async getSvg(){const t=await Ui.methods.getSvg.call(this);return this.ratio!==1&&c(b("circle",t),"strokeWidth",1/this.ratio),t}}},ai={};function aa(t){t.icon.add=(e,i)=>{const s=D(e)?{[e]:i}:e;$t(s,(n,o)=>{ri[o]=n,delete ai[o]}),t._initialized&&vt(document.body,n=>$t(t.getComponents(n),o=>{o.$options.isIcon&&o.icon in s&&o.$reset()}))}}function la(t){return ri[t]?(ai[t]||(ai[t]=b((ri[ha(t)]||ri[t]).trim())),ai[t].cloneNode(!0)):null}function ha(t){return X?Si(Si(t,"left","right"),"previous","next"):t}const ca=Wt&&"loading"in HTMLImageElement.prototype;var ua={args:"dataSrc",props:{dataSrc:String,sources:String,offsetTop:String,offsetLeft:String,target:String,loading:String},data:{dataSrc:"",sources:!1,offsetTop:"50vh",offsetLeft:"50vw",target:!1,loading:"lazy"},connected(){if(this.loading!=="lazy"){this.load();return}const t=[this.$el,...we(this.$props.target,this.$el)];ca&&li(this.$el)&&(this.$el.loading="lazy",ts(this.$el),t.length===1)||(ma(this.$el),this.registerObserver(re(t,(e,i)=>{this.load(),i.disconnect()},{rootMargin:K(this.offsetTop,"height")+"px "+K(this.offsetLeft,"width")+"px"})))},disconnected(){this._data.image&&(this._data.image.onload="")},methods:{load(){if(this._data.image)return this._data.image;const t=li(this.$el)?this.$el:fa(this.$el,this.dataSrc,this.sources);return me(t,"loading"),ts(this.$el,t.currentSrc),this._data.image=t}}};function ts(t,e){if(li(t)){const i=E(t);(va(i)?O(i):[t]).forEach(n=>mn(n,n))}else e&&!p(t.style.backgroundImage,e)&&(c(t,"backgroundImage","url("+Ei(e)+")"),g(t,zt("load",!1)))}const da=["data-src","data-srcset","sizes"];function mn(t,e){da.forEach(i=>{const s=ot(t,i);s&&w(e,i.replace(/^(data-)+/,""),s)})}function fa(t,e,i){const s=new Image;return pa(s,i),mn(t,s),s.onload=()=>{ts(t,s.currentSrc)},w(s,"src",e),s}function pa(t,e){if(e=ga(e),e.length){const i=Lt("");for(const s of e){const n=Lt("");w(n,s),L(i,n)}L(i,t)}}function ga(t){if(!t)return[];if(lt(t,"["))try{t=JSON.parse(t)}catch{t=[]}else t=Se(t);return Q(t)||(t=[t]),t.filter(e=>!pe(e))}function ma(t){li(t)&&!It(t,"src")&&w(t,"src",'data:image/svg+xml;utf8,')}function va(t){return ct(t,"picture")}function li(t){return ct(t,"img")}var hi={props:{media:Boolean},data:{media:!1},connected(){const t=wa(this.media,this.$el);if(this.matchMedia=!0,t){this.mediaObj=window.matchMedia(t);const e=()=>{this.matchMedia=this.mediaObj.matches,g(this.$el,zt("mediachange",!1,!0,[this.mediaObj]))};this.offMediaObj=k(this.mediaObj,"change",()=>{e(),this.$emit("resize")}),e()}},disconnected(){var t;(t=this.offMediaObj)==null||t.call(this)}};function wa(t,e){if(D(t)){if(lt(t,"@"))t=v(c(e,"--uk-breakpoint-"+t.substr(1)));else if(isNaN(t))return t}return t&&Dt(t)?"(min-width: "+t+"px)":""}var ba={mixins:[st,hi,wt],props:{fill:String},data:{fill:"",clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill(t){let{fill:e}=t;return e||c(this.$el,"--uk-leader-fill-content")}},connected(){[this.wrapper]=Fi(this.$el,'')},disconnected(){$e(this.wrapper.childNodes)},update:{read(){return{width:Math.trunc(this.$el.offsetWidth/2),fill:this.fill,hide:!this.matchMedia}},write(t){let{width:e,fill:i,hide:s}=t;H(this.wrapper,this.clsHide,s),w(this.wrapper,this.attrFill,new Array(e).join(i))},events:["resize"]}},xa={install:ya,mixins:[Ji],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full"},events:[{name:"show",self:!0,handler(){_(this.panel,"uk-margin-auto-vertical")?x(this.$el,"uk-flex"):c(this.$el,"display","block"),J(this.$el)}},{name:"hidden",self:!0,handler(){c(this.$el,"display",""),B(this.$el,"uk-flex")}}]};function ya(t){let{modal:e}=t;e.dialog=function(s,n){const o=e('
'+s+"
",n);return o.show(),k(o.$el,"hidden",async()=>{await Promise.resolve(),o.$destroy(!0)},{self:!0}),o},e.alert=function(s,n){return i(o=>{let{labels:r}=o;return'
'+(D(s)?s:Pt(s))+'
"},n,o=>o.resolve())},e.confirm=function(s,n){return i(o=>{let{labels:r}=o;return'
'+(D(s)?s:Pt(s))+'
"},n,o=>o.reject())},e.prompt=function(s,n,o){return i(r=>{let{labels:a}=r;return'
"},o,r=>r.resolve(null),r=>b("input",r.$el).value)},e.labels={ok:"Ok",cancel:"Cancel"};function i(s,n,o,r){n={bgClose:!1,escClose:!0,labels:e.labels,...n};const a=e.dialog(s(n),n),l=new He;let h=!1;return k(a.$el,"submit","form",u=>{u.preventDefault(),l.resolve(r==null?void 0:r(a)),h=!0,a.hide()}),k(a.$el,"hide",()=>!h&&o(l)),l.promise.dialog=a,l.promise}}var $a={extends:Ks,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}},ka={mixins:[st,le],props:{dropdown:String,align:String,clsDrop:String,boundary:Boolean,dropbar:Boolean,dropbarAnchor:Boolean,duration:Number,mode:Boolean,offset:Boolean,stretch:Boolean,delayShow:Boolean,delayHide:Boolean,target:Boolean,targetX:Boolean,targetY:Boolean,animation:Boolean,animateOut:Boolean},data:{dropdown:".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle",align:X?"right":"left",clsDrop:"uk-navbar-dropdown",boundary:!0,dropbar:!1,dropbarAnchor:!1,duration:200,container:!1},computed:{dropbarAnchor(t,e){let{dropbarAnchor:i}=t;return ht(i,e)||e},dropbar:{get(t){let{dropbar:e}=t;return e?(e=this._dropbar||ht(e,this.$el)||b("+ .uk-navbar-dropbar",this.$el),e||(this._dropbar=b("
"))):null},watch(t){x(t,"uk-dropbar","uk-dropbar-top","uk-navbar-dropbar")},immediate:!0},dropContainer(t,e){return this.container||e},dropdowns:{get(t,e){let{clsDrop:i}=t;const s=M("."+i,e);if(this.dropContainer!==e)for(const o of M("."+i,this.dropContainer)){var n;const r=(n=this.getDropdown(o))==null?void 0:n.targetEl;!p(s,o)&&r&&P(r,this.$el)&&s.push(o)}return s},watch(t){this.$create("drop",t.filter(e=>!this.getDropdown(e)),{...this.$props,flip:!1,shift:!0,pos:"bottom-"+this.align,boundary:this.boundary===!0?this.$el:this.boundary})},immediate:!0},toggles:{get(t,e){let{dropdown:i}=t;return M(i,e)},watch(){const t=_(this.$el,"uk-navbar-justify");for(const e of M(".uk-navbar-nav, .uk-navbar-left, .uk-navbar-right",this.$el))c(e,"flexGrow",t?M(this.dropdown,e).length:"")},immediate:!0}},disconnected(){this.dropbar&&ut(this.dropbar),delete this._dropbar},events:[{name:"mouseover focusin",delegate(){return this.dropdown},handler(t){let{current:e}=t;const i=this.getActive();i&&p(i.mode,"hover")&&i.targetEl&&!P(i.targetEl,e)&&!i.isDelaying&&i.hide(!1)}},{name:"keydown",delegate(){return this.dropdown},handler(t){const{current:e,keyCode:i}=t,s=this.getActive();i===qt.DOWN&&It(e,"aria-expanded")&&(t.preventDefault(),!s||s.targetEl!==e?(e.click(),N(this.dropContainer,"show",n=>{let{target:o}=n;return wn(o)})):wn(s.$el)),vn(t,this.toggles,s)}},{name:"keydown",el(){return this.dropContainer},delegate(){return"."+this.clsDrop},handler(t){const{current:e,keyCode:i}=t;if(!p(this.dropdowns,e))return;const s=this.getActive(),n=M(Le,e),o=bt(n,a=>F(a,":focus"));if(i===qt.UP&&(t.preventDefault(),o>0&&n[o-1].focus()),i===qt.DOWN&&(t.preventDefault(),oF(e,":hover"))&&t.hide()}},{name:"beforeshow",el(){return this.dropContainer},filter(){return this.dropbar},handler(t){let{target:e}=t;!this.isDropbarDrop(e)||(this.dropbar.previousElementSibling!==this.dropbarAnchor&&Ve(this.dropbarAnchor,this.dropbar),x(e,this.clsDrop+"-dropbar"))}},{name:"show",el(){return this.dropContainer},filter(){return this.dropbar},handler(t){let{target:e}=t;if(!this.isDropbarDrop(e))return;const i=this.getDropdown(e);this._observer=Ke([i.$el,...i.target],()=>{const s=te(e,"."+this.clsDrop).concat(e).map(a=>C(a)),n=Math.min(...s.map(a=>{let{top:l}=a;return l})),o=Math.max(...s.map(a=>{let{bottom:l}=a;return l})),r=C(this.dropbar);c(this.dropbar,"top",this.dropbar.offsetTop-(r.top-n)),this.transitionTo(o-n+v(c(e,"marginBottom")),e)})}},{name:"beforehide",el(){return this.dropContainer},filter(){return this.dropbar},handler(t){const e=this.getActive();F(this.dropbar,":hover")&&(e==null?void 0:e.$el)===t.target&&!this.toggles.some(i=>e.targetEl!==i&&F(i,":focus"))&&t.preventDefault()}},{name:"hide",el(){return this.dropContainer},filter(){return this.dropbar},handler(t){var e;let{target:i}=t;if(!this.isDropbarDrop(i))return;(e=this._observer)==null||e.disconnect();const s=this.getActive();(!s||(s==null?void 0:s.$el)===i)&&this.transitionTo(0)}}],methods:{getActive(){return p(this.dropdowns,V==null?void 0:V.$el)&&V},transitionTo(t,e){const{dropbar:i}=this,s=J(i);e=sc(e,{clipPath:""}))},getDropdown(t){return this.$getComponent(t,"drop")||this.$getComponent(t,"dropdown")},isDropbarDrop(t){return this.getDropdown(t)&&_(t,this.clsDrop)}}};function vn(t,e,i){const{current:s,keyCode:n}=t,o=(i==null?void 0:i.targetEl)||s,r=e.indexOf(o);n===qt.LEFT&&r>0&&(i==null||i.hide(!1),e[r-1].focus()),n===qt.RIGHT&&r{const{x:n,y:o}=ie(s);(s.type!=="scroll"&&i&&n&&Math.abs(e.x-n)>100||o&&Math.abs(e.y-o)>100)&&setTimeout(()=>{g(i,"swipe"),g(i,"swipe"+Sa(e.x,e.y,n,o))})})}})}};function Sa(t,e,i,s){return Math.abs(t-i)>=Math.abs(e-s)?t-i>0?"Left":"Right":e-s>0?"Up":"Down"}var Ta={mixins:[Ji,bn],args:"mode",props:{mode:String,flip:Boolean,overlay:Boolean},data:{mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContainerAnimation:"uk-offcanvas-container-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close",container:!1},computed:{clsFlip(t){let{flip:e,clsFlip:i}=t;return e?i:""},clsOverlay(t){let{overlay:e,clsOverlay:i}=t;return e?i:""},clsMode(t){let{mode:e,clsMode:i}=t;return i+"-"+e},clsSidebarAnimation(t){let{mode:e,clsSidebarAnimation:i}=t;return e==="none"||e==="reveal"?"":i},clsContainerAnimation(t){let{mode:e,clsContainerAnimation:i}=t;return e!=="push"&&e!=="reveal"?"":i},transitionElement(t){let{mode:e}=t;return e==="reveal"?E(this.panel):this.panel}},update:{read(){this.isToggled()&&!q(this.$el)&&this.hide()},events:["resize"]},events:[{name:"touchmove",self:!0,passive:!1,filter(){return this.overlay},handler(t){t.cancelable&&t.preventDefault()}},{name:"show",self:!0,handler(){this.mode==="reveal"&&!_(E(this.panel),this.clsMode)&&(Xe(this.panel,"
"),x(E(this.panel),this.clsMode));const{body:t,scrollingElement:e}=document;x(t,this.clsContainer,this.clsFlip),c(t,"touch-action","pan-y pinch-zoom"),c(this.$el,"display","block"),c(this.panel,"maxWidth",e.clientWidth),x(this.$el,this.clsOverlay),x(this.panel,this.clsSidebarAnimation,this.mode==="reveal"?"":this.clsMode),J(t),x(t,this.clsContainerAnimation),this.clsContainerAnimation&&Ca()}},{name:"hide",self:!0,handler(){B(document.body,this.clsContainerAnimation),c(document.body,"touch-action","")}},{name:"hidden",self:!0,handler(){this.clsContainerAnimation&&Ia(),this.mode==="reveal"&&$e(this.panel),B(this.panel,this.clsSidebarAnimation,this.clsMode),B(this.$el,this.clsOverlay),c(this.$el,"display",""),c(this.panel,"maxWidth",""),B(document.body,this.clsContainer,this.clsFlip)}},{name:"swipeLeft swipeRight",handler(t){this.isToggled()&&Gt(t.type,"Left")^this.flip&&this.hide()}}]};function Ca(){xn().content+=",user-scalable=0"}function Ia(){const t=xn();t.content=t.content.replace(/,user-scalable=0$/,"")}function xn(){return b('meta[name="viewport"]',document.head)||L(document.head,'')}var Pa={mixins:[st,wt],props:{selContainer:String,selContent:String,minHeight:Number},data:{selContainer:".uk-modal",selContent:".uk-modal-dialog",minHeight:150},computed:{container(t,e){let{selContainer:i}=t;return et(e,i)},content(t,e){let{selContent:i}=t;return et(e,i)}},resizeTargets(){return[this.container,this.content]},update:{read(){return!this.content||!this.container||!q(this.$el)?!1:{max:Math.max(this.minHeight,J(this.container)-($(this.content).height-J(this.$el)))}},write(t){let{max:e}=t;c(this.$el,{minHeight:this.minHeight,maxHeight:e})},events:["resize"]}},Aa={mixins:[wt],props:["width","height"],resizeTargets(){return[this.$el,E(this.$el)]},connected(){x(this.$el,"uk-responsive-width")},update:{read(){return q(this.$el)&&this.width&&this.height?{width:ye(E(this.$el)),height:this.height}:!1},write(t){J(this.$el,Fe.contain({height:this.height,width:this.width},t).height)},events:["resize"]}},Ea={props:{offset:Number},data:{offset:0},connected(){_a(this)},disconnected(){Oa(this)},methods:{async scrollTo(t){t=t&&b(t)||document.body,g(this.$el,"beforescroll",[this,t])&&(await Fs(t,{offset:this.offset}),g(this.$el,"scrolled",[this,t]))}}};const Ie=new Set;function _a(t){Ie.size||k(document,"click",yn),Ie.add(t)}function Oa(t){Ie.delete(t),Ie.size||Nt(document,"click",yn)}function yn(t){if(!t.defaultPrevented)for(const e of Ie)P(t.target,e.$el)&&(t.preventDefault(),e.scrollTo($n(e.$el)))}function $n(t){return document.getElementById(decodeURIComponent(t.hash).substring(1))}var Ba={mixins:[si],args:"cls",props:{cls:String,target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:()=>({cls:"",target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:"uk-scrollspy-inview"}),computed:{elements:{get(t,e){let{target:i}=t;return i?M(i,e):[e]},watch(t,e){this.hidden&&c(Re(t,":not(."+this.inViewClass+")"),"opacity",0),ge(t,e)||this.$reset()},immediate:!0}},connected(){this._data.elements=new Map,this.registerObserver(re(this.elements,t=>{const e=this._data.elements;for(const{target:i,isIntersecting:s}of t){e.has(i)||e.set(i,{cls:ot(i,"uk-scrollspy-class")||this.cls});const n=e.get(i);!this.repeat&&n.show||(n.show=s)}this.$emit()},{rootMargin:K(this.offsetTop,"height")-1+"px "+(K(this.offsetLeft,"width")-1)+"px"},!1))},disconnected(){for(const[t,e]of this._data.elements.entries())B(t,this.inViewClass,(e==null?void 0:e.cls)||"")},update:[{write(t){for(const[e,i]of t.elements.entries())i.show&&!i.inview&&!i.queued?(i.queued=!0,t.promise=(t.promise||Promise.resolve()).then(()=>new Promise(s=>setTimeout(s,this.delay))).then(()=>{this.toggle(e,!0),setTimeout(()=>{i.queued=!1,this.$emit()},300)})):!i.show&&i.inview&&!i.queued&&this.repeat&&this.toggle(e,!1)}}],methods:{toggle(t,e){const i=this._data.elements.get(t);if(!!i){if(i.off==null||i.off(),c(t,"opacity",!e&&this.hidden?0:""),H(t,this.inViewClass,e),H(t,i.cls),/\buk-animation-/.test(i.cls)){const s=()=>Di(t,"uk-animation-[\\w-]+");e?i.off=N(t,"animationcancel animationend",s):s()}g(t,e?"inview":"outview"),i.inview=e,this.$update(t)}}}},Da={mixins:[si],props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:{get(t,e){return M('a[href*="#"]',e).filter(i=>i.hash&&Zi(i))},watch(t){this.scroll&&this.$create("scroll",t,{offset:this.offset||0})},immediate:!0},elements(t){let{closest:e}=t;return et(this.links,e||"*")}},update:[{read(){const t=this.links.map($n).filter(Boolean),{length:e}=t;if(!e||!q(this.$el))return!1;const[i]=tt(t,/auto|scroll/,!0),{scrollTop:s,scrollHeight:n}=i,o=rt(i),r=n-o.height;let a=!1;if(s===r)a=e-1;else{for(let l=0;l0);l++)a=+l;a===!1&&this.overflow&&(a=0)}return{active:a}},write(t){let{active:e}=t;const i=e!==!1&&!_(this.elements[e],this.cls);this.links.forEach(s=>s.blur());for(let s=0;s
'),this.isFixed=!1,this.setActive(!1)},disconnected(){this.isFixed&&(this.hide(),B(this.selTarget,this.clsInactive)),ut(this.placeholder),this.placeholder=null},events:[{name:"resize",el(){return window},handler(){this.$emit("resize")}},{name:"load hashchange popstate",el(){return window},filter(){return this.targetOffset!==!1},handler(){const{scrollingElement:t}=document;!location.hash||t.scrollTop===0||setTimeout(()=>{const e=C(b(location.hash)),i=C(this.$el);this.isFixed&&Ti(e,i)&&(t.scrollTop=e.top-i.height-K(this.targetOffset,"height",this.placeholder)-K(this.offset,"height",this.placeholder))})}}],update:[{read(t,e){let{height:i,width:s,margin:n}=t;if(this.inactive=!this.matchMedia||!q(this.$el),this.inactive)return!1;const o=this.active&&e.has("resize");o&&(c(this.selTarget,"transition","0s"),this.hide()),this.active||({height:i,width:s}=C(this.$el),n=c(this.$el,"margin")),o&&(this.show(),requestAnimationFrame(()=>c(this.selTarget,"transition","")));const r=J(window);let a=this.position;this.overflowFlip&&i>r&&(a=a==="top"?"bottom":"top");const l=this.isFixed?this.placeholder:this.$el;let h=K(this.offset,"height",l);a==="bottom"&&(i300||n!==o)&&(t.initScroll=r,t.initTimestamp=f),!(this.showOnUp&&!this.isFixed&&Math.abs(t.initScroll-r)<=30&&Math.abs(a-r)<=10))if(this.inactive||rr&&(pt.cancel(this.$el),this.hide());return}this.isFixed=!1,this.animation&&r>u?(pt.cancel(this.$el),pt.out(this.$el,this.animation).then(()=>this.hide(),T)):this.hide()}else this.isFixed?this.update():this.animation&&r>u?(pt.cancel(this.$el),this.show(),pt.in(this.$el,this.animation).catch(T)):this.show()},events:["resize","scroll"]}],methods:{show(){this.isFixed=!0,this.update(),this.placeholder.hidden=!1},hide(){this.setActive(!1),B(this.$el,this.clsFixed,this.clsBelow),c(this.$el,{position:"",top:"",width:""}),this.placeholder.hidden=!0},update(){let{width:t,scroll:e=0,overflow:i,overflowScroll:s=0,start:n,end:o,offset:r,topOffset:a,height:l,offsetParentTop:h}=this._data;const u=n!==0||e>n;let d="fixed";e>o&&(r+=o-h,d="absolute"),i&&(r-=s),c(this.$el,{position:d,top:r+"px",width:t}),this.setActive(u),H(this.$el,this.clsBelow,e>a+l),x(this.$el,this.clsFixed)},setActive(t){const e=this.active;this.active=t,t?(Mi(this.selTarget,this.clsInactive,this.clsActive),e!==t&&g(this.$el,"active")):(Mi(this.selTarget,this.clsActive,this.clsInactive),e!==t&&g(this.$el,"inactive"))}}};function kn(t,e,i,s){if(!t)return 0;if(Dt(t)||D(t)&&t.match(/^-?\d/))return i+K(t,"height",e,!0);{const n=t===!0?E(e):ht(t,e);return C(n).bottom-(s&&n&&P(e,n)?v(c(n,"paddingBottom")):0)}}function Sn(t){return t==="true"?!0:t==="false"?!1:t}var Tn={mixins:[Te,bn,_t],args:"connect",props:{connect:String,toggle:String,itemNav:String,active:Number},data:{connect:"~.uk-switcher",toggle:"> * > :first-child",itemNav:!1,active:0,cls:"uk-active",attrItem:"uk-switcher-item"},computed:{connects:{get(t,e){let{connect:i}=t;return we(i,e)},watch(t){this.swiping&&c(t,"touchAction","pan-y pinch-zoom")},document:!0,immediate:!0},connectChildren:{get(){return this.connects.map(t=>O(t)).flat()},watch(){const t=this.index();for(const e of this.connects)O(e).forEach((i,s)=>H(i,this.cls,s===t)),this.lazyload(this.$el,O(e))},immediate:!0},toggles:{get(t,e){let{toggle:i}=t;return M(i,e).filter(s=>!F(s,".uk-disabled *, .uk-disabled, [disabled]"))},watch(t){const e=this.index();this.show(~e?e:t[this.active]||t[0])},immediate:!0},children(){return O(this.$el).filter(t=>this.toggles.some(e=>P(e,t)))},swipeTarget(){return this.connects}},events:[{name:"click",delegate(){return this.toggle},handler(t){t.preventDefault(),this.show(t.current)}},{name:"click",el(){return this.connects.concat(this.itemNav?we(this.itemNav,this.$el):[])},delegate(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler(t){t.preventDefault(),this.show(ot(t.current,this.attrItem))}},{name:"swipeRight swipeLeft",filter(){return this.swiping},el(){return this.connects},handler(t){let{type:e}=t;this.show(Gt(e,"Left")?"next":"previous")}}],methods:{index(){return bt(this.children,t=>_(t,this.cls))},show(t){const e=this.index(),i=Ut(t,this.toggles,e),s=Ut(this.children[i],O(this.$el));O(this.$el).forEach((o,r)=>{H(o,this.cls,s===r),w(this.toggles[r],"aria-expanded",s===r)});const n=e>=0&&e!==i;this.connects.forEach(async o=>{let{children:r}=o;await this.toggleElement(y(r).filter(a=>_(a,this.cls)),!1,n),await this.toggleElement(r[s],!0,n)})}}},Na={mixins:[st],extends:Tn,props:{media:Boolean},data:{media:960,attrItem:"uk-tab-item"},connected(){const t=_(this.$el,"uk-tab-left")?"uk-tab-left":_(this.$el,"uk-tab-right")?"uk-tab-right":!1;t&&this.$create("toggle",this.$el,{cls:t,mode:"media",media:this.media})}};const za=32;var Fa={mixins:[Te,hi,_t],args:"target",props:{href:String,target:null,mode:"list",queued:Boolean},data:{href:!1,target:!1,mode:"click",queued:!0},computed:{target:{get(t,e){let{href:i,target:s}=t;return s=we(s||i,e),s.length&&s||[e]},watch(){this.updateAria(),this.lazyload(this.$el,this.target)},document:!0,immediate:!0}},connected(){!p(this.mode,"media")&&!We(this.$el)&&w(this.$el,"tabindex","0")},events:[{name:gt,filter(){return p(this.mode,"hover")},handler(t){this._preventClick=null,!(!kt(t)||this._showState)&&(g(this.$el,"focus"),N(document,gt,()=>g(this.$el,"blur"),!0,e=>!P(e.target,this.$el)),p(this.mode,"click")&&(this._preventClick=!0))}},{name:jt+" "+oe+" focus blur",filter(){return p(this.mode,"hover")},handler(t){if(kt(t))return;const e=p([jt,"focus"],t.type),i=w(this.$el,"aria-expanded");if(!(!e&&(t.type===oe&&F(this.$el,":focus")||t.type==="blur"&&F(this.$el,":hover")))){if(this._showState&&e&&i!==this._showState){e||(this._showState=null);return}this._showState=e?i:null,this.toggle("toggle"+(e?"show":"hide"))}}},{name:"keydown",filter(){return p(this.mode,"click")&&!ct(this.$el,"input")},handler(t){t.keyCode===za&&(t.preventDefault(),this.$el.click())}},{name:"click",filter(){return["click","hover"].some(t=>p(this.mode,t))},handler(t){let e;(this._preventClick||et(t.target,'a[href="#"], a[href=""]')||(e=et(t.target,"a[href]"))&&(w(this.$el,"aria-expanded")!=="true"||e.hash&&F(this.target,e.hash)))&&t.preventDefault(),!this._preventClick&&p(this.mode,"click")&&this.toggle()}},{name:"hide show",self:!0,el(){return this.target},handler(t){let{target:e,type:i}=t;this.updateAria(e===this.target[0]&&i==="show")}},{name:"mediachange",filter(){return p(this.mode,"media")},el(){return this.target},handler(t,e){e.matches^this.isToggled(this.target)&&this.toggle()}}],methods:{async toggle(t){if(!g(this.target,t||"toggle",[this]))return;if(!this.queued)return this.toggleElement(this.target);const e=this.target.filter(s=>_(s,this.clsLeave));if(e.length){for(const s of this.target){const n=p(e,s);this.toggleElement(s,n,n)}return}const i=this.target.filter(this.isToggled);await this.toggleElement(i,!1),await this.toggleElement(this.target.filter(s=>!p(i,s)),!0)},updateAria(t){p(this.mode,"media")||w(this.$el,"aria-expanded",Me(t)?t:this.isToggled(this.target))}}},Ha=Object.freeze({__proto__:null,Accordion:Ks,Alert:mr,Cover:wr,Drop:nn,Dropdown:nn,FormCustom:Sr,Grid:Cr,HeightMatch:Er,HeightViewport:Br,Icon:Ui,Img:ua,Leader:ba,Margin:on,Modal:xa,Nav:$a,Navbar:ka,Offcanvas:Ta,OverflowAuto:Pa,Responsive:Aa,Scroll:Ea,Scrollspy:Ba,ScrollspyNav:Da,Sticky:Ma,Svg:cn,Switcher:Tn,Tab:Na,Toggle:Fa,Video:Zs,Close:oa,Spinner:ra,NavParentIcon:sa,SlidenavNext:gn,SlidenavPrevious:gn,SearchIcon:na,Marker:dt,NavbarParentIcon:dt,NavbarToggleIcon:dt,OverlayIcon:dt,PaginationNext:dt,PaginationPrevious:dt,Totop:dt});$t(Ha,(t,e)=>it.component(e,t)),cr(it);const La=["days","hours","minutes","seconds"];var Wa={mixins:[st],props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},connected(){this.date=Date.parse(this.$props.date),this.start()},disconnected(){this.stop()},events:[{name:"visibilitychange",el(){return document},handler(){document.hidden?this.stop():this.start()}}],methods:{start(){this.stop(),this.update(),this.timer=setInterval(this.update,1e3)},stop(){clearInterval(this.timer)},update(){const t=Ra(this.date);(!this.date||t.total<=0)&&(this.stop(),t.days=t.hours=t.minutes=t.seconds=0);for(const e of La){const i=b(this.clsWrapper.replace("%unit%",e),this.$el);if(!i)continue;let s=String(Math.trunc(t[e]));s=s.length<2?"0"+s:s,i.textContent!==s&&(s=s.split(""),s.length!==i.children.length&&Pt(i,s.map(()=>"").join("")),s.forEach((n,o)=>i.children[o].textContent=n))}}}};function Ra(t){const e=t-Date.now();return{total:e,seconds:e/1e3%60,minutes:e/1e3/60%60,hours:e/1e3/60/60%24,days:e/1e3/60/60/24}}const es="uk-transition-leave",is="uk-transition-enter";function Cn(t,e,i,s){s===void 0&&(s=0);const n=ci(e,!0),o={opacity:1},r={opacity:0},a=u=>()=>n===ci(e)?u():Promise.reject(),l=a(async()=>{x(e,es),await Promise.all(Pn(e).map((u,d)=>new Promise(f=>setTimeout(()=>S.start(u,r,i/2,"ease").then(f),d*s)))),B(e,es)}),h=a(async()=>{const u=J(e);x(e,is),t(),c(O(e),{opacity:0}),await ja();const d=O(e),f=J(e);c(e,"alignContent","flex-start"),J(e,u);const m=Pn(e);c(d,r);const I=m.map(async(A,W)=>{await qa(W*s),await S.start(A,o,i/2,"ease")});u!==f&&I.push(S.start(e,{height:f},i/2+m.length*s,"ease")),await Promise.all(I).then(()=>{B(e,is),n===ci(e)&&(c(e,{height:"",alignContent:""}),c(d,{opacity:""}),delete e.dataset.transition)})});return _(e,es)?In(e).then(h):_(e,is)?In(e).then(l).then(h):l().then(h)}function ci(t,e){return e&&(t.dataset.transition=1+ci(t)),Ct(t.dataset.transition)||0}function In(t){return Promise.all(O(t).filter(S.inProgress).map(e=>new Promise(i=>N(e,"transitionend transitioncanceled",i))))}function Pn(t){return Qi(O(t)).reduce((e,i)=>e.concat(Ne(i.filter(s=>Vi(s)),"offsetLeft")),[])}function ja(){return new Promise(t=>requestAnimationFrame(t))}function qa(t){return new Promise(e=>setTimeout(e,t))}async function Va(t,e,i){await _n();let s=O(e);const n=s.map(f=>An(f,!0)),o={...c(e,["height","padding"]),display:"block"};await Promise.all(s.concat(e).map(S.cancel)),t(),s=s.concat(O(e).filter(f=>!p(s,f))),await Promise.resolve(),G.flush();const r=w(e,"style"),a=c(e,["height","padding"]),[l,h]=Ya(e,s,n),u=s.map(f=>({style:w(f,"style")}));s.forEach((f,m)=>h[m]&&c(f,h[m])),c(e,o),await _n();const d=s.map((f,m)=>E(f)===e&&S.start(f,l[m],i,"ease")).concat(S.start(e,a,i,"ease"));try{await Promise.all(d),s.forEach((f,m)=>{w(f,u[m]),E(f)===e&&c(f,"display",l[m].opacity===0?"none":"")}),w(e,"style",r)}catch{w(s,"style",""),Xa(e,o)}}function An(t,e){const i=c(t,"zIndex");return q(t)?{display:"",opacity:e?c(t,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:i==="auto"?ee(t):i,...En(t)}:!1}function Ya(t,e,i){const s=e.map((o,r)=>E(o)&&r in i?i[r]?q(o)?En(o):{opacity:0}:{opacity:q(o)?1:0}:!1),n=s.map((o,r)=>{const a=E(e[r])===t&&(i[r]||An(e[r]));if(!a)return!1;if(!o)delete a.opacity;else if(!("opacity"in o)){const{opacity:l}=a;l%1?o.opacity=1:delete a.opacity}return a});return[s,n]}function Xa(t,e){for(const i in e)c(t,i,"")}function En(t){const{height:e,width:i}=C(t);return{height:e,width:i,transform:"",...je(t),...c(t,["marginTop","marginLeft"])}}function _n(){return new Promise(t=>requestAnimationFrame(t))}var On={props:{duration:Number,animation:Boolean},data:{duration:150,animation:"slide"},methods:{animate(t,e){e===void 0&&(e=this.$el);const i=this.animation;return(i==="fade"?Cn:i==="delayed-fade"?function(){for(var n=arguments.length,o=new Array(n),r=0;r(t(),Promise.resolve()))(t,e,this.duration).catch(T)}}},Ga={mixins:[On],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",duration:250},computed:{toggles:{get(t,e){let{attrItem:i}=t;return M("["+i+"],[data-"+i+"]",e)},watch(){if(this.updateState(),this.selActive!==!1){const t=M(this.selActive,this.$el);this.toggles.forEach(e=>H(e,this.cls,p(t,e)))}},immediate:!0},children:{get(t,e){let{target:i}=t;return M(i+" > *",e)},watch(t,e){e&&!Qa(t,e)&&this.updateState()},immediate:!0}},events:[{name:"click",delegate(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler(t){t.preventDefault(),this.apply(t.current)}}],methods:{apply(t){const e=this.getState(),i=Dn(t,this.attrItem,this.getState());Ja(e,i)||this.setState(i)},getState(){return this.toggles.filter(t=>_(t,this.cls)).reduce((t,e)=>Dn(e,this.attrItem,t),{filter:{"":""},sort:[]})},async setState(t,e){e===void 0&&(e=!0),t={filter:{"":""},sort:[],...t},g(this.$el,"beforeFilter",[this,t]),this.toggles.forEach(i=>H(i,this.cls,!!Za(i,this.attrItem,t))),await Promise.all(M(this.target,this.$el).map(i=>{const s=()=>{Ka(t,i,O(i)),this.$update(this.$el)};return e?this.animate(s,i):s()})),g(this.$el,"afterFilter",[this])},updateState(){G.write(()=>this.setState(this.getState(),!1))}}};function Bn(t,e){return Se(ot(t,e),["filter"])}function Ja(t,e){return["filter","sort"].every(i=>ge(t[i],e[i]))}function Ka(t,e,i){const s=Ua(t);i.forEach(r=>c(r,"display",s&&!F(r,s)?"none":""));const[n,o]=t.sort;if(n){const r=tl(i,n,o);ge(r,i)||L(e,r)}}function Dn(t,e,i){const{filter:s,group:n,sort:o,order:r="asc"}=Bn(t,e);return(s||R(o))&&(n?s?(delete i.filter[""],i.filter[n]=s):(delete i.filter[n],(pe(i.filter)||""in i.filter)&&(i.filter={"":s||""})):i.filter={"":s||""}),R(o)||(i.sort=[o,r]),i}function Za(t,e,i){let{filter:s={"":""},sort:[n,o]}=i;const{filter:r="",group:a="",sort:l,order:h="asc"}=Bn(t,e);return R(l)?a in s&&r===s[a]||!r&&a&&!(a in s)&&!s[""]:n===l&&o===h}function Qa(t,e){return t.length===e.length&&t.every(i=>e.includes(i))}function Ua(t){let{filter:e}=t,i="";return $t(e,s=>i+=s||""),i}function tl(t,e,i){return[...t].sort((s,n)=>ot(s,e).localeCompare(ot(n,e),void 0,{numeric:!0})*(i==="asc"||-1))}var ss={slide:{show(t){return[{transform:z(t*-100)},{transform:z()}]},percent(t){return Pe(t)},translate(t,e){return[{transform:z(e*-100*t)},{transform:z(e*100*(1-t))}]}}};function Pe(t){return Math.abs(c(t,"transform").split(",")[4]/t.offsetWidth)||0}function z(t,e){return t===void 0&&(t=0),e===void 0&&(e="%"),t+=t?e:"","translate3d("+t+", 0, 0)"}function he(t){return"scale3d("+t+", "+t+", 1)"}var Mn={...ss,fade:{show(){return[{opacity:0},{opacity:1}]},percent(t){return 1-c(t,"opacity")},translate(t){return[{opacity:1-t},{opacity:t}]}},scale:{show(){return[{opacity:0,transform:he(1-.2)},{opacity:1,transform:he(1)}]},percent(t){return 1-c(t,"opacity")},translate(t){return[{opacity:1-t,transform:he(1-.2*t)},{opacity:t,transform:he(1-.2+.2*t)}]}}};function el(t,e,i,s){let{animation:n,easing:o}=s;const{percent:r,translate:a,show:l=T}=n,h=l(i),u=new He;return{dir:i,show(d,f,m){f===void 0&&(f=0);const I=m?"linear":o;return d-=Math.round(d*U(f,-1,1)),this.translate(f),ui(e,"itemin",{percent:f,duration:d,timing:I,dir:i}),ui(t,"itemout",{percent:1-f,duration:d,timing:I,dir:i}),Promise.all([S.start(e,h[1],d,I),S.start(t,h[0],d,I)]).then(()=>{this.reset(),u.resolve()},T),u.promise},cancel(){S.cancel([e,t])},reset(){for(const d in h[0])c([e,t],d,"")},forward(d,f){return f===void 0&&(f=this.percent()),S.cancel([e,t]),this.show(d,f,!0)},translate(d){this.reset();const f=a(d,i);c(e,f[1]),c(t,f[0]),ui(e,"itemtranslatein",{percent:d,dir:i}),ui(t,"itemtranslateout",{percent:1-d,dir:i})},percent(){return r(t||e,e,i)},getDistance(){return t==null?void 0:t.offsetWidth}}}function ui(t,e,i){g(t,zt(e,!1,!1,i))}var il={props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected(){this.autoplay&&this.startAutoplay()},disconnected(){this.stopAutoplay()},update(){w(this.slides,"tabindex","-1")},events:[{name:"visibilitychange",el(){return document},filter(){return this.autoplay},handler(){document.hidden?this.stopAutoplay():this.startAutoplay()}}],methods:{startAutoplay(){this.stopAutoplay(),this.interval=setInterval(()=>(!this.draggable||!b(":focus",this.$el))&&(!this.pauseOnHover||!F(this.$el,":hover"))&&!this.stack.length&&this.show("next"),this.autoplayInterval)},stopAutoplay(){this.interval&&clearInterval(this.interval)}}};const ns={passive:!1,capture:!0},Nn={passive:!0,capture:!0},sl="touchstart mousedown",os="touchmove mousemove",zn="touchend touchcancel mouseup click input scroll";var nl={props:{draggable:Boolean},data:{draggable:!0,threshold:10},created(){for(const t of["start","move","end"]){const e=this[t];this[t]=i=>{const s=ie(i).x*(X?-1:1);this.prevPos=s===this.pos?this.prevPos:this.pos,this.pos=s,e(i)}}},events:[{name:sl,passive:!0,delegate(){return this.selSlides},handler(t){!this.draggable||!kt(t)&&ol(t.target)||et(t.target,ve)||t.button>0||this.length<2||this.start(t)}},{name:"dragstart",handler(t){t.preventDefault()}},{name:os,el(){return this.list},handler:T,...ns}],methods:{start(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.cancel(),this._transitioner.translate(this.percent),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,k(document,os,this.move,ns),k(document,zn,this.end,Nn),c(this.list,"userSelect","none")},move(t){const e=this.pos-this.drag;if(e===0||this.prevPos===this.pos||!this.dragging&&Math.abs(e)r;)this.drag-=r*this.dir,s=o,n-=r,o=this.getIndex(s+this.dir,s),r=this._getDistance(s,o)||i[s].offsetWidth;this.percent=n/r;const a=i[s],l=i[o],h=this.index!==o,u=s===o;let d;[this.index,this.prevIndex].filter(f=>!p([o,s],f)).forEach(f=>{g(i[f],"itemhidden",[this]),u&&(d=!0,this.prevIndex=s)}),(this.index===s&&this.prevIndex!==s||d)&&g(i[this.index],"itemshown",[this]),h&&(this.prevIndex=s,this.index=o,!u&&g(a,"beforeitemhide",[this]),g(l,"beforeitemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),a,!u&&l),h&&(!u&&g(a,"itemhide",[this]),g(l,"itemshow",[this]))},end(){if(Nt(document,os,this.move,ns),Nt(document,zn,this.end,Nn),this.dragging)if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{const t=(X?this.dir*(X?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=t?this.index:this.prevIndex,t&&(this.percent=1-this.percent),this.show(this.dir>0&&!t||this.dir<0&&t?"next":"previous",!0)}c(this.list,{userSelect:"",pointerEvents:""}),this.drag=this.percent=null}}};function ol(t){return c(t,"userSelect")!=="none"&&y(t.childNodes).some(e=>e.nodeType===3&&e.textContent.trim())}var rl={data:{selNav:!1},computed:{nav(t,e){let{selNav:i}=t;return b(i,e)},selNavItem(t){let{attrItem:e}=t;return"["+e+"],[data-"+e+"]"},navItems(t,e){return M(this.selNavItem,e)}},update:{write(){this.nav&&this.length!==this.nav.children.length&&Pt(this.nav,this.slides.map((t,e)=>"
  • ').join("")),this.navItems.concat(this.nav).forEach(t=>t&&(t.hidden=!this.maxIndex)),this.updateNav()},events:["resize"]},events:[{name:"click",delegate(){return this.selNavItem},handler(t){t.preventDefault(),this.show(ot(t.current,this.attrItem))}},{name:"itemshow",handler:"updateNav"}],methods:{updateNav(){const t=this.getValidIndex();for(const e of this.navItems){const i=ot(e,this.attrItem);H(e,this.clsActive,Ct(i)===t),H(e,"uk-invisible",this.finite&&(i==="previous"&&t===0||i==="next"&&t>=this.maxIndex))}}}},Fn={mixins:[il,nl,rl,wt],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number,selSlides:String},data:()=>({easing:"ease",finite:!1,velocity:1,index:0,prevIndex:-1,stack:[],percent:0,clsActive:"uk-active",clsActivated:!1,Transitioner:!1,transitionOptions:{}}),connected(){this.prevIndex=-1,this.index=this.getValidIndex(this.$props.index),this.stack=[]},disconnected(){B(this.slides,this.clsActive)},computed:{duration(t,e){let{velocity:i}=t;return Hn(e.offsetWidth/i)},list(t,e){let{selList:i}=t;return b(i,e)},maxIndex(){return this.length-1},selSlides(t){let{selList:e,selSlides:i}=t;return e+" "+(i||"> *")},slides:{get(){return M(this.selSlides,this.$el)},watch(){this.$emit("resize")}},length(){return this.slides.length}},methods:{show(t,e){if(e===void 0&&(e=!1),this.dragging||!this.length)return;const{stack:i}=this,s=e?0:i.length,n=()=>{i.splice(s,1),i.length&&this.show(i.shift(),!0)};if(i[e?"unshift":"push"](t),!e&&i.length>1){i.length===2&&this._transitioner.forward(Math.min(this.duration,200));return}const o=this.getIndex(this.index),r=_(this.slides,this.clsActive)&&this.slides[o],a=this.getIndex(t,this.index),l=this.slides[a];if(r===l){n();return}if(this.dir=al(t,o),this.prevIndex=o,this.index=a,r&&!g(r,"beforeitemhide",[this])||!g(l,"beforeitemshow",[this,r])){this.index=this.prevIndex,n();return}const h=this._show(r,l,e).then(()=>(r&&g(r,"itemhidden",[this]),g(l,"itemshown",[this]),new Promise(u=>{requestAnimationFrame(()=>{i.shift(),i.length?this.show(i.shift(),!0):this._transitioner=null,u()})})));return r&&g(r,"itemhide",[this]),g(l,"itemshow",[this]),h},getIndex(t,e){return t===void 0&&(t=this.index),e===void 0&&(e=this.index),U(Ut(t,this.slides,e,this.finite),0,this.maxIndex)},getValidIndex(t,e){return t===void 0&&(t=this.index),e===void 0&&(e=this.prevIndex),this.getIndex(t,e)},_show(t,e,i){if(this._transitioner=this._getTransitioner(t,e,this.dir,{easing:i?e.offsetWidth<600?"cubic-bezier(0.25, 0.46, 0.45, 0.94)":"cubic-bezier(0.165, 0.84, 0.44, 1)":this.easing,...this.transitionOptions}),!i&&!t)return this._translate(1),Promise.resolve();const{length:s}=this.stack;return this._transitioner[s>1?"forward":"show"](s>1?Math.min(this.duration,75+75/(s-1)):this.duration,this.percent)},_getDistance(t,e){return this._getTransitioner(t,t!==e&&e).getDistance()},_translate(t,e,i){e===void 0&&(e=this.prevIndex),i===void 0&&(i=this.index);const s=this._getTransitioner(e!==i?e:!1,i);return s.translate(t),s},_getTransitioner(t,e,i,s){return t===void 0&&(t=this.prevIndex),e===void 0&&(e=this.index),i===void 0&&(i=this.dir||1),s===void 0&&(s=this.transitionOptions),new this.Transitioner(Zt(t)?this.slides[t]:t,Zt(e)?this.slides[e]:e,i*(X?-1:1),s)}}};function al(t,e){return t==="next"?1:t==="previous"||t({preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",selCaption:".uk-lightbox-caption",pauseOnHover:!1,velocity:2,Animations:Mn,template:'
      '}),created(){const t=b(this.template),e=b(this.selList,t);this.items.forEach(()=>L(e,"
    • ")),this.$mount(L(this.container,t))},computed:{caption(t,e){let{selCaption:i}=t;return b(i,e)}},events:[{name:Ge+" "+gt+" keydown",handler:"showControls"},{name:"click",self:!0,delegate(){return this.selSlides},handler(t){t.defaultPrevented||this.hide()}},{name:"shown",self:!0,handler(){this.showControls()}},{name:"hide",self:!0,handler(){this.hideControls(),B(this.slides,this.clsActive),S.stop(this.slides)}},{name:"hidden",self:!0,handler(){this.$destroy(!0)}},{name:"keyup",el(){return document},handler(t){if(!(!this.isToggled(this.$el)||!this.draggable))switch(t.keyCode){case 37:this.show("previous");break;case 39:this.show("next");break}}},{name:"beforeitemshow",handler(t){this.isToggled()||(this.draggable=!1,t.preventDefault(),this.toggleElement(this.$el,!0,!1),this.animation=Mn.scale,B(t.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler(){Pt(this.caption,this.getItem().caption||"");for(let t=-this.preload;t<=this.preload;t++)this.loadItem(this.index+t)}},{name:"itemshown",handler(){this.draggable=this.$props.draggable}},{name:"itemload",async handler(t,e){const{source:i,type:s,alt:n="",poster:o,attrs:r={}}=e;if(this.setItem(e,""),!i)return;let a;const l={allowfullscreen:"",style:"max-width: 100%; box-sizing: border-box;","uk-responsive":"","uk-video":""+this.videoAutoplay};if(s==="image"||i.match(/\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|\?)/i))try{const{width:h,height:u}=await bs(i,r.srcset,r.size);this.setItem(e,Ae("img",{src:i,width:h,height:u,alt:n,...r}))}catch{this.setError(e)}else if(s==="video"||i.match(/\.(mp4|webm|ogv)($|\?)/i)){const h=Ae("video",{src:i,poster:o,controls:"",playsinline:"","uk-video":""+this.videoAutoplay});k(h,"loadedmetadata",()=>{w(h,{width:h.videoWidth,height:h.videoHeight,...r}),this.setItem(e,h)}),k(h,"error",()=>this.setError(e))}else if(s==="iframe"||i.match(/\.(html|php)($|\?)/i))this.setItem(e,Ae("iframe",{src:i,allowfullscreen:"",class:"uk-lightbox-iframe",...r}));else if(a=i.match(/\/\/(?:.*?youtube(-nocookie)?\..*?[?&]v=|youtu\.be\/)([\w-]{11})[&?]?(.*)?/))this.setItem(e,Ae("iframe",{src:"https://www.youtube"+(a[1]||"")+".com/embed/"+a[2]+(a[3]?"?"+a[3]:""),width:1920,height:1080,...l,...r}));else if(a=i.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/))try{const{height:h,width:u}=await(await fetch("https://vimeo.com/api/oembed.json?maxwidth=1920&url="+encodeURI(i),{credentials:"omit"})).json();this.setItem(e,Ae("iframe",{src:"https://player.vimeo.com/video/"+a[1]+(a[2]?"?"+a[2]:""),width:u,height:h,...l,...r}))}catch{this.setError(e)}}}],methods:{loadItem(t){t===void 0&&(t=this.index);const e=this.getItem(t);this.getSlide(e).childElementCount||g(this.$el,"itemload",[e])},getItem(t){return t===void 0&&(t=this.index),this.items[Ut(t,this.slides)]},setItem(t,e){g(this.$el,"itemloaded",[this,Pt(this.getSlide(t),e)])},getSlide(t){return this.slides[this.items.indexOf(t)]},setError(t){this.setItem(t,'')},showControls(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),x(this.$el,"uk-active","uk-transition-active")},hideControls(){B(this.$el,"uk-active","uk-transition-active")}}};function Ae(t,e){const i=Lt("<"+t+">");return w(i,e),i}var ll={install:hl,props:{toggle:String},data:{toggle:"a"},computed:{toggles:{get(t,e){let{toggle:i}=t;return M(i,e)},watch(){this.hide()}}},disconnected(){this.hide()},events:[{name:"click",delegate(){return this.toggle+":not(.uk-disabled)"},handler(t){t.preventDefault(),this.show(t.current)}}],methods:{show(t){const e=ds(this.toggles.map(Rn),"source");if(Kt(t)){const{source:i}=Rn(t);t=bt(e,s=>{let{source:n}=s;return i===n})}return this.panel=this.panel||this.$create("lightboxPanel",{...this.$props,items:e}),k(this.panel.$el,"hidden",()=>this.panel=null),this.panel.show(t)},hide(){var t;return(t=this.panel)==null?void 0:t.hide()}}};function hl(t,e){t.lightboxPanel||t.component("lightboxPanel",Wn),xt(e.props,t.component("lightboxPanel").options.props)}function Rn(t){const e={};for(const i of["href","caption","type","poster","alt","attrs"])e[i==="href"?"source":i]=ot(t,i);return e.attrs=Se(e.attrs),e}var cl={mixins:[le],functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:null,pos:"top-center",clsContainer:"uk-notification",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:ul,computed:{marginProp(t){let{pos:e}=t;return"margin"+(lt(e,"top")?"Top":"Bottom")},startProps(){return{opacity:0,[this.marginProp]:-this.$el.offsetHeight}}},created(){const t=b("."+this.clsContainer+"-"+this.pos,this.container)||L(this.container,'
      ');this.$mount(L(t,'"))},async connected(){const t=v(c(this.$el,this.marginProp));await S.start(c(this.$el,this.startProps),{opacity:1,[this.marginProp]:t}),this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},events:{click(t){et(t.target,'a[href="#"],a[href=""]')&&t.preventDefault(),this.close()},[jt](){this.timer&&clearTimeout(this.timer)},[oe](){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))}},methods:{async close(t){const e=i=>{const s=E(i);g(i,"close",[this]),ut(i),s!=null&&s.hasChildNodes()||ut(s)};this.timer&&clearTimeout(this.timer),t||await S.start(this.$el,this.startProps),e(this.$el)}}};function ul(t){t.notification.closeAll=function(e,i){vt(document.body,s=>{const n=t.getComponent(s,"notification");n&&(!e||e===n.group)&&n.close(i)})}}const di={x:fi,y:fi,rotate:fi,scale:fi,color:rs,backgroundColor:rs,borderColor:rs,blur:Vt,hue:Vt,fopacity:Vt,grayscale:Vt,invert:Vt,saturate:Vt,sepia:Vt,opacity:fl,stroke:pl,bgx:Vn,bgy:Vn},{keys:jn}=Object;var qn={mixins:[hi],props:Jn(jn(di),"list"),data:Jn(jn(di),void 0),computed:{props(t,e){const i={};for(const n in t)n in di&&!R(t[n])&&(i[n]=t[n].slice());const s={};for(const n in i)s[n]=di[n](n,e,i[n],i);return s}},events:{load(){this.$emit()}},methods:{reset(){for(const t in this.getCss(0))c(this.$el,t,"")},getCss(t){const e={transform:"",filter:""};for(const i in this.props)this.props[i](e,t);return e}}};function fi(t,e,i){let s=gi(i)||{x:"px",y:"px",rotate:"deg"}[t]||"",n;return t==="x"||t==="y"?(t="translate"+St(t),n=o=>v(v(o).toFixed(s==="px"?0:6))):t==="scale"&&(s="",n=o=>gi([o])?K(o,"width",e,!0)/e.offsetWidth:o),i.length===1&&i.unshift(t==="scale"?1:0),i=ce(i,n),(o,r)=>{o.transform+=" "+t+"("+Ee(i,r)+s+")"}}function rs(t,e,i){return i.length===1&&i.unshift(_e(e,t,"")),i=ce(i,s=>dl(e,s)),(s,n)=>{const[o,r,a]=Gn(i,n),l=o.map((h,u)=>(h+=a*(r[u]-h),u===3?v(h):parseInt(h,10))).join(",");s[t]="rgba("+l+")"}}function dl(t,e){return _e(t,"color",e).split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(v)}function Vt(t,e,i){i.length===1&&i.unshift(0);const s=gi(i)||{blur:"px",hue:"deg"}[t]||"%";return t={fopacity:"opacity",hue:"hue-rotate"}[t]||t,i=ce(i),(n,o)=>{const r=Ee(i,o);n.filter+=" "+t+"("+(r+s)+")"}}function fl(t,e,i){return i.length===1&&i.unshift(_e(e,t,"")),i=ce(i),(s,n)=>{s[t]=Ee(i,n)}}function pl(t,e,i){i.length===1&&i.unshift(0);const s=gi(i),n=fn(e);return i=ce(i.reverse(),o=>(o=v(o),s==="%"?o*n/100:o)),i.some(o=>{let[r]=o;return r})?(c(e,"strokeDasharray",n),(o,r)=>{o.strokeDashoffset=Ee(i,r)}):T}function Vn(t,e,i,s){i.length===1&&i.unshift(0);const n=t==="bgy"?"height":"width";s[t]=ce(i,a=>K(a,n,e));const o=["bgx","bgy"].filter(a=>a in s);if(o.length===2&&t==="bgx")return T;if(_e(e,"backgroundSize","")==="cover")return gl(t,e,i,s);const r={};for(const a of o)r[a]=Yn(e,a);return Xn(o,r,s)}function gl(t,e,i,s){const n=ml(e);if(!n.width)return T;const o={width:e.offsetWidth,height:e.offsetHeight},r=["bgx","bgy"].filter(u=>u in s),a={};for(const u of r){const d=s[u].map(W=>{let[Y]=W;return Y}),f=Math.min(...d),m=Math.max(...d),I=d.indexOf(f){h(u,d),u.backgroundSize=l.width+"px "+l.height+"px",u.backgroundRepeat="no-repeat"}}function Yn(t,e){return _e(t,"background-position-"+e.substr(-1),"")}function Xn(t,e,i){return function(s,n){for(const o of t){const r=Ee(i[o],n);s["background-position-"+o.substr(-1)]="calc("+e[o]+" + "+r+"px)"}}}const pi={};function ml(t){const e=c(t,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");if(pi[e])return pi[e];const i=new Image;return e&&(i.src=e,!i.naturalWidth)?(i.onload=()=>{pi[e]=as(i),g(t,zt("load",!1))},as(i)):pi[e]=as(i)}function as(t){return{width:t.naturalWidth,height:t.naturalHeight}}function ce(t,e){e===void 0&&(e=v);const i=[],{length:s}=t;let n=0;for(let o=0;o0;u--)i[o-u][1]=l+h*(n-u+1);n=0}}return i}function Gn(t,e){const i=bt(t.slice(1),s=>{let[,n]=s;return e<=n})+1;return[t[i-1][0],t[i][0],(e-t[i-1][1])/(t[i][1]-t[i-1][1])]}function Ee(t,e){const[i,s,n]=Gn(t,e);return Zt(i)?i+Math.abs(i-s)*n*(i(i[s]=e,i),{})}var wl={mixins:[qn,wt,si],props:{target:String,viewport:Number,easing:Number,start:String,end:String},data:{target:!1,viewport:1,easing:1,start:0,end:0},computed:{target(t,e){let{target:i}=t;return Kn(i&&ht(i,e)||e)},start(t){let{start:e}=t;return K(e,"height",this.target,!0)},end(t){let{end:e,viewport:i}=t;return K(e||(i=(1-i)*100)&&i+"vh+"+i+"%","height",this.target,!0)}},update:{read(t,e){let{percent:i}=t;if(e.has("scroll")||(i=!1),!this.matchMedia)return;const s=i;return i=bl(Yi(this.target,this.start,this.end),this.easing),{percent:i,style:s===i?!1:this.getCss(i)}},write(t){let{style:e}=t;if(!this.matchMedia){this.reset();return}e&&c(this.$el,e)},events:["scroll","resize"]}};function bl(t,e){return e>=0?Math.pow(t,e+1):1-Math.pow(1-t,1-e)}function Kn(t){return t?"offsetTop"in t?t:Kn(E(t)):document.documentElement}var Zn={update:{write(){if(this.stack.length||this.dragging)return;const t=this.getValidIndex(this.index);!~this.prevIndex||this.index!==t?this.show(t):this._translate(1,this.prevIndex,this.index)},events:["resize"]}},Qn={mixins:[Te],connected(){this.lazyload(this.slides,this.getAdjacentSlides)}};function xl(t,e,i,s){let{center:n,easing:o,list:r}=s;const a=new He,l=t?Oe(t,r,n):Oe(e,r,n)+$(e).width*i,h=e?Oe(e,r,n):l+$(t).width*i*(X?-1:1);return{dir:i,show(u,d,f){d===void 0&&(d=0);const m=f?"linear":o;return u-=Math.round(u*U(d,-1,1)),this.translate(d),d=t?d:U(d,0,1),ls(this.getItemIn(),"itemin",{percent:d,duration:u,timing:m,dir:i}),t&&ls(this.getItemIn(!0),"itemout",{percent:1-d,duration:u,timing:m,dir:i}),S.start(r,{transform:z(-h*(X?-1:1),"px")},u,m).then(a.resolve,T),a.promise},cancel(){S.cancel(r)},reset(){c(r,"transform","")},forward(u,d){return d===void 0&&(d=this.percent()),S.cancel(r),this.show(u,d,!0)},translate(u){const d=this.getDistance()*i*(X?-1:1);c(r,"transform",z(U(-h+(d-d*u),-mi(r),$(r).width)*(X?-1:1),"px"));const f=this.getActives(),m=this.getItemIn(),I=this.getItemIn(!0);u=t?U(u,-1,1):0;for(const A of O(r)){const W=p(f,A),Y=A===m,Ot=A===I,hs=Y||!Ot&&(W||i*(X?-1:1)===-1^vi(A,r)>vi(t||e));ls(A,"itemtranslate"+(hs?"in":"out"),{dir:i,percent:Ot?1-u:Y?u:W?1:0})}},percent(){return Math.abs((c(r,"transform").split(",")[4]*(X?-1:1)+l)/(h-l))},getDistance(){return Math.abs(h-l)},getItemIn(u){u===void 0&&(u=!1);let d=this.getActives(),f=to(r,Oe(e||t,r,n));if(u){const m=d;d=f,f=m}return f[bt(f,m=>!p(d,m))]},getActives(){return to(r,Oe(t||e,r,n))}}}function Oe(t,e,i){const s=vi(t,e);return i?s-yl(t,e):Math.min(s,Un(e))}function Un(t){return Math.max(0,mi(t)-$(t).width)}function mi(t){return O(t).reduce((e,i)=>$(i).width+e,0)}function yl(t,e){return $(e).width/2-$(t).width/2}function vi(t,e){return t&&(je(t).left+(X?$(t).width-$(e).width:0))*(X?-1:1)||0}function to(t,e){e-=1;const i=$(t).width,s=e+i+2;return O(t).filter(n=>{const o=vi(n,t),r=o+Math.min($(n).width,i);return o>=e&&r<=s})}function ls(t,e,i){g(t,zt(e,!1,!1,i))}var $l={mixins:[st,Fn,Zn,Qn],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",Transitioner:xl},computed:{avgWidth(){return mi(this.list)/this.length},finite(t){let{finite:e}=t;return e||Math.ceil(mi(this.list)){if(t>=e)return!0;t+=$(s).width});return~i?i:this.length-1},sets(t){let{sets:e}=t;if(!e)return;let i=0;const s=[],n=$(this.list).width;for(let o=0;on&&(i=0),this.center?in/2&&(s.push(+o),i=n/2-r/2):i===0&&s.push(Math.min(+o,this.maxIndex)),i+=r}if(s.length)return s},transitionOptions(){return{center:this.center,list:this.list}}},connected(){H(this.$el,this.clsContainer,!b("."+this.clsContainer,this.$el))},update:{write(){for(const t of this.navItems){const e=Ct(ot(t,this.attrItem));e!==!1&&(t.hidden=!this.maxIndex||e>this.maxIndex||this.sets&&!p(this.sets,e))}this.length&&!this.dragging&&!this.stack.length&&(this.reorder(),this._translate(1)),this.updateActiveClasses()},events:["resize"]},events:{beforeitemshow(t){!this.dragging&&this.sets&&this.stack.length<2&&!p(this.sets,this.index)&&(this.index=this.getValidIndex());const e=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.indexthis.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&e>1){for(let s=0;s0?"next":"previous");t.preventDefault();return}const i=this.dir<0||!this.slides[this.prevIndex]?this.index:this.prevIndex;this.duration=Hn(this.avgWidth/this.velocity)*($(this.slides[i]).width/this.avgWidth),this.reorder()},itemshow(){~this.prevIndex&&x(this._getTransitioner().getItemIn(),this.clsActive)},itemshown(){this.updateActiveClasses()}},methods:{reorder(){if(this.finite){c(this.slides,"order","");return}const t=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach((n,o)=>c(n,"order",this.dir>0&&o=this.index?-1:"")),!this.center)return;const e=this.slides[t];let i=$(this.list).width/2-$(e).width/2,s=0;for(;i>0;){const n=this.getIndex(--s+t,t),o=this.slides[n];c(o,"order",n>t?-2:-1),i-=$(o).width}},updateActiveClasses(){const t=this._getTransitioner(this.index).getActives(),e=[this.clsActive,(!this.sets||p(this.sets,v(this.index)))&&this.clsActivated||""];for(const i of this.slides)H(i,e,p(t,i))},getValidIndex(t,e){if(t===void 0&&(t=this.index),e===void 0&&(e=this.prevIndex),t=this.getIndex(t,e),!this.sets)return t;let i;do{if(p(this.sets,t))return t;i=t,t=this.getIndex(t+this.dir,e)}while(t!==i);return t},getAdjacentSlides(){const{width:t}=$(this.list),e=-t,i=t*2,s=$(this.slides[this.index]).width,n=this.center?t/2-s/2:0,o=new Set;for(const r of[-1,1]){let a=n+(r>0?s:0),l=0;do{const h=this.slides[this.getIndex(this.index+r+l++*r)];a+=$(h).width*r,o.add(h)}while(this.slides.length>l&&a>e&&a$(e).width))}var eo={mixins:[qn],data:{selItem:"!li"},beforeConnect(){this.item=ht(this.selItem,this.$el)},disconnected(){this.item=null},events:[{name:"itemin itemout",self:!0,el(){return this.item},handler(t){let{type:e,detail:{percent:i,duration:s,timing:n,dir:o}}=t;G.read(()=>{if(!this.matchMedia)return;const r=this.getCss(so(e,o,i)),a=this.getCss(io(e)?.5:o>0?1:0);G.write(()=>{c(this.$el,r),S.start(this.$el,a,s,n).catch(T)})})}},{name:"transitioncanceled transitionend",self:!0,el(){return this.item},handler(){S.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el(){return this.item},handler(t){let{type:e,detail:{percent:i,dir:s}}=t;G.read(()=>{if(!this.matchMedia){this.reset();return}const n=this.getCss(so(e,s,i));G.write(()=>c(this.$el,n))})}}]};function io(t){return Gt(t,"in")}function so(t,e,i){return i/=2,io(t)^e<0?i:1-i}var Sl={...ss,fade:{show(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent(t){return 1-c(t,"opacity")},translate(t){return[{opacity:1-t,zIndex:0},{zIndex:-1}]}},scale:{show(){return[{opacity:0,transform:he(1+.5),zIndex:0},{zIndex:-1}]},percent(t){return 1-c(t,"opacity")},translate(t){return[{opacity:1-t,transform:he(1+.5*t),zIndex:0},{zIndex:-1}]}},pull:{show(t){return t<0?[{transform:z(30),zIndex:-1},{transform:z(),zIndex:0}]:[{transform:z(-100),zIndex:0},{transform:z(),zIndex:-1}]},percent(t,e,i){return i<0?1-Pe(e):Pe(t)},translate(t,e){return e<0?[{transform:z(30*t),zIndex:-1},{transform:z(-100*(1-t)),zIndex:0}]:[{transform:z(-t*100),zIndex:0},{transform:z(30*(1-t)),zIndex:-1}]}},push:{show(t){return t<0?[{transform:z(100),zIndex:0},{transform:z(),zIndex:-1}]:[{transform:z(-30),zIndex:-1},{transform:z(),zIndex:0}]},percent(t,e,i){return i>0?1-Pe(e):Pe(t)},translate(t,e){return e<0?[{transform:z(t*100),zIndex:0},{transform:z(-30*(1-t)),zIndex:-1}]:[{transform:z(-30*t),zIndex:-1},{transform:z(100*(1-t)),zIndex:0}]}}},Tl={mixins:[st,Ln,Zn,Qn],props:{ratio:String,minHeight:Number,maxHeight:Number},data:{ratio:"16:9",minHeight:!1,maxHeight:!1,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Sl},update:{read(){if(!this.list)return!1;let[t,e]=this.ratio.split(":").map(Number);return e=e*this.list.offsetWidth/t||0,this.minHeight&&(e=Math.max(this.minHeight,e)),this.maxHeight&&(e=Math.min(this.maxHeight,e)),{height:e-se(this.list,"height","content-box")}},write(t){let{height:e}=t;e>0&&c(this.list,"minHeight",e)},events:["resize"]},methods:{getAdjacentSlides(){return[1,-1].map(t=>this.slides[this.getIndex(this.index+t)])}}},Cl={mixins:[st,On],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1,pos:{}},created(){for(const t of["init","start","move","end"]){const e=this[t];this[t]=i=>{xt(this.pos,ie(i)),e(i)}}},events:{name:gt,passive:!1,handler:"init"},computed:{target(){return(this.$el.tBodies||[this.$el])[0]},items(){return O(this.target)},isEmpty:{get(){return pe(this.items)},watch(t){H(this.target,this.clsEmpty,t)},immediate:!0},handles:{get(t,e){let{handle:i}=t;return i?M(i,e):this.items},watch(t,e){c(e,{touchAction:"",userSelect:""}),c(t,{touchAction:Rt?"none":"",userSelect:"none"})},immediate:!0}},update:{write(t){if(!this.drag||!E(this.placeholder))return;const{pos:{x:e,y:i},origin:{offsetTop:s,offsetLeft:n},placeholder:o}=this;c(this.drag,{top:i-s,left:e-n});const r=this.getSortable(document.elementFromPoint(e,i));if(!r)return;const{items:a}=r;if(a.some(S.inProgress))return;const l=El(a,{x:e,y:i});if(a.length&&(!l||l===o))return;const h=this.getSortable(o),u=_l(r.target,l,o,e,i,r===h&&t.moved!==l);u!==!1&&(u&&o===u||(r!==h?(h.remove(o),t.moved=l):delete t.moved,r.insert(o,u),this.touched.add(r)))},events:["move"]},methods:{init(t){const{target:e,button:i,defaultPrevented:s}=t,[n]=this.items.filter(o=>P(e,o));!n||s||i>0||Pi(e)||P(e,"."+this.clsNoDrag)||this.handle&&!P(e,this.handle)||(t.preventDefault(),this.touched=new Set([this]),this.placeholder=n,this.origin={target:e,index:ee(n),...this.pos},k(document,Ge,this.move),k(document,At,this.end),this.threshold||this.start(t))},start(t){this.drag=Al(this.$container,this.placeholder);const{left:e,top:i}=this.placeholder.getBoundingClientRect();xt(this.origin,{offsetLeft:this.pos.x-e,offsetTop:this.pos.y-i}),x(this.drag,this.clsDrag,this.clsCustom),x(this.placeholder,this.clsPlaceholder),x(this.items,this.clsItem),x(document.documentElement,this.clsDragState),g(this.$el,"start",[this,this.placeholder]),Il(this.pos),this.move(t)},move(t){this.drag?this.$emit("move"):(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(t)},end(){if(Nt(document,Ge,this.move),Nt(document,At,this.end),!this.drag)return;Pl();const t=this.getSortable(this.placeholder);this===t?this.origin.index!==ee(this.placeholder)&&g(this.$el,"moved",[this,this.placeholder]):(g(t.$el,"added",[t,this.placeholder]),g(this.$el,"removed",[this,this.placeholder])),g(this.$el,"stop",[this,this.placeholder]),ut(this.drag),this.drag=null;for(const{clsPlaceholder:e,clsItem:i}of this.touched)for(const s of this.touched)B(s.items,e,i);this.touched=null,B(document.documentElement,this.clsDragState)},insert(t,e){x(this.items,this.clsItem);const i=()=>e?zi(e,t):L(this.target,t);this.animate(i)},remove(t){!P(t,this.target)||this.animate(()=>ut(t))},getSortable(t){do{const e=this.$getComponent(t,"sortable");if(e&&(e===this||this.group!==!1&&e.group===this.group))return e}while(t=E(t))}}};let no;function Il(t){let e=Date.now();no=setInterval(()=>{let{x:i,y:s}=t;s+=document.scrollingElement.scrollTop;const n=(Date.now()-e)*.3;e=Date.now(),tt(document.elementFromPoint(i,t.y),/auto|scroll/).reverse().some(o=>{let{scrollTop:r,scrollHeight:a}=o;const{top:l,bottom:h,height:u}=rt(o);if(ls)r-=n;else if(h>s&&h-350&&rct(e,s))){i=b("
      "),L(i,e.cloneNode(!0).children);for(const s of e.getAttributeNames())w(i,s,e.getAttribute(s))}else i=e.cloneNode(!0);return L(t,i),c(i,"margin","0","important"),c(i,{boxSizing:"border-box",width:e.offsetWidth,height:e.offsetHeight,padding:c(e,"padding")}),J(i.firstElementChild,J(e.firstElementChild)),i}function El(t,e){return t[bt(t,i=>ze(e,i.getBoundingClientRect()))]}function _l(t,e,i,s,n,o){if(!O(t).length)return;const r=e.getBoundingClientRect();if(!o)return Ol(t,i)||nr[f]-m?!1:e}function Ol(t,e){const i=O(t).length===1;i&&L(t,e);const s=O(t),n=s.some((o,r)=>{const a=o.getBoundingClientRect();return s.slice(r+1).some(l=>{const h=l.getBoundingClientRect();return!oo([a.left,a.right],[h.left,h.right])})});return i&&ut(e),n}function oo(t,e){return t[1]>e[0]&&e[1]>t[0]}var Bl={mixins:[le,_t,Us],args:"title",props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active"},beforeConnect(){this.id="uk-tooltip-"+this._uid,this._hasTitle=It(this.$el,"title"),w(this.$el,{title:"","aria-describedby":this.id}),Dl(this.$el)},disconnected(){this.hide(),w(this.$el,"title")||w(this.$el,"title",this._hasTitle?this.title:null)},methods:{show(){this.isToggled(this.tooltip||null)||!this.title||(this._unbind=N(document,"keydown "+gt,this.hide,!1,t=>t.type===gt&&!P(t.target,this.$el)||t.type==="keydown"&&t.keyCode===27),clearTimeout(this.showTimer),this.showTimer=setTimeout(this._show,this.delay))},async hide(){F(this.$el,"input:focus")||(clearTimeout(this.showTimer),this.isToggled(this.tooltip||null)&&(await this.toggleElement(this.tooltip,!1,!1),ut(this.tooltip),this.tooltip=null,this._unbind()))},_show(){this.tooltip=L(this.container,'"),k(this.tooltip,"toggled",(t,e)=>{if(!e)return;this.positionAt(this.tooltip,this.$el);const[i,s]=Ml(this.tooltip,this.$el,this.pos);this.origin=this.axis==="y"?qe(i)+"-"+s:s+"-"+qe(i)}),this.toggleElement(this.tooltip,!0)}},events:{focus:"show",blur:"hide",[jt+" "+oe](t){kt(t)||this[t.type===jt?"show":"hide"]()},[gt](t){kt(t)&&this.show()}}};function Dl(t){We(t)||w(t,"tabindex","0")}function Ml(t,e,i){let[s,n]=i;const o=C(t),r=C(e),a=[["left","right"],["top","bottom"]];for(const h of a){if(o[h[0]]>=r[h[1]]){s=h[1];break}if(o[h[1]]<=r[h[0]]){s=h[0];break}}const l=p(a[0],s)?a[1]:a[0];return o[l[0]]===r[l[0]]?n=l[0]:o[l[1]]===r[l[1]]?n=l[1]:n="center",[s,n]}var Nl={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,msgInvalidMime:"Invalid File Type: %s",msgInvalidName:"Invalid File Name: %s",msgInvalidSize:"Invalid File Size: %s Kilobytes Max",multiple:!1,name:"files[]",params:{},type:"",url:"",abort:T,beforeAll:T,beforeSend:T,complete:T,completeAll:T,error:T,fail:T,load:T,loadEnd:T,loadStart:T,progress:T},events:{change(t){!F(t.target,'input[type="file"]')||(t.preventDefault(),t.target.files&&this.upload(t.target.files),t.target.value="")},drop(t){wi(t);const e=t.dataTransfer;!(e!=null&&e.files)||(B(this.$el,this.clsDragover),this.upload(e.files))},dragenter(t){wi(t)},dragover(t){wi(t),x(this.$el,this.clsDragover)},dragleave(t){wi(t),B(this.$el,this.clsDragover)}},methods:{async upload(t){if(t=xi(t),!t.length)return;g(this.$el,"upload",[t]);for(const s of t){if(this.maxSize&&this.maxSize*1e3{const n=new FormData;s.forEach(o=>n.append(this.name,o));for(const o in this.params)n.append(o,this.params[o]);try{const o=await ws(this.url,{data:n,method:this.method,responseType:this.type,beforeSend:r=>{const{xhr:a}=r;a.upload&&k(a.upload,"progress",this.progress);for(const l of["loadStart","load","loadEnd","abort"])k(a,l.toLowerCase(),this[l]);return this.beforeSend(r)}});this.complete(o),e.length?await i(e.shift()):this.completeAll(o)}catch(o){this.error(o)}};await i(e.shift())}}};function ro(t,e){return e.match(new RegExp("^"+t.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$","i"))}function zl(t,e){const i=[];for(let s=0;sit.component(e,t)),it}); diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/Builder.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/Builder.kt similarity index 89% rename from desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/Builder.kt rename to core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/Builder.kt index 62149ac..77eddaf 100644 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/Builder.kt +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/Builder.kt @@ -1,4 +1,4 @@ -package dev.inmo.kmppscriptbuilder.desktop +package dev.inmo.kmppscriptbuilder.core import androidx.compose.foundation.* import androidx.compose.foundation.layout.* @@ -9,9 +9,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.window.Window import androidx.compose.ui.window.application -import dev.inmo.kmppscriptbuilder.desktop.utils.init -import dev.inmo.kmppscriptbuilder.desktop.utils.loadConfigFile -import dev.inmo.kmppscriptbuilder.desktop.views.BuilderView +import dev.inmo.kmppscriptbuilder.core.ui.BuilderView +import dev.inmo.kmppscriptbuilder.core.utils.loadConfigFile import java.io.File //private val uncaughtExceptionsBC = BroadcastChannel(Channel.CONFLATED) @@ -48,7 +47,9 @@ fun main(args: Array) = application { .fillMaxSize() .verticalScroll(stateVertical) ) { - builder.init() + Column { + builder.build() + } } diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ActualView.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ActualView.kt new file mode 100644 index 0000000..9d9f121 --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ActualView.kt @@ -0,0 +1,33 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin +import dev.inmo.kmppscriptbuilder.core.ui.utils.TitleText + +actual abstract class View { + internal open val defaultModifier = Modifier.fillMaxWidth() + @Composable + actual abstract fun build() +} + +@Composable +actual fun View.DrawVertically( + title: String, + block: @Composable () -> Unit +) { + TitleText(title) + DefaultSmallVerticalMargin() + + Column(defaultModifier) { + block() + } + + DefaultSmallVerticalMargin() +} diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/GpgSigningOptionDrawer.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/GpgSigningOptionDrawer.kt new file mode 100644 index 0000000..19381f5 --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/GpgSigningOptionDrawer.kt @@ -0,0 +1,39 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Button +import androidx.compose.material.OutlinedButton +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import dev.inmo.kmppscriptbuilder.core.models.GpgSigning +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer +import dev.inmo.kmppscriptbuilder.core.ui.utils.SwitchWithLabel + +actual class GpgSigningOptionDrawer( + private val mavenInfoView: MavenInfoView +) : Drawer { + @Composable + override fun GpgSigning.draw() { + if (mavenInfoView.gpgSignProperty == this) { + Button({}, Modifier.padding(8.dp, 0.dp)) { + Text(name) + } + } else { + OutlinedButton( + { + mavenInfoView.gpgSignProperty = this + }, + Modifier.padding(8.dp, 0.dp) + ) { + Text(name) + } + } + } +} + +actual fun GpgSigningOptionDrawerWithView(view: MavenInfoView): GpgSigningOptionDrawer = GpgSigningOptionDrawer(mavenInfoView = view) diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesDrawer.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesDrawer.kt new file mode 100644 index 0000000..1f7dc36 --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/LicensesDrawer.kt @@ -0,0 +1,31 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Button +import androidx.compose.material.Divider +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer + +actual object LicensesDrawer : Drawer { + @Composable + override fun LicensesView.draw() { + if (searchFieldFocused.value) { + Column { + licensesOffersToShow.value.forEach { + Column(Modifier.padding(16.dp, 8.dp, 8.dp, 8.dp)) { + CommonText(it.title) { + itemsList.add(it.toLicenseState()) + licenseSearchFilter = "" + } + Divider() + } + } + } + } + } +} diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListViewDrawer.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListViewDrawer.kt new file mode 100644 index 0000000..b31da7a --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ListViewDrawer.kt @@ -0,0 +1,33 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Button +import androidx.compose.material.OutlinedButton +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText +import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer + +actual class ListViewDrawer : Drawer> { + @Composable + override fun ListView.draw() { + itemsList.forEach { item -> + DefaultContentColumn { + buildView(item) + OutlinedButton({ itemsList.remove(item) }, Modifier.padding(8.dp)) { + CommonText(removeItemText,) + } + } + Button({ itemsList.add(createItem()) }) { + CommonText(addItemText,) + } + } + if (itemsList.isEmpty()) { + Button({ itemsList.add(createItem()) }) { + CommonText(addItemText,) + } + } + } +} diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeDrawer.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeDrawer.kt new file mode 100644 index 0000000..8da0cfd --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/ProjectTypeDrawer.kt @@ -0,0 +1,40 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Button +import androidx.compose.material.OutlinedButton +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import dev.inmo.kmppscriptbuilder.core.models.JSProjectType +import dev.inmo.kmppscriptbuilder.core.models.JVMProjectType +import dev.inmo.kmppscriptbuilder.core.models.MultiplatformProjectType +import dev.inmo.kmppscriptbuilder.core.models.ProjectType +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer + +actual class ProjectTypeDrawer( + private val projectTypeView: ProjectTypeView +) : Drawer { + @Composable + override fun ProjectType.draw() { + if (projectTypeView.projectType == this) { + Button({}, Modifier.padding(8.dp, 0.dp)) { + Text(name) + } + } else { + OutlinedButton( + { + projectTypeView.projectType = this + }, + Modifier.padding(8.dp, 0.dp) + ) { + Text(name) + } + } + } +} + +actual fun ProjectTypeDrawerWithView(view: ProjectTypeView): ProjectTypeDrawer = ProjectTypeDrawer(projectTypeView = view) diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoryCredentialTypeDrawer.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoryCredentialTypeDrawer.kt new file mode 100644 index 0000000..c8d4186 --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoryCredentialTypeDrawer.kt @@ -0,0 +1,40 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Button +import androidx.compose.material.OutlinedButton +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository +import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer + +actual class RepositoryCredentialTypeDrawer( + private val state: RepositoryState +) : Drawer { + @Composable + override fun MavenPublishingRepository.CredentialsType.draw() { + val name = when (this@draw) { + is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> "Headers" + MavenPublishingRepository.CredentialsType.Nothing -> "No" + is MavenPublishingRepository.CredentialsType.UsernameAndPassword -> "Username and password" + } + if (state.credsType == this) { + Button({}, Modifier.padding(8.dp, 0.dp)) { + Text(name) + } + } else { + OutlinedButton( + { + state.credsType = this + }, + Modifier.padding(8.dp, 0.dp) + ) { + Text(name) + } + } + } +} + +actual fun RepositoryCredentialTypeDrawerWithState(repositoryState: RepositoryState): RepositoryCredentialTypeDrawer = RepositoryCredentialTypeDrawer(repositoryState) diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/TopAppBar.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/TopAppBar.kt new file mode 100644 index 0000000..78cce2d --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/TopAppBar.kt @@ -0,0 +1,88 @@ +package dev.inmo.kmppscriptbuilder.core.ui + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.Image +import androidx.compose.foundation.TooltipArea +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.IconButton +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface +import androidx.compose.material.Text +import androidx.compose.material.TopAppBar +import androidx.compose.material.primarySurface +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import dev.inmo.kmppscriptbuilder.core.models.Config +import dev.inmo.kmppscriptbuilder.core.utils.exportGradle +import dev.inmo.kmppscriptbuilder.core.utils.openNewConfig +import dev.inmo.kmppscriptbuilder.core.utils.saveAs +import dev.inmo.kmppscriptbuilder.core.utils.saveConfig + +@OptIn(ExperimentalFoundationApi::class) +@Composable +private fun createIcon( + tooltip: String, + resource: String, + onClick: () -> Unit +) { + TooltipArea( + tooltip = { + Surface( + modifier = Modifier.shadow(4.dp), + color = MaterialTheme.colors.primarySurface, + shape = RoundedCornerShape(4.dp) + ) { + Text(tooltip, modifier = Modifier.padding(10.dp), color = MaterialTheme.colors.onPrimary) + } + } + ) { + IconButton(onClick) { + Image( + painter = painterResource(resource), + contentDescription = tooltip + ) + } + } +} + +@Composable +actual fun TopAppBar( + config: Config, + saveAvailable: Boolean, + onSaveAvailable: (Boolean) -> Unit, + onNewConfig: (Config) -> Unit +) { + TopAppBar( + @Composable { + Text("Kotlin publication scripts builder", Modifier.clickable { println(config) }) + }, + actions = { + createIcon("Open file", "images/open_file.svg") { + openNewConfig(onNewConfig) + } + + if (saveAvailable) { + createIcon("Save", "images/save_file.svg") { + saveConfig(config) + } + } + + if (saveAvailable) { + createIcon("Export Gradle script", "images/export_gradle.svg") { + exportGradle(config) + } + } + + createIcon("Save as", "images/save_as.svg") { + if (saveAs(config)) { + onSaveAvailable(true) + } + } + } + ) +} diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/ActualUIElements.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/ActualUIElements.kt new file mode 100644 index 0000000..7788a2d --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/ActualUIElements.kt @@ -0,0 +1,113 @@ +package dev.inmo.kmppscriptbuilder.core.ui.utils + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Divider +import androidx.compose.material.OutlinedTextField +import androidx.compose.material.Switch +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + + +val commonTextFieldTextStyle = TextStyle( + fontSize = 12.sp +) + +@Composable +actual fun SwitchWithLabel( + label: String, + checked: Boolean, + placeSwitchAtTheStart: Boolean, + switchEnabled: Boolean, + onCheckedChange: (Boolean) -> Unit +) { + Row(Modifier.padding(0.dp, 8.dp).clickable { onCheckedChange(!checked) }, Arrangement.Start, Alignment.Top) { + val switchCreator = @Composable { + Switch(checked, null, Modifier.padding(8.dp, 0.dp), enabled = switchEnabled) + } + if (placeSwitchAtTheStart) { + switchCreator() + } + Box(Modifier.fillMaxWidth().align(Alignment.CenterVertically)) { + CommonText(label) + } + if (!placeSwitchAtTheStart) { + switchCreator() + } + } +} + +@Composable +actual fun CommonTextField( + presetText: String, + hint: String?, + onFocusChanged: (Boolean) -> Unit, + onChange: (String) -> Unit +) { + OutlinedTextField( + presetText, + onChange, + Modifier.fillMaxWidth().onFocusChanged { + onFocusChanged(it.isFocused) + }, + singleLine = true, + label = hint ?.let { + { + CommonText(hint) + } + } + ) +} + +@Composable +actual fun CommonText(text: String, onClick: (() -> Unit)?) { + Text(text, modifier = Modifier.run { onClick ?.let { clickable(onClick = it) } ?: this }) +} + +@Composable +actual fun TitleText(text: String) { + Text( + text, Modifier.padding(0.dp, 8.dp), fontSize = 18.sp + ) +} + +@Composable +actual fun ButtonsPanel( + title: String, + data: Iterable, + itemDrawer: @Composable (T) -> Unit +) { + Row { + Text(title, Modifier.padding(8.dp)) + data.forEach { itemDrawer(it) } + } +} + +@Composable +actual fun DefaultDivider() { + Divider() +} + +@Composable +actual fun DefaultSmallVerticalMargin() { + Spacer(Modifier.padding(0.dp, 4.dp)) +} + +@Composable +actual fun DefaultContentColumn(block: @Composable () -> Unit) { + Column(Modifier.padding(8.dp)) { + block() + } +} diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/NewFileFilterFactory.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/NewFileFilterFactory.kt similarity index 89% rename from desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/NewFileFilterFactory.kt rename to core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/NewFileFilterFactory.kt index 122d60c..d08d960 100644 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/NewFileFilterFactory.kt +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/utils/NewFileFilterFactory.kt @@ -1,4 +1,4 @@ -package dev.inmo.kmppscriptbuilder.desktop.utils +package dev.inmo.kmppscriptbuilder.core.ui.utils import java.io.File import javax.swing.filechooser.FileFilter diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/FilesHandling.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/ActualFilesHandling.kt similarity index 76% rename from desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/FilesHandling.kt rename to core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/ActualFilesHandling.kt index 7869aa7..3bcd357 100644 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/FilesHandling.kt +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/ActualFilesHandling.kt @@ -1,40 +1,40 @@ -package dev.inmo.kmppscriptbuilder.desktop.utils +package dev.inmo.kmppscriptbuilder.core.utils import dev.inmo.kmppscriptbuilder.core.models.Config -import dev.inmo.kmppscriptbuilder.core.utils.serialFormat +import dev.inmo.kmppscriptbuilder.core.ui.utils.FileFilter +import dev.inmo.micro_utils.common.MPPFile import java.io.File import javax.swing.JFileChooser -private const val appExtension = "kpsb" +fun MPPFile.text() = readText() -private var lastFile: File? = null +internal var lastFile: MPPFile? = null -fun loadConfigFile(file: File): Config { +fun loadConfigFile(file: MPPFile): Config { lastFile = file - return serialFormat.decodeFromString(Config.serializer(), file.readText()) + return serialFormat.decodeFromString(Config.serializer(), file.text()) } -fun loadConfig(): Config? { +actual fun openNewConfig(onParsed: (Config) -> Unit) { val fc = JFileChooser(lastFile ?.parent) fc.addChoosableFileFilter(FileFilter("Kotlin Publication Scripts Builder", Regex(".*\\.$appExtension"))) fc.addChoosableFileFilter(FileFilter("JSON", Regex(".*\\.json"))) - return when (fc.showOpenDialog(null)) { + when (fc.showOpenDialog(null)) { JFileChooser.APPROVE_OPTION -> { val file = fc.selectedFile lastFile = file - return serialFormat.decodeFromString(Config.serializer(), fc.selectedFile.readText()) + onParsed(serialFormat.decodeFromString(Config.serializer(), fc.selectedFile.readText())) } - else -> null } } -fun saveConfig(config: Config): Boolean { +actual fun saveConfig(config: Config): Boolean { return lastFile ?.also { it.writeText(serialFormat.encodeToString(Config.serializer(), config)) } != null } -fun exportGradle(config: Config): Boolean { +actual fun exportGradle(config: Config): Boolean { val fc = JFileChooser(lastFile ?.parent) fc.fileSelectionMode = JFileChooser.DIRECTORIES_ONLY return when (fc.showSaveDialog(null)) { @@ -55,7 +55,7 @@ fun exportGradle(config: Config): Boolean { } } -fun saveAs(config: Config): Boolean { +actual fun saveAs(config: Config): Boolean { val fc = JFileChooser(lastFile ?.parent) fc.addChoosableFileFilter(FileFilter("Kotlin Publication Scripts Builder", Regex(".*\\.$appExtension"))) fc.addChoosableFileFilter(FileFilter("JSON", Regex(".*\\.json"))) diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/OpenLink.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/openLink.kt similarity index 80% rename from desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/OpenLink.kt rename to core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/openLink.kt index c3550ec..32551d5 100644 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/OpenLink.kt +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/openLink.kt @@ -1,9 +1,9 @@ -package dev.inmo.kmppscriptbuilder.desktop.utils +package dev.inmo.kmppscriptbuilder.core.utils import java.awt.Desktop import java.net.URI -fun openLink(link: String): Boolean { +actual fun openLink(link: String): Boolean { val desktop = if (Desktop.isDesktopSupported()) Desktop.getDesktop() else null if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { try { diff --git a/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/text.kt b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/text.kt new file mode 100644 index 0000000..2ca09b5 --- /dev/null +++ b/core/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/core/utils/text.kt @@ -0,0 +1,2 @@ +package dev.inmo.kmppscriptbuilder.core.utils + diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml deleted file mode 100644 index e3cc55a..0000000 --- a/core/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/defaultAndroidSettings.gradle b/defaultAndroidSettings.gradle deleted file mode 100644 index 79f821a..0000000 --- a/defaultAndroidSettings.gradle +++ /dev/null @@ -1,40 +0,0 @@ -apply plugin: 'com.getkeepsafe.dexcount' - -android { - compileSdkVersion "$android_compileSdkVersion".toInteger() - buildToolsVersion "$android_buildToolsVersion" - - defaultConfig { - minSdkVersion "$android_minSdkVersion".toInteger() - targetSdkVersion "$android_compileSdkVersion".toInteger() - versionCode "${android_code_version}".toInteger() - versionName "$version" - } - buildTypes { - release { - minifyEnabled false - } - debug { - debuggable true - } - } - - packagingOptions { - exclude 'META-INF/kotlinx-serialization-runtime.kotlin_module' - exclude 'META-INF/kotlinx-serialization-cbor.kotlin_module' - exclude 'META-INF/kotlinx-serialization-properties.kotlin_module' - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8.toString() - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } -} diff --git a/desktop/build.gradle b/desktop/build.gradle deleted file mode 100644 index 2190cdd..0000000 --- a/desktop/build.gradle +++ /dev/null @@ -1,36 +0,0 @@ -plugins { - id "org.jetbrains.kotlin.multiplatform" - id "org.jetbrains.kotlin.plugin.serialization" - id("org.jetbrains.compose") version "$compose_version" -} - -apply from: "$mppJavaProjectPresetPath" - -kotlin { - jvm { - compilations.main.kotlinOptions { - jvmTarget = "11" - } - } - sourceSets { - commonMain { - dependencies { - implementation project(":kmppscriptbuilder.core") - } - } - - jvmMain { - dependencies { - implementation(compose.desktop.currentOs) - api "io.ktor:ktor-client-cio:$ktor_version" - } - } - } -} - -compose.desktop { - application { - mainClass = "dev.inmo.kmppscriptbuilder.desktop.BuilderKt" - } -} - diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/UIElements.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/UIElements.kt deleted file mode 100644 index 87e9136..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/UIElements.kt +++ /dev/null @@ -1,60 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.utils - -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.material.* -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp - -val commonTextFieldTextStyle = TextStyle( - fontSize = 12.sp -) - -@Composable -inline fun TitleText(text: String) = Text( - text, Modifier.padding(0.dp, 8.dp), fontSize = 18.sp -) - -@Composable -inline fun CommonText(text: String, modifier: Modifier = Modifier) = Text( - text, modifier = modifier -) - -@Composable -inline fun CommonTextField(presetText: String, hint: String, noinline onChange: (String) -> Unit) = OutlinedTextField( - presetText, - onChange, - Modifier.fillMaxWidth(), - singleLine = true, - label = { - CommonText(hint) - } -) - -@Composable -inline fun SwitchWithLabel( - label: String, - checked: Boolean, - placeSwitchAtTheStart: Boolean = false, - switchEnabled: Boolean = true, - modifier: Modifier = Modifier.padding(0.dp, 8.dp), - horizontalArrangement: Arrangement.Horizontal = Arrangement.Start, - verticalAlignment: Alignment.Vertical = Alignment.Top, - switchModifier: Modifier = Modifier.padding(8.dp, 0.dp), - noinline onCheckedChange: (Boolean) -> Unit -) = Row(modifier, horizontalArrangement, verticalAlignment) { - val switchCreator = @Composable { - Switch(checked, onCheckedChange, switchModifier, enabled = switchEnabled) - } - if (placeSwitchAtTheStart) { - switchCreator() - } - CommonText(label, Modifier.align(Alignment.CenterVertically).clickable { }) - if (!placeSwitchAtTheStart) { - switchCreator() - } -} \ No newline at end of file diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/View.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/View.kt deleted file mode 100644 index 801566f..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/utils/View.kt +++ /dev/null @@ -1,34 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.utils - -import androidx.compose.foundation.layout.* -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp - -abstract class View { - protected open val defaultModifier = Modifier.fillMaxWidth().padding(8.dp) - - @Composable - abstract fun build() -} - -abstract class VerticalView(val title: String) : View() { - abstract val content: @Composable ColumnScope.() -> Unit - @Composable - override fun build() { - TitleText(title) - - Column( - defaultModifier - ) { - content() - } - - Spacer(Modifier.fillMaxWidth().height(8.dp)) - } -} - -@Composable -fun T.init(): T = apply { - build() -} \ No newline at end of file diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/BuilderView.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/BuilderView.kt deleted file mode 100644 index cfa3d19..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/BuilderView.kt +++ /dev/null @@ -1,105 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.views - -import androidx.compose.foundation.* -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.* -import androidx.compose.runtime.* -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.shadow -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.unit.dp -import dev.inmo.kmppscriptbuilder.core.models.Config -import dev.inmo.kmppscriptbuilder.desktop.utils.* - -class BuilderView : View() { - private val projectTypeView = ProjectTypeView() - private val mavenInfoView = MavenInfoView() - private val licensesView = LicensesView() - private var saveAvailableState by mutableStateOf(false) - - override val defaultModifier: Modifier = Modifier.fillMaxSize() - - var config: Config - get() = Config(licensesView.licenses, mavenInfoView.mavenConfig, projectTypeView.projectType) - set(value) { - licensesView.licenses = value.licenses - mavenInfoView.mavenConfig = value.mavenConfig - projectTypeView.projectType = value.type - saveAvailableState = true - } - - @OptIn(ExperimentalFoundationApi::class) - @Composable - private fun createIcon( - tooltip: String, - resource: String, - onClick: () -> Unit - ) { - TooltipArea( - tooltip = { - Surface( - modifier = Modifier.shadow(4.dp), - color = MaterialTheme.colors.primarySurface, - shape = RoundedCornerShape(4.dp) - ) { - Text(tooltip, modifier = Modifier.padding(10.dp), color = MaterialTheme.colors.onPrimary) - } - } - ) { - IconButton(onClick) { - Image( - painter = painterResource(resource), - contentDescription = tooltip - ) - } - } - } - - @OptIn(ExperimentalFoundationApi::class) - @Composable - override fun build() { - Box(Modifier.fillMaxSize()) { - Column() { - TopAppBar( - @Composable { - CommonText("Kotlin publication scripts builder", Modifier.clickable { println(config) }) - }, - actions = { - createIcon("Open file", "images/open_file.svg") { - loadConfig()?.also { - config = it - } - } - - if (saveAvailableState) { - createIcon("Save", "images/save_file.svg") { - saveConfig(config) - } - } - - if (saveAvailableState) { - createIcon("Export Gradle script", "images/export_gradle.svg") { - exportGradle(config) - } - } - - createIcon("Save as", "images/save_as.svg") { - if (saveAs(config)) { - saveAvailableState = true - } - } - } - ) - Column(Modifier.padding(8.dp)) { - projectTypeView.init() - Divider() - licensesView.init() - Divider() - mavenInfoView.init() - } - } - } - } -} diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/LicensesView.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/LicensesView.kt deleted file mode 100644 index 721ad7c..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/LicensesView.kt +++ /dev/null @@ -1,95 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.views - -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.material.Button -import androidx.compose.material.Divider -import androidx.compose.runtime.* -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import dev.inmo.kmppscriptbuilder.core.models.License -import dev.inmo.kmppscriptbuilder.core.models.getLicenses -import dev.inmo.kmppscriptbuilder.desktop.utils.* -import io.ktor.client.HttpClient -import kotlinx.coroutines.* - -private class LicenseState( - id: String = "", - title: String = "", - url: String? = null -) { - var id: String by mutableStateOf(id) - var title: String by mutableStateOf(title) - var url: String? by mutableStateOf(url) - - fun toLicense() = License(id, title, url) -} - -private fun License.toLicenseState() = LicenseState(id, title, url) - -class LicensesView: VerticalView("Licenses") { - private var licensesListState = mutableStateListOf() - var licenses: List - get() = licensesListState.map { it.toLicense() } - set(value) { - licensesListState.clear() - licensesListState.addAll(value.map { it.toLicenseState() }) - } - private val availableLicensesState = mutableStateListOf() - private val licensesOffersToShow = mutableStateListOf() - private var licenseSearchFilter by mutableStateOf("") - - init { - CoroutineScope(Dispatchers.Default).launch { - val client = HttpClient() - availableLicensesState.addAll(client.getLicenses().values) - client.close() - } - } - - override val content: @Composable ColumnScope.() -> Unit = { - CommonTextField(licenseSearchFilter, "Search filter") { filterText -> - licenseSearchFilter = filterText - licensesOffersToShow.clear() - if (licenseSearchFilter.isNotEmpty()) { - licensesOffersToShow.addAll( - availableLicensesState.filter { filterText.all { symbol -> symbol.lowercaseChar() in it.title } } - ) - } - } - Column { - licensesOffersToShow.forEach { - Column(Modifier.padding(16.dp, 8.dp, 8.dp, 8.dp)) { - CommonText(it.title, Modifier.clickable { - licensesListState.add(it.toLicenseState()) - licenseSearchFilter = "" - licensesOffersToShow.clear() - }) - Divider() - } - } - } - Button({ licensesListState.add(LicenseState()) }, Modifier.padding(8.dp)) { - CommonText("Add empty license") - } - licensesListState.forEach { license -> - Column(Modifier.padding(8.dp)) { - CommonTextField( - license.id, - "License ID" - ) { license.id = it } - CommonTextField( - license.title, - "License title" - ) { license.title = it } - CommonTextField( - license.url ?: "", - "License URL" - ) { license.url = it } - Button({ licensesListState.remove(license) }, Modifier.padding(8.dp)) { - CommonText("Remove") - } - } - } - } -} diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/ListView.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/ListView.kt deleted file mode 100644 index 5f26c30..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/ListView.kt +++ /dev/null @@ -1,35 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.views - -import androidx.compose.foundation.layout.* -import androidx.compose.material.Button -import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateListOf -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import dev.inmo.kmppscriptbuilder.desktop.utils.CommonText -import dev.inmo.kmppscriptbuilder.desktop.utils.VerticalView - -abstract class ListView(title: String) : VerticalView(title) { - protected val itemsList = mutableStateListOf() - - protected open val addItemText: String = "Add" - protected open val removeItemText: String = "Remove" - - protected abstract fun createItem(): T - @Composable - protected abstract fun buildView(item: T) - - override val content: @Composable ColumnScope.() -> Unit = { - Button({ itemsList.add(createItem()) }) { - CommonText(addItemText) - } - itemsList.forEach { item -> - Column(Modifier.padding(8.dp)) { - buildView(item) - Button({ itemsList.remove(item) }, Modifier.padding(8.dp)) { - CommonText(removeItemText) - } - } - } - } -} diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/MavenInfoView.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/MavenInfoView.kt deleted file mode 100644 index 32c30c4..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/MavenInfoView.kt +++ /dev/null @@ -1,104 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.views - -import androidx.compose.foundation.layout.* -import androidx.compose.material.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.VerticalAlignmentLine -import androidx.compose.ui.unit.dp -import dev.inmo.kmppscriptbuilder.core.models.* -import dev.inmo.kmppscriptbuilder.desktop.utils.* - -class MavenInfoView : VerticalView("Project information") { - private var projectNameProperty by mutableStateOf("") - private var projectDescriptionProperty by mutableStateOf("") - private var projectUrlProperty by mutableStateOf("") - private var projectVcsUrlProperty by mutableStateOf("") - private var gpgSignProperty by mutableStateOf(GpgSigning.Disabled) - private var publishToMavenCentralProperty by mutableStateOf(false) - private val developersView = DevelopersView() - private val repositoriesView = RepositoriesView() - - var mavenConfig: MavenConfig - get() = MavenConfig( - projectNameProperty.ifBlank { defaultProjectName }, - projectDescriptionProperty.ifBlank { defaultProjectDescription }, - projectUrlProperty, - projectVcsUrlProperty, - developersView.developers, - repositoriesView.repositories + if (publishToMavenCentralProperty) { - listOf(SonatypeRepository) - } else { - emptyList() - }, - gpgSignProperty - ) - set(value) { - projectNameProperty = value.name - projectDescriptionProperty = value.description - projectUrlProperty = value.url - projectVcsUrlProperty = value.vcsUrl - gpgSignProperty = if (value.includeGpgSigning) { - GpgSigning.Enabled - } else { - value.gpgSigning - } - publishToMavenCentralProperty = value.repositories.any { it == SonatypeRepository } - developersView.developers = value.developers - repositoriesView.repositories = value.repositories.filter { it != SonatypeRepository } -// developersView.developers = value.developers - } - - @Composable - private fun addGpgSigningButton(gpgSigning: GpgSigning) { - if (gpgSignProperty == gpgSigning) { - Button({}, Modifier.padding(8.dp)) { - Text(gpgSigning.name) - } - } else { - OutlinedButton( - { - gpgSignProperty = gpgSigning - }, - Modifier.padding(8.dp) - ) { - Text(gpgSigning.name) - } - } - } - - override val content: @Composable ColumnScope.() -> Unit = { - CommonTextField( - projectNameProperty, - "Public project name" - ) { projectNameProperty = it } - CommonTextField( - projectDescriptionProperty, - "Public project description" - ) { projectDescriptionProperty = it } - CommonTextField( - projectUrlProperty, - "Public project URL" - ) { projectUrlProperty = it } - CommonTextField( - projectVcsUrlProperty, - "Public project VCS URL (with .git)" - ) { projectVcsUrlProperty = it } - - Row(verticalAlignment = Alignment.CenterVertically) { - Text("Gpg Signing: ") - addGpgSigningButton(GpgSigning.Disabled) - addGpgSigningButton(GpgSigning.Optional) - addGpgSigningButton(GpgSigning.Enabled) - } - - SwitchWithLabel( - "Include publication to MavenCentral", - publishToMavenCentralProperty, - placeSwitchAtTheStart = true - ) { publishToMavenCentralProperty = it } - developersView.init() - repositoriesView.init() - } -} diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/ProjectTypeView.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/ProjectTypeView.kt deleted file mode 100644 index 6a70c2f..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/ProjectTypeView.kt +++ /dev/null @@ -1,40 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.views - -import androidx.compose.foundation.layout.* -import androidx.compose.material.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import dev.inmo.kmppscriptbuilder.core.models.* -import dev.inmo.kmppscriptbuilder.desktop.utils.VerticalView - -class ProjectTypeView : VerticalView("Project type") { - var projectType by mutableStateOf(MultiplatformProjectType) - - @Composable - private fun addProjectTypeButton(newProjectType: ProjectType) { - if (projectType == newProjectType) { - Button({}, Modifier.padding(8.dp)) { - Text(newProjectType.name) - } - } else { - OutlinedButton( - { - projectType = newProjectType - }, - Modifier.padding(8.dp) - ) { - Text(newProjectType.name) - } - } - } - - override val content: @Composable ColumnScope.() -> Unit = { - Row(verticalAlignment = Alignment.CenterVertically) { - addProjectTypeButton(MultiplatformProjectType) - addProjectTypeButton(JVMProjectType) - addProjectTypeButton(JSProjectType) - } - } -} diff --git a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/RepositoriesView.kt b/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/RepositoriesView.kt deleted file mode 100644 index 5c36f15..0000000 --- a/desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/RepositoriesView.kt +++ /dev/null @@ -1,45 +0,0 @@ -package dev.inmo.kmppscriptbuilder.desktop.views - -import androidx.compose.runtime.* -import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository -import dev.inmo.kmppscriptbuilder.desktop.utils.CommonTextField - -class RepositoryState( - name: String = "", - url: String = "" -) { - var name: String by mutableStateOf(name) - var url: String by mutableStateOf(url) - - fun toRepository() = MavenPublishingRepository(name, url) -} - -private fun MavenPublishingRepository.toRepositoryState() = RepositoryState(name, url) - -class RepositoriesView : ListView("Repositories info") { - var repositories: List - get() = itemsList.map { it.toRepository() } - set(value) { - itemsList.clear() - itemsList.addAll( - value.map { it.toRepositoryState() } - ) - } - - override val addItemText: String = "Add repository" - override val removeItemText: String = "Remove repository" - - override fun createItem(): RepositoryState = RepositoryState() - @Composable - override fun buildView(item: RepositoryState) { - CommonTextField( - item.name, - "Repository name" - ) { item.name = it } - CommonTextField( - item.url, - "Repository url" - ) { item.url = it } - } - -} diff --git a/extensions.gradle b/extensions.gradle index 2e89947..6525a65 100644 --- a/extensions.gradle +++ b/extensions.gradle @@ -16,7 +16,6 @@ allprojects { mppProjectWithSerializationPresetPath = "${rootProject.projectDir.absolutePath}/mppProjectWithSerialization.gradle" mppJavaProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppJavaProject.gradle" mppJsProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppJsProject.gradle" - mppAndroidProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppAndroidProject.gradle" defaultAndroidSettingsPresetPath = "${rootProject.projectDir.absolutePath}/defaultAndroidSettings.gradle" diff --git a/gradle.properties b/gradle.properties index 88bcb2d..2fba966 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,30 +3,18 @@ org.gradle.parallel=true kotlin.js.generate.externals=true kotlin.incremental=true kotlin.incremental.js=true -android.useAndroidX=true -android.enableJetifier=true -kotlin_version=1.6.10 -kotlin_coroutines_version=1.6.0 -kotlin_serialisation_core_version=1.3.2 -ktor_version=1.6.7 -micro_utils_version=0.9.0 +kotlin_version=1.7.20 +kotlin_coroutines_version=1.6.4 +kotlin_serialisation_core_version=1.4.1 +ktor_version=2.1.3 +micro_utils_version=0.14.2 -compose_version=1.0.1 - -# ANDROID - -android_minSdkVersion=21 -android_compileSdkVersion=32 -android_buildToolsVersion=32.0.0 -dexcount_version=3.0.1 -junit_version=4.12 -test_ext_junit_version=1.1.2 -espresso_core=3.3.0 +compose_version=1.2.1 # Dokka -dokka_version=1.6.0 +dokka_version=1.7.20 # Project data diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..2bb9850 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,45 @@ +[versions] + +kt = "1.7.20" +kt-serialization = "1.4.1" +kt-coroutines = "1.6.4" + +jb-compose = "1.2.1" +jb-dokka = "1.7.20" +microutils = "0.14.2" +kjsuikit = "0.4.1" + +ktor = "2.1.3" + +gh-release = "2.4.1" + +[libraries] + +kt-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kt" } + +kt-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kt-serialization" } + +kt-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kt-coroutines" } + +ktor-client = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } +ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } +ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" } + +microutils-common = { module = "dev.inmo:micro_utils.common", version.ref = "microutils" } +microutils-coroutines = { module = "dev.inmo:micro_utils.coroutines", version.ref = "microutils" } + +jsuikit = { module = "dev.inmo:kjsuikit", version.ref = "kjsuikit" } + + +kt-test-js = { module = "org.jetbrains.kotlin:kotlin-test-js", version.ref = "kt" } +kt-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kt" } + + +buildscript-kt-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kt" } +buildscript-kt-serialization = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kt" } +buildscript-jb-dokka = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "jb-dokka" } +buildscript-gh-release = { module = "com.github.breadmoirai:github-release", version.ref = "gh-release" } + +[plugins] + +jb-compose = { id = "org.jetbrains.compose", version.ref = "jb-compose" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6b7fd26..c50b3c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip diff --git a/mppJavaProject.gradle b/mppJavaProject.gradle index e2d5a08..dabc618 100644 --- a/mppJavaProject.gradle +++ b/mppJavaProject.gradle @@ -4,9 +4,7 @@ project.group = "$group" // apply from: "$publishGradlePath" kotlin { - jvm { - compilations.main.kotlinOptions.useIR = true - } + jvm() sourceSets { commonMain { diff --git a/mppJsProject.gradle b/mppJsProject.gradle index 6ee908a..05a797d 100644 --- a/mppJsProject.gradle +++ b/mppJsProject.gradle @@ -5,10 +5,8 @@ project.group = "$group" kotlin { js (IR) { - browser { - binaries.executable() - } - nodejs() + browser() + binaries.executable() } sourceSets { diff --git a/mppProjectWithSerialization.gradle b/mppProjectWithSerialization.gradle index 72b6115..d2337b3 100644 --- a/mppProjectWithSerialization.gradle +++ b/mppProjectWithSerialization.gradle @@ -4,16 +4,11 @@ project.group = "$group" // apply from: "$publishGradlePath" kotlin { - jvm { - compilations.main.kotlinOptions.useIR = true - } + jvm() js (IR) { browser() nodejs() } - android { - publishAllLibraryVariants() - } sourceSets { commonMain { @@ -39,14 +34,5 @@ kotlin { implementation kotlin('test-junit') } } - androidTest { - dependencies { - implementation kotlin('test-junit') - implementation "androidx.test.ext:junit:$test_ext_junit_version" - implementation "androidx.test.espresso:espresso-core:$espresso_core" - } - } } } - -apply from: "$defaultAndroidSettingsPresetPath" diff --git a/settings.gradle b/settings.gradle index 29bbdc6..fff4cf7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,8 +9,8 @@ rootProject.name = 'kmppscriptbuilder' String[] includes = [ ":core", - ":desktop", - ":web" +// ":desktop", +// ":web" ] diff --git a/web/build.gradle b/web/build.gradle deleted file mode 100644 index 7a3b6b1..0000000 --- a/web/build.gradle +++ /dev/null @@ -1,17 +0,0 @@ -plugins { - id "org.jetbrains.kotlin.multiplatform" - id "org.jetbrains.kotlin.plugin.serialization" -} - -apply from: "$mppJsProjectPresetPath" - -kotlin { - sourceSets { - commonMain { - dependencies { - implementation project(":kmppscriptbuilder.core") - implementation "dev.inmo:micro_utils.common:$micro_utils_version" - } - } - } -} diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/main.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/main.kt deleted file mode 100644 index 84880d2..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/main.kt +++ /dev/null @@ -1,82 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web - -import dev.inmo.kmppscriptbuilder.core.models.Config -import dev.inmo.kmppscriptbuilder.core.utils.serialFormat -import dev.inmo.kmppscriptbuilder.web.views.* -import kotlinx.browser.document -import kotlinx.dom.appendElement -import org.w3c.dom.* -import org.w3c.dom.url.URL -import org.w3c.files.* - -fun saveFile(content: String, filename: String) { - val a = document.body!!.appendElement("a") { - setAttribute("style", "visibility:hidden; display: none") - } as HTMLAnchorElement - val blob = Blob(arrayOf(content), BlobPropertyBag( - "application/*;charset=utf-8" - )) - val url = URL.createObjectURL(blob) - a.href = url - a.download = filename - a.click() - URL.revokeObjectURL(url) - a.remove() -} - -fun main() { - document.addEventListener( - "DOMContentLoaded", - { - val builderView = BuilderView() - - (document.getElementById("openConfig") as HTMLElement).onclick = { - val targetInput = document.body!!.appendElement("input") { - setAttribute("style", "visibility:hidden; display: none") - } as HTMLInputElement - targetInput.type = "file" - targetInput.onchange = { - targetInput.files ?.also { files -> - for (i in (0 until files.length) ) { - files[i] ?.also { file -> - val reader = FileReader() - - reader.onload = { - val content = it.target.asDynamic().result as String - builderView.config = serialFormat.decodeFromString(Config.serializer(), content) - false - } - - reader.readAsText(file) - } - } - } - } - targetInput.click() - targetInput.remove() - false - } - (document.getElementById("saveConfig") as HTMLElement).onclick = { - val filename = "publish.kpsb" - val content = serialFormat.encodeToString(Config.serializer(), builderView.config) - - saveFile(content, filename) - - false - } - (document.getElementById("exportScript") as HTMLElement).onclick = { - val filename = "publish.gradle" - - val content = builderView.config.run { - type.buildMavenGradleConfig( - mavenConfig, - licenses - ) - } - - saveFile(content, filename) - false - } - } - ) -} diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/utils/UkActive.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/utils/UkActive.kt deleted file mode 100644 index 5871e05..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/utils/UkActive.kt +++ /dev/null @@ -1,13 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.utils - -import org.w3c.dom.HTMLElement - -var HTMLElement.ukActive: Boolean - get() = classList.contains("uk-active") - set(value) { - if (value) { - classList.add("uk-active") - } else { - classList.remove("uk-active") - } - } diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/utils/keepScrolling.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/utils/keepScrolling.kt deleted file mode 100644 index 00d7b0e..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/utils/keepScrolling.kt +++ /dev/null @@ -1,10 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.utils - -import kotlinx.browser.document - -inline fun keepScrolling(crossinline block: () -> R): R = document.body ?.let { - val (x, y) = (it.scrollLeft to it.scrollTop) - return block().also { _ -> - it.scrollTo(x, y) - } -} ?: block() diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/BuilderView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/BuilderView.kt deleted file mode 100644 index ee06ba5..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/BuilderView.kt +++ /dev/null @@ -1,23 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.kmppscriptbuilder.core.models.Config -import kotlinx.browser.document -import org.w3c.dom.HTMLElement - -class BuilderView : View { - private val projectTypeView = ProjectTypeView() - private val licensesView = LicensesView(document.getElementById("licensesListDiv") as HTMLElement) - private val mavenInfoTypeView = MavenProjectInfoView() - - var config: Config - get() = Config( - licensesView.licenses, - mavenInfoTypeView.mavenConfig, - projectTypeView.projectType - ) - set(value) { - licensesView.licenses = value.licenses - mavenInfoTypeView.mavenConfig = value.mavenConfig - projectTypeView.projectType = value.type - } -} \ No newline at end of file diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/DevelopersView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/DevelopersView.kt deleted file mode 100644 index 2fdc7bd..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/DevelopersView.kt +++ /dev/null @@ -1,35 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.kmppscriptbuilder.core.models.Developer -import org.w3c.dom.* - -class DevelopersView(rootElement: HTMLElement) : MutableListView(rootElement, "Add developer", "Remove developer") { - private val HTMLElement.usernameElement: HTMLInputElement - get() = getElementsByTagName("input")[0] as HTMLInputElement - private val HTMLElement.nameElement: HTMLInputElement - get() = getElementsByTagName("input")[1] as HTMLInputElement - private val HTMLElement.emailElement: HTMLInputElement - get() = getElementsByTagName("input")[2] as HTMLInputElement - - var developers: List - get() = elements.map { - Developer(it.usernameElement.value, it.nameElement.value, it.emailElement.value) - } - set(value) { - data = value - } - - override fun createPlainObject(): Developer = Developer("", "", "") - - override fun HTMLElement.addContentBeforeRemoveButton(value: Developer) { - createTextField("Developer ID", "Developer username").value = value.id - createTextField("Developer name", "").value = value.name - createTextField("Developer E-Mail", "").value = value.eMail - } - - override fun HTMLElement.updateElement(from: Developer, to: Developer) { - usernameElement.value = to.id - nameElement.value = to.name - emailElement.value = to.eMail - } -} \ No newline at end of file diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/LicensesView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/LicensesView.kt deleted file mode 100644 index 28f23fa..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/LicensesView.kt +++ /dev/null @@ -1,113 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.kmppscriptbuilder.core.models.License -import dev.inmo.kmppscriptbuilder.core.models.getLicenses -import dev.inmo.micro_utils.coroutines.safeActor -import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions -import io.ktor.client.HttpClient -import kotlinx.coroutines.* -import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.channels.SendChannel -import kotlinx.coroutines.flow.consumeAsFlow -import kotlinx.coroutines.flow.debounce -import kotlinx.dom.appendElement -import org.w3c.dom.* - -class LicensesView( - rootElement: HTMLElement, - client: HttpClient = HttpClient(), - scope: CoroutineScope = CoroutineScope(Dispatchers.Default) -) : MutableListView(rootElement, "Add empty license", "Remove license") { - private val HTMLElement.idElement: HTMLInputElement - get() = getElementsByTagName("input")[0] as HTMLInputElement - private val HTMLElement.titleElement: HTMLInputElement - get() = getElementsByTagName("input")[1] as HTMLInputElement - private val HTMLElement.urlElement: HTMLInputElement - get() = getElementsByTagName("input")[2] as HTMLInputElement - - private class LicenseOfferList( - rootElement: HTMLElement, - private val licensesView: LicensesView, - client: HttpClient, - scope: CoroutineScope - ) : ListView(rootElement, useSimpleDiffStrategy = true) { - private var licensesTemplates: List = emptyList() - - init { - scope.launch { - licensesTemplates = client.getLicenses().values.toList() - changeActor.send(Unit) // update list of searches - } - } - - private val changeActor: SendChannel = scope.run { - val onChangeActor = Channel(Channel.CONFLATED) - onChangeActor.consumeAsFlow().subscribeSafelyWithoutExceptions(scope) { - val lowercased = searchString - data = if (lowercased.isEmpty()) { - emptyList() - } else { - licensesTemplates.filter { - val lowercasedTitle = it.title.lowercase() - lowercased.all { it in lowercasedTitle } - } - } - } - onChangeActor - } - private val searchElement = rootElement.createTextField("Quick add", "Type some license name part to find it").apply { - oninput = { - changeActor.trySend(Unit) - false - } - } - private var searchString: String - get() = searchElement.value.lowercase() - set(value) { - searchElement.value = value - } - - override fun HTMLElement.placeElement(value: License) { - createCommonButton(value.title).onclick = { - searchString = "" - licensesView.licenses += value - changeActor.trySend(Unit) - false - } - } - - override fun HTMLElement.updateElement(from: License, to: License) { - getElementsByTagName("button")[0] ?.remove() - placeElement(to) - } - } - - private val licensesOffersList = LicenseOfferList( - rootElement.appendElement("div") { classList.add("uk-padding-small") } as HTMLElement, - this, - client, - scope - ) - - var licenses: List - get() = elements.map { - License(it.idElement.value, it.titleElement.value, it.urlElement.value) - } - set(value) { - data = value - } - - override fun createPlainObject(): License = License("", "", "") - - override fun HTMLElement.addContentBeforeRemoveButton(value: License) { - createTextField("License Id", "Short name like \"Apache-2.0\"").value = value.id - createTextField("License Title", "Official title of license (like \"Apache Software License 2.0\")").value = value.title - createTextField("License URL", "Link to your LICENSE file OR official license file (like \"https://opensource.org/licenses/Apache-2.0\")").value = value.url ?: "" - } - - override fun HTMLElement.updateElement(from: License, to: License) { - idElement.value = to.id - titleElement.value = to.title - urlElement.value = to.url ?: "" - } -} diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ListView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ListView.kt deleted file mode 100644 index 700b325..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ListView.kt +++ /dev/null @@ -1,58 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.micro_utils.common.calculateStrictDiff -import kotlinx.dom.appendElement -import org.w3c.dom.HTMLElement - -abstract class ListView( - protected val rootElement: HTMLElement, - useSimpleDiffStrategy: Boolean = false -) : View { - protected val elements = mutableListOf() - private val diffHandling: (old: List, new: List) -> Unit = if (useSimpleDiffStrategy) { - { _, new -> - elements.forEach { it.remove() } - elements.clear() - new.forEach { - val element = instantiateElement() - elements.add(element) - element.placeElement(it) - } - } - } else { - { old, new -> - val diff = old.calculateStrictDiff(new) - diff.removed.forEach { - elements[it.index].remove() - elements.removeAt(it.index) - println(it.value) - } - diff.added.forEach { - val element = instantiateElement() - elements.add(element) - element.placeElement(it.value) - } - diff.replaced.forEach { (old, new) -> - val element = elements.getOrNull(old.index) ?.also { it.updateElement(old.value, new.value) } - if (element == null) { - val newElement = instantiateElement() - newElement.placeElement(new.value) - elements[new.index] = newElement - } - } - } - } - protected var data: List = emptyList() - set(value) { - val old = field - field = value - diffHandling(old, value) - } - - protected abstract fun HTMLElement.placeElement(value: T) - protected abstract fun HTMLElement.updateElement(from: T, to: T) - - private fun instantiateElement() = rootElement.appendElement("div") { - classList.add("uk-padding-small") - } as HTMLElement -} \ No newline at end of file diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/MavenProjectInfoView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/MavenProjectInfoView.kt deleted file mode 100644 index a9cc9c3..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/MavenProjectInfoView.kt +++ /dev/null @@ -1,82 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.kmppscriptbuilder.core.models.* -import dev.inmo.kmppscriptbuilder.web.utils.ukActive -import kotlinx.browser.document -import org.w3c.dom.HTMLElement -import org.w3c.dom.HTMLInputElement - -class MavenProjectInfoView : View { - private val nameElement = document.getElementById("projectNameInput") as HTMLInputElement - private val descriptionElement = document.getElementById("projectDescriptionInput") as HTMLInputElement - private val urlElement = document.getElementById("projectUrlInput") as HTMLInputElement - private val vcsUrlElement = document.getElementById("projectVCSUrlInput") as HTMLInputElement - private val disableGpgSigningElement = document.getElementById("disableGpgSigning") as HTMLElement - private val optionalGpgSigningElement = document.getElementById("optionalGpgSigning") as HTMLElement - private val enableGpgSigningElement = document.getElementById("enableGpgSigning") as HTMLElement - private val includeMavenCentralElement = document.getElementById("includeMavenCentralTargetRepoToggle") as HTMLInputElement - private val developersView = DevelopersView(document.getElementById("developersListDiv") as HTMLElement) - private val repositoriesView = RepositoriesView(document.getElementById("repositoriesListDiv") as HTMLElement) - - private var gpgSignMode: GpgSigning = GpgSigning.Disabled - set(value) { - field = value - when (value) { - GpgSigning.Enabled -> { - enableGpgSigningElement.ukActive = true - disableGpgSigningElement.ukActive = false - optionalGpgSigningElement.ukActive = false - } - GpgSigning.Optional -> { - enableGpgSigningElement.ukActive = false - disableGpgSigningElement.ukActive = false - optionalGpgSigningElement.ukActive = true - } - GpgSigning.Disabled -> { - enableGpgSigningElement.ukActive = false - disableGpgSigningElement.ukActive = true - optionalGpgSigningElement.ukActive = false - } - } - } - - var mavenConfig: MavenConfig - get() = MavenConfig( - nameElement.value.ifBlank { defaultProjectName }, - descriptionElement.value.ifBlank { defaultProjectDescription }, - urlElement.value, - vcsUrlElement.value, - developersView.developers, - repositoriesView.repositories + if (includeMavenCentralElement.checked) { - listOf(SonatypeRepository) - } else { - emptyList() - }, - when { - optionalGpgSigningElement.ukActive -> GpgSigning.Optional - enableGpgSigningElement.ukActive -> GpgSigning.Enabled - else -> GpgSigning.Disabled - } - ) - set(value) { - nameElement.value = value.name - descriptionElement.value = value.description - urlElement.value = value.url - vcsUrlElement.value = value.vcsUrl - gpgSignMode = if (value.includeGpgSigning) { - GpgSigning.Enabled - } else { - value.gpgSigning - } - developersView.developers = value.developers - val reposWithoutSonatype = value.repositories.filter { it != SonatypeRepository } - includeMavenCentralElement.checked = value.repositories.size != reposWithoutSonatype.size - repositoriesView.repositories = reposWithoutSonatype - } - - init { - enableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Enabled; Unit } - disableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Disabled; Unit } - optionalGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Optional; Unit } - } -} diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/MutableListView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/MutableListView.kt deleted file mode 100644 index 05d7ee9..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/MutableListView.kt +++ /dev/null @@ -1,41 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.kmppscriptbuilder.web.utils.keepScrolling -import org.w3c.dom.HTMLElement - -abstract class MutableListView( - rootElement: HTMLElement, - addButtonText: String = "Add", - private val removeButtonText: String = "Remove" -) : ListView(rootElement) { - init { - rootElement.createPrimaryButton(addButtonText).apply { - onclick = { - keepScrolling { - val newObject = createPlainObject() - data += newObject - } - false - } - } - } - - protected abstract fun createPlainObject(): T - protected open fun HTMLElement.addContentBeforeRemoveButton(value: T) {} - protected open fun HTMLElement.addContentAfterRemoveButton(value: T) {} - final override fun HTMLElement.placeElement(value: T) { - addContentBeforeRemoveButton(value) - addRemoveButton() - addContentAfterRemoveButton(value) - } - - private fun HTMLElement.addRemoveButton() { - val button = createPrimaryButton(removeButtonText) - button.onclick = { - elements.indexOf(button.parentElement).takeIf { it > -1 } ?.also { - data -= data[it] - } ?: rootElement.removeChild(this@addRemoveButton) - false - } - } -} \ No newline at end of file diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ProjectTypeView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ProjectTypeView.kt deleted file mode 100644 index 17397c4..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ProjectTypeView.kt +++ /dev/null @@ -1,39 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.kmppscriptbuilder.core.models.* -import dev.inmo.kmppscriptbuilder.web.utils.ukActive -import kotlinx.browser.document -import org.w3c.dom.HTMLElement - -class ProjectTypeView : View { - private val mppProjectTypeElement = document.getElementById("mppProjectType") as HTMLElement - private val jvmProjectTypeElement = document.getElementById("jvmProjectType") as HTMLElement - private val jsProjectTypeElement = document.getElementById("jsProjectType") as HTMLElement - - var projectType: ProjectType - get() = when { - jvmProjectTypeElement.ukActive -> JVMProjectType - jsProjectTypeElement.ukActive -> JSProjectType - else -> MultiplatformProjectType - } - set(value) { - mppProjectTypeElement.ukActive = value == MultiplatformProjectType - jvmProjectTypeElement.ukActive = value == JVMProjectType - jsProjectTypeElement.ukActive = value == JSProjectType - } - - init { - mppProjectTypeElement.onclick = { - projectType = MultiplatformProjectType - Unit - } - jvmProjectTypeElement.onclick = { - projectType = JVMProjectType - Unit - } - jsProjectTypeElement.onclick = { - projectType = JSProjectType - Unit - } - } -} diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/RepositoriesView.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/RepositoriesView.kt deleted file mode 100644 index 73e3a21..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/RepositoriesView.kt +++ /dev/null @@ -1,31 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository -import org.w3c.dom.* - -class RepositoriesView(rootElement: HTMLElement) : MutableListView(rootElement, "Add repository", "Remove repository") { - private val HTMLElement.nameElement: HTMLInputElement - get() = getElementsByTagName("input")[0] as HTMLInputElement - private val HTMLElement.urlElement: HTMLInputElement - get() = getElementsByTagName("input")[1] as HTMLInputElement - - var repositories: List - get() = elements.map { - MavenPublishingRepository(it.nameElement.value, it.urlElement.value) - } - set(value) { - data = value - } - - override fun createPlainObject(): MavenPublishingRepository = MavenPublishingRepository("", "") - - override fun HTMLElement.addContentBeforeRemoveButton(value: MavenPublishingRepository) { - createTextField("Repository name", "This name will be used to identify repository in grade").value = value.name - createTextField("Repository URL", "For example: https://repo.maven.apache.org/maven2/").value = value.url - } - - override fun HTMLElement.updateElement(from: MavenPublishingRepository, to: MavenPublishingRepository) { - nameElement.value = to.name - urlElement.value = to.url - } -} \ No newline at end of file diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/View.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/View.kt deleted file mode 100644 index cf07625..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/View.kt +++ /dev/null @@ -1,3 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -interface View diff --git a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ViewElements.kt b/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ViewElements.kt deleted file mode 100644 index 7f70fdc..0000000 --- a/web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/ViewElements.kt +++ /dev/null @@ -1,35 +0,0 @@ -package dev.inmo.kmppscriptbuilder.web.views - -import kotlinx.dom.appendElement -import org.w3c.dom.* - -fun HTMLElement.createTextField( - label: String, - placeholder: String -): HTMLInputElement { - return appendElement("div") { - classList.add("uk-margin", "uk-width-1-1") - }.appendElement("label") { - classList.add("uk-form-label") - innerHTML = label - }.run { - val input = appendElement("input") { - classList.add("uk-input", "uk-width-expand") - setAttribute("type", "text") - setAttribute("placeholder", placeholder) - } as HTMLInputElement - input - } -} - -fun HTMLElement.createPrimaryButton(text: String): HTMLButtonElement = (appendElement("button") { - classList.add("uk-button", "uk-button-primary") -} as HTMLButtonElement).apply { - innerText = text -} - -fun HTMLElement.createCommonButton(text: String): HTMLButtonElement = (appendElement("button") { - classList.add("uk-button", "uk-button-default") -} as HTMLButtonElement).apply { - innerText = text -} diff --git a/web/src/jsMain/resources/index.html b/web/src/jsMain/resources/index.html deleted file mode 100644 index aac5b01..0000000 --- a/web/src/jsMain/resources/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - Kotlin Publication Scripts Builder - - - - - -
      -
      - Project type -
      - -
      - Licenses -
      - - Project information - -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      - -
      - - -
      - -
      -
      -
      - -
      -
      - - Developers info -
      - - Repositories info -
      -
      -
      - - - - - - -