@logo-software/leftbar
Version:
Leftbar is part of the Logo Elements Environment. This library is a navigational part of the apps and shared by products within a platform. It provides a common set of interaction patterns that persist between and across products also standartization of n
279 lines (277 loc) • 104 kB
JavaScript
import * as i0 from '@angular/core';
import { Injectable, EventEmitter, Component, Input, Output, HostListener, ViewChild, NgModule } from '@angular/core';
import { Subject } from 'rxjs';
import cssVars from 'css-vars-ponyfill';
import { ApplicationTreeComponent } from '@logo-software/application-tree';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { LinksModule } from '@logo-software/links';
import { ComboboxModule } from '@logo-software/combobox';
/**
* @license
* Copyright LOGO YAZILIM SANAYİ VE TİCARET A.Ş. All Rights Reserved.
*
* Save to the extent permitted by law, you may not use, copy, modify,
* distribute or create derivative works of this material or any part
* of it without the prior written consent of LOGO YAZILIM SANAYİ VE TİCARET A.Ş. Limited.
* Any reproduction of this material must contain this notice.
*/
/**
* By using leftbar service, you can access, set user datas and switch between slim and extended modes via your own code.
*/
class LeftbarService {
constructor() {
this.userDataLoad = new Subject();
/**
* Global activation of slim mode. It accepts boolean. True sets slim mode activated.
*/
this.isSlim = false;
/**
* Global feature for disable/enable application selection on-the-fly. If setted true, application selection will be disabled. Default value is 'false'
*/
this.disableAppSelection = false;
/**
* Global feature for show/hide user details on-the-fly. If setted true, user details will be shown. Default value is 'false'
*/
this.showUserDetails = false;
this.userDataLoad.subscribe((data) => {
this.userInfo = data;
});
}
}
LeftbarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LeftbarService_Factory() { return new LeftbarService(); }, token: LeftbarService, providedIn: "root" });
LeftbarService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root',
},] }
];
LeftbarService.ctorParameters = () => [];
/**
* @license
* Copyright LOGO YAZILIM SANAYİ VE TİCARET A.Ş. All Rights Reserved.
*
* Save to the extent permitted by law, you may not use, copy, modify,
* distribute or create derivative works of this material or any part
* of it without the prior written consent of LOGO YAZILIM SANAYİ VE TİCARET A.Ş. Limited.
* Any reproduction of this material must contain this notice.
*/
/**
* Leftbar is the bound between apps. With leftbar component switching between apps feels like you are in the same environment even the apps are different.
* Add the below code to your code stack and give initializer parameters.
*
* <sub>app.component.html</sub>
*
* ```html
* <logo-leftbar
* (onInit)="sampleUserDataGet()"
* (onAddShortCut)="sampleAddShortcut()"
* (onAppSelected)="sampleAppAction($event)"
* (onHomeButton)="sampleHomeAction()"
* (onSettingsButton)="sampleSettingsAction()"
* (onTenantSelected)="sampleTenantAction($event)"
* (onInfoRequest)="sampleInfoReqAction($event)"
* (onSearch)="sampleSearchAction($event)"
* >
* <p>CUSTOM CONTENT</p>
* </logo-leftbar>
* ```
*/
class LeftbarComponent {
constructor(leftbarService) {
this.leftbarService = leftbarService;
/**
* Enable shortcuts for the user
*/
this.enableShortCuts = true;
/**
* Disable/Enable App Selection for user.
*/
this.disableAppSelection = false;
/**
* When add shorcut button clicked, an output event fired with boolean.
*/
this.onAddShortCut = new EventEmitter();
/**
* Home button click output with boolean.
*/
this.onHomeButton = new EventEmitter();
/**
* Back button click output with boolean.
*/
this.onBackButton = new EventEmitter();
/**
* On tenant selected output fired with selected item id in string.
*/
this.onTenantSelected = new EventEmitter();
/**
* On leftbar component initiliazed, an output fired with boolean.
*/
this.onInit = new EventEmitter();
/**
* When an application selected from user application list, an output fired with selected app id in string.
*/
this.onAppSelected = new EventEmitter();
/**
* On settings button clicked, an output fired with boolean.
*/
this.onSettingsButton = new EventEmitter();
/**
* When search area input entered and input length is at least 3 chars, an output fired with entered chars.
*/
this.onSearch = new EventEmitter();
/**
* When an info area clicked from user details, an output fired with selected info id in string.
*/
this.onInfoRequest = new EventEmitter();
/**
* Output of the tenant search area
*/
this.onTenantSearch = new EventEmitter();
/**
* When default tenant setted, this output will be triggered.
*/
this.onDefaultTenantSet = new EventEmitter();
/**
* When user focusses to search, search area value will be triggered.
*/
this.onFocusSearch = new EventEmitter();
/**
* When clicked to shortcut, output event triggered.
*/
this.onClickShortCut = new EventEmitter();
/**
* When language changed, output event triggered.
*/
this.onLanguageChange = new EventEmitter();
this.popoverStatus = false;
this.activePopover = '';
this.mobileMenu = false;
this.defaultApp = {};
this.leftbarService.disableAppSelection = this.disableAppSelection;
cssVars();
}
onResize(event) {
if (event.target.innerWidth < 1200) {
this.leftbarService.isSlim = false;
}
}
//TODO: versiyon kontrol edilecek
ngOnInit() {
this.onInit.emit(true);
this.setEmptySlots();
this.leftbarService.disableAppSelection = this.disableAppSelection;
}
ngAfterViewInit() {
this.leftbarService.disableAppSelection = this.disableAppSelection;
}
ngOnChanges(changes) {
if (changes.disableAppSelection) {
this.leftbarService.disableAppSelection = changes.disableAppSelection.currentValue;
}
if (changes.favorites) {
this.setEmptySlots();
}
else if ((changes.defaultAppId || changes.applications) && (this.applications && this.applications.length > 0 && this.defaultAppId)) {
const foundApp = this.applications.find(x => x.Id === this.defaultAppId);
this.defaultApp = foundApp ? foundApp : {};
}
if (changes.tenants) {
changes.tenants.currentValue;
}
}
homeEmitter() {
this.popoverStatus = false;
this.onHomeButton.emit(true);
}
backEmitter() {
this.onBackButton.emit(true);
}
/**
* Toggle user details in leftbar.
*/
toggleUserDetails() {
this.leftbarService.showUserDetails = !this.leftbarService.showUserDetails;
}
onLanguageSelect(event) {
this.onLanguageChange.emit(event);
}
togglePopover(id) {
this.leftbarService.isSlim ? this.leftbarService.isSlim = false : '';
if (id !== this.activePopover && this.activePopover !== '' && this.popoverStatus) {
this.popoverStatus = !this.popoverStatus;
}
this.activePopover = id;
this.popoverStatus = !this.popoverStatus;
}
/**
* Toggle leftbar to slim mode or extended mode.
*/
toggleMenu() {
this.popoverStatus ? this.popoverStatus = false : '';
this.leftbarService.isSlim = !this.leftbarService.isSlim;
}
toggleMobileMenu() {
this.mobileMenu = !this.mobileMenu;
}
selectTenantEmitter(id) {
this.leftbarTenantSearch.nativeElement.value = "";
this.popoverStatus = false;
this.onTenantSelected.emit(id);
}
selectAppEmitter(app) {
this.defaultApp = app;
this.popoverStatus = false;
this.onAppSelected.emit(app.Id);
}
shortcutSettingsEmitter() {
this.popoverStatus = false;
this.onSettingsButton.emit(true);
}
addShortcutEmitter(i) {
this.popoverStatus = false;
this.onAddShortCut.emit(i);
}
clickShortcutEmitter(shortcut) {
this.popoverStatus = false;
this.onClickShortCut.emit(shortcut);
}
doSearchEmitter(val) {
this.popoverStatus = val.length > 2 ? false : this.popoverStatus;
val.length > 2 ? this.onSearch.emit(val) : '';
}
doFocusSearchEmitter(val) {
this.popoverStatus = false;
this.onFocusSearch.emit(val);
}
doTenantSearchEmitter(val) {
val.length === 0 ? this.onTenantSearch.emit('') : val.length > 2 ? this.onTenantSearch.emit(val) : '';
}
setAsDefaultTenantEmitter(id) {
this.onDefaultTenantSet.emit(id);
}
infoReqEmitter(item, popoverItem) {
if (!!popoverItem) {
this.togglePopover('popover_' + item.actionParam);
item.desc = popoverItem.Name;
item.value = popoverItem.Value;
}
this.popoverStatus = false;
this.onInfoRequest.emit(item);
}
hasOverflow(element) {
if (window.innerWidth < 1200) {
return false;
}
return element.scrollHeight > element.offsetHeight;
}
setEmptySlots() {
const emptySlots = 5 - (this.favorites ? this.favorites.length : 0);
this.emptyShortcutSlots = Array.from(Array(emptySlots).keys());
}
}
LeftbarComponent.decorators = [
{ type: Component, args: [{
selector: 'logo-leftbar',
template: "<!--\n/**\n * @license\n * Copyright LOGO YAZILIM SANAY\u0130 VE T\u0130CARET A.\u015E. All Rights Reserved.\n *\n * Save to the extent permitted by law, you may not use, copy, modify,\n * distribute or create derivative works of this material or any part\n * of it without the prior written consent of LOGO YAZILIM SANAY\u0130 VE T\u0130CARET A.\u015E. Limited.\n * Any reproduction of this material must contain this notice.\n */\n-->\n<div *ngIf=\"!!user\" [ngClass]=\"leftbarService.isSlim ? 'slim': ''\" class=\"le-leftbar\">\n <div class=\"info-card\">\n <div [ngClass]=\"leftbarService.showUserDetails ? 'extended' : ''\" class=\"user-base\">\n <div class=\"item user-summary-card\">\n <button (click)=\"toggleUserDetails();\" class=\"ghost\" [ngClass]=\"{'logo-tooltip': hasOverflow(userContent)}\">\n <span *ngIf=\"hasOverflow(userContent)\" class=\"tip on-right\">{{user.name}}</span>\n </button>\n <span\n class=\"avatar-background\"\n [ngStyle]=\"{'background-image': 'url(data:image/jpg;base64,' + user.userImage + ')'}\"\n >\n </span>\n <span *ngIf=\"user.avatar\" class=\"avatar\">\n <img [attr.src]=\"user?.avatar.changingThisBreaksApplicationSecurity\">\n </span>\n <span *ngIf=\"user.notifications\" class=\"badge danger top left\">\n {{user!.notifications}}\n </span>\n <div class=\"details\">\n <h6 #userContent>{{user.name}}</h6>\n <p class=\"small\">{{user.title}}</p>\n </div>\n </div>\n <div class=\"expandable-content\">\n <button (click)=\"toggleUserDetails()\" class=\"le-cross ghost large close-user-btn\"></button>\n <div class=\"row infos\">\n <div *ngIf=\"languageSettings.support\" class=\"col-md-12\">\n <div class=\"item\">\n <span class=\"title\">{{languageSettings.title}}</span>\n <logo-combobox\n (select)=\"onLanguageSelect($event)\"\n [(ngModel)]=\"selectedLanguage\"\n [items]=\"languageSettings.model\"\n [multiple]=\"false\"\n [path]=\"'name'\"\n >\n <ng-template\n let-index=\"index\"\n let-isFirst=\"isFirst\"\n let-isLast=\"isLast\"\n let-isOdd=\"isOdd\"\n let-item=\"item\"\n >\n <span>{{item.name}}</span>\n </ng-template>\n </logo-combobox>\n </div>\n </div>\n <div\n *ngFor=\"let item of profileSettings\"\n class=\"col-md-{{item.col}} {{item.reference}}\"\n >\n <div *ngIf=\"!item.popover\" class=\"item\">\n <button\n *ngIf=\"item.actionParam\"\n (click)=\"infoReqEmitter(item, null)\"\n [id]=\"item.id\"\n class=\"ghost sum-button\">\n </button>\n <span *ngIf=\"item.title\" [ngClass]=\"item.cssClass ? item.cssClass + ' title' : 'title'\">\n {{item.title}}\n <span *ngIf=\"item.badge\" class=\"badge danger\">{{item.count}}</span>\n </span>\n <span *ngIf=\"item.icon\" class=\"title icon {{item.icon}}\"></span>\n <button\n *ngIf=\"!item.title && !item.icon && item.desc\"\n [ngClass]=\"item.cssClass ? item.cssClass : ''\"\n class=\"ghost large\"\n >\n {{item.desc}}\n </button>\n <p *ngIf=\"item.icon || item.title && item.desc; else countTemp\" class=\"small\">{{item.desc}}</p>\n <ng-template #countTemp>{{item.count}}</ng-template>\n </div>\n <div *ngIf=\"!!item.popover\" class=\"item\">\n <button (click)=\"togglePopover('popover_'+item.actionParam)\" class=\"ghost sum-button\"></button>\n <div\n [attr.id]=\"'popover_'+item.actionParam\"\n [ngClass]=\"activePopover === 'popover_'+item.actionParam && popoverStatus ? 'opened':''\"\n class=\"popover\"\n >\n <div class=\"result-base\">\n <button\n (click)=\"infoReqEmitter(item, popoverItem)\"\n *ngFor=\"let popoverItem of item.popoverItems\"\n class=\"ghost\" style=\"width: 100%;\"\n >\n {{popoverItem.Name}}\n </button>\n </div>\n </div>\n <span *ngIf=\"item.title\" [ngClass]=\"item.cssClass ? item.cssClass + ' title' : 'title'\">\n {{item.title}}\n <span *ngIf=\"item.badge\" class=\"badge danger\">{{item.count}}</span>\n </span>\n <span *ngIf=\"item.icon\" class=\"title icon {{item.icon}}\"></span>\n <p\n *ngIf=\"item.desc; else countTemp\"\n [ngClass]=\"item.cssClass ? item.cssClass + ' small' : 'small'\"\n >\n {{item.desc}}\n </p>\n <ng-template #countTemp>{{item.count}}</ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div [ngClass]=\"{ 'mobile-fix' : false}\" class=\"tenant-base\">\n <div class=\"item\">\n <div class=\"tenant-options-base\">\n <button\n [disabled]=\"tenants.length < 2\"\n (click)=\"togglePopover('tenantOptions')\"\n class=\"ghost small icon-right le-arrow_down\"\n [ngClass]=\"{'logo-tooltip': hasOverflow(defaultContent)}\"\n >\n <span class=\"le-saving_bank_1\"></span>\n <span #defaultContent class=\"tenant-name\">\n {{defaultTenant.name}}\n </span>\n <span *ngIf=\"hasOverflow(defaultContent)\" class=\"tip on-right\">{{defaultTenant.name}}</span>\n </button>\n <div\n [ngClass]=\"activePopover === 'tenantOptions' && popoverStatus ? 'opened':''\"\n class=\"popover\"\n id=\"tenantOptions\"\n >\n <div class=\"popover-search-base\">\n <span class=\"input-w-icon\">\n <span class=\"le-search input-icon\"></span>\n <input\n #leftbarTenantSearch\n (keyup)=\"doTenantSearchEmitter(leftbarTenantSearch.value)\"\n class=\"icon-left\"\n id=\"searchTenant\"\n >\n </span>\n </div>\n <div class=\"result-base\" id=\"tenantResults\">\n <div *ngFor=\"let tenant of tenants\" class=\"tenant-item\">\n <button [ngClass]=\"{'logo-tooltip': hasOverflow(tenantContent)}\" (click)=\"selectTenantEmitter(tenant.id)\" class=\"ghost tenant-button\">\n <span #tenantContent class=\"tenant-btn-name\">{{tenant.name}}</span>\n <p *ngIf=\"onPrem\" class=\"tenant-id small\">{{tenant.id}}</p>\n <span *ngIf=\"tenant.IsDefault\" class=\"le-pin_1\"></span>\n <span *ngIf=\"hasOverflow(tenantContent)\" class=\"tip on-right\">{{tenant.name}}</span>\n </button>\n <button\n (click)=\"setAsDefaultTenantEmitter(tenant.id)\"\n *ngIf=\"!tenant.IsDefault\"\n class=\"ghost secondary set-button le-pin_1\"\n >\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!isMainPage\" class=\"search-base\">\n <button (click)=\"toggleMenu()\" class=\"search-btn ghost le-search\"></button>\n <span class=\"input-w-icon\">\n <span class=\"le-search input-icon\"></span>\n <input\n #leftbarSearch\n (keyup)=\"doSearchEmitter(leftbarSearch.value)\"\n (keyup.backspace)=\"doSearchEmitter(leftbarSearch.value)\"\n (focus)='doFocusSearchEmitter(leftbarSearch.value)'\n class=\"icon-left\"\n [placeholder]=\"searchPlaceholder\"\n >\n </span>\n </div>\n <div\n [ngClass]=\"{'hidden-mobile': applications && applications.length < 2}\"\n class=\"shortcuts-base\"\n >\n <div *ngIf=\"!isMainPage\" class=\"standarts\">\n <div class=\"home item\">\n <button (click)=\"homeEmitter()\" class=\"ghost le-home\"></button>\n </div>\n <div class=\"apps item\">\n <div *ngIf=\"applications && applications.length > 1\">\n <button\n (click)=\"!leftbarService.disableAppSelection ? togglePopover('appOptions') : ''\"\n [ngClass]=\"{'icon-right le-arrow_down':!leftbarService.disableAppSelection && !leftbarService.isSlim}\"\n [disabled]=\"leftbarService.disableAppSelection\"\n class=\"ghost\"\n data-name=\"{{defaultApp.Name}}\"\n >\n <img *ngIf=\"defaultApp\" [attr.src]=\"defaultApp.SafeIconAdress\" class=\"app-logo\"/>\n </button>\n <div\n [ngClass]=\"activePopover === 'appOptions' && popoverStatus ? 'opened':''\"\n class=\"popover app-options\"\n id=\"appOptions\"\n >\n <button\n (click)=\"selectAppEmitter(app)\"\n *ngFor=\"let app of applications\"\n class=\"ghost app-item\"\n data-name=\"{{app.Name}}\"\n >\n <img [attr.src]=\"app.SafeIconAdress\"/>\n </button>\n </div>\n </div>\n <div\n *ngIf=\"applications && applications.length == 1\"\n attr.data-name=\"{{applications[0].Name}}\"\n class=\"single-app\"\n >\n <span class=\"aligner\"></span>\n <img [attr.src]=\"applications[0].SafeIconAdress\" class=\"app-logo\"/>\n </div>\n </div>\n </div>\n <div *ngIf=\"isMainPage && showBackBtn\" class=\"standarts\">\n <div class=\"home item\">\n <button (click)=\"backEmitter()\" class=\"ghost le-chevron_left\"></button>\n </div>\n </div>\n <div *ngIf=\"enableShortCuts\" class=\"custom-shortcuts\">\n <ng-container *ngIf=\"favorites.length > 0\">\n <div *ngFor=\"let shortcut of favorites; let i= index;\" class=\"logo-tooltip\">\n <button\n (click)=\"clickShortcutEmitter(shortcut)\"\n *ngIf=\"shortcut.Url\"\n class=\"primary ghost add-button\"\n >\n <img [attr.src]=\"shortcut.SafeIconAdress\"/>\n </button>\n <span *ngIf=\"shortcut.Url\" class=\"tip on-bottom\">{{shortcut.Name}}</span>\n <button\n (click)=\"addShortcutEmitter(i)\"\n *ngIf=\"!shortcut.Url\"\n class=\"primary ghost add-button le-add\"\n >\n </button>\n </div>\n </ng-container>\n <button (click)=\"addShortcutEmitter(0)\" *ngIf=\"!onPrem\" class=\"ghost le-settings\"></button>\n </div>\n </div>\n <button\n (click)=\"toggleMobileMenu()\"\n [ngClass]=\"mobileMenu ? 'le-cross' : 'le-hamburger'\"\n class=\"mobile-menu-btn large ghost\"\n >\n </button>\n </div>\n <div [ngClass]=\"{'opened' : mobileMenu}\" class=\"menu-base\">\n <ng-content></ng-content>\n <span class=\"menu-toggle-base\">\n <button\n (click)=\"toggleMenu()\"\n [ngClass]=\"leftbarService.isSlim ? 'le-double_chevron_right' : 'le-double_chevron_left'\"\n class=\"toggle-button\"\n >\n </button>\n </span>\n </div>\n</div>\n",
styles: ["@font-face{font-family:Inter;font-style:normal;font-weight:400;src:local(\"Inter Regular\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EuxGAIBQEwIoOf6BSgqkdPOXQgAEHdWjfwDFzg63rF376VJSeg9gOrm0IzdVjacViHHWnHY22RqqQtoQz+atIJuQ4EOSO686spngxY+Z2B8mqJO8fiS4ae3cAAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:400;src:local(\"Inter Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3JQQqAIBBA0RONDalpR/AYk40ViIoZXr8g2vUWf/MRX/CTzzCTQslWAy/egFonBtKkQbLhYEdl2OMQ85bhzKF1qs8vBSJdye9chUuNK7hG8fCi5xBuQBazi3YAAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:100;src:local(\"Inter Thin BETA\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EOwqAMBAFwBM93cVP0ipY2OcCS9ioEBKJite3EDunGKIXfvrU5BurrXqwYUFrLENYGmjXSzA9WSapY14yjhzOW4pC9h1RruRXLdWcTi1w65YwTm6o7hzCA2GJM5l5AAAA.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:100;src:local(\"Inter Thin Italic BETA\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EvQ5AMBQG0Cf66I8UI4nB7gVu2l4kTStV8foGsTnDEeKFnz61043q2Bo4LTUayQa9VQzRdqSMU612sg5pTTgTl5uyBx0HAl3Rbj5Xcyw+Y9n2OBcKu8U4LUN1J+YHERtgYH8AAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:200;src:local(\"Inter Extra Light BETA\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EsQ5AMBQF0C+6FFWMJAaJ0Q881YdEtKkKn28QmzMcIV746RMnlHBWyRIsUoaUhQbRqFCpadJqzA1nHG92tjgsh4u8ATmHjc5dL8ZH3R6MR3sHT/06LwFNO9TRZZkffPheEH8AAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:200;src:local(\"Inter Extra Light Italic BETA\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQqEMBAF0BN9TUSiKVewECy9wCSZUUGMxIh7/C3Ebl/xlHrgT6+yrbSTxnloFoNaK4arW4tgAtngrG90KLc4R5xR8k2JQceBja7dL5yKYc+c0H9zonGdl4yunz7FHUV+8QCK/n8AAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:300;src:local(\"Inter Light BETA\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAF0BN9Gi1qSWIhsXSBITNIRKUqvT6J2HmLp9QLP31SLaUuDU0whVFPVIDyMQNbLZXVZC1n6eZmh9NJiOQZdBzY6NqnhX3S7YE9+nVeApp2qJPoRG5faS4VegAAAA==.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:300;src:local(\"Inter Light Italic BETA\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG2KQQ5AMBQFT/SQ5pdaklhILF2g5RdJo1KVXp9E7MxiNjNF8YIffeSinhUpFqiIJIgrhpZGgWsqzWyeRYrc+cXj9DYmHZ5+HHD62qeVQ9bvkQOGbVljH7XbJrTd2GTJW3sDKg1UJYAAAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:500;src:local(\"Inter Medium\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EsQ2AIBAF0Im+IGJwBQuHOLhDTVQMQlzfwtj5iqf1Cz99lHfsArOGEHvYODiQ7T2YWhO8GcR1Vm1pTrhSLDdlAZ0nNqpHWCQ341EkYxJe697cKcYHvz/c0HYAAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:500;src:local(\"Inter Medium Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3ETQ5AMBAG0BN9jKq/I1g4xKgZJKVSFde3EDtv8Yhe+OmTF+IqMtyibKSDLboaTGwxqjFWplpbMrkPc8AZNN0cBXwc8HztbpGY9XuSiEGm9dr6xH512R1UH9SVTJ18AAAA.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:local(\"Inter Semi Bold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQ6EIBAF0BN9HRSFejtrTzDooCasY1iM17cw2/mKR/TAS391Q7HpnPHoTWhhrWN4cRbB20DMpic2ddJF8dNYLs4CPg4kPvdplVwNe5GMUb7bR9NcXRrjDdxsgiJ4AAAA.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:600;src:local(\"Inter Semi Bold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EPQ6DMAwG0BN9/BqUrN2YewI3sSlSiqM0iOt3qNh4w+u6P9x0aTU4ZXoRfD/MoFEDHM0ewux7cnGYRm2TrYavaT25CDhnJD728JbSLHuVgqd8toeluFROW2hOU/0BaFkjdH4AAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:700;src:local(\"Inter Bold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EOw6AIBAFwBM95eeH1s5jIOxqQViDGq9vYeycYpR64adPGw1z5xSB08hwSY9YBqPRW0vJRu/YL22WVXAIn3eohLDvyOEqcaPazOWkiklyam5hfgDkAXLjdAAAAA==.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:700;src:local(\"Inter Bold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3IMQqAMAxA0ROltkU0rm4eo6aJCqWRWvH6CuLmG/7wrX3BTz5Nj65z5J5LZKHF2AHOXoC59SKIQx99k3RROFTqFQpD2HdI4cy0cjFTrlxg1BSnGtJG5lKRGwVebDd6AAAA.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:local(\"Inter Extra Bold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAF0BN92hCprcTCMUZnhkVjpCoc30LsvMVz7oWfPnVHrIEaxkxhRhs8oxdHiN6LUx/byFwnWwyHabkoC2jfkejc4iq5mrYiGeNdMg2WuLpM9QHqRsWveQAAAA==.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:800;src:local(\"Inter Extra Bold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3JQQ5AMBBA0RMNjRFlK7FwjNHOIGmMVKWOTyJ23uJvvjEv+Mmn9A2yd9aAoPVQ4/OnrrXAWAtWSF1bTWXQWeFQSZkiA+07BDo3t3Asxi1xhOFKkXoNfkwUVldkFbkB4HHkfn8AAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:normal;font-weight:900;src:local(\"Inter Black\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3FTQqAIBRG0RV9aaGl02Yt4/lXkKiY0fYLollncC/nL/zkw2RQwlhLGHqjIEhwaCc5zKQ9uVG65yzmNePIoV1UPagURDqT3XztltR8xRzJ7t2VQ7gBxS7UTXUAAAA=.woff) format(\"woff\")}@font-face{font-family:Inter;font-style:italic;font-weight:900;src:local(\"Inter Black Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3ETQ5AMBAG0BN9fmqiurVzjDE6iEalKq5vIXbe4lXVCz99yk5UqbYEodqBnLHgRg3ayZLrRjEiUxniHHFGzTcnDz4OBL52WXwqhj37hD6wbEPmsEpxR9UHFiirPHsAAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:normal;font-weight:200;src:local(\"Nunito ExtraLight\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAAwBdtrVLlAW7iC7KtFol0m6rwfAdxM4dBfMFPn0I3VilrJEhsJNRGtWAQS5hd5aU2ZT1TV+y8MBzs80XJAcUIO53Bri6J8Qxb5qm/c6JhW9YsLvb+AREoTsR7AAAA.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:italic;font-weight:200;src:local(\"Nunito ExtraLight Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQqEMAwAwBdFS61dfYAHQfyCxNhooRipEX2+h2VvO4cx5gv+9FNaOwdXeQ/1wjU4IoZ2JgfWNs582qWh4Mskq8AprDfmAHgckPDaaQu5GK89qkzdoxmHuG7aK6ZIxS3ML8UDwtuBAAAA.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:normal;font-weight:300;src:local(\"Nunito Light\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EUQqAIBAA0RNtqZnVHaIrxFZuCuJGKV6/IPrrDYwQL/jZp+5Rys1agg5Jg26wBSRjoFtao6Tahqc68M5wMaWCpwU8DgiY4+rsWU05+sTz6HeXqsJENyeu26Z2AAAA.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:italic;font-weight:300;src:local(\"Nunito Light Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3ESw5AMBAA0BNNTZXQI0jEFWRMP5o0Rqi4voXYeYuH+IKfPhWybQxpBNs6hqYzDNZ3GlztPJleY1iWKksUOCWUmw4PtO+Q6dp49Yeari0VmccU1zIUyonVLSE8CHveRnwAAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:normal;font-weight:400;src:local(\"Nunito Regular\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAF0BMNSls9hYULyJA/SBojpen1LcTOW7ymedFPn1qM7SCzEKwDWT93FHqA0IYAx73x7Oqoq9KlchdOID5PipyPZUOqhnzst04j1hw5VUVFHmsLrn54AAAA.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:italic;font-weight:400;src:local(\"Nunito Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3ESwqAIBAA0BNNaknhEdp0hfAzU4I4UorXbxHteosn5Qt++ggjF2WcQ1ABPWgvHZgxKJjDPFEgVNqMIvHBcDPVbi8EWwok27I/8Rq2lmPlfa02RT90JnoAvm1tkHcAAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:normal;font-weight:600;src:local(\"Nunito SemiBold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EOw6AIAwA0BMViRSQ1QO4eABDoFUTtMZPvL6DcfMNT+sX/PSpMLAlnw0YtgjobIDGB4LE2ZmUI9oaqyKjwCF83nEniNsGJV5rmmhX3bXOpww9LXMrJatbmB/+cXW7eQAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:italic;font-weight:600;src:local(\"Nunito SemiBold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAAwBctK22Vqwe4eICstkuTskLF9x3EzRwG8QU/fUqFpKwxDlzbatDIGpqKJkDv0fDUWFu7MskscArnm44AtO+Q6NrcEo6iv7aYZRzCGjtJvriF+QFM7ckieQAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:normal;font-weight:700;src:local(\"Nunito Bold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3Eyw2AIAwA0IkqRcDP1QFcwTSWqgmxBjGu78F48x0e4gt++hjBgMQugEfP4OvI0CN30DiKzjrb2lpM0kXhVCk35Qh0HJDo2uc15mq89q3oNGji6laRB0uDW/x1AAAA.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:italic;font-weight:700;src:local(\"Nunito Bold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EOwqAMAwA0BPFfigpXd1cvIIkmqpQjGjF6zuIm2941r7gp4+hSIjsM0hEhBA5QXIBgZM458Vbh2yKzgqn5nrTIUD7DoWubVzkaPprW6sOrZapq1TWsbk15wdm7dQ/ewAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:normal;font-weight:800;src:local(\"Nunito ExtraBold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3ESw5AMBAA0BMNg/p0K7F1BRk1g6QxUhWObyF23uIhvuCnT+qwRlM2OZiptGBGsTBaMZBljHVVOLLMqddZ4VCJFwUG2nfwdG5u4ZD057ZGHbo7BmrVT8mlIg+lwiZUegAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:italic;font-weight:800;src:local(\"Nunito ExtraBold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EOwqAMAwA0BOlVizGWXBw8QqSfqJCMVJb9PgO4uYbntYv+OlTWa8R2SK4Lmgw7AgsNw0Q1ohoWoPcVlEWgVM4X5QC0HFApLK7NSQ1lX3LMg93TtRL9GOmuDl1CfMDQmczC4AAAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:normal;font-weight:900;src:local(\"Nunito Black\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3FTQqAIBBA4RONaT9C2w7QFWLSmYrEkUq8fkG061u8p/ULfvKpyLHX6Bhq2xO0XaNh9ohgvXlOSNZwFWQROIWvggcBpgQBc3QrHWrMcbtkGgK6XRVhvgHvwh56dgAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito;font-style:italic;font-weight:900;src:local(\"Nunito Black Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQ6DMAwF0BM5WAGCs3brwhXQV4Jb1AgjGsT1GapuvOEx/9BNf42X7DlAqc8AdRoiSRuZBG0csrCkPjTFXkZf03pinwnbRgXHmt7z7sZjXapNj4L0eVaUJbnTVC+tqSTHfAAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:normal;font-weight:200;src:local(\"Nunito Sans ExtraLight\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5EQBAF0BN9OlSmywHsxMYJappCIl3SWji+xWR23uI594OX/soQqP64keC5ElDQEdx4gvKXvOOKVZpys9lwmOZL0gTZd2xyxrBMqejPuGYbJB5o75ykW+clF5epPgGj7GZ/AAAA.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:italic;font-weight:200;src:local(\"Nunito Sans ExtraLight Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQ6DMAwAwBcZHBra5AEMlVAXXmCiGCJFMQpG9PkdEFtvOMQL/OnWetOzebwsPDEYsA4teOcCoCcycabI3dxmWQR2YT2pRqBtg0xHCWuszecoSWWissPw1UpjWlZ9K+UUmlOYfyJtwCaFAAAA.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:normal;font-weight:300;src:local(\"Nunito Sans Light\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAF0BN9pjQ4hNg4wZQZlUhHqLi+hdh5i0f0wk+fUqliJZngdWZ4CjUCsaCp2s5RJ85zKDdbDKdpvvkQ8L5j4ytNUY5iuNKabeR0ol+XmIvbVB9lPv2yegAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:italic;font-weight:300;src:local(\"Nunito Sans Light Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG2JQQqAIBAAX7S1oqFfCKJLL1hNUxA3yvD7BdGtOQwMg/gCP/rog7WIUkowqxCgtPFA2j2JbrBGae2t6jNvDCeH2uh4/r5Dpqu46I9uvkqqvFA5YUpbrGOlnFzXOIQbYSoqUYAAAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:normal;font-weight:400;src:local(\"Nunito Sans Regular\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQ6DMAwF0BN9sFwqOEWH9gROagNSFKOQKNdnQN36hkd0w59+xodyZDVGkLhg4kURniz4TpEDzUYUZEy+Ok632qUo5DiQpOW4aRleLe/VP5JPvHVtScrQ3ewC7nzBMHwAAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:italic;font-weight:400;src:local(\"Nunito Sans Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAF0BN9WkrGEWxsnGDKFEnTESqubyF23uIZ88JPn9K6ZjaWKrTUEVzdCLxjC3I1exKZfZAy6qI4NeSbDwHvOyJfaVrlKIYrbVlHTif6zHGbiltDeADcSvhKewAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:normal;font-weight:600;src:local(\"Nunito Sans SemiBold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EOw6AIBAFwBM93AIJtB7AxhMsuKgJssZPvL6FsXOKIXrhp08jTsg6G+D8SLCh9YiJIgIHmyhFEpam6KQ4NJ837wLeNhS+applN/1Vl1MHrgcGWZdOy2huzfkB1OMfMn0AAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:italic;font-weight:600;src:local(\"Nunito Sans SemiBold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EPRKCMBAG0BN9sOYHqe1sbDjBEnc1MzHLQBiub8HY+YpHdMKffvp4dcnPynBuiAjjZcDMShDxMZAPUUfqi70Mm2k7eBXwsqDwXtNb1u6x19xs4rphkk++WXneG5ecusNUv4KdPq+DAAAA.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:normal;font-weight:700;src:local(\"Nunito Sans Bold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EQQ5AMBAF0BN9baRN2TqAjRPUmEHSdJoirm8hdt7iWfvCTx/jiSR4J2AbBC50AT2Th7Q0d70sMxObpKviUDnvWBmxFKR4Zdq4NuOV91OnmA8MmpbmVpEHrXgfsXkAAAA=.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:italic;font-weight:700;src:local(\"Nunito Sans Bold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQ6EIBAF0BN9hA0YaO222WZPMAywmhDGKMbrWxi7fcXT+oY/PYbiA4eRR6RkX7A6E6L2BtFEy9G54LIfqvwEu5R+0pZB64pKR+M5b+pztKXLl9qOSWp6d6oLq1NKuQA41VY1fwAAAA==.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:normal;font-weight:800;src:local(\"Nunito Sans ExtraBold\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EPQqDQBAG0BN9OoKDk1awTZMTzP4ZYdmRdcUcP0VI5yse0Q9u+uun4KIfSRCIJoyeHVRYwDwEJ/xQ76TPthoOS+3SGqH7jqxn8e9Yu+dZtmYvLQeWT6s6Ww7dZSl9AZD1kup+AAAA.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:italic;font-weight:800;src:local(\"Nunito Sans ExtraBold Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQ7CMAwF0BP91iFBuCsSAwsLJzBpDJWiuEpTleN3QN14wyP6wZ8OPYl3YRgZF06EMEQH5peCvTsp+xApnPtsb8Ni2japCTLPyLKW+Em1e6xlavaUsuD2bVWulsd7kzzFbjPVHRCKHYeEAAAA.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:normal;font-weight:900;src:local(\"Nunito Sans Black\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3ETRJEMBAG0BN9RCTEdg4wGydo0Y2SSis/5foWU7PzFs+YH7z0V5Id2FvjwdG3cOICgnCNOorthrGtfGjKpJPiUDlv2hm0bUh05TjzXnyvvJzaUz7wSRTX4laRB7zo79p6AAAA.woff) format(\"woff\")}@font-face{font-family:Nunito Sans;font-style:italic;font-weight:900;src:local(\"Nunito Sans Black Italic\"),url(https://grcassetservice.logo.cloud/asset/H4sIAAAAAAAAAG3EMQ6DMAwF0BN9CAZSsXbr0oUTGCduUaMYQRDXZ6jYeMNz7g83XWplenAIHk58i66LHhOFHoNQI0MrRE7rZB/DZloOXiN4WZB4z/KNa/Xe81xs5LzhmVh+r8Jpluow1ROEjAj4gAAAAA==.woff) format(\"woff\")}@font-face{font-family:GTWalsheimProBold-Oblique;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold-Oblique.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold-Oblique.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold-Oblique.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold-Oblique.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold-Oblique.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold-Oblique.svg#GTWalsheimProBold-Oblique) format(\"svg\");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:GTWalsheimProBlack-Oblique;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack-Oblique.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack-Oblique.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack-Oblique.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack-Oblique.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack-Oblique.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack-Oblique.svg#GTWalsheimProBlack-Oblique) format(\"svg\");font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:GTWalsheimProBlack;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBlack.svg#GTWalsheimProBlack) format(\"svg\");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:GTWalsheimProBold;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProBold.svg#GTWalsheimProBold) format(\"svg\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:GTWalsheimProLight;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight.svg#GTWalsheimProLight) format(\"svg\");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:GTWalsheimProLight-Oblique;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight-Oblique.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight-Oblique.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight-Oblique.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight-Oblique.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight-Oblique.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProLight-Oblique.svg#GTWalsheimProLight-Oblique) format(\"svg\");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:GTWalsheimProMedium;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProMedium.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProMedium.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProMedium.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProMedium.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProMedium.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProMedium.svg#GTWalsheimProMedium) format(\"svg\");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:GTWalsheimProRegular;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular.svg#GTWalsheimProRegular) format(\"svg\");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:GTWalsheimProThin-Oblique;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin-Oblique.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin-Oblique.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin-Oblique.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin-Oblique.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin-Oblique.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin-Oblique.svg#GTWalsheimProThin-Oblique) format(\"svg\");font-weight:100;font-style:italic;font-display:swap}@font-face{font-family:GTWalsheimProRegular-Oblique;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular-Oblique.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular-Oblique.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular-Oblique.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular-Oblique.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular-Oblique.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProRegular-Oblique.svg#GTWalsheimProRegular-Oblique) format(\"svg\");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:GTWalsheimProThin;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProThin.svg#GTWalsheimProThin) format(\"svg\");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:GTWalsheimProUltraBold-Oblique;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold-Oblique.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold-Oblique.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold-Oblique.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold-Oblique.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold-Oblique.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold-Oblique.svg#GTWalsheimProUltraBold-Oblique) format(\"svg\");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:GTWalsheimProUltraLight-Oblique;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight-Oblique.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight-Oblique.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight-Oblique.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight-Oblique.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight-Oblique.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight-Oblique.svg#GTWalsheimProUltraLight-Oblique) format(\"svg\");font-weight:200;font-style:italic;font-display:swap}@font-face{font-family:GTWalsheimProUltraBold;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraBold.svg#GTWalsheimProUltraBold) format(\"svg\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:GTWalsheimProUltraLight;src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight.eot);src:url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight.eot?#iefix) format(\"embedded-opentype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight.woff2) format(\"woff2\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight.woff) format(\"woff\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight.ttf) format(\"truetype\"),url(~@logo-software/theme/assets/fonts/gt_walsheim_pro/GTWalsheimProUltraLight.svg#GTWalsheimProUltraLight) format(\"svg\");font-weight:200;font-style:normal;font-display:swap}.dotted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logo-tooltip .tip.on-bottom:after,.logo-tooltip .tip.on-top:after{border-left:7px solid transparent;border-right:7px solid transparent}.logo-tooltip .tip.on-left:after,.logo-tooltip .tip.on-right:after{border-top:7px solid transparent;border-bottom:7px solid transparent}.logo-tooltip{position:relative;color:#e94a34;cursor:pointer}.logo-tooltip .tip{position:absolute;width:180px;color:#fff;font-size:14px;font-style:normal;line-height:1.4;text-align:center;border-radius:3px;background:#333;padding:8px 12px;box-sizing:border-box;cursor:auto;z-index:10;opacity:0;visibility:hidden;transition:all .25s ease-in}.logo-tooltip .tip:after{position:absolute;width:0;height:0;content:\"\"}.logo-tooltip .tip.on-top{bottom:25px;left:0}.logo-tooltip .tip.on-top:after{bottom:-7px;left:10px;border-top:7px solid #333}.logo-tooltip .tip.on-right{top:-5px;left:103%}.logo-tooltip .tip.on-right:after{top:37%;left:-7px;border-right:7px solid #333}.logo-tooltip .tip.on-bottom{top:25px;left:0}.logo-tooltip .tip.on-bottom:after{top:-7px;left:10px;border-bottom:7px solid #333}.logo-tooltip .tip.on-left{top:-5px;right:103%}.logo-tooltip .tip.on-left:after{top:37%;right:-7px;border-left:7px solid #333}.logo-tooltip:hover .tip{opacity:1;visibility:visible}.logo-tooltip:hover .tip.on-top{transform:translateY(-15px)}.logo-tooltip:hover .tip.on-right{transform:translateX(15px)}.logo-tooltip:hover .tip.on-bottom{transform:translateY(15px)}.logo-tooltip:hover .tip.on-left{transform:translateX(-15px)}.test{content:\"a\";content:\"ba\";content:\"aa\";content:\"aade\";content:\"abde\"}:root .basic,:root .gray,:root .secondary{color:var(--leds-body-text-color)}:root .danger,:root .info,:root .success,:root .warning{color:var(--white)}:root .outline.primary,:root .outline.primary:active,:root .outline.primary:focus,:root .outline.primary:hover{border-color:var(--light-600)}:root .outline.primary:active,:root .outline.primary:focus,:root .outline.primary:hover{background-color:var(--leds-contrast-10pct);color:var(--primary)}:root .outline.secondary{color:var(--leds-body-text-color)}:root .outline.secondary,:root .outline.secondary:active,:root .outline.secondary:focus,:root .outline.secondary:hover{border-color:var(--light-600)}:root