This commit is contained in:
Sven Steinert
2026-05-13 11:57:52 +02:00
parent 6abf6f9c3d
commit f4511b9213
76 changed files with 4494 additions and 1940 deletions

1253
codex.md

File diff suppressed because it is too large Load Diff

8
debug-doc.html Normal file
View File

@@ -0,0 +1,8 @@
<main class="kb-docs-wrap kb-doc-layout">
<aside class="kb-sidebar">
<label class="screen-reader-text" for="kb-version-switcher">Version</label>
<select id="kb-version-switcher">
<option value="x-x-x" data-url="http://localhost:8080/?kb_markdown_route=version&#038;kb_product_slug=vorlage&#038;kb_version_slug=x-x-x" selected='selected'>X.X.X</option>
</select>
<nav class="kb-sidebar-nav" aria-label="Documentation navigation">
<ul>

Binary file not shown.

View File

@@ -1,14 +0,0 @@
{
"name": "kb-antora-importer/kb-antora-importer",
"description": "WordPress plugin for importing GitLab/Antora based AsciiDoc documentation.",
"type": "wordpress-plugin",
"license": "proprietary",
"require": {
"php": ">=8.1"
},
"autoload": {
"psr-4": {
"KbAntoraImporter\\": "includes/"
}
}
}

View File

@@ -1,171 +0,0 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Admin;
use KbAntoraImporter\GitLab\GitLabClient;
use KbAntoraImporter\Import\ImportLogger;
use KbAntoraImporter\Plugin;
use KbAntoraImporter\Settings;
final class SettingsPage
{
public static function registerSettings(): void
{
register_setting('kb_antora_importer_settings', 'kb_antora_importer_settings', [
'type' => 'array',
'sanitize_callback' => [self::class, 'sanitize'],
'default' => Settings::defaults(),
]);
}
public static function sanitize(array $input): array
{
$old = Plugin::settings();
$settings = Settings::defaults();
$settings['gitlab_base_url'] = esc_url_raw(GitLabClient::normalizeBaseUrl((string) ($input['gitlab_base_url'] ?? '')));
$settings['gitlab_token'] = trim((string) ($input['gitlab_token'] ?? '')) ?: (string) $old['gitlab_token'];
$settings['gitlab_group'] = sanitize_text_field((string) ($input['gitlab_group'] ?? 'knowledgebase'));
$settings['branch_pattern'] = sanitize_text_field((string) ($input['branch_pattern'] ?? '^v.*'));
$settings['docs_base_slug'] = sanitize_title((string) ($input['docs_base_slug'] ?? 'docs')) ?: 'docs';
$settings['renderer_mode'] = in_array(($input['renderer_mode'] ?? 'php'), ['php', 'asciidoctor'], true) ? (string) $input['renderer_mode'] : 'php';
$settings['asciidoctor_path'] = sanitize_text_field((string) ($input['asciidoctor_path'] ?? 'asciidoctor'));
$settings['image_lightbox'] = ! empty($input['image_lightbox']) ? '1' : '0';
$settings['public_docs'] = ! empty($input['public_docs']) ? '1' : '0';
$settings['allow_svg'] = ! empty($input['allow_svg']) ? '1' : '0';
$settings['cron_interval'] = in_array(($input['cron_interval'] ?? 'disabled'), ['disabled', 'hourly', 'daily', 'weekly'], true) ? (string) $input['cron_interval'] : 'disabled';
Plugin::syncCronSchedule($settings);
if (($old['docs_base_slug'] ?? 'docs') !== $settings['docs_base_slug']) {
flush_rewrite_rules(false);
}
return $settings;
}
public static function render(): void
{
if (! current_user_can('manage_kb_docs')) {
wp_die(esc_html__('Insufficient permissions.', 'kb-antora-importer'));
}
if (isset($_POST['kb_antora_test_connection']) && check_admin_referer('kb_antora_test_connection')) {
self::handleConnectionTest();
}
$settings = Plugin::settings();
?>
<div class="wrap">
<h1><?php esc_html_e('Knowledgebase Settings', 'kb-antora-importer'); ?></h1>
<form method="post" action="options.php">
<?php settings_fields('kb_antora_importer_settings'); ?>
<table class="form-table" role="presentation">
<tr>
<th scope="row"><label for="gitlab_base_url">GitLab Base URL</label></th>
<td>
<input class="regular-text" id="gitlab_base_url" name="kb_antora_importer_settings[gitlab_base_url]" type="url" value="<?php echo esc_attr($settings['gitlab_base_url']); ?>" placeholder="https://git.example.de">
<p class="description"><?php esc_html_e('Use the GitLab root URL, for example https://git.example.de. Do not include /api/v4.', 'kb-antora-importer'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="gitlab_token">GitLab API Token</label></th>
<td><input class="regular-text" id="gitlab_token" name="kb_antora_importer_settings[gitlab_token]" type="password" value="" placeholder="<?php echo $settings['gitlab_token'] ? esc_attr__('Token is stored; leave blank to keep it', 'kb-antora-importer') : ''; ?>"></td>
</tr>
<tr>
<th scope="row"><label for="gitlab_group">GitLab Group Path / ID</label></th>
<td><input class="regular-text" id="gitlab_group" name="kb_antora_importer_settings[gitlab_group]" type="text" value="<?php echo esc_attr($settings['gitlab_group']); ?>"></td>
</tr>
<tr>
<th scope="row"><label for="branch_pattern">Branch Pattern</label></th>
<td><input class="regular-text" id="branch_pattern" name="kb_antora_importer_settings[branch_pattern]" type="text" value="<?php echo esc_attr($settings['branch_pattern']); ?>"></td>
</tr>
<tr>
<th scope="row"><label for="docs_base_slug">Frontend Base Slug</label></th>
<td><input class="regular-text" id="docs_base_slug" name="kb_antora_importer_settings[docs_base_slug]" type="text" value="<?php echo esc_attr($settings['docs_base_slug']); ?>"></td>
</tr>
<tr>
<th scope="row"><label for="renderer_mode">Renderer Mode</label></th>
<td>
<select id="renderer_mode" name="kb_antora_importer_settings[renderer_mode]">
<option value="php" <?php selected($settings['renderer_mode'], 'php'); ?>>PHP Renderer</option>
<option value="asciidoctor" <?php selected($settings['renderer_mode'], 'asciidoctor'); ?>>Asciidoctor CLI</option>
</select>
</td>
</tr>
<tr>
<th scope="row"><label for="asciidoctor_path">Asciidoctor Path</label></th>
<td><input class="regular-text" id="asciidoctor_path" name="kb_antora_importer_settings[asciidoctor_path]" type="text" value="<?php echo esc_attr($settings['asciidoctor_path']); ?>"></td>
</tr>
<tr>
<th scope="row">Options</th>
<td>
<label><input type="checkbox" name="kb_antora_importer_settings[image_lightbox]" value="1" <?php checked($settings['image_lightbox'], '1'); ?>> Link images with lightbox class</label><br>
<label><input type="checkbox" name="kb_antora_importer_settings[public_docs]" value="1" <?php checked($settings['public_docs'], '1'); ?>> Show documentation publicly</label><br>
<label><input type="checkbox" name="kb_antora_importer_settings[allow_svg]" value="1" <?php checked($settings['allow_svg'], '1'); ?>> Allow SVG image import</label>
</td>
</tr>
<tr>
<th scope="row"><label for="cron_interval">Automatic Sync</label></th>
<td>
<select id="cron_interval" name="kb_antora_importer_settings[cron_interval]">
<option value="disabled" <?php selected($settings['cron_interval'], 'disabled'); ?>>Disabled</option>
<option value="hourly" <?php selected($settings['cron_interval'], 'hourly'); ?>>Hourly</option>
<option value="daily" <?php selected($settings['cron_interval'], 'daily'); ?>>Daily</option>
<option value="weekly" <?php selected($settings['cron_interval'], 'weekly'); ?>>Weekly</option>
</select>
</td>
</tr>
</table>
<?php submit_button(); ?>
</form>
<form method="post">
<?php wp_nonce_field('kb_antora_test_connection'); ?>
<?php submit_button(__('Test GitLab Connection', 'kb-antora-importer'), 'secondary', 'kb_antora_test_connection'); ?>
</form>
</div>
<?php
}
private static function handleConnectionTest(): void
{
$client = new GitLabClient(Plugin::settings());
$result = $client->getGroup(Plugin::settings()['gitlab_group']);
if (is_wp_error($result)) {
$message = self::formatConnectionError($result);
ImportLogger::error('GitLab connection failed: ' . $message);
add_settings_error('kb_antora_importer', 'connection_failed', esc_html($message), 'error');
settings_errors('kb_antora_importer');
return;
}
ImportLogger::info('GitLab connection successful.');
add_settings_error('kb_antora_importer', 'connection_ok', esc_html__('GitLab connection successful.', 'kb-antora-importer'), 'success');
settings_errors('kb_antora_importer');
}
private static function formatConnectionError(\WP_Error $error): string
{
$message = $error->get_error_message();
$data = $error->get_error_data();
if (! is_array($data)) {
return $message;
}
if (! empty($data['url'])) {
$message .= ' Target: ' . $data['url'];
}
if (! empty($data['retry_after'])) {
$message .= ' Retry-After: ' . $data['retry_after'];
}
if (! empty($data['response_excerpt'])) {
$message .= ' Response: ' . $data['response_excerpt'];
}
return $message;
}
}

View File

@@ -1,67 +0,0 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Antora;
final class AntoraNavParser
{
public function parse(string $nav): array
{
$root = [];
$stack = [];
foreach (preg_split('/\R/', $nav) ?: [] as $line) {
if (! preg_match('/^(\*+)\s+(.+)$/', trim($line), $matches)) {
continue;
}
$level = strlen($matches[1]);
$raw = trim($matches[2]);
$item = [
'title' => $raw,
'target' => '',
'children' => [],
];
if (preg_match('/xref:([^\[]+)\[([^\]]*)\]/', $raw, $xref)) {
$item['target'] = trim($xref[1]);
$item['title'] = trim($xref[2]) ?: basename($item['target']);
}
while (count($stack) >= $level) {
array_pop($stack);
}
if (empty($stack)) {
$root[] = $item;
$stack[$level - 1] = &$root[array_key_last($root)];
} else {
$parent = &$stack[array_key_last($stack)];
$parent['children'][] = $item;
$stack[$level - 1] = &$parent['children'][array_key_last($parent['children'])];
}
unset($parent);
}
return $root;
}
public function flatten(array $tree): array
{
$items = [];
$walk = static function (array $nodes, int $level = 1) use (&$walk, &$items): void {
foreach ($nodes as $node) {
$items[] = [
'title' => (string) ($node['title'] ?? ''),
'target' => (string) ($node['target'] ?? ''),
'level' => $level,
];
$walk((array) ($node['children'] ?? []), $level + 1);
}
};
$walk($tree);
return $items;
}
}

View File

@@ -1,22 +0,0 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Antora;
final class AntoraParser
{
public function pageSlugFromPath(string $path): string
{
$name = preg_replace('/\.adoc$/', '', basename($path)) ?: basename($path);
return 'index' === $name ? '' : sanitize_title($name);
}
public function moduleFromPath(string $path): string
{
if (preg_match('#^modules/([^/]+)/#', $path, $matches)) {
return $matches[1];
}
return 'ROOT';
}
}

View File

@@ -1,17 +0,0 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Antora;
final class AntoraResourceResolver
{
public function imagePath(string $imageName, string $module = 'ROOT'): string
{
return 'modules/' . trim($module, '/') . '/images/' . ltrim($imageName, '/');
}
public function partialPath(string $partialName, string $module = 'ROOT'): string
{
return 'modules/' . trim($module, '/') . '/partials/' . ltrim($partialName, '/');
}
}

View File

@@ -1,44 +0,0 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Antora;
final class AntoraYamlReader
{
public function parse(string $yaml): array
{
$data = [
'name' => '',
'title' => '',
'version' => '',
'nav' => [],
];
$inNav = false;
foreach (preg_split('/\R/', $yaml) ?: [] as $line) {
$trimmed = trim($line);
if ('' === $trimmed || str_starts_with($trimmed, '#')) {
continue;
}
if (preg_match('/^([a-zA-Z0-9_-]+):\s*(.*)$/', $trimmed, $matches)) {
$key = $matches[1];
$value = trim($matches[2], " \"'");
$inNav = 'nav' === $key;
if (array_key_exists($key, $data) && 'nav' !== $key) {
$data[$key] = $value;
}
continue;
}
if ($inNav && preg_match('/^-\s*(.+)$/', $trimmed, $matches)) {
$data['nav'][] = trim($matches[1], " \"'");
}
}
return $data;
}
}

View File

@@ -1,132 +0,0 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\AsciiDoc;
final class AsciiDocRenderer
{
private ShortcodeTransformer $transformer;
public function __construct(?ShortcodeTransformer $transformer = null)
{
$this->transformer = $transformer ?: new ShortcodeTransformer();
}
public function render(string $adoc, array $context = []): string
{
$lines = preg_split('/\R/', $adoc) ?: [];
$html = '';
$paragraph = [];
$listOpen = false;
$codeOpen = false;
$code = [];
$flushParagraph = function () use (&$html, &$paragraph, $context): void {
if (! $paragraph) {
return;
}
$text = implode(' ', array_map('trim', $paragraph));
$html .= '<p>' . $this->transformer->transformInline($text, $context) . '</p>' . "\n";
$paragraph = [];
};
$closeList = static function () use (&$html, &$listOpen): void {
if ($listOpen) {
$html .= "</ul>\n";
$listOpen = false;
}
};
foreach ($lines as $line) {
$trimmed = trim($line);
if ('----' === $trimmed) {
$flushParagraph();
$closeList();
if ($codeOpen) {
$html .= '<pre><code>' . esc_html(implode("\n", $code)) . '</code></pre>' . "\n";
$code = [];
$codeOpen = false;
} else {
$codeOpen = true;
}
continue;
}
if ($codeOpen) {
$code[] = $line;
continue;
}
if ('' === $trimmed) {
$flushParagraph();
$closeList();
continue;
}
if (preg_match('/^:[A-Za-z0-9_-]+:\s*/', $trimmed)) {
continue;
}
if (preg_match('/^(={1,6})\s+(.+)$/', $trimmed, $matches)) {
$flushParagraph();
$closeList();
$level = min(6, strlen($matches[1]));
$html .= sprintf('<h%d>%s</h%d>', $level, esc_html($matches[2]), $level) . "\n";
continue;
}
if (preg_match('/^\*\s+(.+)$/', $trimmed, $matches)) {
$flushParagraph();
if (! $listOpen) {
$html .= "<ul>\n";
$listOpen = true;
}
$html .= '<li>' . $this->transformer->transformInline($matches[1], $context) . '</li>' . "\n";
continue;
}
if (preg_match('/^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\s+(.+)$/', $trimmed, $matches)) {
$flushParagraph();
$closeList();
$class = strtolower($matches[1]);
$html .= '<aside class="kb-admonition kb-admonition-' . esc_attr($class) . '"><strong>' . esc_html($matches[1]) . '</strong><p>' . $this->transformer->transformInline($matches[2], $context) . '</p></aside>' . "\n";
continue;
}
if (preg_match('/^image::([^\[]+)\[([^\]]*)\]/', $trimmed, $matches)) {
$flushParagraph();
$closeList();
$imageName = trim($matches[1]);
$alt = trim($matches[2]) ?: basename($imageName);
$url = (string) ($context['images'][$imageName] ?? $context['images'][basename($imageName)] ?? '');
if ($url) {
$image = sprintf('<img src="%s" alt="%s">', esc_url($url), esc_attr($alt));
if (! empty($context['lightbox'])) {
$image = sprintf('<a href="%s" class="kb-lightbox">%s</a>', esc_url($url), $image);
}
$html .= '<figure class="kb-image">' . $image . '</figure>' . "\n";
} else {
$html .= '<figure class="kb-image kb-image-missing"><span>' . esc_html($alt) . '</span></figure>' . "\n";
}
continue;
}
if (preg_match('/^\|===/', $trimmed)) {
$flushParagraph();
$closeList();
$html .= "<hr>\n";
continue;
}
$paragraph[] = $line;
}
$flushParagraph();
$closeList();
return wp_kses_post($html);
}
}

View File

@@ -1,59 +0,0 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\AsciiDoc;
use KbAntoraImporter\Frontend\UrlBuilder;
final class ShortcodeTransformer
{
public function transformInline(string $text, array $context): string
{
$pattern = '/\b(xref|link):([^\[]+)\[([^\]]*)\]/';
$output = '';
$offset = 0;
if (! preg_match_all($pattern, $text, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
return esc_html($text);
}
foreach ($matches as $match) {
$start = (int) $match[0][1];
$output .= esc_html(substr($text, $offset, $start - $offset));
$output .= $this->renderLink((string) $match[1][0], (string) $match[2][0], (string) $match[3][0], $context);
$offset = $start + strlen((string) $match[0][0]);
}
$output .= esc_html(substr($text, $offset));
return $output;
}
private function renderLink(string $type, string $target, string $label, array $context): string
{
$target = trim($target);
$label = $label ?: basename($target);
if ('link' === $type && preg_match('#^https?://#i', $target)) {
return sprintf('<a href="%s" rel="nofollow noopener">%s</a>', esc_url($target), esc_html($label));
}
if (preg_match('#^https?://#i', $target)) {
return sprintf('<a href="%s" rel="nofollow noopener">%s</a>', esc_url($target), esc_html($label));
}
$target = preg_replace('/^[^:]+:/', '', $target) ?: $target;
$fragment = '';
if (str_contains($target, '#')) {
[$target, $fragment] = explode('#', $target, 2);
$fragment = '#' . sanitize_title($fragment);
}
$target = preg_replace('/\.adoc$/', '', $target) ?: $target;
$slug = in_array(basename($target), ['index', 'dokumentation'], true) ? '' : sanitize_title(basename($target));
$url = UrlBuilder::page((string) $context['product_slug'], (string) $context['version_slug'], $slug) . $fragment;
return sprintf('<a href="%s">%s</a>', esc_url($url), esc_html($label));
}
}

View File

@@ -1,42 +0,0 @@
<?php
/**
* Plugin Name: KB Antora Importer
* Description: Imports GitLab/Antora based AsciiDoc documentation into WordPress as a versioned knowledgebase.
* Version: 0.1.0
* Requires PHP: 8.1
* Author: Codex
* Text Domain: kb-antora-importer
*/
declare(strict_types=1);
if (! defined('ABSPATH')) {
exit;
}
define('KB_ANTORA_IMPORTER_VERSION', '0.1.0');
define('KB_ANTORA_IMPORTER_FILE', __FILE__);
define('KB_ANTORA_IMPORTER_DIR', plugin_dir_path(__FILE__));
define('KB_ANTORA_IMPORTER_URL', plugin_dir_url(__FILE__));
spl_autoload_register(static function (string $class): void {
$prefix = 'KbAntoraImporter\\';
if (0 !== strncmp($class, $prefix, strlen($prefix))) {
return;
}
$relative = substr($class, strlen($prefix));
$path = KB_ANTORA_IMPORTER_DIR . 'includes/' . str_replace('\\', '/', $relative) . '.php';
if (is_readable($path)) {
require_once $path;
}
});
register_activation_hook(__FILE__, [KbAntoraImporter\Plugin::class, 'activate']);
register_deactivation_hook(__FILE__, [KbAntoraImporter\Plugin::class, 'deactivate']);
add_action('plugins_loaded', static function (): void {
KbAntoraImporter\Plugin::instance()->boot();
});

View File

@@ -1,18 +0,0 @@
# KB Antora Importer
WordPress plugin MVP for importing GitLab/Antora based AsciiDoc documentation into a versioned customer portal knowledgebase.
## Features
- GitLab settings and connection test in the WordPress admin.
- Custom post type `kb_doc_page`.
- Taxonomies for products, versions and components.
- Manual GitLab sync for projects, branches, `antora.yml`, `nav.adoc`, pages and images.
- Basic PHP AsciiDoc renderer for headings, paragraphs, lists, code blocks, admonitions, links, xrefs and images.
- Frontend routes under `/docs/`.
- Shortcodes: `[kb_docs_index]`, `[kb_product_index product="..."]`, `[kb_search]`.
- Import logs without exposing secrets.
## Notes
This is an MVP. It intentionally does not rebuild Antora completely. The importer stores rendered content in WordPress so frontend requests do not call GitLab.

View File

@@ -1,11 +0,0 @@
<?php
declare(strict_types=1);
if (! defined('WP_UNINSTALL_PLUGIN')) {
exit;
}
delete_option('kb_antora_importer_settings');
delete_option('kb_antora_importer_logs');
delete_option('kb_antora_importer_last_sync');
delete_option('kb_antora_importer_last_error');

BIN
kb-markdown-importer.zip Normal file

Binary file not shown.

View File

@@ -0,0 +1,154 @@
@font-face {
font-family: "URW Gothic L Demi";
src: url("../../fonts/urw_gothic_l_demi.ttf") format("truetype");
font-style: normal;
font-weight: 600;
font-display: swap;
}
@font-face {
font-family: "Nunito";
src: url("../../fonts/Nunito-VariableFont_wght.ttf") format("truetype");
font-style: normal;
font-weight: 200 900;
font-display: swap;
}
@font-face {
font-family: "Nunito";
src: url("../../fonts/Nunito-Italic-VariableFont_wght.ttf") format("truetype");
font-style: italic;
font-weight: 200 900;
font-display: swap;
}
.kb-docs-wrap {
--kb-primary: #00a7e6;
--kb-primary-soft: #33b9eb;
--kb-primary-shade: #0086b8;
--kb-ob-accent: #f59c00;
--kb-slate: #343537;
--kb-bg: #f5fbfe;
--kb-surface: #ffffff;
--kb-surface-muted: #f5fbfe;
--kb-text: #343537;
--kb-muted: rgba(52, 53, 55, 0.72);
--kb-border: rgba(52, 53, 55, 0.15);
--kb-accent: var(--kb-primary);
--kb-accent-soft: rgba(0, 167, 230, 0.1);
--kb-radius: 14px;
--kb-shadow: 0 18px 40px rgba(52, 53, 55, 0.11);
--kb-font-body: "Nunito", "Segoe UI", Arial, sans-serif;
--kb-font-heading: "Nunito", "Segoe UI", Arial, sans-serif;
--kb-font-strong: "URW Gothic L Demi", "Nunito", "Segoe UI", Arial, sans-serif;
font-family: var(--kb-font-body);
line-height: 1.58;
}
.kb-docs-wrap a:focus,
.kb-docs-wrap button:focus,
.kb-docs-wrap input:focus,
.kb-docs-wrap select:focus {
outline: none;
box-shadow: 0 0 0 3px rgba(0, 167, 230, 0.32);
}
.kb-docs-wrap h1,
.kb-docs-wrap h2,
.kb-docs-wrap h3,
.kb-docs-wrap h4 {
font-family: var(--kb-font-heading);
color: var(--kb-text);
}
.kb-doc-content > h1 {
font-family: var(--kb-font-strong);
font-weight: 600;
letter-spacing: 0;
}
.kb-product-card,
.kb-search {
border-radius: var(--kb-radius);
border-color: var(--kb-border);
box-shadow: var(--kb-shadow);
}
.kb-product-card h2 a {
color: var(--kb-text);
text-decoration: none;
}
.kb-product-card h2 a:hover {
color: var(--kb-primary);
}
.kb-sidebar {
border-right-color: var(--kb-border);
}
.kb-sidebar select {
border-radius: 11px;
font-family: var(--kb-font-body);
}
.kb-sidebar-nav a,
.kb-sidebar-nav span {
border-radius: 11px;
}
.kb-sidebar-nav a:hover {
background: rgba(0, 167, 230, 0.12);
color: var(--kb-primary-shade);
}
.kb-breadcrumbs {
color: var(--kb-muted);
}
.kb-rendered-content p,
.kb-rendered-content li {
font-size: 17px;
}
.kb-rendered-content h2 {
font-size: clamp(26px, 3vw, 32px);
line-height: 1.12;
font-weight: 700;
}
.kb-rendered-content h3 {
font-size: 21px;
line-height: 1.2;
font-weight: 700;
}
.kb-rendered-content a {
color: var(--kb-primary-shade);
}
.kb-rendered-content pre {
background: #eef3f6;
color: var(--kb-text);
border: 1px solid var(--kb-border);
}
.kb-admonition {
border-left-color: var(--kb-primary);
background: rgba(0, 167, 230, 0.1);
}
.kb-current-version {
color: var(--kb-primary-shade);
}
.kb-search button {
border-radius: 12px;
background: linear-gradient(132deg, var(--kb-primary) 0%, var(--kb-primary-soft) 100%);
font-family: var(--kb-font-strong);
font-weight: 600;
}
.kb-search button:hover {
filter: brightness(1.06);
}

View File

@@ -0,0 +1,32 @@
(function ($) {
const button = $('#kb-markdown-upload-theme-css');
const input = $('#custom_theme_css_url');
if (!button.length || !input.length || typeof wp === 'undefined' || !wp.media) {
return;
}
button.on('click', function (event) {
event.preventDefault();
const frame = wp.media({
title: 'Select theme.css',
button: {
text: 'Use this CSS file'
},
multiple: false,
library: {
type: ['text/css', 'text/plain']
}
});
frame.on('select', function () {
const attachment = frame.state().get('selection').first().toJSON();
if (attachment && attachment.url) {
input.val(attachment.url);
}
});
frame.open();
});
}(jQuery));

View File

@@ -0,0 +1,14 @@
{
"name": "kb-markdown-importer/kb-markdown-importer",
"description": "WordPress plugin for importing GitLab based Markdown documentation.",
"type": "wordpress-plugin",
"license": "proprietary",
"require": {
"php": ">=8.1"
},
"autoload": {
"psr-4": {
"KbMarkdownImporter\\": "includes/"
}
}
}

View File

@@ -1,9 +1,9 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Access;
namespace KbMarkdownImporter\Access;
use KbAntoraImporter\Plugin;
use KbMarkdownImporter\Plugin;
final class AccessController
{

View File

@@ -0,0 +1,209 @@
<?php
declare(strict_types=1);
namespace KbMarkdownImporter\Admin;
use KbMarkdownImporter\GitLab\GitLabClient;
use KbMarkdownImporter\Import\ImportLogger;
use KbMarkdownImporter\Plugin;
use KbMarkdownImporter\Settings;
final class SettingsPage
{
public static function registerSettings(): void
{
register_setting('kb_markdown_importer_settings', 'kb_markdown_importer_settings', [
'type' => 'array',
'sanitize_callback' => [self::class, 'sanitize'],
'default' => Settings::defaults(),
]);
}
public static function sanitize(array $input): array
{
$old = Plugin::settings();
$settings = Settings::defaults();
$settings['gitlab_base_url'] = esc_url_raw(GitLabClient::normalizeBaseUrl((string) ($input['gitlab_base_url'] ?? '')));
$settings['gitlab_token'] = trim((string) ($input['gitlab_token'] ?? '')) ?: (string) $old['gitlab_token'];
$settings['gitlab_group'] = sanitize_text_field((string) ($input['gitlab_group'] ?? 'knowledgebase'));
$settings['branch_pattern'] = sanitize_text_field((string) ($input['branch_pattern'] ?? '^v.*'));
$settings['docs_base_slug'] = sanitize_title((string) ($input['docs_base_slug'] ?? 'docs')) ?: 'docs';
$settings['image_lightbox'] = ! empty($input['image_lightbox']) ? '1' : '0';
$settings['public_docs'] = ! empty($input['public_docs']) ? '1' : '0';
$settings['allow_svg'] = ! empty($input['allow_svg']) ? '1' : '0';
$settings['cron_interval'] = in_array(($input['cron_interval'] ?? 'disabled'), ['disabled', 'hourly', 'daily', 'weekly'], true) ? (string) $input['cron_interval'] : 'disabled';
$settings['design_theme'] = in_array(($input['design_theme'] ?? 'obyte'), ['obyte', 'inherit'], true) ? (string) $input['design_theme'] : 'obyte';
$settings['design_primary_color'] = self::sanitizeHexColor((string) ($input['design_primary_color'] ?? '#00A7E6'), '#00A7E6');
$settings['design_accent_color'] = self::sanitizeHexColor((string) ($input['design_accent_color'] ?? '#F59C00'), '#F59C00');
$settings['design_radius'] = (string) max(0, min(32, (int) ($input['design_radius'] ?? 14)));
$settings['custom_theme_css_url'] = esc_url_raw((string) ($input['custom_theme_css_url'] ?? ''));
Plugin::syncCronSchedule($settings);
if (($old['docs_base_slug'] ?? 'docs') !== $settings['docs_base_slug']) {
flush_rewrite_rules(false);
}
return $settings;
}
public static function render(): void
{
if (! current_user_can('manage_kb_docs')) {
wp_die(esc_html__('Insufficient permissions.', 'kb-markdown-importer'));
}
if (isset($_POST['kb_markdown_test_connection']) && check_admin_referer('kb_markdown_test_connection')) {
self::handleConnectionTest();
}
$settings = Plugin::settings();
?>
<div class="wrap">
<h1><?php esc_html_e('Markdown Knowledgebase Settings', 'kb-markdown-importer'); ?></h1>
<form method="post" action="options.php">
<?php settings_fields('kb_markdown_importer_settings'); ?>
<table class="form-table" role="presentation">
<tr>
<th scope="row"><label for="gitlab_base_url">GitLab Base URL</label></th>
<td>
<input class="regular-text" id="gitlab_base_url" name="kb_markdown_importer_settings[gitlab_base_url]" type="url" value="<?php echo esc_attr($settings['gitlab_base_url']); ?>" placeholder="https://git.example.de">
<p class="description"><?php esc_html_e('Use the GitLab root URL, for example https://git.example.de. Do not include /api/v4.', 'kb-markdown-importer'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="gitlab_token">GitLab API Token</label></th>
<td><input class="regular-text" id="gitlab_token" name="kb_markdown_importer_settings[gitlab_token]" type="password" value="" placeholder="<?php echo $settings['gitlab_token'] ? esc_attr__('Token is stored; leave blank to keep it', 'kb-markdown-importer') : ''; ?>"></td>
</tr>
<tr>
<th scope="row"><label for="gitlab_group">GitLab Group Path / ID</label></th>
<td><input class="regular-text" id="gitlab_group" name="kb_markdown_importer_settings[gitlab_group]" type="text" value="<?php echo esc_attr($settings['gitlab_group']); ?>"></td>
</tr>
<tr>
<th scope="row"><label for="branch_pattern">Branch Pattern</label></th>
<td><input class="regular-text" id="branch_pattern" name="kb_markdown_importer_settings[branch_pattern]" type="text" value="<?php echo esc_attr($settings['branch_pattern']); ?>"></td>
</tr>
<tr>
<th scope="row"><label for="docs_base_slug">Frontend Base Slug</label></th>
<td><input class="regular-text" id="docs_base_slug" name="kb_markdown_importer_settings[docs_base_slug]" type="text" value="<?php echo esc_attr($settings['docs_base_slug']); ?>"></td>
</tr>
<tr>
<th scope="row">Markdown Project Structure</th>
<td>
<p class="description"><?php esc_html_e('Each version branch must contain doku.md, stepbystep.md and an images/ folder. Optional files such as faq.md and doku.yml are supported.', 'kb-markdown-importer'); ?></p>
</td>
</tr>
<tr>
<th scope="row">Options</th>
<td>
<label><input type="checkbox" name="kb_markdown_importer_settings[image_lightbox]" value="1" <?php checked($settings['image_lightbox'], '1'); ?>> Link images with lightbox class</label><br>
<label><input type="checkbox" name="kb_markdown_importer_settings[public_docs]" value="1" <?php checked($settings['public_docs'], '1'); ?>> Show documentation publicly</label><br>
<label><input type="checkbox" name="kb_markdown_importer_settings[allow_svg]" value="1" <?php checked($settings['allow_svg'], '1'); ?>> Allow SVG image import</label>
</td>
</tr>
<tr>
<th scope="row"><label for="cron_interval">Automatic Sync</label></th>
<td>
<select id="cron_interval" name="kb_markdown_importer_settings[cron_interval]">
<option value="disabled" <?php selected($settings['cron_interval'], 'disabled'); ?>>Disabled</option>
<option value="hourly" <?php selected($settings['cron_interval'], 'hourly'); ?>>Hourly</option>
<option value="daily" <?php selected($settings['cron_interval'], 'daily'); ?>>Daily</option>
<option value="weekly" <?php selected($settings['cron_interval'], 'weekly'); ?>>Weekly</option>
</select>
</td>
</tr>
</table>
<h2><?php esc_html_e('Frontend Design', 'kb-markdown-importer'); ?></h2>
<table class="form-table" role="presentation">
<tr>
<th scope="row"><label for="design_theme">Design Theme</label></th>
<td>
<select id="design_theme" name="kb_markdown_importer_settings[design_theme]">
<option value="obyte" <?php selected($settings['design_theme'], 'obyte'); ?>>o-byte</option>
<option value="inherit" <?php selected($settings['design_theme'], 'inherit'); ?>>Theme inherit / neutral</option>
</select>
<p class="description"><?php esc_html_e('The bundled o-byte theme is loaded by default. A custom theme.css is loaded after it and can override everything.', 'kb-markdown-importer'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="design_primary_color">Primary Color</label></th>
<td><input id="design_primary_color" name="kb_markdown_importer_settings[design_primary_color]" type="color" value="<?php echo esc_attr($settings['design_primary_color']); ?>"></td>
</tr>
<tr>
<th scope="row"><label for="design_accent_color">Accent Color</label></th>
<td><input id="design_accent_color" name="kb_markdown_importer_settings[design_accent_color]" type="color" value="<?php echo esc_attr($settings['design_accent_color']); ?>"></td>
</tr>
<tr>
<th scope="row"><label for="design_radius">Border Radius</label></th>
<td>
<input id="design_radius" name="kb_markdown_importer_settings[design_radius]" type="number" min="0" max="32" value="<?php echo esc_attr($settings['design_radius']); ?>"> px
</td>
</tr>
<tr>
<th scope="row"><label for="custom_theme_css_url">Custom theme.css</label></th>
<td>
<input class="regular-text" id="custom_theme_css_url" name="kb_markdown_importer_settings[custom_theme_css_url]" type="url" value="<?php echo esc_attr($settings['custom_theme_css_url']); ?>" placeholder="https://example.com/theme.css">
<button type="button" class="button" id="kb-markdown-upload-theme-css"><?php esc_html_e('Upload/select theme.css', 'kb-markdown-importer'); ?></button>
<p class="description"><?php esc_html_e('Upload a CSS file in the media library or paste a CSS URL. It is enqueued last, so it can override the bundled theme.', 'kb-markdown-importer'); ?></p>
</td>
</tr>
</table>
<?php submit_button(); ?>
</form>
<form method="post">
<?php wp_nonce_field('kb_markdown_test_connection'); ?>
<?php submit_button(__('Test GitLab Connection', 'kb-markdown-importer'), 'secondary', 'kb_markdown_test_connection'); ?>
</form>
</div>
<?php
}
private static function handleConnectionTest(): void
{
$client = new GitLabClient(Plugin::settings());
$result = $client->getGroup(Plugin::settings()['gitlab_group']);
if (is_wp_error($result)) {
$message = self::formatConnectionError($result);
ImportLogger::error('GitLab connection failed: ' . $message);
add_settings_error('kb_markdown_importer', 'connection_failed', esc_html($message), 'error');
settings_errors('kb_markdown_importer');
return;
}
ImportLogger::info('GitLab connection successful.');
add_settings_error('kb_markdown_importer', 'connection_ok', esc_html__('GitLab connection successful.', 'kb-markdown-importer'), 'success');
settings_errors('kb_markdown_importer');
}
private static function formatConnectionError(\WP_Error $error): string
{
$message = $error->get_error_message();
$data = $error->get_error_data();
if (! is_array($data)) {
return $message;
}
if (! empty($data['url'])) {
$message .= ' Target: ' . $data['url'];
}
if (! empty($data['retry_after'])) {
$message .= ' Retry-After: ' . $data['retry_after'];
}
if (! empty($data['response_excerpt'])) {
$message .= ' Response: ' . $data['response_excerpt'];
}
return $message;
}
private static function sanitizeHexColor(string $value, string $fallback): string
{
$value = trim($value);
return preg_match('/^#[0-9a-fA-F]{6}$/', $value) ? strtoupper($value) : $fallback;
}
}

View File

@@ -1,17 +1,17 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Admin;
namespace KbMarkdownImporter\Admin;
use KbAntoraImporter\Import\ImportLogger;
use KbAntoraImporter\Plugin;
use KbMarkdownImporter\Import\ImportLogger;
use KbMarkdownImporter\Plugin;
final class StatusPage
{
public static function render(): void
{
if (! current_user_can('manage_kb_docs')) {
wp_die(esc_html__('Insufficient permissions.', 'kb-antora-importer'));
wp_die(esc_html__('Insufficient permissions.', 'kb-markdown-importer'));
}
$settings = Plugin::settings();
@@ -19,16 +19,16 @@ final class StatusPage
$logs = ImportLogger::recent(20);
?>
<div class="wrap">
<h1><?php esc_html_e('Knowledgebase Overview', 'kb-antora-importer'); ?></h1>
<h1><?php esc_html_e('Knowledgebase Overview', 'kb-markdown-importer'); ?></h1>
<div class="kb-admin-grid">
<div class="kb-admin-card"><strong>GitLab</strong><span><?php echo esc_html($settings['gitlab_base_url'] ?: __('Not configured', 'kb-antora-importer')); ?></span></div>
<div class="kb-admin-card"><strong>GitLab</strong><span><?php echo esc_html($settings['gitlab_base_url'] ?: __('Not configured', 'kb-markdown-importer')); ?></span></div>
<div class="kb-admin-card"><strong>Products</strong><span><?php echo esc_html((string) $counts['products']); ?></span></div>
<div class="kb-admin-card"><strong>Versions</strong><span><?php echo esc_html((string) $counts['versions']); ?></span></div>
<div class="kb-admin-card"><strong>Pages</strong><span><?php echo esc_html((string) $counts['pages']); ?></span></div>
<div class="kb-admin-card"><strong>Last sync</strong><span><?php echo esc_html((string) get_option('kb_antora_importer_last_sync', __('Never', 'kb-antora-importer'))); ?></span></div>
<div class="kb-admin-card"><strong>Renderer</strong><span><?php echo esc_html($settings['renderer_mode']); ?></span></div>
<div class="kb-admin-card"><strong>Last sync</strong><span><?php echo esc_html((string) get_option('kb_markdown_importer_last_sync', __('Never', 'kb-markdown-importer'))); ?></span></div>
<div class="kb-admin-card"><strong>Format</strong><span>Markdown</span></div>
</div>
<h2><?php esc_html_e('Recent Import Logs', 'kb-antora-importer'); ?></h2>
<h2><?php esc_html_e('Recent Import Logs', 'kb-markdown-importer'); ?></h2>
<?php self::renderLogTable($logs); ?>
</div>
<?php
@@ -39,15 +39,15 @@ final class StatusPage
return new \WP_REST_Response([
'settings_complete' => (bool) (Plugin::settings()['gitlab_base_url'] && Plugin::settings()['gitlab_token']),
'counts' => self::counts(),
'last_sync' => get_option('kb_antora_importer_last_sync', ''),
'last_error' => get_option('kb_antora_importer_last_error', ''),
'last_sync' => get_option('kb_markdown_importer_last_sync', ''),
'last_error' => get_option('kb_markdown_importer_last_error', ''),
]);
}
public static function renderLogTable(array $logs): void
{
if (! $logs) {
echo '<p>' . esc_html__('No logs yet.', 'kb-antora-importer') . '</p>';
echo '<p>' . esc_html__('No logs yet.', 'kb-markdown-importer') . '</p>';
return;
}

View File

@@ -1,37 +1,37 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Admin;
namespace KbMarkdownImporter\Admin;
use KbAntoraImporter\GitLab\GitLabClient;
use KbAntoraImporter\Import\ImportLogger;
use KbAntoraImporter\Import\ImportManager;
use KbAntoraImporter\Plugin;
use KbMarkdownImporter\GitLab\GitLabClient;
use KbMarkdownImporter\Import\ImportLogger;
use KbMarkdownImporter\Import\ImportManager;
use KbMarkdownImporter\Plugin;
final class SyncPage
{
public static function render(): void
{
if (! current_user_can('sync_kb_docs')) {
wp_die(esc_html__('Insufficient permissions.', 'kb-antora-importer'));
wp_die(esc_html__('Insufficient permissions.', 'kb-markdown-importer'));
}
self::handleActions();
$projects = self::loadProjects();
?>
<div class="wrap">
<h1><?php esc_html_e('Knowledgebase Synchronization', 'kb-antora-importer'); ?></h1>
<h1><?php esc_html_e('Knowledgebase Synchronization', 'kb-markdown-importer'); ?></h1>
<form method="post" class="kb-sync-actions">
<?php wp_nonce_field('kb_antora_sync'); ?>
<?php submit_button(__('Sync All', 'kb-antora-importer'), 'primary', 'kb_antora_sync_all', false); ?>
<?php submit_button(__('Dry Run', 'kb-antora-importer'), 'secondary', 'kb_antora_dry_run', false); ?>
<?php wp_nonce_field('kb_markdown_sync'); ?>
<?php submit_button(__('Sync All', 'kb-markdown-importer'), 'primary', 'kb_markdown_sync_all', false); ?>
<?php submit_button(__('Dry Run', 'kb-markdown-importer'), 'secondary', 'kb_markdown_dry_run', false); ?>
</form>
<h2><?php esc_html_e('Projects', 'kb-antora-importer'); ?></h2>
<h2><?php esc_html_e('Projects', 'kb-markdown-importer'); ?></h2>
<?php if (is_wp_error($projects)) : ?>
<div class="notice notice-error"><p><?php echo esc_html($projects->get_error_message()); ?></p></div>
<?php elseif (! $projects) : ?>
<p><?php esc_html_e('No projects loaded. Check GitLab settings first.', 'kb-antora-importer'); ?></p>
<p><?php esc_html_e('No projects loaded. Check GitLab settings first.', 'kb-markdown-importer'); ?></p>
<?php else : ?>
<table class="widefat striped">
<thead><tr><th>Name</th><th>Path</th><th>Action</th></tr></thead>
@@ -42,9 +42,9 @@ final class SyncPage
<td><code><?php echo esc_html((string) ($project['path_with_namespace'] ?? $project['path'] ?? '')); ?></code></td>
<td>
<form method="post">
<?php wp_nonce_field('kb_antora_sync_project'); ?>
<?php wp_nonce_field('kb_markdown_sync_project'); ?>
<input type="hidden" name="project_id" value="<?php echo esc_attr((string) ($project['id'] ?? '')); ?>">
<?php submit_button(__('Sync Project', 'kb-antora-importer'), 'secondary small', 'kb_antora_sync_project', false); ?>
<?php submit_button(__('Sync Project', 'kb-markdown-importer'), 'secondary small', 'kb_markdown_sync_project', false); ?>
</form>
</td>
</tr>
@@ -53,7 +53,7 @@ final class SyncPage
</table>
<?php endif; ?>
<h2><?php esc_html_e('Import Logs', 'kb-antora-importer'); ?></h2>
<h2><?php esc_html_e('Import Logs', 'kb-markdown-importer'); ?></h2>
<?php StatusPage::renderLogTable(ImportLogger::recent(100)); ?>
</div>
<?php
@@ -61,20 +61,20 @@ final class SyncPage
private static function handleActions(): void
{
if (isset($_POST['kb_antora_sync_all']) && check_admin_referer('kb_antora_sync')) {
if (isset($_POST['kb_markdown_sync_all']) && check_admin_referer('kb_markdown_sync')) {
(new ImportManager())->syncAll(false);
echo '<div class="notice notice-success"><p>' . esc_html__('Synchronization finished.', 'kb-antora-importer') . '</p></div>';
echo '<div class="notice notice-success"><p>' . esc_html__('Synchronization finished.', 'kb-markdown-importer') . '</p></div>';
}
if (isset($_POST['kb_antora_dry_run']) && check_admin_referer('kb_antora_sync')) {
if (isset($_POST['kb_markdown_dry_run']) && check_admin_referer('kb_markdown_sync')) {
(new ImportManager())->syncAll(true);
echo '<div class="notice notice-info"><p>' . esc_html__('Dry run finished.', 'kb-antora-importer') . '</p></div>';
echo '<div class="notice notice-info"><p>' . esc_html__('Dry run finished.', 'kb-markdown-importer') . '</p></div>';
}
if (isset($_POST['kb_antora_sync_project']) && check_admin_referer('kb_antora_sync_project')) {
if (isset($_POST['kb_markdown_sync_project']) && check_admin_referer('kb_markdown_sync_project')) {
$projectId = sanitize_text_field(wp_unslash((string) ($_POST['project_id'] ?? '')));
(new ImportManager())->syncProject($projectId, false);
echo '<div class="notice notice-success"><p>' . esc_html__('Project synchronization finished.', 'kb-antora-importer') . '</p></div>';
echo '<div class="notice notice-success"><p>' . esc_html__('Project synchronization finished.', 'kb-markdown-importer') . '</p></div>';
}
}

View File

@@ -1,9 +1,9 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Frontend;
namespace KbMarkdownImporter\Frontend;
use KbAntoraImporter\Plugin;
use KbMarkdownImporter\Plugin;
final class BreadcrumbBuilder
{
@@ -11,7 +11,7 @@ final class BreadcrumbBuilder
{
$base = trim((string) Plugin::settings()['docs_base_slug'], '/');
$items = [
sprintf('<a href="%s">%s</a>', esc_url(home_url('/' . $base . '/')), esc_html__('Docs', 'kb-antora-importer')),
sprintf('<a href="%s">%s</a>', esc_url(home_url('/' . $base . '/')), esc_html__('Docs', 'kb-markdown-importer')),
];
$path = $base;

View File

@@ -1,11 +1,11 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Frontend;
namespace KbMarkdownImporter\Frontend;
use KbAntoraImporter\Access\AccessController;
use KbAntoraImporter\Plugin;
use KbAntoraImporter\Repository\PageRepository;
use KbMarkdownImporter\Access\AccessController;
use KbMarkdownImporter\Plugin;
use KbMarkdownImporter\Repository\PageRepository;
final class Router
{
@@ -20,15 +20,15 @@ final class Router
public function addRewriteRules(): void
{
$base = trim((string) Plugin::settings()['docs_base_slug'], '/') ?: 'docs';
add_rewrite_rule('^' . preg_quote($base, '#') . '/?$', 'index.php?kb_antora_route=index', 'top');
add_rewrite_rule('^' . preg_quote($base, '#') . '/([^/]+)/?$', 'index.php?kb_antora_route=product&kb_product_slug=$matches[1]', 'top');
add_rewrite_rule('^' . preg_quote($base, '#') . '/([^/]+)/([^/]+)/?$', 'index.php?kb_antora_route=version&kb_product_slug=$matches[1]&kb_version_slug=$matches[2]', 'top');
add_rewrite_rule('^' . preg_quote($base, '#') . '/([^/]+)/([^/]+)/(.+?)/?$', 'index.php?kb_antora_route=page&kb_product_slug=$matches[1]&kb_version_slug=$matches[2]&kb_page_slug=$matches[3]', 'top');
add_rewrite_rule('^' . preg_quote($base, '#') . '/?$', 'index.php?kb_markdown_route=index', 'top');
add_rewrite_rule('^' . preg_quote($base, '#') . '/([^/]+)/?$', 'index.php?kb_markdown_route=product&kb_product_slug=$matches[1]', 'top');
add_rewrite_rule('^' . preg_quote($base, '#') . '/([^/]+)/([^/]+)/?$', 'index.php?kb_markdown_route=version&kb_product_slug=$matches[1]&kb_version_slug=$matches[2]', 'top');
add_rewrite_rule('^' . preg_quote($base, '#') . '/([^/]+)/([^/]+)/(.+?)/?$', 'index.php?kb_markdown_route=page&kb_product_slug=$matches[1]&kb_version_slug=$matches[2]&kb_page_slug=$matches[3]', 'top');
}
public function addQueryVars(array $vars): array
{
return array_merge($vars, ['kb_antora_route', 'kb_product_slug', 'kb_version_slug', 'kb_page_slug']);
return array_merge($vars, ['kb_markdown_route', 'kb_product_slug', 'kb_version_slug', 'kb_page_slug']);
}
public function routeRequest(array $queryVars): array
@@ -40,7 +40,7 @@ final class Router
}
$queryVars = [
'kb_antora_route' => $route['route'],
'kb_markdown_route' => $route['route'],
];
if (! empty($route['product'])) {
@@ -60,15 +60,21 @@ final class Router
public function dispatch(): void
{
$route = get_query_var('kb_antora_route');
$requestRoute = [];
$route = get_query_var('kb_markdown_route');
$requestRoute = $this->routeFromRequestUri();
if (! $route && $requestRoute) {
$route = $requestRoute['route'];
}
if (! $route) {
$requestRoute = $this->routeFromRequestUri();
if (! $requestRoute) {
$queryRoute = $this->routeFromQuery();
if (! $queryRoute) {
return;
}
$route = $requestRoute['route'];
$requestRoute = $queryRoute;
$route = $queryRoute['route'];
}
(new AccessController())->enforce();
@@ -119,6 +125,22 @@ final class Router
];
}
private function routeFromQuery(): array
{
$route = sanitize_key(wp_unslash((string) ($_GET['kb_markdown_route'] ?? '')));
if (! $route) {
return [];
}
return [
'route' => $route,
'product' => sanitize_title(wp_unslash((string) ($_GET['kb_product_slug'] ?? ''))),
'version' => sanitize_title(wp_unslash((string) ($_GET['kb_version_slug'] ?? ''))),
'page' => sanitize_title(wp_unslash((string) ($_GET['kb_page_slug'] ?? ''))),
];
}
public static function shortcodeDocsIndex(): string
{
return (new TemplateLoader())->capture('documentation-index', [
@@ -292,7 +314,7 @@ final class Router
{
status_header(404);
(new TemplateLoader())->render('search', [
'title' => __('Documentation page not found.', 'kb-antora-importer'),
'title' => __('Documentation page not found.', 'kb-markdown-importer'),
'results' => [],
'query' => '',
]);
@@ -302,7 +324,7 @@ final class Router
{
status_header(404);
return (new TemplateLoader())->capture('search', [
'title' => __('Documentation page not found.', 'kb-antora-importer'),
'title' => __('Documentation page not found.', 'kb-markdown-importer'),
'results' => [],
'query' => '',
]);
@@ -318,9 +340,15 @@ final class Router
}
foreach ($products as $product) {
$versions = (new self())->versionsForProduct($product->slug);
if (! $versions) {
continue;
}
$items[] = [
'term' => $product,
'versions' => (new self())->versionsForProduct($product->slug),
'versions' => $versions,
];
}

View File

@@ -1,9 +1,9 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Frontend;
namespace KbMarkdownImporter\Frontend;
use KbAntoraImporter\Access\AccessController;
use KbMarkdownImporter\Access\AccessController;
final class SearchController
{
@@ -17,7 +17,7 @@ final class SearchController
$results = $query ? self::search($query, sanitize_text_field(wp_unslash((string) ($_GET['product'] ?? ''))), sanitize_text_field(wp_unslash((string) ($_GET['version'] ?? '')))) : [];
return (new TemplateLoader())->capture('search', [
'title' => __('Search Documentation', 'kb-antora-importer'),
'title' => __('Search Documentation', 'kb-markdown-importer'),
'query' => $query,
'results' => $results,
]);

View File

@@ -1,17 +1,17 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Frontend;
namespace KbMarkdownImporter\Frontend;
final class TemplateLoader
{
public function render(string $template, array $vars = []): void
{
$path = KB_ANTORA_IMPORTER_DIR . 'templates/' . $template . '.php';
$path = KB_MARKDOWN_IMPORTER_DIR . 'templates/' . $template . '.php';
if (! is_readable($path)) {
status_header(500);
echo esc_html__('Knowledgebase template missing.', 'kb-antora-importer');
echo esc_html__('Knowledgebase template missing.', 'kb-markdown-importer');
return;
}

View File

@@ -1,9 +1,9 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Frontend;
namespace KbMarkdownImporter\Frontend;
use KbAntoraImporter\Plugin;
use KbMarkdownImporter\Plugin;
final class UrlBuilder
{
@@ -71,7 +71,7 @@ final class UrlBuilder
return home_url('/' . implode('/', array_map('rawurlencode', $parts)) . '/');
}
$args = ['kb_antora_route' => $route];
$args = ['kb_markdown_route' => $route];
if ($productSlug) {
$args['kb_product_slug'] = $productSlug;
@@ -124,9 +124,9 @@ final class UrlBuilder
wp_parse_str((string) $parts['query'], $query);
}
if (! empty($query['kb_antora_route'])) {
if (! empty($query['kb_markdown_route'])) {
return self::route(
sanitize_key((string) $query['kb_antora_route']),
sanitize_key((string) $query['kb_markdown_route']),
sanitize_title((string) ($query['kb_product_slug'] ?? '')),
sanitize_title((string) ($query['kb_version_slug'] ?? '')),
sanitize_title((string) ($query['kb_page_slug'] ?? ''))

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\GitLab;
namespace KbMarkdownImporter\GitLab;
final class GitLabBranch
{

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\GitLab;
namespace KbMarkdownImporter\GitLab;
final class GitLabClient
{
@@ -107,7 +107,7 @@ final class GitLabClient
$decoded = json_decode(wp_remote_retrieve_body($response), true);
if (! is_array($decoded)) {
return new \WP_Error('kb_gitlab_invalid_json', __('GitLab returned invalid JSON.', 'kb-antora-importer'));
return new \WP_Error('kb_gitlab_invalid_json', __('GitLab returned invalid JSON.', 'kb-markdown-importer'));
}
$items = array_merge($items, $decoded);
@@ -129,7 +129,7 @@ final class GitLabClient
$decoded = json_decode(wp_remote_retrieve_body($response), true);
if (! is_array($decoded)) {
return new \WP_Error('kb_gitlab_invalid_json', __('GitLab returned invalid JSON.', 'kb-antora-importer'));
return new \WP_Error('kb_gitlab_invalid_json', __('GitLab returned invalid JSON.', 'kb-markdown-importer'));
}
return $decoded;
@@ -138,7 +138,7 @@ final class GitLabClient
private function rawRequest(string $endpoint, array $query = [], string $method = 'GET'): array|\WP_Error
{
if (! $this->baseUrl || ! $this->token) {
return new \WP_Error('kb_gitlab_missing_settings', __('GitLab base URL or token is missing.', 'kb-antora-importer'));
return new \WP_Error('kb_gitlab_missing_settings', __('GitLab base URL or token is missing.', 'kb-markdown-importer'));
}
$url = $this->baseUrl . '/api/v4' . $endpoint;
@@ -172,12 +172,12 @@ final class GitLabClient
$retryAfter = wp_remote_retrieve_header($response, 'retry-after');
$message = sprintf(
/* translators: %d is an HTTP status code. */
__('GitLab API request failed with HTTP %d.', 'kb-antora-importer'),
__('GitLab API request failed with HTTP %d.', 'kb-markdown-importer'),
$code
);
if (503 === $code) {
$message .= ' ' . __('The GitLab server or a proxy returned Service Unavailable. Check whether GitLab is reachable from the WordPress server and whether the Base URL points to the GitLab root, not to /api/v4.', 'kb-antora-importer');
$message .= ' ' . __('The GitLab server or a proxy returned Service Unavailable. Check whether GitLab is reachable from the WordPress server and whether the Base URL points to the GitLab root, not to /api/v4.', 'kb-markdown-importer');
}
return new \WP_Error(

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\GitLab;
namespace KbMarkdownImporter\GitLab;
final class GitLabProject
{

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Import;
namespace KbMarkdownImporter\Import;
final class Checksum
{

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Import;
namespace KbMarkdownImporter\Import;
final class ImportJob
{

View File

@@ -1,11 +1,11 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Import;
namespace KbMarkdownImporter\Import;
final class ImportLogger
{
private const OPTION = 'kb_antora_importer_logs';
private const OPTION = 'kb_markdown_importer_logs';
private const LIMIT = 300;
public static function info(string $message): void
@@ -20,7 +20,7 @@ final class ImportLogger
public static function error(string $message): void
{
update_option('kb_antora_importer_last_error', self::sanitize($message), false);
update_option('kb_markdown_importer_last_error', self::sanitize($message), false);
self::log('ERROR', $message);
}

View File

@@ -1,25 +1,19 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Import;
namespace KbMarkdownImporter\Import;
use KbAntoraImporter\Antora\AntoraNavParser;
use KbAntoraImporter\Antora\AntoraParser;
use KbAntoraImporter\Antora\AntoraYamlReader;
use KbAntoraImporter\AsciiDoc\AsciiDocRenderer;
use KbAntoraImporter\GitLab\GitLabClient;
use KbAntoraImporter\Plugin;
use KbAntoraImporter\Repository\PageRepository;
use KbAntoraImporter\Repository\ProductRepository;
use KbAntoraImporter\Repository\VersionRepository;
use KbMarkdownImporter\GitLab\GitLabClient;
use KbMarkdownImporter\Markdown\MarkdownRenderer;
use KbMarkdownImporter\Plugin;
use KbMarkdownImporter\Repository\PageRepository;
use KbMarkdownImporter\Repository\ProductRepository;
use KbMarkdownImporter\Repository\VersionRepository;
final class ImportManager
{
private GitLabClient $client;
private array $settings;
private AntoraParser $antora;
private AntoraYamlReader $yamlReader;
private AntoraNavParser $navParser;
private PageRepository $pages;
private ProductRepository $products;
private VersionRepository $versions;
@@ -28,9 +22,6 @@ final class ImportManager
{
$this->settings = Plugin::settings();
$this->client = new GitLabClient($this->settings);
$this->antora = new AntoraParser();
$this->yamlReader = new AntoraYamlReader();
$this->navParser = new AntoraNavParser();
$this->pages = new PageRepository();
$this->products = new ProductRepository();
$this->versions = new VersionRepository();
@@ -61,7 +52,7 @@ final class ImportManager
$stats['pages'] += $result['pages'];
}
update_option('kb_antora_importer_last_sync', current_time('mysql'), false);
update_option('kb_markdown_importer_last_sync', current_time('mysql'), false);
ImportLogger::info('Synchronization completed.');
return new \WP_REST_Response(['success' => true, 'stats' => $stats]);
@@ -80,7 +71,7 @@ final class ImportManager
}
$result = $this->syncProjectData($project, $dryRun);
update_option('kb_antora_importer_last_sync', current_time('mysql'), false);
update_option('kb_markdown_importer_last_sync', current_time('mysql'), false);
return new \WP_REST_Response(['success' => true, 'stats' => $result]);
}
@@ -125,37 +116,40 @@ final class ImportManager
ImportLogger::info('Branch found: ' . $projectPath . '@' . $branchName);
$antoraYaml = $this->client->getFileRaw($projectId, 'antora.yml', $branchName);
if (is_wp_error($antoraYaml)) {
ImportLogger::warning('antora.yml missing or unreadable for ' . $projectPath . '@' . $branchName . '. Branch skipped.');
return 0;
}
$component = $this->yamlReader->parse($antoraYaml);
$productName = $component['title'] ?: $component['name'] ?: (string) ($project['name'] ?? $projectPath);
$productSlug = sanitize_title($component['name'] ?: ($project['path'] ?? $productName));
$version = $component['version'] ?: ltrim($branchName, 'v');
$versionSlug = sanitize_title($version);
$productTermId = $this->products->ensure($productName, $productSlug);
$versionTermId = $this->versions->ensure($version);
$tree = $this->client->getTree($projectId, $branchName);
if (is_wp_error($tree)) {
ImportLogger::error('Repository tree failed for ' . $projectPath . '@' . $branchName . ': ' . $tree->get_error_message());
return 0;
}
$navTree = $this->loadNavigation($projectId, $branchName, $component);
$imageMap = $this->importImages($projectId, $branchName, $tree, $dryRun);
$pagePaths = array_values(array_filter(array_map(static fn (array $item): string => (string) ($item['path'] ?? ''), $tree), static fn (string $path): bool => (bool) preg_match('#^modules/[^/]+/pages/.+\.adoc$#', $path)));
if (! $this->navHasTargets($navTree)) {
$navTree = $this->navTreeFromPages($pagePaths);
ImportLogger::warning('Navigation had no linked pages; generated a fallback navigation from imported pages for ' . $projectPath . '@' . $branchName . '.');
$paths = array_values(array_map(static fn (array $item): string => (string) ($item['path'] ?? ''), $tree));
if (! in_array('doku.md', $paths, true)) {
ImportLogger::warning('doku.md missing for ' . $projectPath . '@' . $branchName . '. Branch skipped.');
return 0;
}
$navFlat = $this->navParser->flatten($navTree);
$metadata = $this->loadMetadata($projectId, $branchName, $paths);
$productName = (string) ($metadata['title'] ?? $project['name'] ?? $projectPath);
$productSlug = sanitize_title((string) ($metadata['name'] ?? $project['path'] ?? $productName));
$version = (string) ($metadata['version'] ?? ltrim($branchName, 'v'));
$versionSlug = sanitize_title($version);
$productTermId = $this->products->ensure($productName, $productSlug);
$versionTermId = $this->versions->ensure($version);
$pagePaths = $this->documentationPages($paths, (array) ($metadata['nav'] ?? []));
if (! in_array('stepbystep.md', $pagePaths, true)) {
ImportLogger::warning('stepbystep.md missing for ' . $projectPath . '@' . $branchName . '. It should be present in every new documentation project.');
}
if (! $this->hasImagesDirectory($paths)) {
ImportLogger::warning('images/ folder missing for ' . $projectPath . '@' . $branchName . '. It should be present in every new documentation project.');
}
$navTree = $this->navigationTree($pagePaths, (array) ($metadata['nav'] ?? []));
$imageMap = $this->importImages($projectId, $branchName, $paths, $dryRun);
$renderer = new MarkdownRenderer();
$count = 0;
foreach ($pagePaths as $sourcePath) {
$content = $this->client->getFileRaw($projectId, $sourcePath, $branchName);
@@ -164,14 +158,10 @@ final class ImportManager
continue;
}
$module = $this->antora->moduleFromPath($sourcePath);
$pagePath = preg_replace('#^modules/[^/]+/pages/#', '', $sourcePath) ?: basename($sourcePath);
$pageSlug = $this->antora->pageSlugFromPath($sourcePath);
$title = $this->extractTitle($content, $pagePath);
$navOrder = $this->navOrder($navFlat, basename($sourcePath));
$renderer = new AsciiDocRenderer();
$pageSlug = $this->pageSlugFromPath($sourcePath);
$title = $this->extractTitle($content, $sourcePath);
$navOrder = $this->navOrder($pagePaths, $sourcePath);
$html = $renderer->render($content, [
'base_slug' => $this->settings['docs_base_slug'],
'product_slug' => $productSlug,
'version_slug' => $versionSlug,
'images' => $imageMap,
@@ -183,13 +173,13 @@ final class ImportManager
'project_path' => $projectPath,
'branch' => $branchName,
'commit_sha' => $commitSha,
'component' => $component['name'] ?: $productSlug,
'component' => $productSlug,
'component_title' => $productName,
'version' => $version,
'module' => $module,
'page_path' => $pagePath,
'module' => '',
'page_path' => $sourcePath,
'source_path' => $sourcePath,
'checksum' => Checksum::content($content),
'checksum' => Checksum::content($content . $commitSha . $this->rendererVersion()),
'title' => $title,
'html' => $html,
'nav_order' => $navOrder,
@@ -200,7 +190,7 @@ final class ImportManager
'version_slug' => $versionSlug,
'page_slug' => $pageSlug,
'nav_tree' => $navTree,
'renderer_version' => 'antora-shell-2',
'renderer_version' => $this->rendererVersion(),
], $dryRun);
if ($saved || $dryRun) {
@@ -211,25 +201,119 @@ final class ImportManager
return $count;
}
private function loadNavigation(string $projectId, string $branchName, array $component): array
private function loadMetadata(string $projectId, string $branchName, array $paths): array
{
$navFiles = $component['nav'] ?: ['modules/ROOT/nav.adoc'];
$tree = [];
if (! in_array('doku.yml', $paths, true) && ! in_array('doku.yaml', $paths, true)) {
return [];
}
foreach ($navFiles as $navFile) {
$content = $this->client->getFileRaw($projectId, $navFile, $branchName);
if (is_wp_error($content)) {
ImportLogger::warning('nav.adoc missing or unreadable: ' . $navFile);
$metadataPath = in_array('doku.yml', $paths, true) ? 'doku.yml' : 'doku.yaml';
$content = $this->client->getFileRaw($projectId, $metadataPath, $branchName);
if (is_wp_error($content)) {
ImportLogger::warning($metadataPath . ' unreadable: ' . $content->get_error_message());
return [];
}
return $this->parseMetadata($content);
}
private function parseMetadata(string $content): array
{
$data = [];
$currentNav = null;
foreach (preg_split('/\R/', $content) ?: [] as $line) {
if (preg_match('/^([a-zA-Z0-9_-]+):\s*"?([^"]*)"?\s*$/', $line, $matches)) {
$key = strtolower($matches[1]);
if ('nav' === $key) {
$data['nav'] = [];
$currentNav = null;
continue;
}
$data[$key] = trim($matches[2]);
continue;
}
$tree = array_merge($tree, $this->navParser->parse($content));
if (preg_match('/^\s*-\s+title:\s*"?([^"]+)"?\s*$/', $line, $matches)) {
$data['nav'] ??= [];
$data['nav'][] = ['title' => trim($matches[1]), 'file' => ''];
$currentNav = array_key_last($data['nav']);
continue;
}
if (null !== $currentNav && preg_match('/^\s*file:\s*"?([^"]+)"?\s*$/', $line, $matches)) {
$data['nav'][$currentNav]['file'] = trim($matches[1]);
}
}
return $data;
}
private function documentationPages(array $paths, array $nav): array
{
$pages = array_values(array_filter($paths, static function (string $path): bool {
return (bool) preg_match('/^[^\/]+\.md$/i', $path) && ! in_array(strtolower($path), ['readme.md'], true);
}));
$ordered = [];
foreach ($nav as $item) {
$file = (string) ($item['file'] ?? '');
if ($file && in_array($file, $pages, true)) {
$ordered[] = $file;
}
}
foreach (['doku.md', 'stepbystep.md'] as $required) {
if (in_array($required, $pages, true) && ! in_array($required, $ordered, true)) {
$ordered[] = $required;
}
}
sort($pages, SORT_NATURAL | SORT_FLAG_CASE);
foreach ($pages as $page) {
if (! in_array($page, $ordered, true)) {
$ordered[] = $page;
}
}
return $ordered;
}
private function navigationTree(array $pagePaths, array $nav): array
{
$tree = [];
foreach ($nav as $item) {
$file = (string) ($item['file'] ?? '');
if (! $file || ! in_array($file, $pagePaths, true)) {
continue;
}
$tree[] = [
'title' => (string) ($item['title'] ?? $this->titleFromFilename($file)),
'target' => $file,
'children' => [],
];
}
foreach ($pagePaths as $path) {
if ($this->navContains($tree, $path)) {
continue;
}
$tree[] = [
'title' => $this->titleFromFilename($path),
'target' => $path,
'children' => [],
];
}
return $tree;
}
private function importImages(string $projectId, string $branchName, array $tree, bool $dryRun): array
private function importImages(string $projectId, string $branchName, array $paths, bool $dryRun): array
{
$images = [];
$allowed = ['png', 'jpg', 'jpeg', 'gif', 'webp'];
@@ -238,30 +322,27 @@ final class ImportManager
$allowed[] = 'svg';
}
foreach ($tree as $item) {
$path = (string) ($item['path'] ?? '');
if (! preg_match('#^modules/[^/]+/images/.+\.(' . implode('|', $allowed) . ')$#i', $path)) {
foreach ($paths as $path) {
if (! preg_match('#^images/.+\.(' . implode('|', $allowed) . ')$#i', $path)) {
continue;
}
$url = $dryRun ? '' : $this->importImage($projectId, $branchName, $path);
if ($url) {
$images[$path] = $url;
$images[ltrim($path, '/')] = $url;
$images[basename($path)] = $url;
$images[preg_replace('#^modules/[^/]+/images/#', '', $path) ?: basename($path)] = $url;
$images[preg_replace('#^images/#', '', $path) ?: basename($path)] = $url;
}
}
return $images;
}
private function navHasTargets(array $nodes): bool
private function hasImagesDirectory(array $paths): bool
{
foreach ($nodes as $node) {
if (! empty($node['target'])) {
return true;
}
if ($this->navHasTargets((array) ($node['children'] ?? []))) {
foreach ($paths as $path) {
if (str_starts_with($path, 'images/')) {
return true;
}
}
@@ -269,40 +350,6 @@ final class ImportManager
return false;
}
private function navTreeFromPages(array $pagePaths): array
{
usort($pagePaths, static function (string $a, string $b): int {
$aBase = basename($a);
$bBase = basename($b);
if ('index.adoc' === $aBase || 'dokumentation.adoc' === $aBase) {
return -1;
}
if ('index.adoc' === $bBase || 'dokumentation.adoc' === $bBase) {
return 1;
}
return strnatcasecmp($aBase, $bBase);
});
return array_map(static function (string $path): array {
$target = preg_replace('#^modules/[^/]+/pages/#', '', $path) ?: basename($path);
$title = preg_replace('/\.adoc$/', '', basename($path)) ?: basename($path);
$title = ucwords(str_replace(['-', '_'], ' ', $title));
if (in_array(strtolower($title), ['index', 'dokumentation'], true)) {
$title = __('Overview', 'kb-antora-importer');
}
return [
'title' => $title,
'target' => $target,
'children' => [],
];
}, $pagePaths);
}
private function importImage(string $projectId, string $branchName, string $path): string
{
$assetKey = $projectId . ':' . $branchName . ':' . $path;
@@ -338,8 +385,8 @@ final class ImportManager
require_once ABSPATH . 'wp-admin/includes/image.php';
$metadata = wp_generate_attachment_metadata((int) $attachmentId, $upload['file']);
wp_update_attachment_metadata((int) $attachmentId, $metadata);
update_post_meta((int) $attachmentId, '_kb_antora_asset_key', $assetKey);
update_post_meta((int) $attachmentId, '_kb_antora_asset_checksum', Checksum::content($content));
update_post_meta((int) $attachmentId, '_kb_markdown_asset_key', $assetKey);
update_post_meta((int) $attachmentId, '_kb_markdown_asset_checksum', Checksum::content($content));
ImportLogger::info('Asset imported: ' . $path);
return wp_get_attachment_url((int) $attachmentId) ?: '';
@@ -353,7 +400,7 @@ final class ImportManager
'posts_per_page' => 1,
'fields' => 'ids',
'no_found_rows' => true,
'meta_key' => '_kb_antora_asset_key',
'meta_key' => '_kb_markdown_asset_key',
'meta_value' => $assetKey,
]);
@@ -362,21 +409,48 @@ final class ImportManager
private function extractTitle(string $content, string $fallback): string
{
if (preg_match('/^=\s+(.+)$/m', $content, $matches)) {
return trim($matches[1]);
if (preg_match('/^#\s+(.+)$/m', $content, $matches)) {
return trim(wp_strip_all_tags($matches[1]));
}
return ucwords(str_replace(['-', '_', '.adoc'], [' ', ' ', ''], basename($fallback)));
return $this->titleFromFilename($fallback);
}
private function navOrder(array $navFlat, string $basename): int
private function titleFromFilename(string $path): string
{
foreach ($navFlat as $index => $item) {
if ($basename === basename((string) ($item['target'] ?? ''))) {
return $index + 1;
$title = preg_replace('/\.md$/i', '', basename($path)) ?: basename($path);
if ('doku' === strtolower($title)) {
return __('Overview', 'kb-markdown-importer');
}
return ucwords(str_replace(['-', '_'], ' ', $title));
}
private function pageSlugFromPath(string $path): string
{
$page = preg_replace('/\.md$/i', '', basename($path)) ?: basename($path);
return in_array(strtolower($page), ['doku', 'index'], true) ? '' : sanitize_title($page);
}
private function navOrder(array $pagePaths, string $sourcePath): int
{
$index = array_search($sourcePath, $pagePaths, true);
return false === $index ? 9999 : ((int) $index + 1);
}
private function navContains(array $tree, string $target): bool
{
foreach ($tree as $node) {
if ($target === (string) ($node['target'] ?? '')) {
return true;
}
}
return 9999;
return false;
}
private function rendererVersion(): string
{
return 'markdown-1';
}
}

View File

@@ -0,0 +1,190 @@
<?php
declare(strict_types=1);
namespace KbMarkdownImporter\Markdown;
use KbMarkdownImporter\Frontend\UrlBuilder;
final class MarkdownRenderer
{
public function render(string $markdown, array $context = []): string
{
$lines = preg_split('/\R/', str_replace(["\r\n", "\r"], "\n", $markdown)) ?: [];
$html = [];
$paragraph = [];
$listType = '';
$codeFence = false;
$code = [];
$flushParagraph = function () use (&$html, &$paragraph, $context): void {
if (! $paragraph) {
return;
}
$html[] = '<p>' . $this->renderInline(trim(implode(' ', $paragraph)), $context) . '</p>';
$paragraph = [];
};
$closeList = function () use (&$html, &$listType): void {
if ('' === $listType) {
return;
}
$html[] = '</' . $listType . '>';
$listType = '';
};
foreach ($lines as $line) {
if (preg_match('/^\s*```/', $line)) {
if ($codeFence) {
$html[] = '<pre><code>' . esc_html(implode("\n", $code)) . '</code></pre>';
$code = [];
$codeFence = false;
} else {
$flushParagraph();
$closeList();
$codeFence = true;
}
continue;
}
if ($codeFence) {
$code[] = $line;
continue;
}
if ('' === trim($line)) {
$flushParagraph();
$closeList();
continue;
}
if (preg_match('/^(#{1,6})\s+(.+)$/', $line, $matches)) {
$flushParagraph();
$closeList();
$level = strlen($matches[1]);
$text = trim($matches[2]);
$id = sanitize_title(wp_strip_all_tags($text));
$html[] = sprintf('<h%d id="%s">%s</h%d>', $level, esc_attr($id), $this->renderInline($text, $context), $level);
continue;
}
if (preg_match('/^\s*[-*]\s+(.+)$/', $line, $matches)) {
$flushParagraph();
if ('ul' !== $listType) {
$closeList();
$html[] = '<ul>';
$listType = 'ul';
}
$html[] = '<li>' . $this->renderInline(trim($matches[1]), $context) . '</li>';
continue;
}
if (preg_match('/^\s*\d+\.\s+(.+)$/', $line, $matches)) {
$flushParagraph();
if ('ol' !== $listType) {
$closeList();
$html[] = '<ol>';
$listType = 'ol';
}
$html[] = '<li>' . $this->renderInline(trim($matches[1]), $context) . '</li>';
continue;
}
if (preg_match('/^>\s?(.*)$/', $line, $matches)) {
$flushParagraph();
$closeList();
$html[] = '<blockquote><p>' . $this->renderInline(trim($matches[1]), $context) . '</p></blockquote>';
continue;
}
$paragraph[] = trim($line);
}
if ($codeFence) {
$html[] = '<pre><code>' . esc_html(implode("\n", $code)) . '</code></pre>';
}
$flushParagraph();
$closeList();
return wp_kses_post(implode("\n", $html));
}
private function renderInline(string $text, array $context): string
{
$escaped = esc_html($text);
$escaped = preg_replace_callback('/!\[([^\]]*)\]\(([^)]+)\)/', function (array $matches) use ($context): string {
$alt = html_entity_decode($matches[1], ENT_QUOTES);
$src = html_entity_decode($matches[2], ENT_QUOTES);
$url = $this->resolveImageUrl($src, (array) ($context['images'] ?? []));
$image = sprintf('<img src="%s" alt="%s">', esc_url($url ?: $src), esc_attr($alt));
if ($url && ! empty($context['lightbox'])) {
return sprintf('<a href="%s" class="kb-lightbox">%s</a>', esc_url($url), $image);
}
return $image;
}, $escaped) ?? $escaped;
$escaped = preg_replace_callback('/(?<!!)\[([^\]]+)\]\(([^)]+)\)/', function (array $matches) use ($context): string {
$label = $this->renderInline($matches[1], $context);
$href = html_entity_decode($matches[2], ENT_QUOTES);
$url = $this->rewriteLink($href, $context) ?: $href;
return sprintf('<a href="%s">%s</a>', esc_url($url), $label);
}, $escaped) ?? $escaped;
$escaped = preg_replace('/`([^`]+)`/', '<code>$1</code>', $escaped) ?? $escaped;
$escaped = preg_replace('/\*\*([^*]+)\*\*/', '<strong>$1</strong>', $escaped) ?? $escaped;
$escaped = preg_replace('/\*([^*]+)\*/', '<em>$1</em>', $escaped) ?? $escaped;
return $escaped;
}
private function rewriteLink(string $href, array $context): string
{
if ('' === $href || str_starts_with($href, '#') || preg_match('#^(?:https?:|mailto:|tel:)#i', $href)) {
return '';
}
$parts = wp_parse_url($href);
if (! is_array($parts)) {
return '';
}
$path = (string) ($parts['path'] ?? '');
if (! preg_match('/\.md$/i', $path)) {
return '';
}
$page = preg_replace('/\.md$/i', '', basename($path)) ?: basename($path);
$slug = in_array(strtolower($page), ['doku', 'index'], true) ? '' : sanitize_title($page);
$fragment = isset($parts['fragment']) ? '#' . sanitize_title((string) $parts['fragment']) : '';
return UrlBuilder::page((string) $context['product_slug'], (string) $context['version_slug'], $slug) . $fragment;
}
private function resolveImageUrl(string $src, array $images): string
{
if ('' === $src || preg_match('#^(?:https?:|data:)#i', $src)) {
return '';
}
$candidates = array_unique([
$src,
ltrim($src, '/'),
basename($src),
preg_replace('#^images/#', '', $src) ?: $src,
]);
foreach ($candidates as $candidate) {
if (isset($images[$candidate])) {
return (string) $images[$candidate];
}
}
return '';
}
}

View File

@@ -1,14 +1,14 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter;
namespace KbMarkdownImporter;
use KbAntoraImporter\Admin\SettingsPage;
use KbAntoraImporter\Admin\StatusPage;
use KbAntoraImporter\Admin\SyncPage;
use KbAntoraImporter\Frontend\Router;
use KbAntoraImporter\Frontend\SearchController;
use KbAntoraImporter\Import\ImportManager;
use KbMarkdownImporter\Admin\SettingsPage;
use KbMarkdownImporter\Admin\StatusPage;
use KbMarkdownImporter\Admin\SyncPage;
use KbMarkdownImporter\Frontend\Router;
use KbMarkdownImporter\Frontend\SearchController;
use KbMarkdownImporter\Import\ImportManager;
final class Plugin
{
@@ -29,9 +29,11 @@ final class Plugin
add_action('init', [$this, 'registerShortcodes']);
add_action('admin_menu', [$this, 'registerAdminPages']);
add_action('admin_init', [SettingsPage::class, 'registerSettings']);
add_action('admin_enqueue_scripts', [$this, 'enqueueAdminAssets']);
add_action('rest_api_init', [$this, 'registerRestRoutes']);
add_filter('cron_schedules', [$this, 'addCronSchedules']);
add_action('kb_antora_importer_cron_sync', [$this, 'runCronSync']);
add_filter('upload_mimes', [$this, 'allowCssUploads']);
add_action('kb_markdown_importer_cron_sync', [$this, 'runCronSync']);
add_action('wp_enqueue_scripts', [$this, 'enqueueFrontendAssets']);
(new Router())->boot();
@@ -48,7 +50,7 @@ final class Plugin
public static function deactivate(): void
{
wp_clear_scheduled_hook('kb_antora_importer_cron_sync');
wp_clear_scheduled_hook('kb_markdown_importer_cron_sync');
flush_rewrite_rules();
}
@@ -56,12 +58,12 @@ final class Plugin
{
register_post_type('kb_doc_page', [
'labels' => [
'name' => __('Documentation Pages', 'kb-antora-importer'),
'singular_name' => __('Documentation Page', 'kb-antora-importer'),
'name' => __('Documentation Pages', 'kb-markdown-importer'),
'singular_name' => __('Documentation Page', 'kb-markdown-importer'),
],
'public' => false,
'show_ui' => true,
'show_in_menu' => 'kb-antora-importer',
'show_in_menu' => 'kb-markdown-importer',
'show_in_rest' => true,
'supports' => ['title', 'editor', 'excerpt', 'custom-fields'],
'capability_type' => 'post',
@@ -69,8 +71,8 @@ final class Plugin
register_taxonomy('kb_product', ['kb_doc_page'], [
'labels' => [
'name' => __('Products', 'kb-antora-importer'),
'singular_name' => __('Product', 'kb-antora-importer'),
'name' => __('Products', 'kb-markdown-importer'),
'singular_name' => __('Product', 'kb-markdown-importer'),
],
'public' => false,
'show_ui' => true,
@@ -81,8 +83,8 @@ final class Plugin
register_taxonomy('kb_version', ['kb_doc_page'], [
'labels' => [
'name' => __('Versions', 'kb-antora-importer'),
'singular_name' => __('Version', 'kb-antora-importer'),
'name' => __('Versions', 'kb-markdown-importer'),
'singular_name' => __('Version', 'kb-markdown-importer'),
],
'public' => false,
'show_ui' => true,
@@ -93,8 +95,8 @@ final class Plugin
register_taxonomy('kb_component', ['kb_doc_page'], [
'labels' => [
'name' => __('Components', 'kb-antora-importer'),
'singular_name' => __('Component', 'kb-antora-importer'),
'name' => __('Components', 'kb-markdown-importer'),
'singular_name' => __('Component', 'kb-markdown-importer'),
],
'public' => false,
'show_ui' => true,
@@ -107,47 +109,47 @@ final class Plugin
public function registerAdminPages(): void
{
add_menu_page(
__('Knowledgebase', 'kb-antora-importer'),
__('Knowledgebase', 'kb-antora-importer'),
__('Knowledgebase', 'kb-markdown-importer'),
__('Knowledgebase', 'kb-markdown-importer'),
'manage_kb_docs',
'kb-antora-importer',
'kb-markdown-importer',
[StatusPage::class, 'render'],
'dashicons-welcome-learn-more',
58
);
add_submenu_page('kb-antora-importer', __('Overview', 'kb-antora-importer'), __('Overview', 'kb-antora-importer'), 'manage_kb_docs', 'kb-antora-importer', [StatusPage::class, 'render']);
add_submenu_page('kb-antora-importer', __('Synchronization', 'kb-antora-importer'), __('Synchronization', 'kb-antora-importer'), 'sync_kb_docs', 'kb-antora-sync', [SyncPage::class, 'render']);
add_submenu_page('kb-antora-importer', __('Settings', 'kb-antora-importer'), __('Settings', 'kb-antora-importer'), 'manage_kb_docs', 'kb-antora-settings', [SettingsPage::class, 'render']);
add_submenu_page('kb-markdown-importer', __('Overview', 'kb-markdown-importer'), __('Overview', 'kb-markdown-importer'), 'manage_kb_docs', 'kb-markdown-importer', [StatusPage::class, 'render']);
add_submenu_page('kb-markdown-importer', __('Synchronization', 'kb-markdown-importer'), __('Synchronization', 'kb-markdown-importer'), 'sync_kb_docs', 'kb-markdown-sync', [SyncPage::class, 'render']);
add_submenu_page('kb-markdown-importer', __('Settings', 'kb-markdown-importer'), __('Settings', 'kb-markdown-importer'), 'manage_kb_docs', 'kb-markdown-settings', [SettingsPage::class, 'render']);
}
public function registerRestRoutes(): void
{
register_rest_route('kb-antora/v1', '/status', [
register_rest_route('kb-markdown/v1', '/status', [
'methods' => 'GET',
'callback' => [StatusPage::class, 'restStatus'],
'permission_callback' => static fn (): bool => current_user_can('manage_kb_docs'),
]);
register_rest_route('kb-antora/v1', '/sync', [
register_rest_route('kb-markdown/v1', '/sync', [
'methods' => 'POST',
'callback' => static fn (\WP_REST_Request $request): \WP_REST_Response => (new ImportManager())->syncAll((bool) $request->get_param('dry_run')),
'permission_callback' => static fn (): bool => current_user_can('sync_kb_docs'),
]);
register_rest_route('kb-antora/v1', '/sync/project', [
register_rest_route('kb-markdown/v1', '/sync/project', [
'methods' => 'POST',
'callback' => static fn (\WP_REST_Request $request): \WP_REST_Response => (new ImportManager())->syncProject((string) $request->get_param('project_id'), (bool) $request->get_param('dry_run')),
'permission_callback' => static fn (): bool => current_user_can('sync_kb_docs'),
]);
register_rest_route('kb-antora/v1', '/search', [
register_rest_route('kb-markdown/v1', '/search', [
'methods' => 'GET',
'callback' => [SearchController::class, 'restSearch'],
'permission_callback' => '__return_true',
]);
register_rest_route('kb-antora/v1', '/gitlab-webhook', [
register_rest_route('kb-markdown/v1', '/gitlab-webhook', [
'methods' => 'POST',
'callback' => static fn (): \WP_REST_Response => new \WP_REST_Response(['queued' => false, 'message' => 'Webhook endpoint is reserved for a later event-driven sync implementation.']),
'permission_callback' => static fn (): bool => current_user_can('sync_kb_docs'),
@@ -164,9 +166,9 @@ final class Plugin
public function addCronSchedules(array $schedules): array
{
$schedules['kb_antora_weekly'] = [
$schedules['kb_markdown_weekly'] = [
'interval' => WEEK_IN_SECONDS,
'display' => __('Weekly', 'kb-antora-importer'),
'display' => __('Weekly', 'kb-markdown-importer'),
];
return $schedules;
@@ -179,19 +181,58 @@ final class Plugin
public function enqueueFrontendAssets(): void
{
wp_enqueue_style('kb-antora-frontend', KB_ANTORA_IMPORTER_URL . 'assets/css/frontend.css', [], KB_ANTORA_IMPORTER_VERSION);
wp_enqueue_script('kb-antora-frontend', KB_ANTORA_IMPORTER_URL . 'assets/js/frontend.js', [], KB_ANTORA_IMPORTER_VERSION, true);
$settings = self::settings();
wp_enqueue_style('kb-markdown-frontend', KB_MARKDOWN_IMPORTER_URL . 'assets/css/frontend.css', [], KB_MARKDOWN_IMPORTER_VERSION);
$designHandle = 'kb-markdown-frontend';
if ('obyte' === $settings['design_theme']) {
wp_enqueue_style('kb-markdown-theme-obyte', KB_MARKDOWN_IMPORTER_URL . 'assets/css/themes/obyte.css', ['kb-markdown-frontend'], KB_MARKDOWN_IMPORTER_VERSION);
$designHandle = 'kb-markdown-theme-obyte';
}
if (! empty($settings['custom_theme_css_url'])) {
wp_enqueue_style('kb-markdown-custom-theme', esc_url_raw((string) $settings['custom_theme_css_url']), [$designHandle], KB_MARKDOWN_IMPORTER_VERSION);
$designHandle = 'kb-markdown-custom-theme';
}
$inlineCss = sprintf(
'.kb-docs-wrap{--kb-accent:%1$s;--kb-radius:%2$dpx;} .kb-docs-wrap{--kb-primary:%1$s;--kb-ob-accent:%3$s;}',
esc_html((string) $settings['design_primary_color']),
max(0, min(32, (int) $settings['design_radius'])),
esc_html((string) $settings['design_accent_color'])
);
wp_add_inline_style($designHandle, $inlineCss);
wp_enqueue_script('kb-markdown-frontend', KB_MARKDOWN_IMPORTER_URL . 'assets/js/frontend.js', [], KB_MARKDOWN_IMPORTER_VERSION, true);
}
public function enqueueAdminAssets(string $hook): void
{
if (! str_contains($hook, 'kb-markdown-settings')) {
return;
}
wp_enqueue_media();
wp_enqueue_script('kb-markdown-admin-settings', KB_MARKDOWN_IMPORTER_URL . 'assets/js/admin-settings.js', ['jquery'], KB_MARKDOWN_IMPORTER_VERSION, true);
}
public function allowCssUploads(array $mimes): array
{
if (current_user_can('manage_kb_docs')) {
$mimes['css'] = 'text/css';
}
return $mimes;
}
public static function settings(): array
{
return wp_parse_args((array) get_option('kb_antora_importer_settings', []), Settings::defaults());
return wp_parse_args((array) get_option('kb_markdown_importer_settings', []), Settings::defaults());
}
public static function syncCronSchedule(?array $settings = null): void
{
$settings = $settings ?: self::settings();
wp_clear_scheduled_hook('kb_antora_importer_cron_sync');
wp_clear_scheduled_hook('kb_markdown_importer_cron_sync');
if ('disabled' === $settings['cron_interval']) {
return;
@@ -200,19 +241,19 @@ final class Plugin
$schedule = match ($settings['cron_interval']) {
'hourly' => 'hourly',
'daily' => 'daily',
'weekly' => 'kb_antora_weekly',
'weekly' => 'kb_markdown_weekly',
default => '',
};
if ($schedule && ! wp_next_scheduled('kb_antora_importer_cron_sync')) {
wp_schedule_event(time() + HOUR_IN_SECONDS, $schedule, 'kb_antora_importer_cron_sync');
if ($schedule && ! wp_next_scheduled('kb_markdown_importer_cron_sync')) {
wp_schedule_event(time() + HOUR_IN_SECONDS, $schedule, 'kb_markdown_importer_cron_sync');
}
}
private static function ensureDefaultSettings(): void
{
if (false === get_option('kb_antora_importer_settings', false)) {
add_option('kb_antora_importer_settings', Settings::defaults(), '', false);
if (false === get_option('kb_markdown_importer_settings', false)) {
add_option('kb_markdown_importer_settings', Settings::defaults(), '', false);
}
}

View File

@@ -1,9 +1,9 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Repository;
namespace KbMarkdownImporter\Repository;
use KbAntoraImporter\Import\ImportLogger;
use KbMarkdownImporter\Import\ImportLogger;
final class PageRepository
{
@@ -26,7 +26,7 @@ final class PageRepository
'value' => $branch,
],
[
'key' => '_kb_antora_source_path',
'key' => '_kb_markdown_source_path',
'value' => $sourcePath,
],
],
@@ -79,12 +79,12 @@ final class PageRepository
'_kb_gitlab_project_path' => $data['project_path'],
'_kb_gitlab_branch' => $data['branch'],
'_kb_gitlab_commit_sha' => $data['commit_sha'],
'_kb_antora_component' => $data['component'],
'_kb_antora_component_title' => $data['component_title'],
'_kb_antora_version' => $data['version'],
'_kb_antora_module' => $data['module'],
'_kb_antora_page_path' => $data['page_path'],
'_kb_antora_source_path' => $data['source_path'],
'_kb_markdown_component' => $data['component'],
'_kb_markdown_component_title' => $data['component_title'],
'_kb_markdown_version' => $data['version'],
'_kb_markdown_module' => $data['module'],
'_kb_markdown_page_path' => $data['page_path'],
'_kb_markdown_source_path' => $data['source_path'],
'_kb_page_checksum' => $data['checksum'],
'_kb_last_imported_at' => current_time('mysql'),
'_kb_nav_order' => (string) $data['nav_order'],

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Repository;
namespace KbMarkdownImporter\Repository;
final class ProductRepository
{

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Repository;
namespace KbMarkdownImporter\Repository;
final class VersionRepository
{

View File

@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter;
namespace KbMarkdownImporter;
final class Settings
{
@@ -13,12 +13,15 @@ final class Settings
'gitlab_group' => 'knowledgebase',
'branch_pattern' => '^v.*',
'docs_base_slug' => 'docs',
'renderer_mode' => 'php',
'asciidoctor_path' => 'asciidoctor',
'image_lightbox' => '1',
'public_docs' => '0',
'cron_interval' => 'disabled',
'allow_svg' => '0',
'design_theme' => 'obyte',
'design_primary_color' => '#00A7E6',
'design_accent_color' => '#F59C00',
'design_radius' => '14',
'custom_theme_css_url' => '',
];
}
}

View File

@@ -0,0 +1,42 @@
<?php
/**
* Plugin Name: KB Markdown Importer
* Description: Imports GitLab based Markdown documentation into WordPress as a versioned knowledgebase.
* Version: 0.1.0
* Requires PHP: 8.1
* Author: Codex
* Text Domain: kb-markdown-importer
*/
declare(strict_types=1);
if (! defined('ABSPATH')) {
exit;
}
define('KB_MARKDOWN_IMPORTER_VERSION', '0.1.0');
define('KB_MARKDOWN_IMPORTER_FILE', __FILE__);
define('KB_MARKDOWN_IMPORTER_DIR', plugin_dir_path(__FILE__));
define('KB_MARKDOWN_IMPORTER_URL', plugin_dir_url(__FILE__));
spl_autoload_register(static function (string $class): void {
$prefix = 'KbMarkdownImporter\\';
if (0 !== strncmp($class, $prefix, strlen($prefix))) {
return;
}
$relative = substr($class, strlen($prefix));
$path = KB_MARKDOWN_IMPORTER_DIR . 'includes/' . str_replace('\\', '/', $relative) . '.php';
if (is_readable($path)) {
require_once $path;
}
});
register_activation_hook(__FILE__, [KbMarkdownImporter\Plugin::class, 'activate']);
register_deactivation_hook(__FILE__, [KbMarkdownImporter\Plugin::class, 'deactivate']);
add_action('plugins_loaded', static function (): void {
KbMarkdownImporter\Plugin::instance()->boot();
});

View File

@@ -0,0 +1,38 @@
# KB Markdown Importer
WordPress plugin for importing GitLab based Markdown documentation into a versioned customer portal knowledgebase.
## Expected GitLab project structure
Each product has one GitLab project. Each documentation version is represented by a branch, for example `v1.0.0`, `v1.1.0` or `v2.0.0`.
```text
doku.md
stepbystep.md
faq.md
doku.yml
images/
screenshot.png
```
Required:
- `doku.md`
- `stepbystep.md`
- `images/`
Optional:
- `faq.md`
- `doku.yml` for title, version and navigation order
## Features
- GitLab settings and connection test in the WordPress admin.
- Custom post type `kb_doc_page`.
- Taxonomies for products, versions and components.
- Manual GitLab sync for projects, version branches, Markdown pages and images.
- WordPress-native Markdown rendering with internal `.md` link rewriting.
- Frontend routes under `/docs/`.
- Shortcodes: `[kb_docs]`, `[kb_docs_index]`, `[kb_product_index product="..."]`, `[kb_search]`.
- Import logs without exposing secrets.

View File

@@ -2,7 +2,7 @@
defined('ABSPATH') || exit;
?>
<main class="kb-docs-wrap">
<h1><?php esc_html_e('Knowledgebase', 'kb-antora-importer'); ?></h1>
<h1><?php esc_html_e('Knowledgebase', 'kb-markdown-importer'); ?></h1>
<?php echo do_shortcode('[kb_search]'); ?>
<div class="kb-product-list">
<?php foreach ((array) $products as $item) : ?>

View File

@@ -1,7 +1,7 @@
<?php
defined('ABSPATH') || exit;
$render_nav = static function (array $nodes) use (&$render_nav, $base_slug, $product_slug, $version_slug): void {
$render_nav = static function (array $nodes) use (&$render_nav, $base_slug, $product_slug, $version_slug, $url_builder): void {
if (! $nodes) {
return;
}
@@ -13,8 +13,8 @@ $render_nav = static function (array $nodes) use (&$render_nav, $base_slug, $pro
$href = '';
if ($target) {
$slug = preg_replace('/\.adoc(#.+)?$/', '', basename($target)) ?: basename($target);
$slug = 'index' === $slug ? '' : sanitize_title($slug);
$slug = preg_replace('/\.md(#.+)?$/', '', basename($target)) ?: basename($target);
$slug = in_array(strtolower($slug), ['doku', 'index'], true) ? '' : sanitize_title($slug);
$href = $url_builder::page($product_slug, $version_slug, $slug);
}
@@ -32,25 +32,28 @@ $render_nav = static function (array $nodes) use (&$render_nav, $base_slug, $pro
?>
<main class="kb-docs-wrap kb-doc-layout">
<aside class="kb-sidebar">
<label class="screen-reader-text" for="kb-version-switcher"><?php esc_html_e('Version', 'kb-antora-importer'); ?></label>
<label class="screen-reader-text" for="kb-version-switcher"><?php esc_html_e('Version', 'kb-markdown-importer'); ?></label>
<select id="kb-version-switcher">
<?php foreach ((array) $versions as $item) : ?>
<option value="<?php echo esc_attr($item->slug); ?>" data-url="<?php echo esc_url($url_builder::version($product_slug, $item->slug)); ?>" <?php selected($item->slug, $version_slug); ?>><?php echo esc_html($item->name); ?></option>
<?php endforeach; ?>
</select>
<nav class="kb-sidebar-nav" aria-label="<?php esc_attr_e('Documentation navigation', 'kb-antora-importer'); ?>">
<nav class="kb-sidebar-nav" aria-label="<?php esc_attr_e('Documentation navigation', 'kb-markdown-importer'); ?>">
<?php $render_nav((array) $nav_tree); ?>
</nav>
</aside>
<article class="kb-doc-content">
<nav class="kb-breadcrumbs">
<a href="<?php echo esc_url($url_builder::docsIndex()); ?>"><?php esc_html_e('Docs', 'kb-antora-importer'); ?></a><span>/</span>
<a href="<?php echo esc_url($url_builder::docsIndex()); ?>"><?php esc_html_e('Docs', 'kb-markdown-importer'); ?></a><span>/</span>
<a href="<?php echo esc_url($url_builder::product($product_slug)); ?>"><?php echo esc_html($product ? $product->name : $product_slug); ?></a><span>/</span>
<a href="<?php echo esc_url($url_builder::version($product_slug, $version_slug)); ?>"><?php echo esc_html($version ? $version->name : $version_slug); ?></a>
</nav>
<h1><?php echo esc_html(get_the_title($post)); ?></h1>
<div class="kb-rendered-content">
<?php echo wp_kses_post($url_builder::rewriteHtml(apply_filters('the_content', $post->post_content))); ?>
<?php
$rendered_content = $url_builder::rewriteHtml(apply_filters('the_content', $post->post_content));
echo wp_kses_post($rendered_content);
?>
</div>
</article>
</main>

View File

@@ -2,14 +2,14 @@
defined('ABSPATH') || exit;
?>
<main class="kb-docs-wrap">
<nav class="kb-breadcrumbs"><a href="<?php echo esc_url($url_builder::docsIndex()); ?>"><?php esc_html_e('Docs', 'kb-antora-importer'); ?></a><span>/</span><?php echo esc_html($product->name); ?></nav>
<nav class="kb-breadcrumbs"><a href="<?php echo esc_url($url_builder::docsIndex()); ?>"><?php esc_html_e('Docs', 'kb-markdown-importer'); ?></a><span>/</span><?php echo esc_html($product->name); ?></nav>
<h1><?php echo esc_html($product->name); ?></h1>
<h2><?php esc_html_e('Available Versions', 'kb-antora-importer'); ?></h2>
<h2><?php esc_html_e('Available Versions', 'kb-markdown-importer'); ?></h2>
<ul class="kb-version-list">
<?php foreach ((array) $versions as $index => $version) : ?>
<li>
<a href="<?php echo esc_url($url_builder::version($product->slug, $version->slug)); ?>"><?php echo esc_html($version->name); ?></a>
<?php if (0 === $index) : ?><span class="kb-current-version"><?php esc_html_e('current', 'kb-antora-importer'); ?></span><?php endif; ?>
<?php if (0 === $index) : ?><span class="kb-current-version"><?php esc_html_e('current', 'kb-markdown-importer'); ?></span><?php endif; ?>
</li>
<?php endforeach; ?>
</ul>

View File

@@ -2,10 +2,10 @@
defined('ABSPATH') || exit;
?>
<section class="kb-search">
<h2><?php echo esc_html($title ?? __('Search Documentation', 'kb-antora-importer')); ?></h2>
<h2><?php echo esc_html($title ?? __('Search Documentation', 'kb-markdown-importer')); ?></h2>
<form method="get" class="kb-search-form">
<input type="search" name="kbq" value="<?php echo esc_attr($query ?? ''); ?>" placeholder="<?php esc_attr_e('Search documentation', 'kb-antora-importer'); ?>">
<button type="submit"><?php esc_html_e('Search', 'kb-antora-importer'); ?></button>
<input type="search" name="kbq" value="<?php echo esc_attr($query ?? ''); ?>" placeholder="<?php esc_attr_e('Search documentation', 'kb-markdown-importer'); ?>">
<button type="submit"><?php esc_html_e('Search', 'kb-markdown-importer'); ?></button>
</form>
<?php if (! empty($results)) : ?>
<ul class="kb-search-results">
@@ -14,7 +14,7 @@ defined('ABSPATH') || exit;
$product = get_post_meta($result->ID, '_kb_product_slug', true);
$version = get_post_meta($result->ID, '_kb_version_slug', true);
$page = get_post_meta($result->ID, '_kb_page_slug', true);
$url = \KbAntoraImporter\Frontend\UrlBuilder::page((string) $product, (string) $version, (string) $page);
$url = \KbMarkdownImporter\Frontend\UrlBuilder::page((string) $product, (string) $version, (string) $page);
?>
<li>
<a href="<?php echo esc_url($url); ?>"><?php echo esc_html(get_the_title($result)); ?></a>

View File

@@ -3,7 +3,7 @@ defined('ABSPATH') || exit;
?>
<main class="kb-docs-wrap">
<nav class="kb-breadcrumbs">
<a href="<?php echo esc_url($url_builder::docsIndex()); ?>"><?php esc_html_e('Docs', 'kb-antora-importer'); ?></a><span>/</span>
<a href="<?php echo esc_url($url_builder::docsIndex()); ?>"><?php esc_html_e('Docs', 'kb-markdown-importer'); ?></a><span>/</span>
<a href="<?php echo esc_url($url_builder::product($product->slug)); ?>"><?php echo esc_html($product->name); ?></a><span>/</span>
<?php echo esc_html($version->name); ?>
</nav>

View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
if (! defined('WP_UNINSTALL_PLUGIN')) {
exit;
}
delete_option('kb_markdown_importer_settings');
delete_option('kb_markdown_importer_logs');
delete_option('kb_markdown_importer_last_sync');
delete_option('kb_markdown_importer_last_error');

View File

@@ -0,0 +1,37 @@
# Markdown-Dokumentationsprojekt
Dieses Beispiel zeigt die Zielstruktur fuer neue Produktdokumentationen.
Jede Produktdokumentation liegt in einem eigenen GitLab-Projekt. Versionen werden weiterhin ueber Branches gepflegt, zum Beispiel `v1.0.0`, `v1.1.0` oder `v2.0.0`.
## Pflichtstruktur
```text
doku.md
stepbystep.md
images/
```
## Empfohlene Struktur
```text
doku.md
stepbystep.md
faq.md
doku.yml
images/
produktbild.png
sf_tab1.png
allgemein.png
konfiguration.png
```
## Schreibregeln
- `doku.md` ist die Startseite und beschreibt Produkt, Nutzen, Voraussetzungen, Download und Versionshinweise.
- `stepbystep.md` enthaelt immer die konkrete Einrichtung und Konfiguration.
- `faq.md` ist optional, aber empfohlen, sobald wiederkehrende Supportfragen entstehen.
- Bilder liegen immer unter `images/` und werden relativ verlinkt, zum Beispiel `![Allgemein](images/allgemein.png)`.
- Hinweise werden als Blockquote geschrieben: `> **Hinweis:** ...`
- Kritische Punkte werden als Blockquote geschrieben: `> **Warnung:** ...`
- Im Konfigurationsbereich wird die imperative Form verwendet, ohne direktes "Du".

View File

@@ -0,0 +1,108 @@
# Testdoku
Dokumentation fuer Modulversion **X.X.X vXXX** ab **STARFACE 9.0.0.0**.
## Produktbeschreibung
Beschreibe hier das Modul in neutraler Form. Der Text kann perspektivisch aus SAP oder aus vertrieblichem Input uebernommen werden.
- Produktbeschreibung und vertrieblicher Nutzen
- Wichtige Einsatzbereiche
- Verweis auf den Shop oder die Produktseite
- Produktbild, falls vorhanden
![Produktbild](images/produktbild.png)
## Anwendungsbeispiel
Beschreibe hier, wofuer das Modul in der Praxis verwendet wird. Bei fachlichen Unklarheiten sollte das Beispiel mit Entwicklung, Vertrieb oder Support abgestimmt werden.
## Technische Voraussetzungen
- **Ab STARFACE 9.0.0.0**
- Fuer dieses Modul stehen Legacy-Versionen ab STARFACE 7.0.0.2 zur Verfuegung.
- Cloud-Anforderungen, zum Beispiel SSH-Tunnel
- Anforderungen an Drittsysteme oder Anbieter
- Optionale Anforderungen fuer bestimmte Funktionen
- Anforderungen an Hardware
- Getestet mit Version X einer externen Software oder API
## Technische Limitierungen
Dieser Abschnitt ist optional und wird bei Bedarf in Abstimmung mit Entwicklung, Vertrieb und Support eingefuegt.
- Maximale Importanzahl
- API-Limits
- Bekannte Einschraenkungen durch Drittsysteme
## Vertriebsmodelle
- Kauf inklusive SPV
- Managed Service
- Weitere Modelle
## Modulvarianten
Dieser Abschnitt ist optional und beschreibt Varianten fuer verschiedene Drittsysteme, zum Beispiel Google, XML-Monitoring oder andere Anbieter.
## Einrichtung und Konfiguration
Die konkrete Einrichtung ist in der Schritt-fuer-Schritt-Anleitung beschrieben:
[Zur Schritt-fuer-Schritt-Anleitung](stepbystep.md)
## Bekannte Probleme
- Bei diesem Modul liegen keine bekannten Probleme vor.
- Problem entdeckt? Schicke eine E-Mail an [support@o-byte.com](mailto:support@o-byte.com), um Fehler zu melden.
Alternativ koennen bekannte Probleme so dokumentiert werden:
### Problem 1
Beschreibe hier das Problem.
**Loesung:** Beschreibe hier die Loesung oder den Workaround.
## Versionshinweis
### X.X.X
**Bugfix**
- Welcher Fehler wurde behoben?
**Neue Funktion**
- Welche neue Funktion wurde eingebaut?
> **Hinweis:** Wenn ein Bugfix ein bekanntes Problem behebt, den Abschnitt "Bekannte Probleme" ebenfalls aktualisieren.
## Download
### Modul ohne Testzeitraum
Fuer dieses Modul steht kein Testzeitraum von 14 Tagen zur Verfuegung. Das Modul wird erst mit Kauf aktiv. Unser Vertriebsteam hilft gerne weiter unter [vertrieb@o-byte.com](mailto:vertrieb@o-byte.com).
Bitte achte beim Download auf die Kompatibilitaet zur STARFACE-Version.
Mit Klick auf den Downloadlink einer Modulversion oeffnen sich ein Fenster mit Installationshinweisen und ein Pop-up-Fenster.
[Zum Download](https://get.o-byte.com/?olm=olm-)
### Modul mit Testzeitraum
- Wir stellen unser Modul 14 Tage kostenfrei zum Testen zur Verfuegung.
- Nach dem Kauf oder Update: Mit E-Mail-Adresse verifizieren.
- Fuer die Inbetriebnahme oder das Update ist kein Lizenzschluessel noetig.
- Wir stellen das Modul als `.sfm` Datei zur Verfuegung.
Bitte achte beim Download auf die Kompatibilitaet zur STARFACE-Version.
Mit Klick auf den Downloadlink einer Modulversion oeffnen sich ein Fenster mit Installationshinweisen und ein Pop-up-Fenster.
- Kostenfreies Modul laden: Trage die E-Mail-Adresse ein, stimme der Datenschutzbestimmung zu und klicke auf "Download". Der Downloadlink wird per Mail zur Verfuegung gestellt.
- Nach dem Kauf oder Update: Mit E-Mail-Adresse verifizieren. Fuer die Inbetriebnahme oder das Update ist kein Lizenzschluessel noetig.
- Wir stellen das Modul als `.sfm` Datei zur Verfuegung.
[Zum Download](https://get.o-byte.com/?olm=olm-)

View File

@@ -0,0 +1,13 @@
title: Testdoku
version: X.X.X
revision: vXXX
starface: "ab STARFACE 9.0.0.0"
date: 2025-01-01
start: doku.md
nav:
- title: Uebersicht
file: doku.md
- title: Schritt fuer Schritt
file: stepbystep.md
- title: FAQ
file: faq.md

View File

@@ -0,0 +1,15 @@
# FAQ
Diese Seite ist optional, aber empfohlen, sobald wiederkehrende Supportfragen entstehen.
## Frage 1
Antwort auf die erste haeufig gestellte Frage.
## Frage 2
Antwort auf die zweite haeufig gestellte Frage.
## Wann soll ein FAQ-Eintrag angelegt werden?
Ein FAQ-Eintrag ist sinnvoll, wenn mehrere Supportanfragen zum gleichen Thema entstehen oder eine Konfigurationsentscheidung erfahrungsgemaess erklaert werden muss.

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,81 @@
# Schritt-fuer-Schritt-Anleitung
Diese Seite beschreibt die konkrete Einrichtung und Konfiguration des Moduls.
Im Konfigurationsbereich wird die imperative Form verwendet. Ein direktes "Du" wird vermieden. Wenn der Nutzer nicht direkt angesprochen wird, wird die neutrale Form verwendet.
## Vorbereitung der IT-Umgebung
- Infrastruktur fuer den Betrieb des Moduls aufsetzen und konfigurieren.
- Falls noetig, Voraussetzungen in Partnersystemen herstellen.
- Zugangsdaten, API-Schluessel oder Netzwerkfreigaben vorbereiten.
## Konfiguration der Drittsysteme
Beschreibe hier, welche Einstellungen in Drittsystemen vorgenommen werden muessen.
- Einstellung 1
- Einstellung 2
- Einstellung 3
## STARFACE-Konfiguration
### Menuepunkt
#### Tab
![STARFACE Tab](images/sf_tab1.png)
> **Bildkonvention:** Dateiname = Tab-Ueberschrift. Bei STARFACE-Konfigurationen wird das Praefix `sf_` verwendet.
##### Unterpunkt
- Einstellungen beschreiben, die an der STARFACE selbst vorgenommen werden, zum Beispiel am STARFACE-internen Adressbuch oder am Netzwerk.
- Wenn keine STARFACE-Konfiguration erforderlich ist: "Es muss vorab keine Konfiguration in der STARFACE vorgenommen werden."
## Modulkonfiguration
### Allgemein
![Allgemein](images/allgemein.png)
> **Bildkonvention:** Dateiname = Tab-Ueberschrift.
#### Name
Waehle hier den Namen der Modulinstanz. Dieser Name sollte moeglichst beschreibend vergeben werden. Ein guter Ausgangspunkt ist der Name des Moduls. Sollen mehrere Instanzen desselben Moduls aktiv sein, muss fuer jede Instanz ein einmaliger Name vergeben werden.
#### Beschreibung
Dieses Feld bietet Raum fuer eine detailliertere Dokumentation der Instanz. Hier kann beispielsweise dokumentiert werden, auf welche Nutzer oder Gruppen das Modul zugreift.
#### Logdatei
Jedes Modul informiert in den Levels `ERROR`, `WARN`, `INFO`, `DEBUG` und `TRACE` in verschiedenen Abstufungen ueber Prozesse, die im Modulbetrieb ablaufen. Falls ein Fehler auftritt, besteht hier die Moeglichkeit, die Logdatei zu speichern. Standardeinstellung ist das Level `INFO`.
> **Hinweis:** Das Log aktualisiert sich nicht automatisch, sondern nur, wenn die entsprechende Schaltflaeche betaetigt wird.
### Konfiguration
![Konfiguration](images/konfiguration.png)
#### Unterpunkt in Tab
##### Auf einzelne Punkte eingehen
Beschreibe hier die konkrete Einstellung.
> **Hinweis:** In den meisten Faellen werden Rufnummern in das Format `00492515906850` normalisiert. In Ausnahmefaellen koennen aber auch Formate wie `+492515906850` oder `02515906850` signalisiert werden. Daher wird grundsaetzlich die Verwendung von Wildcards bei der Quellrufnummer empfohlen, zum Beispiel `*2515906850`.
##### Legende
- `?` - Platzhalter fuer eine Ziffer
- `*` - Platzhalter fuer eine, mehrere oder keine Ziffern
## Abschlusspruefung
- Modulinstanz speichern.
- Modul aktivieren.
- Funktion mit einem realistischen Szenario testen.
- Logdatei pruefen.
- Dokumentierte Voraussetzungen und bekannte Probleme gegenpruefen.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Logo_Dark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 933.48 192.8">
<defs>
<style>
.cls-1 {
fill: #fff;
}
.cls-2 {
fill: #15a5e4;
}
</style>
</defs>
<g>
<polygon class="cls-1" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="cls-1" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="cls-1" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="cls-1" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="cls-1" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="cls-1" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="cls-1" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="cls-1" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="cls-1" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="cls-1" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="cls-1" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="cls-1" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="cls-1" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="cls-1" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="cls-1" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="cls-1" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="cls-1" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="cls-1" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="cls-1" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="cls-1" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="cls-1" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="cls-1" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="cls-1" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="cls-1" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="cls-1" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="cls-1" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="cls-1" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="cls-1" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="cls-1" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="cls-1" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="cls-2" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 901.53 179.95">
<!-- Generator: Adobe Illustrator 29.8.5, SVG Export Plug-In . SVG Version: 2.1.1 Build 2) -->
<defs>
<style>
.st0 {
fill: #fff;
}
.st1 {
fill: #15a5e4;
}
.st2 {
display: none;
}
.st3 {
fill: #222221;
}
</style>
</defs>
<g id="Logo_x5F_light" class="st2">
<g>
<polygon class="st3" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="st3" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st3" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="st3" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st3" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="st3" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st3" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st3" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st3" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st3" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st3" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="st3" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="st3" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="st3" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st3" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="st3" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="st3" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="st3" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st3" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st3" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st3" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st3" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st3" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st3" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st3" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st3" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st3" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st3" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st3" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st3" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
<g id="Logo_x5F_Dark">
<path class="st0" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st0" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st0" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st0" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
<rect class="st1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
<g id="Weiß" class="st2">
<g>
<polygon class="st0" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="st0" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="st0" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="st0" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st0" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st0" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="st0" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="st0" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="st0" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st0" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="st0" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="st0" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="st0" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st0" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st0" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st0" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st0" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st0" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st0" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st0" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Logo_light" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 933.48 192.8">
<defs>
<style>
.cls-1 {
fill: #15a5e4;
}
.cls-2 {
fill: #222221;
}
</style>
</defs>
<g>
<polygon class="cls-2" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="cls-2" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="cls-2" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="cls-2" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="cls-2" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="cls-2" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="cls-2" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="cls-2" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="cls-2" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="cls-2" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="cls-2" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="cls-2" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="cls-2" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="cls-2" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="cls-2" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="cls-2" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="cls-2" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="cls-2" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="cls-2" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="cls-2" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="cls-2" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="cls-2" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="cls-2" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="cls-2" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="cls-2" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="cls-2" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="cls-2" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="cls-2" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="cls-2" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="cls-2" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="cls-1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 901.53 179.95">
<!-- Generator: Adobe Illustrator 29.8.5, SVG Export Plug-In . SVG Version: 2.1.1 Build 2) -->
<defs>
<style>
.st0 {
fill: #fff;
}
.st1 {
fill: #15a5e4;
}
.st2 {
display: none;
}
.st3 {
fill: #222221;
}
</style>
</defs>
<g id="Logo_x5F_light">
<path class="st3" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st3" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st3" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st3" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st3" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st3" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st3" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st3" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st3" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
<rect class="st1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
<g id="Logo_x5F_Dark" class="st2">
<g>
<polygon class="st0" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="st0" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="st0" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="st0" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st0" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st0" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="st0" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="st0" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="st0" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st0" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="st0" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="st0" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="st0" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st0" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st0" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st0" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st0" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st0" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st0" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
<g id="Weiß" class="st2">
<g>
<polygon class="st0" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="st0" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="st0" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="st0" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st0" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st0" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="st0" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="st0" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="st0" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st0" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="st0" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="st0" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="st0" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st0" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st0" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st0" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st0" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st0" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st0" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st0" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 901.69 250.97">
<!-- Generator: Adobe Illustrator 29.8.5, SVG Export Plug-In . SVG Version: 2.1.1 Build 2) -->
<defs>
<style>
.st0 {
fill: #fff;
}
.st1 {
fill: #15a5e4;
}
.st2 {
display: none;
}
.st3 {
fill: #222221;
}
</style>
</defs>
<g id="Logo_x5F_light">
<path class="st3" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st3" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st3" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st3" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st3" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st3" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st3" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st3" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st3" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
<rect class="st1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
<g>
<path class="st3" d="M580.97,249.36v-91.69h22.7c10.34,0,17.78,1.2,22.33,3.6.41.17.79.37,1.12.62,7.44,4.55,11.54,11.62,12.28,21.22.08.91.12,1.86.12,2.85,0,8.93-2.73,16.09-8.19,21.46-1.24,1.16-2.52,2.15-3.85,2.98-4.05,2.48-10.38,3.85-18.98,4.09h-10.55v34.86h-17ZM597.97,198.24h4.96c6.62,0,11.25-.7,13.9-2.11,3.72-2.07,5.58-5.38,5.58-9.93,0-5.29-2.07-8.89-6.21-10.79-.58-.25-1.16-.45-1.74-.62-2.56-.58-6.16-.87-10.79-.87h-5.71v24.32Z"/>
<path class="st3" d="M679.61,179.01c10.75,0,19.68,3.76,26.8,11.29,6.62,6.95,9.93,15.34,9.93,25.19s-3.64,18.03-10.92,25.06c-7.2,6.95-15.76,10.42-25.68,10.42s-18.86-3.6-26.05-10.79c-6.95-7.03-10.42-15.42-10.42-25.19s3.64-18.53,10.92-25.56c7.11-6.95,15.59-10.42,25.43-10.42ZM679.73,194.15c-6.2,0-11.33,2.52-15.38,7.57-2.98,3.81-4.47,8.15-4.47,13.03,0,7.03,2.61,12.66,7.82,16.87,3.56,2.81,7.61,4.22,12.16,4.22,6.37,0,11.54-2.61,15.51-7.82,2.89-3.8,4.34-8.15,4.34-13.03,0-6.7-2.52-12.16-7.57-16.38-3.64-2.98-7.78-4.47-12.41-4.47Z"/>
<path class="st3" d="M725.64,249.36v-68.74h15.14v6.7c2.98-4.38,6.2-6.99,9.68-7.82,1.41-.33,3.14-.5,5.21-.5h1.24v15.88c-9.84.25-14.76,5.67-14.76,16.25v38.21h-16.5Z"/>
<path class="st3" d="M769.56,249.36v-53.72h-8.07v-15.01h8.07v-22.95h16.5v22.95h9.93v15.01h-9.93v53.72h-16.5Z"/>
<path class="st3" d="M872.91,180.62v68.74h-15.14v-8.93c-5.46,6.2-11.83,9.68-19.11,10.42-1.16.08-2.4.12-3.72.12-10.84,0-19.56-3.85-26.18-11.54-5.63-6.62-8.44-14.68-8.44-24.19,0-11.41,3.8-20.6,11.42-27.54,6.45-5.79,14.31-8.68,23.57-8.68s16.17,3.14,21.46,9.43c.33.42.66.87.99,1.36v-9.18h15.14ZM837.05,194.15c-7.28,0-12.78,2.9-16.5,8.68-2.4,3.64-3.6,7.9-3.6,12.78,0,7.69,2.89,13.36,8.69,17,3.31,2.15,7.2,3.23,11.66,3.23,6.53,0,11.54-2.07,15.01-6.2,3.06-4.13,4.71-8.85,4.96-14.14,0-7.86-2.81-13.77-8.44-17.74-3.39-2.4-7.32-3.6-11.79-3.6Z"/>
<path class="st3" d="M885.19,249.36v-91.69h16.5v91.69h-16.5Z"/>
</g>
</g>
<g id="Logo_x5F_Dark" class="st2">
<g>
<polygon class="st0" points="395.24 164.36 391.39 164.36 391.39 174.35 385.46 174.35 385.46 177.83 391.39 177.83 391.39 202.79 395.24 202.79 395.24 177.83 401.84 177.83 401.84 174.35 395.24 174.35 395.24 164.36 395.24 164.36"/>
<path class="st0" d="M408.08,186.46c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM433.12,184.3c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="438.71 202.79 442.56 202.79 442.56 164.36 438.71 164.36 438.71 202.79 438.71 202.79"/>
<path class="st0" d="M451.45,186.46c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.48,184.3c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="503.91 174.35 498.97 174.35 485.92 191.35 485.92 164.36 482.07 164.36 482.07 202.79 485.92 202.79 485.92 197.38 490.45 191.56 499.7 202.79 504.64 202.79 492.89 188.59 503.91 174.35 503.91 174.35"/>
<path class="st0" d="M529.45,196.44c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM521.59,173.72v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M580.98,178.09c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M629.34,178.09c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M659.34,189.43c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st0" d="M691.89,178.51c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st0" points="700.63 170.91 704.48 170.91 704.48 164.36 700.63 164.36 700.63 170.91 700.63 170.91"/>
<polygon class="st0" points="700.63 202.79 704.48 202.79 704.48 174.35 700.63 174.35 700.63 202.79 700.63 202.79"/>
<polygon class="st0" points="732.45 174.35 727.51 174.35 714.46 191.35 714.46 164.36 710.61 164.36 710.61 202.79 714.46 202.79 714.46 197.38 718.98 191.56 728.24 202.79 733.18 202.79 721.43 188.59 732.45 174.35 732.45 174.35"/>
<path class="st0" d="M758.3,196.52c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM761.57,179.75l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st0" points="778.52 164.36 774.67 164.36 774.67 174.35 768.75 174.35 768.75 177.83 774.67 177.83 774.67 202.79 778.52 202.79 778.52 177.83 785.13 177.83 785.13 174.35 778.52 174.35 778.52 164.36 778.52 164.36"/>
<polygon class="st0" points="788.61 202.79 792.46 202.79 792.46 174.35 788.61 174.35 788.61 202.79 788.61 202.79"/>
<polygon class="st0" points="788.61 170.91 792.46 170.91 792.46 164.36 788.61 164.36 788.61 170.91 788.61 170.91"/>
<path class="st0" d="M820.28,196.44c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM812.43,173.72v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M854.81,178.51c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st0" d="M678.76,110.53c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M729.4,115.4c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM740.53,156.14c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M836.67,98.73c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M36.24,124.69c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM13.88,43.13c-15.85,0-29.35,5.6-40.5,16.81-11.15,11.21-16.72,24.77-16.72,40.69s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="88.98 109.82 142.98 109.82 142.98 86.99 88.98 86.99 88.98 109.82 88.98 109.82"/>
<path class="st0" d="M243.56,124.78c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM225.09,43.13c-12.95,0-24.35,4.33-34.2,12.98V10.83h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="379.4 46.73 364.83 46.73 338.53 117.01 338.41 117.01 313.94 46.73 284.74 46.73 324.11 144.73 304.17 190.62 331.54 190.62 394.06 46.73 379.4 46.73 379.4 46.73"/>
<polygon class="st0" points="452.96 46.73 437.33 46.73 437.33 10.67 411.47 10.67 411.47 46.73 399.06 46.73 399.06 69.46 411.47 69.46 411.47 154.34 437.33 154.34 437.33 69.46 452.96 69.46 452.96 46.73 452.96 46.73"/>
<path class="st0" d="M492.92,76.47c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM514.52,157.94c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st0" d="M872.27,97.93v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM878.91,98.65c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st0" d="M883.51,105.89c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM888.95,91.73c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st1" x="582.84" y="97.34" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
<g id="Weiß" class="st2">
<g>
<polygon class="st0" points="395.24 164.36 391.39 164.36 391.39 174.35 385.46 174.35 385.46 177.83 391.39 177.83 391.39 202.79 395.24 202.79 395.24 177.83 401.84 177.83 401.84 174.35 395.24 174.35 395.24 164.36 395.24 164.36"/>
<path class="st0" d="M408.08,186.46c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM433.12,184.3c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="438.71 202.79 442.56 202.79 442.56 164.36 438.71 164.36 438.71 202.79 438.71 202.79"/>
<path class="st0" d="M451.45,186.46c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.48,184.3c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="503.91 174.35 498.97 174.35 485.92 191.35 485.92 164.36 482.07 164.36 482.07 202.79 485.92 202.79 485.92 197.38 490.45 191.56 499.7 202.79 504.64 202.79 492.89 188.59 503.91 174.35 503.91 174.35"/>
<path class="st0" d="M529.45,196.44c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM521.59,173.72v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M580.98,178.09c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M629.34,178.09c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M659.34,189.43c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st0" d="M691.89,178.51c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st0" points="700.63 170.91 704.48 170.91 704.48 164.36 700.63 164.36 700.63 170.91 700.63 170.91"/>
<polygon class="st0" points="700.63 202.79 704.48 202.79 704.48 174.35 700.63 174.35 700.63 202.79 700.63 202.79"/>
<polygon class="st0" points="732.45 174.35 727.51 174.35 714.46 191.35 714.46 164.36 710.61 164.36 710.61 202.79 714.46 202.79 714.46 197.38 718.98 191.56 728.24 202.79 733.18 202.79 721.43 188.59 732.45 174.35 732.45 174.35"/>
<path class="st0" d="M758.3,196.52c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM761.57,179.75l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st0" points="778.52 164.36 774.67 164.36 774.67 174.35 768.75 174.35 768.75 177.83 774.67 177.83 774.67 202.79 778.52 202.79 778.52 177.83 785.13 177.83 785.13 174.35 778.52 174.35 778.52 164.36 778.52 164.36"/>
<polygon class="st0" points="788.61 202.79 792.46 202.79 792.46 174.35 788.61 174.35 788.61 202.79 788.61 202.79"/>
<polygon class="st0" points="788.61 170.91 792.46 170.91 792.46 164.36 788.61 164.36 788.61 170.91 788.61 170.91"/>
<path class="st0" d="M820.28,196.44c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM812.43,173.72v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M854.81,178.51c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st0" d="M678.76,110.53c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M729.4,115.4c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM740.53,156.14c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M836.67,98.73c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M36.24,124.69c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM13.88,43.13c-15.85,0-29.35,5.6-40.5,16.81-11.15,11.21-16.72,24.77-16.72,40.69s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="88.98 109.82 142.98 109.82 142.98 86.99 88.98 86.99 88.98 109.82 88.98 109.82"/>
<path class="st0" d="M243.56,124.78c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM225.09,43.13c-12.95,0-24.35,4.33-34.2,12.98V10.83h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="379.4 46.73 364.83 46.73 338.53 117.01 338.41 117.01 313.94 46.73 284.74 46.73 324.11 144.73 304.17 190.62 331.54 190.62 394.06 46.73 379.4 46.73 379.4 46.73"/>
<polygon class="st0" points="452.96 46.73 437.33 46.73 437.33 10.67 411.47 10.67 411.47 46.73 399.06 46.73 399.06 69.46 411.47 69.46 411.47 154.34 437.33 154.34 437.33 69.46 452.96 69.46 452.96 46.73 452.96 46.73"/>
<path class="st0" d="M492.92,76.47c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM514.52,157.94c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st0" d="M872.27,97.93v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM878.91,98.65c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st0" d="M883.51,105.89c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM888.95,91.73c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st0" x="582.84" y="97.34" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Weiß" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 933.48 192.8">
<defs>
<style>
.cls-1 {
fill: #fff;
}
</style>
</defs>
<g>
<polygon class="cls-1" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="cls-1" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="cls-1" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="cls-1" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="cls-1" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="cls-1" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="cls-1" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="cls-1" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="cls-1" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="cls-1" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="cls-1" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="cls-1" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="cls-1" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="cls-1" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="cls-1" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="cls-1" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="cls-1" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="cls-1" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="cls-1" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="cls-1" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="cls-1" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="cls-1" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="cls-1" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="cls-1" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="cls-1" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="cls-1" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="cls-1" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="cls-1" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="cls-1" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="cls-1" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="cls-1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 901.53 179.95">
<!-- Generator: Adobe Illustrator 29.8.5, SVG Export Plug-In . SVG Version: 2.1.1 Build 2) -->
<defs>
<style>
.st0 {
fill: #fff;
}
.st1 {
fill: #15a5e4;
}
.st2 {
display: none;
}
.st3 {
fill: #222221;
}
</style>
</defs>
<g id="Logo_x5F_light" class="st2">
<g>
<polygon class="st3" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="st3" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st3" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="st3" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st3" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="st3" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st3" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st3" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st3" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st3" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st3" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="st3" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="st3" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="st3" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st3" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="st3" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="st3" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="st3" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st3" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st3" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st3" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st3" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st3" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st3" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st3" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st3" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st3" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st3" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st3" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st3" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
<g id="Logo_x5F_Dark" class="st2">
<g>
<polygon class="st0" points="438.57 153.7 434.72 153.7 434.72 163.68 428.79 163.68 428.79 167.16 434.72 167.16 434.72 192.12 438.57 192.12 438.57 167.16 445.17 167.16 445.17 163.68 438.57 163.68 438.57 153.7 438.57 153.7"/>
<path class="st0" d="M451.41,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM476.45,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4.01.05c-.83,1.91-2.18,3.42-4.05,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.03-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="482.04 192.12 485.89 192.12 485.89 153.7 482.04 153.7 482.04 192.12 482.04 192.12"/>
<path class="st0" d="M494.78,175.8c.48-2.62,1.78-4.77,3.87-6.46,2.1-1.69,4.48-2.53,7.15-2.53s4.98.88,7.05,2.63c2.06,1.75,3.34,3.87,3.82,6.37h-21.89ZM519.82,173.63c-.43-1.73-1.31-3.4-2.63-5.03-1.42-1.73-3.12-3.08-5.1-4.04-1.98-.97-4.09-1.45-6.34-1.45-4.13,0-7.63,1.45-10.5,4.34-2.88,2.89-4.32,6.41-4.32,10.53s1.45,7.67,4.34,10.53c2.89,2.86,6.42,4.29,10.58,4.29,3.02,0,5.83-.94,8.45-2.81,2.62-1.87,4.41-4.25,5.38-7.12l-4,.05c-.83,1.91-2.18,3.42-4.06,4.52-1.87,1.11-3.83,1.68-5.88,1.72h-.26c-2.64,0-5.05-.96-7.25-2.89-2.2-1.93-3.35-4.26-3.46-6.99h25.74c-.04-2.04-.27-3.92-.7-5.65h0Z"/>
<polygon class="st0" points="547.25 163.68 542.31 163.68 529.26 180.68 529.26 153.7 525.41 153.7 525.41 192.12 529.26 192.12 529.26 186.72 533.78 180.89 543.04 192.12 547.98 192.12 536.22 177.93 547.25 163.68 547.25 163.68"/>
<path class="st0" d="M572.78,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.48,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM564.93,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M624.31,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.3.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.04.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.66-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.05,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.04.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M672.67,167.42c-1.39-1.42-2.83-2.5-4.32-3.22-1.49-.73-3-1.09-4.52-1.09-.28,0-.56,0-.86.02-.29.02-.6.06-.91.13-1.39.21-2.73.67-4.03,1.38-1.3.71-2.37,1.64-3.2,2.78-.07.14-.14.27-.21.39-.07.12-.14.23-.21.34-.03.07-.06.13-.08.18-.02.05-.04.11-.08.18-.07-.1-.13-.2-.18-.29-.05-.09-.11-.18-.18-.29-.07-.07-.13-.15-.18-.23-.05-.09-.11-.18-.18-.29-1.14-1.39-2.5-2.45-4.06-3.2-1.56-.74-3.28-1.12-5.15-1.12-1.6,0-3.08.35-4.45,1.04-1.37.69-2.38,1.77-3.04,3.22h-.1v-3.69h-3.64v28.44h3.85v-16.22c0-1.11.06-2.17.18-3.17.12-1,.51-1.98,1.17-2.91.73-1.01,1.65-1.76,2.78-2.26,1.13-.5,2.28-.75,3.46-.75,1.28,0,2.49.31,3.61.94,1.13.62,2.05,1.46,2.78,2.5.21.28.38.55.52.83.14.28.24.55.31.83.24.66.39,1.31.44,1.95.05.64.08,1.31.08,2v16.28h3.85v-17.05c0-.35.02-.69.05-1.04.03-.69.13-1.39.29-2.08.16-.69.44-1.33.86-1.92.69-1.01,1.61-1.79,2.76-2.37,1.14-.57,2.32-.86,3.54-.86,1.32,0,2.53.29,3.64.86,1.11.57,2.04,1.41,2.81,2.52.45.62.77,1.31.96,2.05.19.74.32,1.5.39,2.26.03.31.05.62.05.91v16.72h3.85v-16.17c0-1.66-.16-3.21-.47-4.65-.31-1.44-1.04-2.73-2.18-3.87h0Z"/>
<path class="st0" d="M702.68,178.76c0,1.21-.11,2.42-.31,3.61-.21,1.2-.68,2.3-1.4,3.3-.83,1.11-1.85,1.97-3.07,2.57-1.21.61-2.51.91-3.9.91-1.56,0-2.99-.35-4.29-1.04-1.3-.69-2.35-1.71-3.15-3.07-.56-.97-.9-1.99-1.04-3.07-.14-1.07-.21-2.17-.21-3.28v-15.03h-3.85v15.08c0,1.87.12,3.61.36,5.23.24,1.61.8,2.87,1.66,3.77.28.31.55.61.81.88.26.28.53.56.81.83,1.32,1.25,2.66,2.12,4.03,2.6,1.37.48,2.82.73,4.34.73,1.97,0,3.8-.39,5.49-1.17,1.68-.78,2.96-2.09,3.82-3.93h.11v4.42h3.64v-28.44h-3.85v15.08h0Z"/>
<path class="st0" d="M735.23,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.61-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.66-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<polygon class="st0" points="743.96 160.25 747.81 160.25 747.81 153.7 743.96 153.7 743.96 160.25 743.96 160.25"/>
<polygon class="st0" points="743.96 192.12 747.81 192.12 747.81 163.68 743.96 163.68 743.96 192.12 743.96 192.12"/>
<polygon class="st0" points="775.79 163.68 770.85 163.68 757.79 180.68 757.79 153.7 753.95 153.7 753.95 192.12 757.79 192.12 757.79 186.72 762.32 180.89 771.57 192.12 776.51 192.12 764.76 177.93 775.79 163.68 775.79 163.68"/>
<path class="st0" d="M801.63,185.85c-2.18,2.21-4.77,3.31-7.75,3.31s-5.73-1.07-8.03-3.2c-2.31-2.13-3.46-4.76-3.46-7.88s1.12-5.82,3.35-8.01c2.24-2.18,4.91-3.29,8.03-3.33,3.19,0,5.84,1.1,7.96,3.31,2.11,2.21,3.17,4.89,3.17,8.05,0,2.95-1.09,5.53-3.28,7.74h0ZM804.9,169.09l-.1.05c-1.01-1.98-2.5-3.47-4.5-4.47-1.99-1.01-4.08-1.53-6.27-1.56h-.26c-2.43,0-4.55.42-6.37,1.27-1.82.85-3.41,1.98-4.76,3.41-1.25,1.28-2.24,2.78-2.99,4.5-.75,1.72-1.12,3.55-1.12,5.49,0,1.52.18,2.94.55,4.24.36,1.3.77,2.38,1.22,3.25.17.35.35.65.55.91.19.26.36.48.49.65,1.32,1.52,2.76,2.75,4.32,3.67,1.56.92,3.14,1.55,4.73,1.9.59.14,1.17.24,1.74.31.57.07,1.15.1,1.74.1,2.25,0,4.38-.49,6.37-1.48,1.99-.99,3.51-2.51,4.55-4.55h.1v5.36h3.69v-28.44h-3.69v5.41h0Z"/>
<polygon class="st0" points="821.86 153.7 818.01 153.7 818.01 163.68 812.08 163.68 812.08 167.16 818.01 167.16 818.01 192.12 821.86 192.12 821.86 167.16 828.46 167.16 828.46 163.68 821.86 163.68 821.86 153.7 821.86 153.7"/>
<polygon class="st0" points="831.94 192.12 835.79 192.12 835.79 163.68 831.94 163.68 831.94 192.12 831.94 192.12"/>
<polygon class="st0" points="831.94 160.25 835.79 160.25 835.79 153.7 831.94 153.7 831.94 160.25 831.94 160.25"/>
<path class="st0" d="M863.61,185.77c-2.05,2.26-4.66,3.39-7.85,3.39s-5.66-1.07-7.83-3.22c-2.17-2.15-3.25-4.75-3.25-7.8s1.06-5.75,3.17-7.98c2.11-2.24,4.75-3.37,7.9-3.41,1.42,0,2.79.28,4.11.83,1.32.56,2.48,1.32,3.49,2.29,1.14,1.08,1.98,2.27,2.52,3.57.54,1.3.81,2.74.81,4.3,0,3.09-1.02,5.77-3.07,8.03h0ZM855.76,163.06v.05c-4.16,0-7.69,1.47-10.58,4.42-2.9,2.95-4.34,6.48-4.34,10.61s1.48,7.56,4.45,10.4c2.96,2.84,6.46,4.26,10.48,4.26s7.62-1.49,10.48-4.47c2.86-2.98,4.29-6.5,4.29-10.56s-1.47-7.39-4.42-10.3c-2.95-2.91-6.4-4.39-10.35-4.42h0Z"/>
<path class="st0" d="M898.14,167.84c-1.28-1.52-2.81-2.69-4.58-3.51-1.77-.81-3.6-1.22-5.51-1.22s-3.54.41-4.99,1.22c-1.46.81-2.71,1.97-3.75,3.46h-.1v-4.11h-3.64v28.44h3.85v-15.81c0-.14.02-.28.05-.42,0-1.01.09-1.99.26-2.94.17-.95.57-1.85,1.2-2.68.73-1,1.65-1.81,2.78-2.42,1.13-.61,2.31-.96,3.56-1.07h.62c1.46,0,2.83.3,4.11.91,1.28.61,2.36,1.52,3.22,2.73.73,1.01,1.19,2.08,1.38,3.22.19,1.14.29,2.31.29,3.48v14.97h3.85v-14.92c0-1.8-.16-3.46-.47-4.99-.31-1.52-1.02-2.98-2.13-4.37h0Z"/>
<path class="st0" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st0" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st0" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st0" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
</g>
<path class="st0" d="M915.6,87.26v-6.48h2.36c1.12,0,1.96.32,2.48.92.64.68.76,1.64.76,2.32s-.12,1.64-.76,2.32c-.52.6-1.36.92-2.48.92h-2.36ZM922.24,87.98c.92-1,1.4-2.4,1.4-3.96s-.48-2.96-1.4-3.96c-.68-.76-2-1.68-4.28-1.68h-5.04v17.04h2.68v-5.76h1.96l4.28,5.76h3l-4.56-6.16c.92-.32,1.56-.84,1.96-1.28h0Z"/>
<path class="st0" d="M926.84,95.22c-2.24,2.24-5.2,3.48-8.36,3.48s-6.12-1.24-8.36-3.48c-2.2-2.2-3.44-5.16-3.44-8.32s1.24-6.12,3.44-8.36c2.24-2.24,5.2-3.44,8.36-3.44s6.12,1.2,8.36,3.44c2.2,2.24,3.44,5.2,3.44,8.36s-1.24,6.12-3.44,8.32h0ZM932.28,81.06c-.72-1.8-1.8-3.4-3.2-4.76-1.36-1.4-2.96-2.48-4.76-3.24-1.84-.76-3.8-1.16-5.84-1.16s-4,.4-5.84,1.16c-1.8.76-3.4,1.84-4.76,3.24-1.4,1.36-2.48,2.96-3.24,4.76-.76,1.84-1.16,3.8-1.16,5.84s.4,3.96,1.16,5.84c.76,1.76,1.84,3.36,3.24,4.76,1.36,1.36,2.96,2.44,4.76,3.2,1.84.8,3.8,1.2,5.84,1.2s4-.4,5.84-1.2c1.8-.76,3.4-1.84,4.76-3.2,1.4-1.4,2.48-3,3.2-4.76.8-1.88,1.2-3.84,1.2-5.84s-.4-4-1.2-5.84h0Z"/>
<rect class="st1" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
<g id="Weiß">
<path class="st0" d="M722.09,99.86c2.97,0,5.55.66,7.74,1.99,2.19,1.33,3.91,3.25,5.14,5.78h14.4c-1.83-5.94-5.21-10.68-10.14-14.23-4.92-3.55-10.59-5.33-17-5.33-7.89,0-14.61,2.8-20.15,8.41-5.54,5.61-8.31,12.38-8.31,20.34s2.77,14.72,8.31,20.3c5.54,5.57,12.26,8.36,20.15,8.36,6.35,0,11.96-1.75,16.84-5.26,4.88-3.51,8.22-8.19,10.02-14.07h-14.4c-1.17,2.31-2.83,4.14-5,5.49-2.16,1.36-4.49,2.04-6.98,2.04-4.52,0-8.31-1.65-11.37-4.95-3.06-3.3-4.59-7.4-4.59-12.29,0-4.61,1.49-8.53,4.48-11.75,2.98-3.22,6.61-4.83,10.87-4.83h0Z"/>
<path class="st0" d="M772.74,104.74c3-3.25,6.71-4.88,11.13-4.88s8.18,1.63,11.18,4.88c3,3.25,4.5,7.28,4.5,12.08s-1.5,8.81-4.5,12.03c-3,3.22-6.73,4.83-11.18,4.83s-8.13-1.61-11.13-4.83c-3-3.22-4.5-7.23-4.5-12.03s1.5-8.82,4.5-12.08h0ZM783.87,145.47c7.96,0,14.72-2.79,20.29-8.36,5.57-5.57,8.36-12.34,8.36-20.3s-2.79-14.74-8.36-20.34c-5.57-5.6-12.34-8.41-20.29-8.41s-14.68,2.8-20.25,8.41c-5.57,5.61-8.36,12.38-8.36,20.34s2.79,14.72,8.36,20.3c5.57,5.57,12.32,8.36,20.25,8.36h0Z"/>
<path class="st0" d="M880,88.07c-6.67,0-12.11,2.27-16.31,6.82l-1.04,1.14-.95-1.14c-3.97-4.55-8.94-6.82-14.9-6.82-5.39-.03-10.06,2.05-14,6.25v-4.45h-12.03v53.8h12.93v-28.32c0-5.18.87-9.06,2.6-11.65,1.73-2.59,4.33-3.88,7.8-3.88s6.1,1.26,7.89,3.79c1.8,2.53,2.69,6.22,2.69,11.08v28.99h12.93v-28.32c0-5.18.89-9.06,2.66-11.65,1.77-2.59,4.45-3.88,8.02-3.88,3.35,0,5.91,1.14,7.67,3.41,1.76,2.27,2.64,5.6,2.64,9.99v30.45h12.93v-32.59c0-7.07-1.94-12.68-5.81-16.81-3.87-4.14-9.11-6.2-15.72-6.2h0Z"/>
<path class="st0" d="M79.57,114.02c-6,6.44-13.45,9.66-22.36,9.66s-16.26-3.22-22.26-9.66c-6-6.44-9-14.46-9-24.06s3-17.65,9-24.16c6-6.5,13.42-9.76,22.26-9.76s16.36,3.25,22.36,9.76c6,6.51,9,14.56,9,24.16s-3,17.62-9,24.06h0ZM57.22,32.46c-15.85,0-29.35,5.6-40.5,16.81C5.57,60.49,0,74.05,0,89.96s5.57,29.45,16.72,40.59c11.15,11.15,24.64,16.72,40.5,16.72s29.44-5.57,40.59-16.72c11.14-11.15,16.72-24.68,16.72-40.59s-5.57-29.47-16.72-40.69c-11.15-11.21-24.68-16.81-40.59-16.81h0Z"/>
<polygon class="st0" points="132.32 99.15 186.31 99.15 186.31 76.32 132.32 76.32 132.32 99.15 132.32 99.15"/>
<path class="st0" d="M286.89,114.12c-6.06,6.5-13.61,9.76-22.64,9.76s-16.45-3.25-22.45-9.76c-6.06-6.5-9.09-14.59-9.09-24.25s3.03-17.75,9.09-24.25c6.06-6.5,13.58-9.76,22.54-9.76s16.48,3.27,22.55,9.8c6.06,6.54,9.09,14.63,9.09,24.3s-3.03,17.65-9.09,24.16h0ZM268.42,32.46c-12.95,0-24.35,4.33-34.2,12.98V.16h-25.86v143.51h23.78v-11.37c10.1,9.91,22.17,14.9,36.19,14.97,14.9,0,27.57-5.57,37.99-16.72,10.42-11.15,15.63-24.68,15.63-40.59s-5.21-29.47-15.63-40.69c-10.42-11.21-23.05-16.81-37.89-16.81h0Z"/>
<polygon class="st0" points="422.73 36.06 408.16 36.06 381.86 106.35 381.75 106.35 357.28 36.06 328.08 36.06 367.44 134.06 347.51 179.95 374.87 179.95 437.39 36.06 422.73 36.06 422.73 36.06"/>
<polygon class="st0" points="496.29 36.06 480.66 36.06 480.66 0 454.8 0 454.8 36.06 442.4 36.06 442.4 58.8 454.8 58.8 454.8 143.67 480.66 143.67 480.66 58.8 496.29 58.8 496.29 36.06 496.29 36.06"/>
<path class="st0" d="M536.25,65.8c5.81-6.5,13.01-9.76,21.6-9.76s15.79,3.25,21.6,9.76c3.85,4.23,6.41,9.19,7.67,14.87h-58.64c1.45-5.62,4.04-10.58,7.77-14.87h0ZM557.85,147.27c12.57,0,23.65-3.4,33.25-10.18,9.6-6.79,16.13-15.9,19.61-27.33h-27.28c-2.15,4.23-5.48,7.61-9.99,10.14-4.52,2.53-9.49,3.79-14.92,3.79-8.78,0-16.1-3.22-21.98-9.66-3.41-3.79-5.84-8.02-7.29-12.69h83.93c.63-3.73.95-7.51.95-11.37,0-15.91-5.48-29.47-16.43-40.69-10.96-11.21-24.23-16.81-39.83-16.81s-28.78,5.6-39.74,16.81c-10.96,11.21-16.43,24.77-16.43,40.69s5.48,29.45,16.43,40.59c10.96,11.15,24.2,16.72,39.74,16.72h0Z"/>
<rect class="st0" x="626.17" y="86.67" width="57" height="57" rx="6.64" ry="6.64"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

138
styleguide/assets/js/app.js Normal file
View File

@@ -0,0 +1,138 @@
const $ = (selector, root = document) => root.querySelector(selector);
const $$ = (selector, root = document) => [...root.querySelectorAll(selector)];
const THEME_KEY = "obyte-theme";
const themeToggle = $("#themeToggle");
const toast = $("#toast");
let toastTimer = null;
function showToast(message) {
if (!toast) return;
toast.textContent = message;
toast.classList.add("is-on");
clearTimeout(toastTimer);
toastTimer = setTimeout(() => toast.classList.remove("is-on"), 1400);
}
async function copyText(value) {
try {
await navigator.clipboard.writeText(value);
showToast("Kopiert: " + value);
} catch {
const fallback = document.createElement("textarea");
fallback.value = value;
fallback.style.position = "fixed";
fallback.style.left = "-9999px";
document.body.appendChild(fallback);
fallback.select();
document.execCommand("copy");
fallback.remove();
showToast("Kopiert: " + value);
}
}
document.addEventListener("click", (event) => {
const trigger = event.target.closest("[data-copy-value],[data-copy-block]");
if (!trigger) return;
const directValue = trigger.getAttribute("data-copy-value");
const blockSelector = trigger.getAttribute("data-copy-block");
if (directValue) {
copyText(directValue);
return;
}
if (blockSelector) {
const block = $(blockSelector);
if (block) {
copyText(block.innerText.trim());
}
}
});
function applyTheme(theme) {
const isDark = theme === "dark";
document.documentElement.setAttribute("data-theme", isDark ? "dark" : "light");
if (themeToggle) {
themeToggle.setAttribute("aria-pressed", String(isDark));
themeToggle.textContent = isDark ? "Hell" : "Dunkel";
}
}
function loadInitialTheme() {
let savedTheme = null;
try {
savedTheme = localStorage.getItem(THEME_KEY);
} catch {
savedTheme = null;
}
if (savedTheme === "light" || savedTheme === "dark") {
applyTheme(savedTheme);
return;
}
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
applyTheme(prefersDark ? "dark" : "light");
}
themeToggle?.addEventListener("click", () => {
const currentTheme = document.documentElement.getAttribute("data-theme");
const nextTheme = currentTheme === "dark" ? "light" : "dark";
applyTheme(nextTheme);
try {
localStorage.setItem(THEME_KEY, nextTheme);
} catch {
// Ignore storage errors in restrictive browser contexts.
}
});
loadInitialTheme();
const navToggle = $("#navToggle");
const navLinks = $("#navLinks");
navToggle?.addEventListener("click", () => {
const open = navLinks?.classList.toggle("is-open");
navToggle.setAttribute("aria-expanded", String(open));
});
$$(".navlink").forEach((link) => {
link.addEventListener("click", () => {
if (window.matchMedia("(max-width: 980px)").matches) {
navLinks?.classList.remove("is-open");
navToggle?.setAttribute("aria-expanded", "false");
}
});
});
const sections = $$(".section");
const links = $$(".navlink");
function setActive(id) {
links.forEach((link) => {
link.classList.toggle("is-active", link.getAttribute("href") === "#" + id);
});
}
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting && entry.target.id) {
setActive(entry.target.id);
}
});
},
{ threshold: 0.28 }
);
sections.forEach((section) => observer.observe(section));
if (location.hash) {
setActive(location.hash.replace("#", ""));
}

886
styleguide/index.html Normal file
View File

@@ -0,0 +1,886 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="color-scheme" content="light dark" />
<meta
name="description"
content="Styleguide für die Marke o-byte.com mit Regeln für Logo, Farben, Typografie, Tonalität, Bildsprache und UI-Komponenten."
/>
<title>o-byte.com - Styleguide</title>
<link rel="stylesheet" href="./assets/css/style.css" />
</head>
<body>
<a class="skip-link" href="#content">Zum Inhalt springen</a>
<div class="app">
<aside class="sidenav" aria-label="Navigation">
<div class="sidenav__top">
<a class="brand" href="#intro" aria-label="o-byte.com Styleguide">
<img class="brand__logo" src="./assets/img/o-byte_Logo_2024_White.svg" alt="o-byte.com" />
</a>
<div class="sidenav__controls">
<button
class="btn btn--ghost btn--tiny"
id="themeToggle"
type="button"
aria-pressed="false"
aria-label="Farbmodus umschalten"
>
Dunkel
</button>
<button
class="btn btn--ghost btn--tiny sidenav__toggle"
id="navToggle"
type="button"
aria-expanded="false"
aria-controls="navLinks"
>
Menü
</button>
</div>
</div>
<nav class="sidenav__nav" id="navLinks">
<a class="navlink" href="#intro">Intro</a>
<a class="navlink" href="#foundation">Marke</a>
<a class="navlink" href="#tone">Tonalität</a>
<a class="navlink" href="#logo">Logo</a>
<a class="navlink" href="#colors">Farben</a>
<a class="navlink" href="#typography">Typografie</a>
<a class="navlink" href="#imagery">Bildsprache</a>
<a class="navlink" href="#components">Komponenten</a>
<a class="navlink" href="#accessibility">Accessibility</a>
<a class="navlink" href="#tokens">Tokens</a>
</nav>
</aside>
<main class="main" id="content">
<header class="hero section" id="intro">
<div class="hero__card">
<div class="hero__grid">
<div class="hero__main">
<p class="kicker">o-byte.com Brand Guide 2026</p>
<h1>Kommunikation, die im Alltag spürbar entlastet.</h1>
<p class="lead">
Dieser Styleguide übersetzt den Markenauftritt von o-byte.com in klare Regeln
für Design, Sprache und Anwendung. Technisch stark, visuell fokussiert und
konsequent serviceorientiert.
</p>
<div class="cluster">
<span class="pill pill--brand">ITK-Systemhaus</span>
<span class="pill">B2B</span>
<span class="pill">Telefonie &amp; Integration</span>
<span class="pill">Gemeinsam erfolgreich</span>
</div>
<div class="row row--wrap hero__actions">
<a class="btn btn--primary" href="#colors">Farbsystem</a>
<a class="btn btn--light" href="#tokens">Tokens kopieren</a>
<a class="btn btn--light" href="./assets/img/o-byte_Logo_2024_Light.svg" download>Logo SVG</a>
<a class="btn btn--light" href="./assets/img/o-Byte%20Favicon_Light.svg" download>Favicon SVG</a>
</div>
</div>
<aside class="hero__signal" aria-label="Brand Snapshot">
<div class="hero__logo-stage">
<img src="./assets/img/o-byte_Logo_2024_Dark.svg" alt="o-byte.com Logo Dark" />
</div>
<div class="hero__metrics">
<div class="hero__metric">
<span class="hero__metric-chip" style="background:#00A7E6"></span>
<span class="hero__metric-label">Primary</span>
<strong>#00A7E6</strong>
</div>
<div class="hero__metric">
<span class="hero__metric-chip" style="background:#F59C00"></span>
<span class="hero__metric-label">Akzent</span>
<strong>#F59C00</strong>
</div>
<div class="hero__metric">
<span class="hero__metric-chip" style="background:#F5FBFE"></span>
<span class="hero__metric-label">Background</span>
<strong>#F5FBFE</strong>
</div>
<div class="hero__metric">
<span class="hero__metric-chip" style="background:#343537"></span>
<span class="hero__metric-label">Slate</span>
<strong>#343537</strong>
</div>
</div>
<p class="hero__tagline">
Leitmotiv: <strong>Gemeinsam erfolgreich</strong>.
</p>
</aside>
</div>
</div>
</header>
<section class="section" id="foundation">
<div class="section__head">
<h2>Markenfundament</h2>
<p class="muted">
Positionierung und Kernbotschaft als inhaltlicher Rahmen für Website, Vertrieb,
Support und Produktkommunikation.
</p>
</div>
<div class="grid grid--2">
<article class="card">
<h3>Positionierung</h3>
<p>
o-byte.com ist ein spezialisiertes ITK-Systemhaus für moderne Business-
Kommunikation mit Fokus auf IP-basierte Telefonie, STARFACE und
integrationsgetriebene Erweiterungen.
</p>
<ul class="bullets">
<li>Von Planung und Umsetzung bis Support aus einer Hand.</li>
<li>Partnerorientiert mit konkretem Kundennutzen statt Buzzwords.</li>
<li>Technisch tief, in der Kommunikation trotzdem verständlich.</li>
</ul>
</article>
<article class="card">
<h3>Markenversprechen</h3>
<p>
Wir liefern lösungsorientierte Telekommunikation, die im Tagesgeschäft messbar
entlastet: bessere Erreichbarkeit, weniger Reibung, klare Prozesse.
</p>
<div class="quote">
<p class="quote__text">"Gemeinsam erfolgreich" ist Leitmotiv, nicht Claim-Dekoration.</p>
</div>
</article>
</div>
<div class="grid grid--3">
<article class="card metric">
<h3>Werte</h3>
<p>Verlässlichkeit, Erreichbarkeit, Pragmatismus und Qualität.</p>
</article>
<article class="card metric">
<h3>Zielgruppen</h3>
<p>KMU, Kanzleien, Praxen, Industrie und Partner mit Integrationsbedarf.</p>
</article>
<article class="card metric">
<h3>Markenton</h3>
<p>Sachlich positiv, kompetent, auf Augenhöhe.</p>
</article>
</div>
</section>
<section class="section" id="tone">
<div class="section__head">
<h2>Tonalität</h2>
<p class="muted">Wie o-byte.com spricht: serviceorientiert, klar und lösungsfokussiert.</p>
</div>
<div class="grid grid--2 voice-grid">
<article class="card">
<h3>Do</h3>
<ul class="bullets">
<li>Konkrete Ergebnisse und Nutzen zuerst benennen.</li>
<li>Aktive Sprache und direkte Handlungsangebote verwenden.</li>
<li>Technik erklären, ohne Überheblichkeit oder Jargon-Last.</li>
<li>Partnerschaftlich formulieren: gemeinsam, wir, zusammen.</li>
</ul>
</article>
<article class="card">
<h3>Don't</h3>
<ul class="bullets">
<li>Leere Marketingphrasen ohne Substanz oder Beispiel.</li>
<li>Unnötig komplizierte Fachterminologie in Standardtexten.</li>
<li>Reißerische Versprechen ohne realistische Einordnung.</li>
<li>Kühle Distanzsprache ohne Servicebezug.</li>
</ul>
</article>
</div>
<article class="card">
<h3>Textbausteine (Beispiele)</h3>
<div class="table-wrap">
<table class="table">
<thead>
<tr>
<th>Kontext</th>
<th>Empfohlen</th>
<th>Vermeiden</th>
</tr>
</thead>
<tbody>
<tr>
<td>CTA</td>
<td>"IT-Systemhaus anfragen"</td>
<td>"Jetzt revolutionieren"</td>
</tr>
<tr>
<td>Support</td>
<td>"Wir kümmern uns direkt um Ihr Anliegen."</td>
<td>"Bitte Ticket abwarten."</td>
</tr>
<tr>
<td>Produkt</td>
<td>"Integration in DATEV und bestehende Prozesse."</td>
<td>"Disruptive End-to-End-Synergien."</td>
</tr>
</tbody>
</table>
</div>
</article>
</section>
<section class="section" id="logo">
<div class="section__head">
<h2>Logo und Favicon</h2>
<p class="muted">Verbindliche Varianten für helle und dunkle Hintergründe.</p>
</div>
<div class="grid grid--2">
<article class="card">
<h3>Logo-Varianten</h3>
<div class="logo-grid">
<div class="logo-stage logo-stage--light">
<img src="./assets/img/o-byte_Logo_2024_Light.svg" alt="o-byte.com Logo light" />
</div>
<p class="muted small">Auf hellen Flächen: Light-Variante.</p>
<div class="logo-stage logo-stage--dark">
<img src="./assets/img/o-byte_Logo_2024_Dark.svg" alt="o-byte.com Logo dark" />
</div>
<div class="logo-stage logo-stage--dark">
<img src="./assets/img/o-byte_Logo_2024_White.svg" alt="o-byte.com Logo white" />
</div>
<p class="muted small">Auf dunklen Flächen: Dark oder White je nach Kontrast.</p>
</div>
<div class="row row--wrap asset-actions">
<a class="btn btn--light btn--sm" href="./assets/img/o-byte_Logo_2024_Light.svg" download>Logo Light</a>
<a class="btn btn--light btn--sm" href="./assets/img/o-byte_Logo_2024_Dark.svg" download>Logo Dark</a>
<a class="btn btn--light btn--sm" href="./assets/img/o-byte_Logo_2024_White.svg" download>Logo White</a>
</div>
</article>
<article class="card">
<h3>Favicon-Varianten</h3>
<div class="logo-grid">
<div class="logo-stage logo-stage--light logo-stage--icon">
<img src="./assets/img/o-Byte%20Favicon_Light.svg" alt="o-byte.com Favicon light" />
</div>
<p class="muted small">Auf hellen Flächen: Light-Favicon.</p>
<div class="logo-stage logo-stage--dark logo-stage--icon">
<img src="./assets/img/o-Byte%20Favicon_Dark.svg" alt="o-byte.com Favicon dark" />
</div>
<p class="muted small">Auf dunklen Flächen: Dark-Favicon.</p>
</div>
<div class="row row--wrap asset-actions">
<a class="btn btn--light btn--sm" href="./assets/img/o-Byte%20Favicon_Light.svg" download>Favicon Light</a>
<a class="btn btn--light btn--sm" href="./assets/img/o-Byte%20Favicon_Dark.svg" download>Favicon Dark</a>
</div>
</article>
<article class="card">
<h3>Sondervariante: Clean</h3>
<div class="logo-grid">
<div class="logo-stage logo-stage--light">
<img src="./assets/img/o-byte_Logo_2024_Light_clean.svg" alt="o-byte.com Logo light clean" />
</div>
<div class="logo-stage logo-stage--dark">
<img src="./assets/img/o-byte_Logo_2024_Dark_clean.svg" alt="o-byte.com Logo dark clean" />
</div>
<div class="logo-stage logo-stage--dark">
<img src="./assets/img/o-byte_Logo_2024_White_clean.svg" alt="o-byte.com Logo white clean" />
</div>
<p class="muted small">
<strong>Clean:</strong> ohne Kennzeichnung der registrierten Marke und ohne
"Telekommunikation". Nur für technische Sonderfälle, wenn das reguläre Logo
prozessbedingt nicht nutzbar ist, und ausschließlich nach Rücksprache mit der
Marketingabteilung von o-byte.com.
</p>
</div>
<div class="row row--wrap asset-actions">
<a class="btn btn--light btn--sm" href="./assets/img/o-byte_Logo_2024_Light_clean.svg" download>Logo Clean Light</a>
<a class="btn btn--light btn--sm" href="./assets/img/o-byte_Logo_2024_Dark_clean.svg" download>Logo Clean Dark</a>
<a class="btn btn--light btn--sm" href="./assets/img/o-byte_Logo_2024_White_clean.svg" download>Logo Clean White</a>
</div>
</article>
<article class="card">
<h3>Sondervariante: Web-App</h3>
<div class="logo-grid">
<div class="logo-stage logo-stage--light">
<img src="./assets/img/o-byte_Logo_2024_Light_web_app.svg" alt="o-byte.com Logo light web app" />
</div>
<p class="muted small">
<strong>Web-App:</strong> Kennzeichnung der Plattform innerhalb von Webanwendungen
(z. B. Portal, OLM, Dashboard), um den aktuellen Produktkontext sichtbar zu machen.
</p>
</div>
<div class="row row--wrap asset-actions">
<a class="btn btn--light btn--sm" href="./assets/img/o-byte_Logo_2024_Light_web_app.svg" download>Logo Web-App</a>
</div>
</article>
</div>
<div class="grid grid--2 logo-rules">
<article class="card">
<h3>Schutzzone und Mindestgröße</h3>
<ul class="bullets">
<li>Schutzzone: mindestens 0.5x der Signethöhe rund um das Zeichen.</li>
<li>Mindestbreite Logo digital: 140 px.</li>
<li>Mindestgröße Favicon digital: 24 x 24 px, empfohlen ab 32 px.</li>
<li>Nie auf unruhigen Hintergründen ohne Kontrastfläche platzieren.</li>
</ul>
</article>
<article class="card">
<h3>Unzulässige Nutzung</h3>
<ul class="bullets">
<li>Kein Verzerren, Kippen oder Rotieren.</li>
<li>Keine freien Umfärbungen außer den definierten Varianten.</li>
<li>Keine Schatten-, Glow- oder 3D-Effekte.</li>
<li>Keine Transparenzreduktion, die die Lesbarkeit mindert.</li>
</ul>
</article>
</div>
</section>
<section class="section" id="colors">
<div class="section__head">
<h2>Farbsystem</h2>
<p class="muted">
o-byte Blue basiert auf festen Shades und Tints. Hauptfarbe, Hilfsfarbe und
Hintergrund sind auf die definierte Blau-Skala abgestimmt.
</p>
</div>
<div class="grid grid--3">
<article class="card swatch">
<div class="swatch__chip" style="background:#00A7E6"></div>
<div class="swatch__meta">
<strong>Hauptfarbe: o-byte Blue</strong>
<span>#00A7E6</span>
</div>
<button class="btn btn--light btn--sm" data-copy-value="#00A7E6">HEX kopieren</button>
</article>
<article class="card swatch">
<div class="swatch__chip" style="background:#33B9EB"></div>
<div class="swatch__meta">
<strong>Hilfsfarbe: Blue Tint 1</strong>
<span>#33B9EB</span>
</div>
<button class="btn btn--light btn--sm" data-copy-value="#33B9EB">HEX kopieren</button>
</article>
<article class="card swatch">
<div class="swatch__chip" style="background:#F5FBFE"></div>
<div class="swatch__meta">
<strong>Hintergrund</strong>
<span>#F5FBFE</span>
</div>
<button class="btn btn--light btn--sm" data-copy-value="#F5FBFE">HEX kopieren</button>
</article>
<article class="card swatch">
<div class="swatch__chip" style="background:#F59C00"></div>
<div class="swatch__meta">
<strong>Akzentfarbe</strong>
<span>#F59C00</span>
</div>
<button class="btn btn--light btn--sm" data-copy-value="#F59C00">HEX kopieren</button>
</article>
<article class="card swatch">
<div class="swatch__chip" style="background:#343537"></div>
<div class="swatch__meta">
<strong>Slate</strong>
<span>#343537</span>
</div>
<button class="btn btn--light btn--sm" data-copy-value="#343537">HEX kopieren</button>
</article>
<article class="card swatch">
<div class="swatch__chip" style="background:#FFFFFF"></div>
<div class="swatch__meta">
<strong>White</strong>
<span>#FFFFFF</span>
</div>
<button class="btn btn--light btn--sm" data-copy-value="#FFFFFF">HEX kopieren</button>
</article>
</div>
<div class="grid grid--2">
<article class="card">
<h3>20% Shades von #00A7E6</h3>
<div class="tone-swatches">
<button class="tone-swatch" type="button" data-copy-value="#0086B8" aria-label="HEX kopieren #0086B8">
<span class="tone-swatch__chip" style="background:#0086B8"></span>
<span class="tone-swatch__value">#0086B8</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#00648A" aria-label="HEX kopieren #00648A">
<span class="tone-swatch__chip" style="background:#00648A"></span>
<span class="tone-swatch__value">#00648A</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#00435C" aria-label="HEX kopieren #00435C">
<span class="tone-swatch__chip" style="background:#00435C"></span>
<span class="tone-swatch__value">#00435C</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#00212E" aria-label="HEX kopieren #00212E">
<span class="tone-swatch__chip" style="background:#00212E"></span>
<span class="tone-swatch__value">#00212E</span>
</button>
</div>
</article>
<article class="card">
<h3>20% Tints von #00A7E6</h3>
<div class="tone-swatches">
<button class="tone-swatch" type="button" data-copy-value="#33B9EB" aria-label="HEX kopieren #33B9EB">
<span class="tone-swatch__chip" style="background:#33B9EB"></span>
<span class="tone-swatch__value">#33B9EB</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#66CAF0" aria-label="HEX kopieren #66CAF0">
<span class="tone-swatch__chip" style="background:#66CAF0"></span>
<span class="tone-swatch__value">#66CAF0</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#99DCF5" aria-label="HEX kopieren #99DCF5">
<span class="tone-swatch__chip" style="background:#99DCF5"></span>
<span class="tone-swatch__value">#99DCF5</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#CCEDFA" aria-label="HEX kopieren #CCEDFA">
<span class="tone-swatch__chip" style="background:#CCEDFA"></span>
<span class="tone-swatch__value">#CCEDFA</span>
</button>
</div>
</article>
</div>
<article class="card color-usage">
<h3>Einsatzlogik</h3>
<div class="tone-swatches" aria-label="Einsatzlogik Farbswatches">
<button class="tone-swatch" type="button" data-copy-value="#00A7E6" aria-label="HEX kopieren #00A7E6">
<span class="tone-swatch__chip" style="background:#00A7E6"></span>
<span class="tone-swatch__value">#00A7E6</span>
<span>Hauptfarbe: aktive Buttons, Links und Markenflächen</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#33B9EB" aria-label="HEX kopieren #33B9EB">
<span class="tone-swatch__chip" style="background:#33B9EB"></span>
<span class="tone-swatch__value">#33B9EB</span>
<span>Hilfsfarbe: sekundäre Highlights und unterstützende Flächen</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#F5FBFE" aria-label="HEX kopieren #F5FBFE">
<span class="tone-swatch__chip" style="background:#F5FBFE"></span>
<span class="tone-swatch__value">#F5FBFE</span>
<span>Hintergrund: ruhige, lesbare Content-Bereiche</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#F59C00" aria-label="HEX kopieren #F59C00">
<span class="tone-swatch__chip" style="background:#F59C00"></span>
<span class="tone-swatch__value">#F59C00</span>
<span>Akzent: gezielte visuelle Priorisierung</span>
</button>
<button class="tone-swatch" type="button" data-copy-value="#343537" aria-label="HEX kopieren #343537">
<span class="tone-swatch__chip" style="background:#343537"></span>
<span class="tone-swatch__value">#343537</span>
<span>Slate: Headlines, Navigation und starke Kontraste</span>
</button>
</div>
<p class="muted small">Shades nur für mehr Tiefe und Kontrast, Tints nur für leichte Flächen nutzen.</p>
</article>
</section>
<section class="section" id="typography">
<div class="section__head">
<h2>Typografie</h2>
<p class="muted">Fließ- und Sekundärüberschriften in Nunito, Primär-Akzente weiterhin in URW Gothic L Demi.</p>
</div>
<div class="grid grid--2">
<article class="card">
<h3>Nunito live in der Anwendung</h3>
<div class="type-sample">
<p class="type-kicker">Einsatzbereich: H2-H4 + Fließtext</p>
<p class="type-h2-demo">Stabiler Betrieb im Tagesgeschäft</p>
<p class="type-body-demo">
Nunito ist die Standardschrift für längere Inhalte. Sie bleibt bei normaler
Lesedistanz ruhig, gut scanbar und belastet die Augen auch in längeren Texten nicht.
</p>
<p class="type-meta">Empfohlen: 17 px / 1.58 Zeilenhöhe / linksbündig</p>
</div>
</article>
<article class="card">
<h3>URW Demi live in der Anwendung</h3>
<div class="type-sample">
<p class="type-kicker">Einsatzbereich: H1 + CTA + Primärakzent</p>
<p class="type-h1-demo">Kommunikation, die entlastet.</p>
<div class="row row--wrap">
<button class="btn btn--primary" type="button">Beratung anfragen</button>
<button class="btn btn--light" type="button">Mehr erfahren</button>
</div>
<p class="type-meta">URW Demi bewusst punktuell nutzen, nicht für lange Lesetexte.</p>
</div>
</article>
</div>
<article class="card">
<h3>Direkter Schriftvergleich</h3>
<div class="grid grid--2 type-compare">
<div class="type-sample">
<p class="type-kicker">Nunito (Body/H2-H4)</p>
<p class="type-compare-line type-compare-line--body">Kommunikation auf Augenhöhe. Klar, direkt, verlässlich.</p>
<p class="type-glyph-line type-glyph-line--body">Aa Bb Cc Dd Ee Ff Gg ÄÖÜ äöü ß 0123456789</p>
</div>
<div class="type-sample">
<p class="type-kicker">URW Gothic L Demi (H1/CTA)</p>
<p class="type-compare-line type-compare-line--strong">Kommunikation auf Augenhöhe. Klar, direkt, verlässlich.</p>
<p class="type-glyph-line type-glyph-line--strong">Aa Bb Cc Dd Ee Ff Gg ÄÖÜ äöü ß 0123456789</p>
</div>
</div>
</article>
<article class="card">
<h3>Typografische Skala</h3>
<div class="table-wrap">
<table class="table">
<thead>
<tr>
<th>Element</th>
<th>Größe</th>
<th>Gewicht</th>
<th>Zeilenhöhe</th>
</tr>
</thead>
<tbody>
<tr>
<td>H1</td>
<td>40-60 px (responsive)</td>
<td>600 (URW Gothic L Demi)</td>
<td>1.03</td>
</tr>
<tr>
<td>H2</td>
<td>30 px</td>
<td>700 (Nunito)</td>
<td>1.15</td>
</tr>
<tr>
<td>H3</td>
<td>21 px</td>
<td>700 (Nunito)</td>
<td>1.2</td>
</tr>
<tr>
<td>Body</td>
<td>17 px</td>
<td>400-700 (Nunito)</td>
<td>1.58</td>
</tr>
</tbody>
</table>
</div>
</article>
<div class="grid grid--2">
<article class="card">
<h3>Verbindliche Satzregeln</h3>
<ul class="bullets">
<li>Fließtext standardmäßig 17 px in Nunito, niemals kleiner als 16 px.</li>
<li>Lesetexte mit Zeilenhöhe 1.5 bis 1.65 setzen; Headlines enger führen (1.03 bis 1.2).</li>
<li>Zeilenlänge für längere Texte zwischen 45 und 75 Zeichen halten.</li>
<li>Text linksbündig, kein Blocksatz in Fließtexten.</li>
<li>Versalien nur für kurze Labels/Kicker einsetzen, nicht für ganze Absätze.</li>
<li>Fettungen sparsam nutzen: maximal ein Fokuspunkt pro Satz oder UI-Element.</li>
</ul>
</article>
<article class="card">
<h3>Hierarchie-Definition</h3>
<ul class="bullets">
<li>H1 ist der einzige visuelle Primäranker einer Seite und bleibt in URW Gothic L Demi.</li>
<li>H2 strukturiert Hauptabschnitte in Nunito 700 und muss inhaltlich scanbar formuliert sein.</li>
<li>H3 benennt konkrete Teilthemen, Komponenten oder Arbeitsschritte.</li>
<li>Body trägt die Information: neutral, klar, ohne dekorative Effekte.</li>
<li>Buttons und CTAs bleiben in URW Gothic L Demi, damit Handlungsaufforderungen sofort auffallen.</li>
<li>In einer Card nie mehr als drei Hierarchieebenen kombinieren (z. B. H3, Body, Label).</li>
</ul>
</article>
</div>
<article class="card">
<h3>Do / Don't Beispiele</h3>
<div class="table-wrap">
<table class="table">
<thead>
<tr>
<th>Kontext</th>
<th>Do</th>
<th>Don't</th>
</tr>
</thead>
<tbody>
<tr>
<td>Absatz</td>
<td>Kurze, klare Sätze mit 1-2 Kernaussagen pro Absatz.</td>
<td>Verschachtelte Satzkonstruktionen mit vielen Nebensätzen.</td>
</tr>
<tr>
<td>Headline</td>
<td>Nutzenorientiert und konkret, z. B. "Support in unter 2 Stunden".</td>
<td>Abstrakt oder werblich, z. B. "Kommunikation neu gedacht".</td>
</tr>
<tr>
<td>CTA</td>
<td>Verb + Ergebnis, z. B. "Angebot anfordern".</td>
<td>Unklare Labels wie "Mehr" oder "Weiter".</td>
</tr>
<tr>
<td>Hervorhebung</td>
<td>Wichtige Begriffe punktuell fett markieren.</td>
<td>Ganze Absätze dauerhaft fett setzen.</td>
</tr>
</tbody>
</table>
</div>
</article>
<article class="card">
<h3>Implementierungsbeispiele</h3>
<p class="muted small">Beispiel für saubere Text-Hierarchie mit den festgelegten Schriftrollen.</p>
<pre class="code"><code>&lt;section&gt;
&lt;h2&gt;Service-Level und Erreichbarkeit&lt;/h2&gt;
&lt;p&gt;Unser Support reagiert werktags innerhalb von zwei Stunden.&lt;/p&gt;
&lt;button class="btn btn--primary"&gt;Anfrage senden&lt;/button&gt;
&lt;/section&gt;</code></pre>
<p class="muted small">Passende Token-Zuordnung in CSS.</p>
<pre class="code"><code>:root {
--ob-font-body: "Nunito", "Segoe UI", Arial, sans-serif;
--ob-font-heading: "Nunito", "Segoe UI", Arial, sans-serif;
--ob-font-strong: "URW Gothic L Demi", "Nunito", "Segoe UI", Arial, sans-serif;
}
h1 { font-family: var(--ob-font-strong); }
h2, h3, h4 { font-family: var(--ob-font-heading); }
body { font-family: var(--ob-font-body); }</code></pre>
</article>
</section>
<section class="section" id="imagery">
<div class="section__head">
<h2>Bildsprache</h2>
<p class="muted">Abgeleitet aus dem Auftritt: Menschen, Teams, echte Situationen, klare Kontraste.</p>
</div>
<div class="grid grid--2">
<article class="card">
<h3>Bildprinzipien</h3>
<ul class="bullets">
<li>Authentische Team- und Kundenszenen statt generischer Stock-Inszenierung.</li>
<li>Fokus auf Beratung, Zusammenarbeit, Support und konkrete Arbeitssituationen.</li>
<li>Helle, aufgeräumte Motive mit natürlicher Farbtemperatur.</li>
<li>Personen klar erkennbar, freundliche aber professionelle Haltung.</li>
</ul>
</article>
<article class="card">
<h3>Nicht verwenden</h3>
<ul class="bullets">
<li>Überinszenierte Futuristik (neon, holografische Fake-Interfaces).</li>
<li>Stark entsättigte oder dramatisch dunkle Bildlooks ohne Markenbezug.</li>
<li>Beliebige Handschlag-Stockfotos ohne realen Kontext.</li>
<li>Unruhige Hintergründe, die Textlesbarkeit reduzieren.</li>
</ul>
</article>
</div>
<article class="card">
<h3>Bildbearbeitung und Overlay</h3>
<p class="muted">
Nur dezente Korrekturen: Kontrast +5 bis +10, Sättigung maximal +6, kein harter
Farbstich. Text auf Bildern immer mit Kontrastfläche (hell/dunkel) absichern.
</p>
</article>
</section>
<section class="section" id="components">
<div class="section__head">
<h2>UI-Komponenten</h2>
<p class="muted">Robuste Standardbausteine für Website, Landingpages und Kundenportal.</p>
</div>
<article class="card">
<h3>Hero</h3>
<div class="component-hero">
<p class="component-hero__kicker">Einstiegskomponente</p>
<p class="component-hero__title">Kommunikation, die im Alltag spürbar entlastet.</p>
<p class="component-hero__text">
Der Hero transportiert Nutzen, Positionierung und klare Handlungsoptionen innerhalb
der ersten Bildschirmansicht.
</p>
<div class="row row--wrap">
<button class="btn btn--primary" type="button">IT-Systemhaus anfragen</button>
<button class="btn btn--light" type="button">Mehr erfahren</button>
</div>
<div class="cluster">
<span class="pill">ITK-Systemhaus</span>
<span class="pill">B2B</span>
<span class="pill">Telefonie &amp; Integration</span>
</div>
</div>
<p class="muted small">
Einsatz: immer als erste inhaltliche Komponente einer Seite, mit 1 Primär-CTA und
maximal 1-2 Sekundäraktionen.
</p>
</article>
<div class="grid grid--2">
<article class="card">
<h3>Buttons</h3>
<div class="row row--wrap">
<button class="btn btn--primary" type="button">IT-Systemhaus anfragen</button>
<button class="btn btn--light" type="button">Mehr erfahren</button>
<button class="btn btn--light btn--sm" type="button">Sekundär</button>
</div>
</article>
<article class="card">
<h3>Status</h3>
<div class="row row--wrap">
<span class="pill">Standard</span>
<span class="pill pill--brand">Aktiv</span>
<span class="pill pill--accent">Priorität</span>
<span class="pill pill--success">Verfügbar</span>
</div>
</article>
</div>
<div class="grid grid--2 component-stack">
<article class="card">
<h3>Kontaktformular</h3>
<form class="demo-form" action="#" method="post" onsubmit="return false">
<label class="field">
<span>Firma</span>
<input class="input" type="text" placeholder="Beispiel GmbH" />
</label>
<label class="field">
<span>E-Mail</span>
<input class="input" type="email" placeholder="kontakt@firma.de" />
</label>
<label class="field">
<span>Nachricht</span>
<textarea class="input" rows="4" placeholder="Wie können wir unterstützen?"></textarea>
</label>
<button class="btn btn--primary btn--sm" type="submit">Absenden</button>
</form>
</article>
<article class="card">
<h3>Hinweis-Box</h3>
<div class="alert">
<strong>Service-Hinweis:</strong>
<span>Support-Anfragen immer mit Erreichbarkeit und kurzer Problembeschreibung einreichen.</span>
</div>
<p class="muted small">Alerts werden sachlich formuliert, ohne Alarmismus.</p>
</article>
</div>
<article class="card">
<h3>Card-Prinzip</h3>
<p>
Cards nutzen weiße Flächen, feine Linien und moderate Tiefe. Inhalte bleiben
strukturiert, ohne visuelle Überladung. Keine dekorativen Verläufe in
Content-Flächen.
</p>
</article>
</section>
<section class="section" id="accessibility">
<div class="section__head">
<h2>Accessibility und UX-Regeln</h2>
<p class="muted">Verbindliche Mindeststandards für digitale Touchpoints.</p>
</div>
<div class="grid grid--2">
<article class="card">
<h3>Kontrast und Lesbarkeit</h3>
<ul class="bullets">
<li>Textkontrast mindestens WCAG AA (4.5:1 bei normalem Text).</li>
<li>Keine hellblauen Fließtexte auf weißem Hintergrund.</li>
<li>Interaktive Elemente mit klarer Fokusmarkierung versehen.</li>
<li>Alternativtexte für Grafiken und Bilder bereitstellen.</li>
</ul>
</article>
<article class="card">
<h3>Interaktion</h3>
<ul class="bullets">
<li>Klickflächen mindestens 40 x 40 px.</li>
<li>Buttons eindeutig benennen (Verb + Nutzen).</li>
<li>Navigation logisch und auf mobilen Geräten ohne Brüche.</li>
</ul>
</article>
</div>
<article class="card">
<h3>MUSS-Checkliste (Release-Gate)</h3>
<ul class="bullets">
<li>Jede Seite MUSS genau eine <code>h1</code>, eine sinnvolle Überschriften-Hierarchie und semantische Landmarks (<code>header</code>, <code>nav</code>, <code>main</code>, <code>footer</code>) haben.</li>
<li>Jede Seite MUSS ein korrektes <code>lang</code>-Attribut und einen eindeutigen, aussagekräftigen <code>title</code> haben.</li>
<li>Alle Funktionen MÜSSEN vollständig per Tastatur bedienbar sein (Tab, Shift+Tab, Enter, Space, Escape) und dürfen keine Keyboard-Falle erzeugen.</li>
<li>Der Fokus MUSS immer sichtbar sein, logisch durch die Seite laufen und darf nie per CSS entfernt werden.</li>
<li>Textkontrast MUSS mindestens 4.5:1 betragen; Kontrast von UI-Komponenten/Fokusindikatoren MUSS mindestens 3:1 betragen.</li>
<li>Information darf NIE nur über Farbe vermittelt werden; es MUSS immer ein zweiter Hinweis vorhanden sein (Text, Icon, Muster oder Statuslabel).</li>
<li>Interaktive Elemente MÜSSEN einen eindeutigen Accessible Name haben (keine Buttons/Links nur mit "Hier" oder nur Icon ohne Label).</li>
<li>Klick- und Touch-Ziele MÜSSEN mindestens 44 x 44 px gross sein oder gleichwertig grossen Abstand besitzen.</li>
<li>Formulare MÜSSEN programmatisch verknüpfte Labels besitzen; Pflichtfelder, Fehler und Hilfetexte MÜSSEN für Screenreader auslesbar sein.</li>
<li>Fehlermeldungen MÜSSEN konkret sagen, was falsch ist und wie es zu korrigieren ist; der Fokus MUSS nach Submit zur Fehlerzusammenfassung springen.</li>
<li>Statusänderungen (z. B. "gespeichert", "geladen", "Fehler") MÜSSEN per <code>aria-live</code> oder gleichwertig angekündigt werden.</li>
<li>Bilder mit Informationswert MÜSSEN sinnvolle Alt-Texte haben; rein dekorative Bilder MÜSSEN als dekorativ markiert sein.</li>
<li>Video mit Sprache MUSS Untertitel haben; reine Audioinhalte MÜSSEN ein Transkript haben; Autoplay mit Ton ist nicht zulässig.</li>
<li>Inhalte MÜSSEN bei 200 % Zoom und bei 320 CSS-Pixel Breite ohne horizontalen Pflicht-Scroll funktionieren (ausser technisch notwendige Ausnahmen wie Datentabellen).</li>
<li>Animationen/Bewegungen MÜSSEN reduzierbar sein (<code>prefers-reduced-motion</code>); Inhalte dürfen nicht mehr als 3-mal pro Sekunde blinken.</li>
<li>Authentifizierung darf keine unzumutbare kognitive Hürde erzeugen; es MUSS eine barrierefreie Alternative zu rein visuellen Aufgaben geben.</li>
<li>Release-Freigabe nur, wenn Kernpfade bestanden sind: Navigation, Suche, Login, Formulare, Checkout, Zahlung und Fehlerszenarien.</li>
</ul>
<p class="muted small">Definition of Done: Kein Release ohne bestandenen Keyboard-Test, Screenreader-Schnelltest und dokumentierte Behebung aller kritischen A11y-Defekte.</p>
</article>
</section>
<section class="section" id="tokens">
<div class="section__head">
<h2>Design Tokens</h2>
<p class="muted">Copy-ready Basis für Webprojekte und UI-Implementierung.</p>
</div>
<article class="card">
<div class="row row--space row--wrap">
<h3>CSS Tokens</h3>
<button class="btn btn--light btn--sm" data-copy-block="#tokenCss">Block kopieren</button>
</div>
<pre class="code" id="tokenCss"><code>:root {
--ob-color-primary: #00A7E6;
--ob-color-primary-soft: #33B9EB;
--ob-color-primary-shade-1: #0086B8;
--ob-color-primary-shade-2: #00648A;
--ob-color-primary-shade-3: #00435C;
--ob-color-primary-shade-4: #00212E;
--ob-color-primary-tint-1: #33B9EB;
--ob-color-primary-tint-2: #66CAF0;
--ob-color-primary-tint-3: #99DCF5;
--ob-color-primary-tint-4: #CCEDFA;
--ob-color-accent: #F59C00;
--ob-color-dark: #343537;
--ob-color-slate: #343537;
--ob-color-bg: #F5FBFE;
--ob-color-surface: #FFFFFF;
--ob-font-body: "Nunito", "Segoe UI", Arial, sans-serif;
--ob-font-heading: "Nunito", "Segoe UI", Arial, sans-serif;
--ob-font-strong: "URW Gothic L Demi", "Nunito", "Segoe UI", Arial, sans-serif;
--ob-radius-sm: 10px;
--ob-radius-md: 14px;
--ob-radius-lg: 20px;
--ob-space-2: 8px;
--ob-space-3: 12px;
--ob-space-4: 16px;
--ob-space-6: 24px;
--ob-space-8: 32px;
}</code></pre>
</article>
<article class="card">
<div class="row row--space row--wrap">
<h3>JSON Tokens</h3>
<button class="btn btn--light btn--sm" data-copy-block="#tokenJson">Block kopieren</button>
</div>
<pre class="code" id="tokenJson"><code>{
"color": {
"primary": "#00A7E6",
"primarySoft": "#33B9EB",
"primaryShades": ["#0086B8", "#00648A", "#00435C", "#00212E"],
"primaryTints": ["#33B9EB", "#66CAF0", "#99DCF5", "#CCEDFA"],
"accent": "#F59C00",
"dark": "#343537",
"slate": "#343537",
"background": "#F5FBFE",
"surface": "#FFFFFF"
},
"font": {
"body": "Nunito",
"heading": "Nunito",
"strong": "URW Gothic L Demi"
},
"radius": {
"sm": "10px",
"md": "14px",
"lg": "20px"
}
}</code></pre>
</article>
</section>
<footer class="footer">
<p class="muted small">o-byte.com - Styleguide - Stand: Februar 2026</p>
</footer>
</main>
</div>
<div class="toast" id="toast" role="status" aria-live="polite" aria-atomic="true"></div>
<script src="./assets/js/app.js"></script>
</body>
</html>

219
vorlage.adoc Normal file
View File

@@ -0,0 +1,219 @@
// Doku Workflow:
// Im ersten Durchgang Doku schreiben, als PDF Exportieren und Seitenumbrüche kontrollieren. Umbrüche im Paragraphen vermeiden
// Inhaltliche Plausibilität prüfen
// Schreibweisen und gängige Rechtschreibfehler und Syntax prüfen
= Testdoku
:imagesdir: ../images
:date: 01.01.2025
:revision: X.X.X vXXX ab Starface 9.0.0.0
//(Ab hier soll im idealfall aus SAP kommen)
== Dokumentation für Modulversion X.X.X ab STARFACE 9.0.0.0
== Produktbeschreibung
// Schreibstil ist hier die neutrale Form
* Idealfall SAP Schnittstelle, Produktbeschreibung, vertrieblicher Input
* Produktbild rechts einfügen und *verweis auf den Shop*
== Anwendungsbeispiel
* Beispiel, wofür das Modul in der Praxis verwendet (im Zweifel mit DN absprechen)
== Technische Voraussetzungen
* *ab STARFACE 9.0.0.0*
* Für dieses Modul stehen legacy Versionen ab STARFACE 7.0.0.2 zur Verfügung.
* Cloud anforderungen bsp. SSH-Tunnel
* Anforderungen an Drittsysteme/Anbieter
* Optionale anfdorderungen für bestimmte Funktionen
* Anforderungen für Hardware
* getestet mit Versionierung X von externer Software/API
//Dieser Bereich wird in Abstimmung mit Devs, Vertrieb und Support bei Bedarf eingefügt.
// === (Technische Limitierung(en))
// * Welche technischen Faktoren gibt es, die die Modulfunktion einschränken (Maximale Importzahl usw.)
== Vertriebsmodell(e)
* Kauf/Inkl. SPV
* Managed Service
* ...
//== Modulvarianten
//* Modulvarianen für verschiedene Drittsysteme (z.b Google bei AKI, XML-Monitoring, ...)
//(Bis hier soll im idealfall aus SAP kommen)
//Seitenumbruch
<<<
// Schreibstil ab hier ist das "imparative-DU", ein direktes Du ist zu vermeiden, wird der Nutzer nicht direkt angesprochen verwenden wir die neutrale Form (man). "Du", "Dich", "Dein", ... schreiben wir GROß!
// Benutzung von TIP: und WARNING: - Tip ist immer, wenn man zusätzliche Infos bereitstellt, die aber keinen direkten Einfluss auf die Funktion des Moduls haben. Mit WARNING: Werden in der Regel besonders kritische Punkte (Fallstricke) bei der Konfiguration des Moduls hervorgehoben.
== Vorbereitung der IT-Umgebung:
* Infrastruktur für den Betrieb des Moduls aufsetzen und konfigurieren (ggf. Exkurs in die Partnersysteme)
=== Konfiguration der Drittsysteme
* Was muss an Drittsystemen eingestellt werden
== STARFACE-Konfiguration
=== Menüpunkt
==== Tab
image:sf_tab1.png[]
//Namenskonvention für Bilder: Dateiname = Tab-Überschrift, bei SF Konfiguration mit dem Präfix "sf_"
===== Unterpunkt
* Einstellungen, die an der STARFACE selber vorgenommen werden (z.b am SF Internen Adressbuch oder am Netzwerk etc.)
* Es muss vorab keine Konfiguration in der STARFACE vorgenommen werden.
== Modulkonfiguration
=== Allgemein
image::allgemein.png[]
//Namenskonvention für Bilder: Dateiname = Tab-Überschrift, bei SF Konfiguration mit dem Präfix "sf_"
* *Name*
** Wähle hier den Namen der Modulinstanz. Dieser Name sollte möglichst beschreibend vergeben werden, ein guter Ausgangspunkt ist der Name des Moduls. Sollen mehrere Instanzen des selben Moduls aktiv sein, muss für jede Instanz ein einmaliger Name vergeben werden.
* *Beschreibung*
** Dieses Feld bietet Raum für eine detailliertere Dokumentation der Instanz. Hier kann beispielsweise dokumentiert werden, auf welche Nutzer/Gruppen das Modul zugreift.
* *Logdatei*
** Jedes Modul informiert in den Levels "ERROR, WARN, INFO, DEBUG, TRACE" in den jeweils verschiedenen Abstufungen über Prozesse, die im Modulbetrieb ablaufen. Falls ein Fehler auftritt hat man hier die Möglichkeit, die Logdatei zu speichern. Standardeinstellung ist das Level "INFO".
TIP: Das Log aktualisiert sich nicht automatisch, sondern nur, wenn die entsprechende Schaltfläche betätigt wird.
=== Konfiguration
image::konfiguration.png[]
//Namenskonvention für Bilder: Dateiname = Tab-Überschrift, bei SF Konfiguration mit dem Präfix "sf_"
==== Unterpunkt in Tab
* *Auf einzelne Punkte eingehen*
** Text
TIP: In den meisten Fällen werden die Rufnummern in das Format 00492515906850 normalisiert. Es können in Ausnahmefällen aber auch Formate wie +492515906850 oder 02515906850 signalisiert werden. Daher empfehlen wir grundsätzlich die Verwendung von Wildcards bei der Quellrufnummer, also zum Beispiel *2515906850.
* Legende:
** ? - Platzhalter für eine Ziffer
** * - Platzhalter für eine, mehrere oder keine Ziffer/n
== Bekannte Probleme
* Bei diesem Modul liegen keine bekannten Probleme vor.
* Problem entdeckt? Schicke eine E-Mail an support@o-byte.com, um Fehler zu melden!
ODER
* Problem1:
** Problem schildern
*** Lösung anbieten
//== FAQ
//* Wenn von einem Modul sehr viele Supportanfragen zum gleichen Thema kommen, kann man das hier abhandeln und so ggf. viele unnötige Supportfälle vermeiden
== Versionshinweis
* Versionsnummer
** *Bugfix:*
*** Welcher Fehler wurde behoben?
** *Neue Funktion:*
*** Welche neue Funktion wurde eingebaut?
// Beim Bugfix immer daran denken, ggfs. den "Bekannte Probleme" Bereich zu editieren.
== Download
=== Modul testen:
* Für dieses Modul steht kein Testzeitraum von 14 Tagen zur Verfügung. Das Modul wird erst mit Kauf aktiv. Unser Vertriebsteam hilft gerne weiter unter vertrieb@o-byte.com.
*ODER*
Bitte achte beim Download auf die Kompatibilität zur STARFACE Version!
Mit Klick auf den Downloadlink einer Modulversion öffnen sich ein Fenster mit Installationshinweisen und ein Pop-up-Fenster.
=== Modul testen:
* Wir stellen unser Modul 14 Tage kostenfrei zum Testen zur Verfügung.
* Nach dem Kauf oder Update: Mit E-Mail-Adresse verifizieren. Für die Inbetriebnahme/das Update ist kein Lizenzschlüssel nötig.
* Wir stellen das Modul als .sfm Datei zur Verfügung.
*ODER*
Bitte achte beim Download auf die Kompatibilität zur STARFACE Version!
Mit Klick auf den Downloadlink einer Modulversion öffnen sich ein Fenster mit Installationshinweisen und ein Pop-up-Fenster.
* Kostenfreies Modul laden: Bitte trage deine Mailadresse ein, stimme der Datenschutzbestimmung zu und klicke auf „Download“. Der Downloadlink wird per Mail zur Verfügung gestellt.
* Nach dem Kauf oder Update: Mit E-Mail-Adresse verifizieren. Für die Inbetriebnahme/das Update ist kein Lizenzschlüssel nötig.
* Wir stellen das Modul als .sfm Datei zur Verfügung.
++++
<style>
.button-container {
display: flex; /* Use Flexbox for centering */
justify-content: center; /* Center the content horizontally */
margin-top: 20px; /* Optional: Add some margin to the top */
}
.download-button {
background-color: #00a7e6; /* Blue background */
border: none;
border-radius: 4px;
color: white; /* Text color */
padding: 15px 32px;
text-align: center;
text-decoration: none; /* No underline */
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.download-button:hover {
background-color: #058bbb;
}
.download-link {
text-decoration: none; /* No underline */
}
.download-link:hover {
text-decoration: none; /* No underline */
}
</style>
<div class="button-container">
<a href="https://get.o-byte.com/?olm=olm-" class="download-button download-link" download>
<font color="#ffffff">zum Download</font>
</a>
</div>
++++