This commit is contained in:
Knah Tsaeb 2025-03-18 10:26:48 +01:00
parent bba1356bdc
commit a77181412e
59 changed files with 3893 additions and 4357 deletions

5
.gitignore vendored
View file

@ -1,4 +1,5 @@
presets/kt-*
presets/custom-*
.vscode
vendor
composer.lock
composer.lock
public/assets/sprites/custom-*

121
LICENCE Normal file
View file

@ -0,0 +1,121 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.

View file

@ -2,15 +2,55 @@
## Idea
Try to harmonize theme over personal application and centralize all ressource in single repo.
I needed to harmonize the styles across my different sites and services. Instead of copying and pasting my rules into each project, I preferred to create two stylesheets: one to define my variables and another to style the elements I use in at least two different projects. This makes updates and maintenance easier.
I tried to use semantic tags as much as possible and as few classes as possible.
## Preview
For demo I use [PicoCSS](https://picocss.com/) for HTML rendering.
[theme.knah-tsaeb.org](https://theme.knah-tsaeb.org) or serve `index.php`.
`index.html` page contain example of CSS rule.
## Color scheme (kt-scheme.css)
`icons.php` page contain all SVG icon.
All variable are define in `kt-scheme.css`.
## Components (kt-rules.css)
It's a share rules over my service.
## Icons (fullset.svg)
All SVG icon in one file, see `Icons` sections bellow for usage.
## Install with composer (prefered method)
```shell
composer config repositories.kt-color-scheme vcs https://forge.leslibres.org/knah-tsaeb/kt-color-scheme
composer require knah-tsaeb/kt-color-scheme --dev
```
In `example` folder you find two file for help you with automatic deployement.
### composer.json
You can add or update `scripts` section in your composer.json.
```json
"scripts": {
"copyCSS": "php bin/deploy.php -o copyCSS",
"copySprite": "php bin/deploy.php -o copySprite",
"post-update-cmd": [
"@copyCSS",
"@copy"
]
}
```
### deploy.php
This file is an example; you need to modify it for your project.
## Icons
@ -74,7 +114,7 @@ You can copy/paste code directly from `icons.php` page
When you add new icon in `public/assets/icons/`, you need rebuilding sprite file.
You can use bash script `build.sh`, in root directory, for generating all sprite :
You can use bash script `bin/build.sh` for generating all sprite :
- admonition.svg | all icons with admonition prefix
- file.svg | all icons with file prefix
@ -84,17 +124,17 @@ You can use bash script `build.sh`, in root directory, for generating all sprite
- logo.svg | all icons with logo prefix
- ui.svg | all icons with ui prefix
Or you can use svg_sprite_generator.(php|sh) in `bin` dir.
Or you can use svg_sprite_generator in `bin` dir.
Usage :
```shell
bash svg_sprite_generator.sh -d <directory> | -f <file_list> -o <output_file>
bash svg_sprite_generator.sh {-d <directory> | -f <file_list>} -o <output_file>
```
Or
```shell
php svg_sprite_generator.php -d <directory> | -f <file_list> -o <output_file>
php svg_sprite_generator.php {-d <directory> | -f <file_list>} -o <output_file>
```
Example with bash:
Example :
For generate one file *name* **fullSet.svg** contain all icons in *directory* **public/assets/icons**
@ -109,7 +149,11 @@ For generate one file *name* **ui.svg** contain all icons with prefix *ui* in *d
bash bin/svg_sprite_generator.sh -f presets/ui.list -o public/assets/sprites/ui.svg
```
You can make your own preset, just create file contain list of icons you want (one icon by line).
You can make your own preset, just create file with `custom-` prefix in presets folder, edit and add list of icons you want (one icon by line).
## Licence
All content are under CC0 1.0 Universal EXPECT ORIGINAL ICONS, see bellow.
## Sources
@ -165,10 +209,4 @@ Icons are adapted from :
**Libre Variety Filled Icons**
- Author: [Diemen Design](https://github.com/DiemenDesign/LibreICONS)
- License: [MIT License](https://github.com/DennisSuitters/LibreICONS/blob/master/LICENSE)
- Collection: [Libre Variety Filled Icons](https://www.svgrepo.com/collection/libre-variety-filled-icons/)
## Idea/todo
- Remove PicoCSS and make personal example (website, gallery, bookmark.....)
- Make small framework with sementic approch (limit copy/paste on each project)
- Collection: [Libre Variety Filled Icons](https://www.svgrepo.com/collection/libre-variety-filled-icons/)

1
bin/.htaccess Normal file
View file

@ -0,0 +1 @@
Require all denied

6
bin/build.sh Normal file
View file

@ -0,0 +1,6 @@
#!/bin/bash
find presets/ -name '*.list' | while IFS= read -r line; do
fileName="$(basename -s .list $line)"
bash bin/svg_sprite_generator.sh -f $line -o public/assets/sprites/$fileName.svg
done

15
bin/minify.php Normal file
View file

@ -0,0 +1,15 @@
<?php
require_once 'vendor/autoload.php';
use MatthiasMullie\Minify;
$sourcePath = 'public/assets/css/kt-rules.css';
$minifier = new Minify\CSS($sourcePath);
$minifiedPath = 'public/assets/css/kt-rules.min.css';
$minifier->minify($minifiedPath);
$sourcePath = 'public/assets/css/kt-scheme.css';
$minifier = new Minify\CSS($sourcePath);
$minifiedPath = 'public/assets/css/kt-scheme.min.css';
$minifier->minify($minifiedPath);

View file

@ -64,7 +64,7 @@ echo "SVG sprite done : $outputFile\n";
/**
* Process an SVG file and convert it into a <symbol> for the sprite.
*
*
* @param string $filePath Path to the SVG file.
* @return string Processed SVG content as <symbol>.
*/

View file

@ -1,9 +0,0 @@
#!/bin/bash
bash bin/svg_sprite_generator.sh -f presets/admonition.list -o public/assets/sprites/admonition.svg
bash bin/svg_sprite_generator.sh -f presets/file.list -o public/assets/sprites/file.svg
bash bin/svg_sprite_generator.sh -f presets/folder.list -o public/assets/sprites/folder.svg
bash bin/svg_sprite_generator.sh -f presets/hardware.list -o public/assets/sprites/hardware.svg
bash bin/svg_sprite_generator.sh -f presets/logo.list -o public/assets/sprites/logo.svg
bash bin/svg_sprite_generator.sh -f presets/ui.list -o public/assets/sprites/ui.svg
bash bin/svg_sprite_generator.sh -d public/assets/icons -o public/assets/sprites/full.svg

32
composer.json Normal file
View file

@ -0,0 +1,32 @@
{
"name": "knah-tsaeb/kt-color-scheme",
"version": "1.0.0",
"description": "Ressource theme for Knah Tsaeb webapp",
"keywords": [
"css",
"icon",
"svg"
],
"homepage": "https://theme.knah-tsaeb.org/",
"authors": [
{
"name": "Knah Tsaeb",
"homepage": "https://knah-tsaeb.org"
}
],
"license": [
"MLP",
"CCO",
"MIT",
"Logo",
"CC BY"
],
"scripts": {
"build-full-set": "php bin/svg_sprite_generator.php -d public/assets/icons -o public/assets/sprites/fullSet.svg",
"build-all-set-type": "bash bin/build.sh",
"minify": "php bin/minify.php"
},
"require-dev": {
"matthiasmullie/minify": "^1.3"
}
}

View file

@ -0,0 +1,19 @@
{
"repositories": {
"kt-color-scheme": {
"type": "vcs",
"url": "https://forge.leslibres.org/knah-tsaeb/kt-color-scheme"
}
},
"require-dev": {
"knah-tsaeb/kt-color-scheme": "^1.0.0"
},
"scripts": {
"copyCSS": "php bin/deploy.php -o copyCSS",
"copySprite": "php bin/deploy.php -o copySprite",
"post-update-cmd": [
"@copyCSS",
"@copy"
]
}
}

View file

@ -0,0 +1,46 @@
<?php
$options = getopt('o:');
$operation = $options['o'] ?? null;
if (!$operation) {
echo "\n Error: Missing operation type, use -o with param (copyCSS, copySprite...).\n\n";
exit(1);
}
if ($operation === 'copyCSS') {
Deploy::copyRessource('css');
}
if ($operation === 'copySprite') {
Deploy::copyRessource('sprites');
}
class Deploy {
private static $cssFile = [
'kt-scheme.css' => 'vendor/knah-tsaeb/kt-color-scheme/public/assets/css/kt-scheme.css',
'css.css' => 'vendor/knah-tsaeb/kt-color-scheme/public/assets/css/css.css'
];
private static $spritesFile = [
'full.svg' => 'vendor/knah-tsaeb/kt-color-scheme/public/assets/sprites/full.svg'
];
private static $baseDestPath = 'public/assets/';
static function copyRessource($type) {
if (!is_dir(self::$baseDestPath . $type)) {
echo "\n Error: destination dir ('".self::$baseDestPath.$type."/') does not exist, please create it before run composer update/install \n \n\n";
exit(1);
}
foreach (self::${$type . 'File'} as $fileName => $file) {
if (file_exists($file)) {
copy($file, 'public/assets/' . $type . '/' . $fileName);
}
}
exit(0);
}
}

View file

@ -0,0 +1,5 @@
public/assets/icons/admonition-caution-colored.svg
public/assets/icons/admonition-important-colored.svg
public/assets/icons/admonition-note-colored.svg
public/assets/icons/admonition-tip-colored.svg
public/assets/icons/admonition-warning-colored.svg

3
presets/filetype.list Normal file
View file

@ -0,0 +1,3 @@
public/assets/icons/filetype-doc.svg
public/assets/icons/filetype-docx.svg
public/assets/icons/filetype-pdf.svg

View file

@ -1,581 +0,0 @@
[data-theme=dark] {
/* DEF */
--pico-background-color: #13171f;
--pico-color: #c2c7d0;
--pico-text-selection-color: rgba(1, 170, 255, 0.1875);
--pico-muted-color: #7b8495;
--pico-muted-border-color: var(--background-color-lighten);
/* KT */
--pico-background-color: var(--background-color);
--pico-color: var(--text-color);
--pico-muted-color: var(--text-color-disable);
/* DEF */
--pico-primary: #01aaff;
--pico-primary-background: #0172ad;
--pico-primary-border: var(--pico-primary-background);
--pico-primary-underline: rgba(1, 170, 255, 0.5);
--pico-primary-hover: #79c0ff;
--pico-primary-hover-background: #017fc0;
--pico-primary-hover-border: var(--pico-primary-hover-background);
--pico-primary-hover-underline: var(--pico-primary-hover);
--pico-primary-focus: rgba(1, 170, 255, 0.375);
--pico-primary-inverse: #fff;
/* KT */
--pico-primary: var(--primary);
--pico-primary-background: var(--primary);
--pico-primary-hover-background: var(--primary-darken);
--pico-primary-hover: var(--primary-lighten);
--pico-primary-inverse: var(--primary-text-contrast);
/* DEF */
--pico-secondary: #969eaf;
--pico-secondary-background: #525f7a;
--pico-secondary-border: var(--pico-secondary-background);
--pico-secondary-underline: rgba(150, 158, 175, 0.5);
--pico-secondary-hover: #b3b9c5;
--pico-secondary-hover-background: #5d6b89;
--pico-secondary-hover-border: var(--pico-secondary-hover-background);
--pico-secondary-hover-underline: var(--pico-secondary-hover);
--pico-secondary-focus: rgba(144, 158, 190, 0.25);
--pico-secondary-inverse: #fff;
/* KT */
--pico-secondary: var(--secondary);
--pico-secondary-background: var(--secondary);
--pico-secondary-hover-background: var(--secondary-darken);
--pico-secondary-hover: var(--secondary-lighten);
--pico-secondary-inverse: var(--secondary-text-contrast);
--pico-success: var(--success);
--pico-success-background: var(--success);
--pico-success-hover-background: var(--success-darken);
--pico-success-hover: var(--success-lighten);
--pico-success-inverse: var(--success-text-contrast);
--pico-error: var(--error);
--pico-error-background: var(--error);
--pico-error-hover-background: var(--error-darken);
--pico-error-hover: var(--error-lighten);
--pico-error-inverse: var(--error-text-contrast);
--pico-warning: var(--warning);
--pico-warning-background: var(--warning);
--pico-warning-hover-background: var(--warning-darken);
--pico-warning-hover: var(--warning-lighten);
--pico-warning-inverse: var(--warning-text-contrast);
--pico-info: var(--info);
--pico-info-background: var(--info);
--pico-info-hover-background: var(--info-darken);
--pico-info-hover: var(--info-lighten);
--pico-info-inverse: var(--info-text-contrast);
/* DEF */
--pico-contrast: #dfe3eb;
--pico-contrast-background: #eff1f4;
--pico-contrast-border: var(--pico-contrast-background);
--pico-contrast-underline: rgba(223, 227, 235, 0.5);
--pico-contrast-hover: #fff;
--pico-contrast-hover-background: #fff;
--pico-contrast-hover-border: var(--pico-contrast-hover-background);
--pico-contrast-hover-underline: var(--pico-contrast-hover);
--pico-contrast-focus: rgba(207, 213, 226, 0.25);
--pico-contrast-inverse: #000;
--pico-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 9, 12, 0.06), 0 0 0 0.0625rem rgba(7, 9, 12, 0.015);
/* DEF */
--pico-h1-color: #f0f1f3;
--pico-h2-color: #e0e3e7;
--pico-h3-color: #c2c7d0;
--pico-h4-color: #b3b9c5;
--pico-h5-color: #a4acba;
--pico-h6-color: #8891a4;
/* KT */
--pico-h1-color: var(--h1-color);
--pico-h2-color: var(--h2-color);
--pico-h3-color: var(--h3-color);
--pico-h4-color: var(--h4-color);
--pico-h5-color: var(--h5-color);
--pico-h6-color: var(--h6-color);
/* DEF */
--pico-mark-background-color: #014063;
--pico-mark-color: #fff;
--pico-ins-color: #62af9a;
--pico-del-color: #ce7e7b;
--pico-blockquote-border-color: var(--pico-muted-border-color);
--pico-blockquote-footer-color: var(--pico-muted-color);
--pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
--pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
--pico-table-border-color: var(--pico-muted-border-color);
--pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375);
--pico-code-background-color: #1a1f28;
--pico-code-color: #8891a4;
--pico-code-kbd-background-color: var(--pico-color);
--pico-code-kbd-color: var(--pico-background-color);
/* KT */
--pico-mark-background-color: var(--secondary-darken);
--pico-mark-color: var(--secondary-text-contrast);
--pico-ins-color: var(--success-lighten);
--pico-del-color: var(--error-lighten);
/* DEF */
--pico-form-element-background-color: #1c212c;
--pico-form-element-selected-background-color: #2a3140;
--pico-form-element-border-color: #2a3140;
--pico-form-element-color: #e0e3e7;
--pico-form-element-placeholder-color: #8891a4;
--pico-form-element-active-background-color: #1a1f28;
--pico-form-element-active-border-color: var(--pico-primary-border);
--pico-form-element-focus-color: var(--pico-primary-border);
--pico-form-element-disabled-opacity: 0.5;
--pico-form-element-invalid-border-color: #964a50;
--pico-form-element-invalid-active-border-color: #b7403b;
--pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color);
--pico-form-element-valid-border-color: #2a7b6f;
--pico-form-element-valid-active-border-color: #16896a;
--pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color);
/* KT */
--pico-form-element-background-color: var(--background-color);
--pico-form-element-selected-background-color: var(--background-color);
--pico-form-element-border-color: var(--primary-darken);
--pico-form-element-placeholder-color: var(--text-color-disable);
--pico-form-element-active-background-color: var(--background-color-lighten);
--pico-form-element-active-border-color: var(--primary-darken);
--pico-form-element-focus-color: var(--pico-primary-border);
--pico-form-element-invalid-border-color: var(--error);
--pico-form-element-invalid-active-border-color: var(--error-darken);
--pico-form-element-invalid-focus-color: var(--error-darken);
--pico-form-element-valid-border-color: var(--success);
--pico-form-element-valid-active-border-color: var(--success-darken);
--pico-form-element-valid-focus-color: var(--success-darken);
/* DEF */
--pico-switch-background-color: #333c4e;
--pico-switch-checked-background-color: var(--pico-primary-background);
--pico-switch-color: #fff;
--pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
/* KT */
--pico-switch-background-color: var(--background-color-lighten);
--pico-switch-color: var(--text-color);
/* DEF */
--pico-range-border-color: #202632;
--pico-range-active-border-color: #2a3140;
--pico-range-thumb-border-color: var(--pico-background-color);
--pico-range-thumb-color: var(--pico-secondary-background);
--pico-range-thumb-active-color: var(--pico-primary-background);
/* KT */
--pico-range-border-color: var(--text-color-disable);
--pico-range-active-border-color: var(--text-color);
/* DEF */
--pico-accordion-border-color: var(--pico-muted-border-color);
--pico-accordion-active-summary-color: var(--pico-primary-hover);
--pico-accordion-close-summary-color: var(--pico-color);
--pico-accordion-open-summary-color: var(--pico-muted-color);
/* KT */
--pico-accordion-border-color: var(--pico-muted-border-color);
/* DEF */
--pico-card-background-color: #181c25;
--pico-card-border-color: var(--pico-card-background-color);
--pico-card-box-shadow: var(--pico-box-shadow);
--pico-card-sectioning-background-color: #1a1f28;
/* KT */
--pico-card-background-color: var(--background-color-lighten);
--pico-card-border-color: var(--background-color);
--pico-card-sectioning-background-color: var(--background-color-darken);
/* DEF */
--pico-dropdown-background-color: #181c25;
--pico-dropdown-border-color: #202632;
--pico-dropdown-box-shadow: var(--pico-box-shadow);
--pico-dropdown-color: var(--pico-color);
--pico-dropdown-hover-background-color: #202632;
/* KT */
--pico-dropdown-background-color: var(--background-color);
--pico-dropdown-border-color: var(--background-color-darken);
--pico-dropdown-hover-background-color: var(--primary-lighten);
/* DEF */
--pico-loading-spinner-opacity: 0.5;
--pico-modal-overlay-background-color: rgba(8, 9, 10, 0.75);
--pico-progress-background-color: #202632;
--pico-progress-color: var(--pico-primary-background);
--pico-tooltip-background-color: var(--pico-contrast-background);
--pico-tooltip-color: var(--pico-contrast-inverse);
/* KT */
--pico-progress-background-color: var(--background-color-darken);
--pico-progress-color: var(--background-color-lighten);
--pico-tooltip-background-color: var(--background-color-lighten);
--pico-tooltip-color: var(--text-color);
--pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
--pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
color-scheme: dark
}
:root:not([data-theme="dark"]),
[data-theme="light"] {
/* KT */
--pico-background-color: var(--background-color);
--pico-color: var(--text-color);
--pico-muted-color: var(--text-color-disable);
--pico-primary: var(--primary);
--pico-primary-background: var(--primary);
--pico-primary-hover-background: var(--primary-darken);
--pico-primary-hover: var(--primary-lighten);
--pico-primary-inverse: var(--primary-text-contrast);
--pico-secondary: var(--secondary);
--pico-secondary-background: var(--secondary);
--pico-secondary-hover-background: var(--secondary-darken);
--pico-secondary-hover: var(--secondary-lighten);
--pico-secondary-inverse: var(--secondary-text-contrast);
--pico-success: var(--success);
--pico-success-background: var(--success);
--pico-success-hover-background: var(--success-darken);
--pico-success-hover: var(--success-lighten);
--pico-success-inverse: var(--success-text-contrast);
--pico-error: var(--error);
--pico-error-background: var(--error);
--pico-error-hover-background: var(--error-darken);
--pico-error-hover: var(--error-lighten);
--pico-error-inverse: var(--error-text-contrast);
--pico-warning: var(--warning);
--pico-warning-background: var(--warning);
--pico-warning-hover-background: var(--warning-darken);
--pico-warning-hover: var(--warning-lighten);
--pico-warning-inverse: var(--warning-text-contrast);
--pico-info: var(--info);
--pico-info-background: var(--info);
--pico-info-hover-background: var(--info-darken);
--pico-info-hover: var(--info-lighten);
--pico-info-inverse: var(--info-text-contrast);
--pico-h1-color: var(--h1-color);
--pico-h2-color: var(--h2-color);
--pico-h3-color: var(--h3-color);
--pico-h4-color: var(--h4-color);
--pico-h5-color: var(--h5-color);
--pico-h6-color: var(--h6-color);
--pico-mark-background-color: var(--secondary-darken);
--pico-mark-color: var(--secondary-text-contrast);
--pico-ins-color: var(--success-lighten);
--pico-del-color: var(--error-lighten);
--pico-form-element-background-color: var(--background-color);
--pico-form-element-selected-background-color: var(--background-color);
--pico-form-element-border-color: var(--primary-darken);
--pico-form-element-placeholder-color: var(--text-color-disable);
--pico-form-element-active-background-color: var(--background-color-lighten);
--pico-form-element-active-border-color: var(--primary-darken);
--pico-form-element-focus-color: var(--pico-primary-border);
--pico-form-element-invalid-border-color: var(--error);
--pico-form-element-invalid-active-border-color: var(--error-darken);
--pico-form-element-invalid-focus-color: var(--error-darken);
--pico-form-element-valid-border-color: var(--success);
--pico-form-element-valid-active-border-color: var(--success-darken);
--pico-form-element-valid-focus-color: var(--success-darken);
--pico-switch-background-color: var(--background-color-darken);
--pico-switch-color: var(--text-color);
--pico-range-border-color: var(--text-color-disable);
--pico-range-active-border-color: var(--text-color);
--pico-accordion-border-color: var(--pico-muted-border-color);
--pico-card-background-color: var(--background-color-lighten);
--pico-card-border-color: var(--background-color);
--pico-card-sectioning-background-color: var(--background-color-darken);
--pico-dropdown-background-color: var(--background-color);
--pico-dropdown-border-color: var(--background-color-darken);
--pico-dropdown-hover-background-color: var(--primary-lighten);
--pico-progress-background-color: #fff;
--pico-progress-color: var(--background-color-darken);
--pico-tooltip-background-color: var(--background-color-lighten);
--pico-tooltip-color: var(--text-color);
--pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 155, 138)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
--pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200, 79, 72)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
color-scheme: light
}
:is(button, [type=submit], [type=button], [role=button]).error,
[type=file]::file-selector-button,
[type=reset] {
--pico-background-color: var(--pico-error-background);
--pico-border-color: var(--pico-error-border);
--pico-color: var(--pico-error-inverse);
cursor: pointer
}
:is(button, [type=submit], [type=button], [role=button]).error:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-background-color: var(--pico-error-hover-background);
--pico-border-color: var(--pico-error-hover-border);
--pico-color: var(--pico-error-inverse)
}
:is(button, [type=submit], [type=button], [role=button]).success,
[type=file]::file-selector-button,
[type=reset] {
--pico-background-color: var(--pico-success-background);
--pico-border-color: var(--pico-success-border);
--pico-color: var(--pico-success-inverse);
cursor: pointer
}
:is(button, [type=submit], [type=button], [role=button]).success:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-background-color: var(--pico-success-hover-background);
--pico-border-color: var(--pico-success-hover-border);
--pico-color: var(--pico-success-inverse)
}
:is(button, [type=submit], [type=button], [role=button]).warning,
[type=file]::file-selector-button,
[type=reset] {
--pico-background-color: var(--pico-warning-background);
--pico-border-color: var(--pico-warning-border);
--pico-color: var(--pico-warning-inverse);
cursor: pointer
}
:is(button, [type=submit], [type=button], [role=button]).warning:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-background-color: var(--pico-warning-hover-background);
--pico-border-color: var(--pico-warning-hover-border);
--pico-color: var(--pico-warning-inverse)
}
:is(button, [type=submit], [type=button], [role=button]).info,
[type=file]::file-selector-button,
[type=reset] {
--pico-background-color: var(--pico-info-background);
--pico-border-color: var(--pico-info-border);
--pico-color: var(--pico-info-inverse);
cursor: pointer
}
:is(button, [type=submit], [type=button], [role=button]).info:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-background-color: var(--pico-info-hover-background);
--pico-border-color: var(--pico-info-hover-border);
--pico-color: var(--pico-info-inverse)
}
:is(button, [type=submit], [type=button], [role=button]).secondary,
[type=file]::file-selector-button,
[type=reset] {
--pico-background-color: var(--pico-secondary-background);
--pico-border-color: var(--pico-secondary-border);
--pico-color: var(--pico-secondary-inverse);
cursor: pointer
}
:is(button, [type=submit], [type=button], [role=button]).secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset]:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-background-color: var(--pico-secondary-hover-background);
--pico-border-color: var(--pico-secondary-hover-border);
--pico-color: var(--pico-secondary-inverse)
}
:is(button, [type=submit], [type=button], [role=button]).secondary:focus,
:is(button, [type=submit], [type=button], [role=button]).secondary:is([aria-current]:not([aria-current=false])):focus,
[type=file]::file-selector-button:focus,
[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,
[type=reset]:focus,
[type=reset]:is([aria-current]:not([aria-current=false])):focus {
--pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)
}
:is(button, [type=submit], [type=button], [role=button]).outline,
[type=reset].outline {
--pico-background-color: transparent;
--pico-color: var(--pico-primary);
--pico-border-color: var(--pico-primary)
}
:is(button, [type=submit], [type=button], [role=button]).outline.secondary,
[type=reset].outline {
--pico-color: var(--pico-secondary);
--pico-border-color: var(--pico-secondary);
}
:is(button, [type=submit], [type=button], [role=button]).outline.error,
[type=reset].outline {
--pico-color: var(--pico-error);
--pico-border-color: var(--pico-error);
}
:is(button, [type=submit], [type=button], [role=button]).outline.success,
[type=reset].outline {
--pico-color: var(--pico-success);
--pico-border-color: var(--pico-success);
}
:is(button, [type=submit], [type=button], [role=button]).outline.warning,
[type=reset].outline {
--pico-color: var(--pico-warning);
--pico-border-color: var(--pico-warning);
}
:is(button, [type=submit], [type=button], [role=button]).outline.info,
[type=reset].outline {
--pico-color: var(--pico-info);
--pico-border-color: var(--pico-info);
}
:is(button, [type=submit], [type=button], [role=button]).outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-background-color: transparent;
--pico-color: var(--pico-primary-hover);
--pico-border-color: var(--pico-primary-hover)
}
:is(button, [type=submit], [type=button], [role=button]).outline.secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-secondary-hover);
--pico-border-color: var(--pico-secondary-hover)
}
:is(button, [type=submit], [type=button], [role=button]).outline.error:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-error-hover);
--pico-border-color: var(--pico-error-hover)
}
:is(button, [type=submit], [type=button], [role=button]).outline.success:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-success-hover);
--pico-border-color: var(--pico-success-hover)
}
:is(button, [type=submit], [type=button], [role=button]).outline.warning:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-warning-hover);
--pico-border-color: var(--pico-warning-hover)
}
:is(button, [type=submit], [type=button], [role=button]).outline.info:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[type=reset].outline:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-info-hover);
--pico-border-color: var(--pico-info-hover)
}
:where(a:not([role=button])).secondary,
[role=link].secondary {
--pico-color: var(--pico-secondary);
--pico-underline: var(--pico-secondary-underline)
}
:where(a:not([role=button])).error,
[role=link].error {
--pico-color: var(--pico-error);
--pico-underline: var(--pico-error-underline)
}
:where(a:not([role=button])).success,
[role=link].success {
--pico-color: var(--pico-success);
--pico-underline: var(--pico-success-underline)
}
:where(a:not([role=button])).warning,
[role=link].warning {
--pico-color: var(--pico-warning);
--pico-underline: var(--pico-warning-underline)
}
:where(a:not([role=button])).info,
[role=link].info {
--pico-color: var(--pico-info);
--pico-underline: var(--pico-info-underline)
}
:where(a:not([role=button])).secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[role=link].secondary:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-secondary-hover);
--pico-underline: var(--pico-secondary-hover-underline)
}
:where(a:not([role=button])).error:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[role=link].error:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-error-hover);
--pico-underline: var(--pico-error-hover-underline)
}
:where(a:not([role=button])).success:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[role=link].success:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-success-hover);
--pico-underline: var(--pico-success-hover-underline)
}
:where(a:not([role=button])).warning:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[role=link].warning:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-warning-hover);
--pico-underline: var(--pico-warning-hover-underline)
}
:where(a:not([role=button])).info:is([aria-current]:not([aria-current=false]), :hover, :active, :focus),
[role=link].info:is([aria-current]:not([aria-current=false]), :hover, :active, :focus) {
--pico-color: var(--pico-info-hover);
--pico-underline: var(--pico-info-hover-underline)
}
.header,
.header>* {
background-color: var(--header-background-color) !important;
color: var(--header-text-color) !important;
}
.header nav[aria-label="breadcrumb"] ul li:not(:last-child)::after,
.header hgroup> :not(:first-child):last-child {
color: var(--header-text-color-disable);
}
.flex {
display: flex;
gap: 1em;
padding: 1em;
img {
height: fit-content;
}
}

View file

@ -1,31 +0,0 @@
main {
font-size: var(--font-size);
display: flex;
justify-content: center;
gap: var(--default-space);
flex-wrap: wrap;
}
section {
border: 1px solid var(--divider);
max-width: 12vw;
width: 12vw;
padding: var(--default-space);
pre {
overflow: auto;
background-color: var(--background-color-lighten);
font-family: 'Courier New', Courier, monospace;
font-size: calc(var(--font-size) * .6);
cursor: copy;
}
summary:hover {
cursor: ns-resize;
}
h3,
h5 {
margin: 0;
}
}

View file

@ -0,0 +1,984 @@
/* RESET CSS BY Piccalil.li */
/* https://piccalil.li/blog/a-more-modern-css-reset/ */
/* License https://creativecommons.org/licenses/by/3.0/ */
/* Box sizing rules */
*,
*::before,
*::after {
box-sizing: border-box;
}
/* Prevent font size inflation */
html {
-moz-text-size-adjust: none;
-webkit-text-size-adjust: none;
text-size-adjust: none;
}
/* Remove default margin in favour of better control in authored CSS */
body,
h1,
h2,
h3,
h4,
p,
figure,
blockquote,
dl,
dd {
margin-block-end: 0;
}
/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
ul[role='list'],
ol[role='list'] {
list-style: none;
}
/* Set core body defaults */
body {
min-height: 100vh;
line-height: 1.5;
}
/* Set shorter line heights on headings and interactive elements */
h1,
h2,
h3,
h4,
h5,
h6,
button,
input,
label {
line-height: 1.1;
}
/* Balance text wrapping on headings */
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
margin: calc(var(--default-space)*2) 0;
}
/* Make images easier to work with */
img,
picture {
max-width: 100%;
display: block;
}
/* Inherit fonts for inputs and buttons */
input,
button,
textarea,
select {
font-family: inherit;
font-size: inherit;
}
/* Make sure textareas without a rows attribute are not tiny */
textarea:not([rows]) {
min-height: 10em;
}
/* Anything that has been anchored to should have extra scroll margin */
:target {
scroll-margin-block: 5ex;
}
/* Sementic balise */
html {
scroll-behavior: smooth;
}
body {
width: 80vw;
margin: 0 auto;
min-height: 100vh;
min-height: 100dvh;
text-rendering: optimizeSpeed;
}
@media (max-width: 768px) {
body {
width: 100vw;
}
}
a {
color: var(--primary);
text-decoration: underline transparent;
text-decoration-thickness: var(--default-space);
transition: .4s;
}
a:hover {
text-decoration: underline var(--primary);
text-decoration-thickness: var(--default-space);
}
a[target="_blank"]::after,
a.external::after {
content: '';
display: inline-block;
width: 1rem;
height: 1rem;
background-color: currentColor;
mask-image: var(--target-blank-icon);
mask-repeat: no-repeat;
mask-size: 100% 100%;
}
h2::before,
h3::before,
h4::before,
h5::before,
h6::before {
font-size: .7rem;
vertical-align: middle;
}
h1 {
color: var(--h1-color);
font-size: 1.7rem;
}
h2 {
color: var(--h2-color);
font-size: 1.6rem;
}
h2::before {
content: "## ";
}
h3 {
color: var(--h3-color);
font-size: 1.5rem;
}
h3::before {
content: "### ";
}
h4 {
color: var(--h4-color);
font-size: 1.4rem;
}
h4::before {
content: "#### ";
}
h5 {
color: var(--h5-color);
font-size: 1.3rem;
}
h5::before {
content: "##### ";
}
h6 {
color: var(--h6-color);
font-size: 1.2rem;
}
h6::before {
content: "###### ";
}
p {
padding: var(--default-space);
}
pre {
background-color: var(--background-color-dark);
color: var(--text-color-dark);
padding: calc(var(--default-space) * 4);
overflow: auto;
cursor: copy;
}
table {
border-collapse: collapse;
width: 100%;
overflow-x: auto;
white-space: nowrap;
line-height: 1.1rem;
}
table,
th,
td {
border: 1px solid var(--primary-darken);
}
td,
th {
word-wrap: break-word;
white-space: normal;
}
th {
padding: var(--default-space) calc(var(--default-space)*2);
background-color: var(--primary-lighten);
color: var(--primary-text-contrast);
}
td {
padding: var(--default-space);
}
b {
font-weight: 700;
}
strong {
font-weight: 900;
background-color: var(--neutral-light);
}
figcaption {
background-color: var(--neutral-light);
text-align: center;
font-style: italic;
}
del {
background-color: var(--error-lighten);
}
ins {
background-color: var(--success-lighten)
}
del::before,
ins::before {
font-family: monospace;
}
abbr {
color: var(--warning);
font-weight: bold;
}
kbd {
background-color: var(--neutral-light);
border-radius: .2em;
border: 1px solid var(--neutral);
box-shadow:
0 1px 1px rgba(255, 255, 255, 0.2),
0 2px 0 0 rgba(0, 0, 0, 0.7);
color: var(--text-color-light);
font-weight: 700;
padding: .1rem .2rem;
white-space: nowrap;
}
kbd:hover {
box-shadow:
0 1px 1px rgba(0, 0, 0, 0.7),
0 2px 0 0 rgba(255, 255, 255, 0.2);
}
blockquote {
background-color: var(--neutral-light);
padding: var(--default-space);
border-radius: var(--border-radius);
}
blockquote p::before {
content: '\201C';
}
blockquote p::after {
content: '\201D';
}
blockquote p {
text-align: right;
}
ul,
ol {
margin: calc(var(--default-space) + .2rem) 0;
}
header[role="banner"],
.banner {
background-color: transparent;
display: grid;
grid-template-columns: repeat(2, auto);
grid-template-rows: repeat(1, 1fr);
hgroup img {
vertical-align: middle;
display: inline;
}
hgroup h1 {
color: var(--primary);
margin: 0;
}
p {
margin: 0;
}
svg {
fill: var(--primary-lighten);
}
nav[role="navigation"] {
font-size: 1.1rem;
}
nav {
align-self: center;
}
nav h1,
nav ul {
margin: 0;
}
nav h1 img {
margin-right: var(--default-space);
vertical-align: middle;
}
nav ul {
display: flex;
gap: calc(var(--default-space) * 2);
flex-wrap: wrap;
padding: 0;
font-weight: 700;
justify-content: end;
}
nav li {
margin: var(--default-space);
list-style: none;
}
nav li a {
color: var(--primary-lighten);
}
nav li:has(li) {
text-decoration: underline var(--primary-darken);
text-decoration-thickness: var(--default-space);
}
nav li:has(li)::after {
text-decoration: underline var(--primary-darken);
text-decoration-thickness: var(--default-space);
content: "▼";
}
nav li a:hover,
nav .active,
nav svg:hover {
color: var(--primary);
text-decoration: underline var(--primary-darken);
text-decoration-thickness: var(--default-space);
fill: var(--primary);
}
nav ul li ul {
background-color: var(--background-color-light);
visibility: hidden;
opacity: 0;
position: absolute;
transition: .4s;
display: none;
box-shadow: var(--box-shadow-auto);
border-radius: var(--border-radius);
}
nav ul li:hover>ul,
nav ul li ul:hover {
visibility: visible;
opacity: 1;
display: block;
}
nav ul li ul li {
color: var(--text-color-light);
}
nav ul li ul li ul {
box-shadow: none;
border: 2px solid var(--primary);
border-top: none;
}
}
@media (max-width: 768px) {
header[role="banner"],
.banner {
display: grid;
grid-template-columns: repeat(1, 1fr);
grid-template-rows: repeat(1, 1fr);
}
header[role="banner"],
.banner {
& nav ul {
justify-content: start;
}
}
}
section,
article,
details,
aside,
.breadcrumb {
align-self: center;
color: var(--text-color-light);
background-color: var(--background-color-light);
padding: calc(var(--default-space) * 2);
border: 1px solid var(--background-color-dark);
border-radius: var(--border-radius);
margin: calc(var(--default-space) *5) 0;
box-shadow: var(--box-shadow-auto);
}
section>article,
section>details,
section>aside,
section>.breadcrumb {
margin: calc(var(--default-space) *5) calc(var(--default-space) *3);
}
form {
width: 70%;
margin: 0 auto;
border: var(--default-space) solid var(--primary);
padding: calc(var(--default-space)*2);
border-radius: var(--border-radius);
}
@media (max-width: 768px) {
form {
width: 97%;
}
}
fieldset {
margin-bottom: var(--default-space) 0;
}
legend {
color: var(--primary);
}
label {
display: block;
margin: var(--default-space) 0;
}
input,
select,
textarea {
background-color: var(--background-color-light);
color: var(--text-color-light);
border: 1px solid var(--primary);
border-radius: var(--border-radius);
}
textarea,
[type="text"],
[type="search"],
[type="file"],
[type="range"],
select {
width: 100%;
}
select {
background-color: var(--background-color-light);
color: var(--text-color-light);
border: 1px solid var(--text-color-light);
}
[role="button"],
[type="button"],
[type="file"]::file-selector-button,
[type="reset"],
[type="submit"],
select,
button {
padding: var(--default-space) calc(var(--default-space)*2);
border-radius: var(--border-radius);
text-decoration: none !important;
text-decoration-thickness: 0;
text-align: center;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
transition: .4s;
line-height: normal;
font-weight: bold;
}
[role="button"]:hover,
[type="button"]:hover,
[type="file"]::file-selector-button:hover,
[type="reset"]:hover,
[type="submit"]:hover,
select:hover,
button:hover {
box-shadow: rgba(66, 9, 9, 0.25) 0px 4px 8px -2px, rgba(66, 9, 9, 0.08) 0px 0px 0px 1px;
}
[type="checkbox"],
[type="radio"] {
width: var(--font-size);
height: var(--font-size);
vertical-align: text-top;
}
footer {
text-align: center;
margin: calc(var(--default-space) *2) auto 0 auto;
background-color: transparent;
width: fit-content;
padding: var(--default-space);
a {
color: var(--primary-lighten);
font-weight: bold;
}
p {
margin: var(--default-space);
font-size: .9rem;
}
}
/* Color class */
.primary {
--button-color: var(--primary-text-contrast);
--button-color-outline: var(--primary);
--button-background-color: var(--primary-lighten);
--button-background-color-hover: var(--primary);
--button-border: 1px solid var(--primary-lighten);
--button-border-hover: var(--primary-darken);
background-color: var(--primary);
color: var(--primary-text-contrast);
}
.secondary {
--button-color: var(--secondary-text-contrast);
--button-color-outline: var(--secondary-darken);
--button-background-color: var(--secondary-lighten);
--button-background-color-hover: var(--secondary);
--button-border: 1px solid var(--secondary-lighten);
--button-border-hover: var(--secondary-darken);
background-color: var(--secondary);
color: var(--secondary-text-contrast);
}
.error {
--button-color: var(--error-text-contrast);
--button-color-outline: var(--error);
--button-background-color: var(--error-lighten);
--button-background-color-hover: var(--error);
--button-border: 1px solid var(--error-lighten);
--button-border-hover: var(--error-darken);
background-color: var(--error);
color: var(--error-text-contrast);
}
.success {
--button-color: var(--success-text-contrast);
--button-color-outline: var(--success-darken);
--button-background-color: var(--success-lighten);
--button-background-color-hover: var(--success);
--button-border: 1px solid var(--success-lighten);
--button-border-hover: var(--success-darken);
background-color: var(--success);
color: var(--success-text-contrast);
}
.warning {
--button-color: var(--warning-text-contrast);
--button-color-outline: var(--warning);
--button-background-color: var(--warning-lighten);
--button-background-color-hover: var(--warning);
--button-border: 1px solid var(--warning-lighten);
--button-border-hover: var(--warning-darken);
background-color: var(--warning);
color: var(--warning-text-contrast);
}
.info {
--button-color: var(--info-text-contrast);
--button-color-outline: var(--info);
--button-background-color: var(--info-lighten);
--button-background-color-hover: var(--info);
--button-border: 1px solid var(--info-lighten);
--button-border-hover: var(--info-darken);
background-color: var(--info);
color: var(--info-text-contrast);
}
button:is(.primary, .secondary, .error, .success, .warning, .info) {
background-color: var(--button-background-color);
}
button:is(.primary, .secondary, .error, .success, .warning, .info):not(.outline):hover {
background-color: var(--button-background-color-hover);
}
.text-primary {
color: var(--primary);
}
.text-secondary {
color: var(--secondary);
}
.text-error {
color: var(--error);
}
.text-success {
color: var(--success);
}
.text-warning {
color: var(--warning);
}
.text-info {
color: var(--info);
}
.adm-important,
.adm-caution {
--adm-color: var(--error);
}
.adm-note {
--adm-color: var(--info);
}
.adm-tip {
--adm-color: var(--success);
}
.adm-warning {
--adm-color: var(--warning);
}
.admonition {
border: 1px solid var(--adm-color);
border-left: 1.2em solid var(--adm-color);
svg {
fill: var(--adm-color);
}
header {
border-bottom: 1px solid var(--adm-color);
padding-bottom: var(--default-space);
font-weight: 700;
img {
display: inline;
vertical-align: middle;
}
}
}
[role="button"],
[type="button"],
[type="file"]::file-selector-button,
[type="reset"],
[type="submit"],
select,
button {
background-color: var(--button-background-color);
border: var(--button-border);
color: var(--button-color);
}
[role="button"]:hover,
[type="button"]:hover,
[type="file"]::file-selector-button:hover,
[type="reset"]:hover,
[type="submit"]:hover,
select:hover,
button:hover {
background-color: var(--button-background-color-hover);
border: 1px solid var(--button-border-hover);
}
[role="button"].outline,
[type="button"].outline,
[type="file"].outline::file-selector-button,
[type="reset"].outline,
[type="submit"].outline,
button.outline {
background-color: transparent;
color: var(--button-color-outline);
}
[role="button"].outline:hover,
[type="button"].outline:hover,
[type="file"].outline::file-selector-button:hover,
[type="reset"].outline:hover,
[type="submit"].outline:hover {
color: var(--button-color-outline);
}
.breadcrumb {
ul {
display: flex;
gap: 0;
flex-wrap: wrap;
padding: 0;
justify-content: start;
font-weight: 700;
}
li {
margin: auto 0;
list-style: none;
}
& li:not(:last-child)::after {
content: " > ";
}
}
.pagination {
gap: 0;
ul {
display: flex;
gap: 0;
flex-wrap: wrap;
padding: 0;
justify-content: start;
font-weight: 700;
}
li {
border: 1px solid var(--primary-darken);
margin: 0;
list-style: none;
}
li a {
padding: var(--default-space) calc(var(--default-space)*2);
display: block;
text-decoration: none;
}
li a:hover,
li a.current {
text-decoration: none;
background-color: var(--primary-lighten);
color: var(--primary-text-contrast);
}
}
.table-of-contents {
float: right;
width: 25vw;
background-color: var(--neutral-light);
border: 1px solid var(--primary-lighten);
border-radius: var(--border-radius);
top: calc(var(--default-space) * 2);
font-size: 1.1rem;
z-index: 1;
overflow: auto;
a {
text-decoration: none;
}
a:hover,
a:active {
text-decoration: underline;
}
}
.grid {
column-gap: var(--default-space);
row-gap: var(--default-space);
display: grid;
grid-template-columns: repeat(auto-fit, minmax(0%, 1fr));
}
.grid>* {
align-content: center;
}
.flex {
display: flex;
flex-wrap: wrap;
gap: var(--default-space);
}
.icons {
justify-content: center;
article {
align-self: normal;
box-shadow: none;
width: 10rem;
margin: 0;
details {
margin: var(--default-space) 0;
}
summary:hover {
cursor: ns-resize;
}
svg {
fill: var(--primary);
}
}
}
.gallery {
justify-content: space-around;
figure {
background-color: var(--background-color-light);
display: grid;
grid-template-columns: repeat(1, 1fr);
margin: 0;
padding: 0;
transition: all .4s ease-in;
position: relative;
width: min-content;
}
img,
svg {
width: initial;
height: initial;
max-width: initial;
}
}
.cards {
display: flex;
justify-content: center;
margin: 0;
padding: 0;
flex-wrap: wrap;
flex-direction: row;
article {
overflow: hidden;
flex: 1 0 0%;
display: flex;
flex-direction: column;
align-self: auto;
border: 1px solid var(--primary);
border-radius: var(--border-radius);
margin: 0em .5em 1em .5em;
box-shadow: initial;
width: 290px;
max-width: 290px;
min-width: 290px;
padding: 0;
figure {
padding: 0;
margin: 0;
}
header {
background-color: var(--neutral-light);
padding: 0 var(--default-space);
}
h4 {
margin: .2rem 0;
}
h4::before {
content: none;
}
header p {
font-size: .9rem;
margin: 0;
}
p {
flex: 1 1 auto;
padding: .2rem;
margin: 0;
}
svg,
img {
height: 100%;
width: 100%;
display: block;
}
footer {
border-top: 1px solid var(--primary);
width: 100%;
margin: 0;
}
}
}
#back-to-top {
bottom: 0;
border-radius: var(--border-radius);
background-color: var(--primary);
color: var(--primary-text-contrast);
display: block;
margin: calc(var(--default-space)*2);
padding: calc(var(--default-space)*2) calc(var(--default-space)*4);
position: fixed;
right: 0;
text-decoration: none;
svg {
fill: var(--primary-text-contrast);
}
}
#back-to-top:hover {
text-decoration: none;
background-color: var(--primary-lighten);
svg {
fill: var(--primary-text-contrast);
}
}
::selection {
color: var(--primary-text-contrast);
background-color: var(--primary);
}

1
public/assets/css/kt-rules.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,69 +1,55 @@
:root {
color-scheme: dark light;
--text-color-auto: light-dark(#171414, #fffbfb);
--text-color-light: #171414;
--text-color-dark: #fffbfb;
--text-color-inverse-auto: light-dark(var(--text-color-dark), var(--text-color-light));
--text-color-inverse-dark: var(--text-color-light);
--text-color-inverse-light: var(--text-color-dark);
--background-color-auto: light-dark(var(--text-color-dark), var(--text-color-light));
--background-color-dark: var(--text-color-light);
--background-color-light: var(--text-color-dark);
--background-color-inverse-auto: light-dark(var(--text-color-light), var(--text-color-dark));
--background-color-inverse-dark: var(--text-color-dark);
--background-color-inverse-light: var(--text-color-light);
--neutral: #777575;
--neutral-medium: #aeadad;
--neutral-light: #e9e9e9;
--primary: #cc2027;
--primary-darken: #8E161B;
--primary-lighten: #D64C52;
--primary-text-contrast: #FFF;
--primary-darken: #8e161b;
--primary-lighten: #d64c52;
--primary-text-contrast: #fff;
--secondary: #20ccc5;
--secondary-darken: #168E89;
--secondary-lighten: #4CD6D0;
--secondary-darken: #168e89;
--secondary-lighten: #4cd6d0;
--secondary-text-contrast: #000;
--error: #c43933;
--error-darken: #892723;
--error-lighten: #CF605B;
--error-text-contrast: #FFF;
--error-lighten: #cf605b;
--error-text-contrast: #fff;
--info: #206ccc;
--info-darken: #164B8E;
--info-lighten: #4C89D6;
--info-text-contrast: #FFF;
--info-darken: #164b8e;
--info-lighten: #4c89d6;
--info-text-contrast: #fff;
--success: #7dcc20;
--success-darken: #578E16;
--success-lighten: #97D64C;
--success-darken: #578e16;
--success-lighten: #97d64c;
--success-text-contrast: #000;
--warning: #cc5e20;
--warning-darken: #8E4116;
--warning-lighten: #D67E4C;
--warning-text-contrast: #FFF;
--divider: light-dark(#B2AFAF, #454343);
--background-color: light-dark(#fffbfb, #171414);
--background-color-darken: light-dark(#B2AFAF, #100E0E);
--background-color-lighten: light-dark(#FFFBFB, #454343);
--background-secondary-color: #ebebeb;
--light-background-color: #fffbfb;
--dark-background-color: #171414;
--header-background-color: light-dark(#171414, #fffbfb);
--header-background-color-darken: light-dark(#100E0E, #B2AFAF);
--header-background-color-lighten: light-dark(#454343, #FFFBFB);
--header-text-color: light-dark(#fffbfb, #171414);
--header-text-color-secondary: #ffffffb3;
--header-text-color-disable: var(--divider);
--text-color: light-dark(#171414, #fffbfb);
--text-color-secondary: #ffffffb3;
--text-color-disable: light-dark(#454343, #B2AFAF);
--light-text-color: #171414;
--dark-text-color: #fffbfb;
--text-color-inverse: light-dark(#fffbfb, #171414);
--text-color-secondary-inverse: #ffffffb3;
--text-color-disable-inverse: var(--divider);
--box-shadow-light: .4rem .4rem 0px .1rem #B2AFAF;
--box-shadow-dark: .4rem .4rem 0px .1rem #454343;
--box-shadow-auto: .4rem .4rem 0px .1rem var(--divider);
--warning-darken: #8e4116;
--warning-lighten: #d67e4c;
--warning-text-contrast: #000;
--h1-color: var(--primary);
--h2-color: #c33d35;
@ -72,8 +58,22 @@
--h5-color: #a16a61;
--h6-color: #927671;
--font-size: 1.2em;
--default-space: .2em;
--box-shadow-auto: .4rem .4rem 0px .1rem light-dark(var(--neutral-medium), var(--neutral));
--box-shadow-light: .4rem .4rem 0px .1rem var(--neutral);
--box-shadow-dark: .4rem .4rem 0px .1rem var(--neutral-medium);
--font-size: 1.3em;
--default-space: .2rem;
--border-radius: .3rem;
--button-color: var(--primary-text-contrast);
--button-color-outline: var(--primary);
--button-background-color: var(--primary-lighten);
--button-background-color-hover: var(--primary);
--button-border: 1px solid var(--primary-lighten);
--button-border-hover: var(--primary-darken);
--target-blank-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -6 24 28'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 6H7a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-5m-6 0l7.5-7.5M15 3h6v6'/%3E%3C/svg%3E");
}
[data-theme="dark"] {
@ -84,25 +84,13 @@
color-scheme: light;
}
[data-theme="dark"] {
--background-color: #171414;
--text-color: #fffbfb;
--text-color-inverse: #171414;
}
[data-theme="light"] {
--background-color: #fffbfb;
--text-color: #171414;
--text-color-inverse: #fffbfb;
}
* {
box-sizing: border-box;
}
html {
font-family: Arial, Helvetica, sans-serif;
background-color: var(--background-color-auto);
color: var(--text-color-auto);
font-size: var(--font-size);
}
@ -110,12 +98,11 @@ svg {
display: inline-block;
fill: var(--primary);
height: var(--font-size);
vertical-align: middle;
width: auto;
vertical-align: sub;
}
.svg-icon {
height: var(--font-size);
vertical-align: middle;
width: auto;
}

1
public/assets/css/kt-scheme.min.css vendored Normal file
View file

@ -0,0 +1 @@
:root{color-scheme:dark light;--text-color-auto:light-dark(#171414, #fffbfb);--text-color-light:#171414;--text-color-dark:#fffbfb;--text-color-inverse-auto:light-dark(var(--text-color-dark), var(--text-color-light));--text-color-inverse-dark:var(--text-color-light);--text-color-inverse-light:var(--text-color-dark);--background-color-auto:light-dark(var(--text-color-dark), var(--text-color-light));--background-color-dark:var(--text-color-light);--background-color-light:var(--text-color-dark);--background-color-inverse-auto:light-dark(var(--text-color-light), var(--text-color-dark));--background-color-inverse-dark:var(--text-color-dark);--background-color-inverse-light:var(--text-color-light);--neutral:#777575;--neutral-medium:#aeadad;--neutral-light:#e9e9e9;--primary:#cc2027;--primary-darken:#8e161b;--primary-lighten:#d64c52;--primary-text-contrast:#fff;--secondary:#20ccc5;--secondary-darken:#168e89;--secondary-lighten:#4cd6d0;--secondary-text-contrast:#000;--error:#c43933;--error-darken:#892723;--error-lighten:#cf605b;--error-text-contrast:#fff;--info:#206ccc;--info-darken:#164b8e;--info-lighten:#4c89d6;--info-text-contrast:#fff;--success:#7dcc20;--success-darken:#578e16;--success-lighten:#97d64c;--success-text-contrast:#000;--warning:#cc5e20;--warning-darken:#8e4116;--warning-lighten:#d67e4c;--warning-text-contrast:#000;--h1-color:var(--primary);--h2-color:#c33d35;--h3-color:#b94f44;--h4-color:#ae5e52;--h5-color:#a16a61;--h6-color:#927671;--box-shadow-auto:.4rem .4rem 0px .1rem light-dark(var(--neutral-medium), var(--neutral));--box-shadow-light:.4rem .4rem 0px .1rem var(--neutral);--box-shadow-dark:.4rem .4rem 0px .1rem var(--neutral-medium);--font-size:1.3em;--default-space:.2rem;--border-radius:.3rem;--button-color:var(--primary-text-contrast);--button-color-outline:var(--primary);--button-background-color:var(--primary-lighten);--button-background-color-hover:var(--primary);--button-border:1px solid var(--primary-lighten);--button-border-hover:var(--primary-darken);--target-blank-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -6 24 28'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 6H7a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-5m-6 0l7.5-7.5M15 3h6v6'/%3E%3C/svg%3E")}[data-theme="dark"]{color-scheme:dark}[data-theme="light"]{color-scheme:light}*{box-sizing:border-box}html{background-color:var(--background-color-auto);color:var(--text-color-auto);font-size:var(--font-size)}svg{display:inline-block;fill:var(--primary);height:var(--font-size);width:auto;vertical-align:sub}.svg-icon{height:var(--font-size);width:auto}

File diff suppressed because it is too large Load diff

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 13 KiB

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/assets/favicons/mstile-150x150.png"/>
<TileColor>#2b5797</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

(image error) Size: 1.6 KiB

Binary file not shown.

After

(image error) Size: 2 KiB

Binary file not shown.

After

Width: 48px  |  Height: 48px  |  Size: 7.2 KiB

Binary file not shown.

After

(image error) Size: 5.7 KiB

View file

@ -0,0 +1,473 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="300.000000pt" height="300.000000pt" viewBox="0 0 300.000000 300.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M0 1500 l0 -1500 1500 0 1500 0 0 1500 0 1500 -1500 0 -1500 0 0
-1500z m2560 1339 c70 -15 139 -39 147 -52 3 -5 -4 -6 -18 -2 -19 6 -22 5 -12
-6 7 -7 28 -12 46 -11 19 1 43 -5 53 -12 16 -12 17 -19 8 -55 -6 -23 -7 -44
-3 -47 5 -3 9 1 10 8 1 7 5 2 9 -12 9 -27 12 -93 3 -72 -4 10 -10 9 -25 -5
-19 -17 -19 -17 -13 10 5 17 3 27 -4 27 -6 0 -13 -11 -17 -24 -3 -14 -18 -29
-35 -36 -16 -7 -29 -19 -29 -26 0 -17 12 -18 28 -2 7 7 12 8 12 4 0 -5 8 -2
18 5 14 11 15 11 5 0 -8 -10 -9 -20 -1 -37 19 -40 -9 -60 -88 -62 -62 -2 -94
8 -94 29 0 5 12 9 28 10 21 0 23 2 9 8 -10 4 -18 10 -18 14 1 4 -6 21 -14 37
-26 50 -40 44 -165 -69 l-44 -41 -26 25 c-41 39 -43 30 -9 -35 17 -32 27 -65
23 -71 -4 -7 -3 -9 3 -6 5 3 9 -17 10 -50 0 -34 -3 -50 -8 -41 -5 9 -7 24 -5
34 3 14 -2 20 -15 20 -10 0 -19 -7 -19 -14 0 -12 -3 -12 -15 -2 -10 8 -15 9
-15 2 0 -7 -8 -9 -17 -5 -10 3 -15 3 -11 -2 4 -4 22 -10 40 -14 29 -6 35 -13
49 -56 22 -66 43 -73 34 -12 -4 28 -3 47 4 51 5 4 7 14 4 23 -4 10 -2 14 4 10
6 -4 11 -17 11 -29 0 -44 22 -141 35 -157 28 -33 38 -118 26 -215 -11 -93 -31
-147 -67 -179 -18 -16 -20 -16 -26 -2 -3 9 -11 13 -17 9 -7 -4 -10 -3 -7 2 3
5 8 17 12 28 5 15 9 16 22 5 20 -16 33 2 35 46 4 123 4 132 -8 128 -7 -3 -13
-18 -13 -33 0 -30 -36 -84 -51 -75 -5 4 -6 0 -3 -8 3 -8 0 -18 -6 -22 -6 -3
-10 -3 -9 2 5 28 -3 43 -23 43 -19 0 -20 2 -8 10 13 9 13 10 0 10 -35 0 -57
-13 -67 -41 -9 -24 -8 -31 5 -39 10 -5 12 -10 6 -10 -5 0 -19 7 -30 15 -11 8
-14 14 -6 15 9 0 10 5 4 18 -5 9 -6 26 -1 37 12 30 11 35 -6 29 -22 -9 -18 4
13 45 40 50 64 121 42 121 -5 0 -10 5 -10 11 0 5 5 7 12 3 7 -4 8 -3 4 4 -10
17 -35 3 -42 -23 -5 -21 -8 -21 -40 -10 -18 6 -37 14 -40 18 -19 19 -25 4 -7
-15 12 -13 22 -30 24 -38 4 -27 -12 -85 -32 -110 l-19 -25 15 37 c19 48 19 69
0 44 -9 -12 -18 -16 -23 -10 -38 44 -61 86 -67 123 -8 46 -34 81 -62 81 -15 0
-14 -2 3 -15 10 -8 13 -15 7 -15 -9 0 -10 -7 -3 -26 29 -74 -8 -157 -71 -162
-39 -3 -49 -10 -30 -22 8 -4 12 -14 9 -21 -3 -8 3 -23 13 -33 19 -19 19 -19
20 0 2 25 2 26 -6 47 -4 9 -3 17 3 17 6 0 13 -14 17 -31 6 -28 8 -29 20 -12
13 17 14 16 8 -4 -3 -14 -1 -23 6 -23 18 0 13 48 -6 60 -15 9 -11 10 17 6 18
-4 37 -11 40 -16 3 -5 17 -3 34 5 41 21 55 18 27 -6 -21 -17 -22 -22 -10 -30
11 -7 9 -9 -8 -9 -13 0 -23 -5 -23 -11 0 -6 8 -8 19 -4 11 3 29 8 41 10 35 7
50 24 62 73 9 36 13 42 18 27 10 -28 2 -51 -28 -80 -14 -14 -22 -29 -18 -33 4
-4 16 4 27 16 10 13 24 22 30 20 8 -3 6 -9 -5 -20 -9 -9 -16 -20 -16 -25 -1
-4 -10 -19 -22 -33 -14 -17 -22 -21 -25 -12 -4 10 -8 10 -19 1 -12 -10 -19 -8
-35 10 -21 23 -54 25 -54 4 0 -20 -52 -54 -72 -47 -15 6 -16 4 -5 -7 6 -7 12
-18 12 -24 0 -5 -4 -4 -9 4 -11 16 -95 33 -99 20 -3 -6 -10 -5 -18 2 -8 7 -17
9 -20 6 -3 -3 -31 4 -62 15 -47 16 -70 19 -132 13 -69 -6 -73 -5 -55 9 11 8
40 16 65 16 32 0 41 3 30 10 -12 7 -7 12 22 25 21 8 44 15 53 15 8 0 15 5 15
10 0 12 -6 12 -50 1 -64 -17 -120 -22 -120 -11 0 5 12 10 28 11 22 1 24 2 7 7
-11 4 -21 13 -23 20 -2 13 25 9 76 -9 44 -17 57 -8 17 11 -48 22 -30 26 22 5
49 -20 63 -18 34 5 -17 15 -19 20 -8 20 9 0 19 -4 22 -10 3 -5 19 -10 35 -10
16 0 35 -7 44 -15 8 -8 20 -15 27 -15 10 0 10 3 1 12 -7 7 -12 17 -12 23 0 5
5 3 11 -5 9 -13 10 -13 6 0 -2 9 -14 14 -28 13 -13 -1 -39 3 -58 9 -31 10 -33
12 -25 42 4 17 8 55 9 85 2 38 7 57 19 63 22 13 20 28 -4 28 -13 0 -25 -11
-32 -27 -7 -16 -22 -37 -34 -49 -12 -11 -30 -33 -40 -49 l-19 -28 30 19 c17
10 32 21 35 24 3 3 14 12 25 20 18 13 19 13 8 0 -7 -9 -15 -31 -18 -50 -12
-73 -11 -72 -87 -84 -32 -6 -39 -3 -53 17 -14 22 -14 27 0 53 8 16 15 39 15
52 0 13 5 22 13 21 6 -2 30 8 52 22 22 13 44 23 49 21 5 -2 4 4 -3 12 -7 8
-10 19 -7 24 3 5 -3 34 -14 64 -10 30 -18 61 -17 69 4 22 49 132 64 154 19 28
17 124 -2 131 -8 4 -15 14 -15 24 0 10 -8 27 -17 36 -20 20 -22 20 34 -3 11
-4 14 -3 9 6 -5 7 11 31 43 62 28 28 51 56 51 64 0 7 13 24 30 37 89 69 86 68
151 68 59 0 62 -1 43 -16 -18 -15 -17 -15 11 -8 29 7 185 10 290 5 66 -2 78 0
93 16 10 10 10 13 0 13 -9 0 -9 3 2 10 8 6 24 8 35 6 11 -3 45 -11 75 -17z
m-130 -3 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10
-4z m-546 -41 c-25 -19 -35 -19 -28 0 4 8 16 15 27 15 20 0 20 0 1 -15z m-90
-68 c-29 -32 -42 -41 -52 -33 -11 7 -8 13 12 23 14 8 26 20 26 28 0 12 15 20
44 24 5 0 -9 -18 -30 -42z m-69 -97 c-3 -5 -14 -10 -23 -10 -15 0 -15 2 -2 10
20 13 33 13 25 0z m-45 -530 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10
10 10 6 0 10 -4 10 -10z m-140 -215 l25 -30 -33 29 c-17 17 -32 34 -32 40 0 6
3 6 8 1 4 -6 18 -23 32 -40z m-125 9 c20 -4 58 -71 49 -85 -2 -5 -15 -4 -27 0
-32 12 -129 2 -149 -15 -9 -9 -35 -18 -57 -21 -22 -3 -46 -12 -52 -19 -6 -8
-20 -14 -30 -14 -10 0 -21 -5 -25 -11 -10 -17 44 -2 63 16 8 8 26 15 39 15 14
0 41 7 62 15 63 27 162 17 162 -15 0 -12 -3 -12 -34 0 -15 5 -28 5 -31 0 -3
-5 4 -11 14 -15 13 -4 18 -12 14 -22 -4 -11 -2 -14 8 -11 8 3 13 11 12 17 -2
6 6 11 17 11 11 0 20 -4 20 -10 0 -5 -6 -10 -14 -10 -7 0 -19 -6 -25 -14 -9
-11 -7 -12 13 -9 30 6 44 -13 16 -22 -25 -8 -27 -24 -2 -20 22 3 42 -13 42
-34 0 -14 -2 -14 -10 -1 -9 13 -10 13 -10 0 0 -9 5 -21 11 -27 14 -14 2 -36
-13 -27 -8 5 -9 1 -4 -12 4 -10 4 -15 0 -11 -4 4 -14 1 -22 -6 -13 -10 -14 -9
-7 2 6 11 4 13 -11 7 -10 -5 -30 -10 -44 -11 -14 -2 -25 -4 -25 -5 0 -1 -26
-2 -58 -2 -36 -1 -61 -6 -64 -14 -2 -6 -13 -10 -24 -7 -23 6 -24 -4 -3 -45 19
-39 26 -41 22 -4 -2 15 2 28 7 28 6 1 9 -2 7 -8 -1 -5 2 -7 7 -4 5 4 20 -12
32 -33 12 -22 25 -38 29 -36 4 2 13 -14 20 -35 7 -22 17 -40 21 -40 9 0 39
-58 39 -77 0 -13 5 -15 40 -15 138 0 143 1 138 26 -3 15 0 27 8 30 8 3 14 1
14 -4 0 -6 7 -10 15 -10 9 0 12 -6 9 -15 -5 -11 1 -15 20 -15 47 0 27 -44 -24
-52 -22 -4 -19 -6 17 -16 23 -7 45 -18 49 -24 5 -7 2 -8 -7 -3 -11 6 -12 5 -2
-5 10 -11 15 -11 28 0 9 7 15 9 13 4 -3 -11 45 -64 59 -64 5 0 18 -16 29 -36
l19 -35 -33 -30 c-40 -36 -35 -36 42 0 33 16 86 34 116 40 30 6 68 18 84 26
40 21 41 14 3 -22 -21 -20 -55 -36 -99 -48 -38 -9 -68 -21 -68 -27 0 -5 5 -6
10 -3 6 3 10 2 10 -3 0 -8 -24 -20 -52 -26 -3 0 -9 -4 -13 -8 -4 -3 -18 -4
-31 -2 -13 2 -24 0 -24 -6 0 -6 -5 -8 -10 -5 -6 4 -19 3 -28 -1 -9 -4 -22 -8
-28 -9 -7 -2 -44 -10 -82 -19 -85 -19 -158 -20 -191 -2 -21 12 -13 15 93 31
64 9 116 19 116 22 0 3 -31 3 -69 0 -37 -3 -74 -1 -82 4 -12 7 -12 9 0 9 8 0
11 3 8 6 -4 4 2 15 13 24 19 17 19 17 -8 17 -15 0 -36 3 -46 8 -15 7 -18 5
-11 -6 6 -11 5 -11 -5 -2 -10 9 -6 19 16 49 25 32 26 36 8 26 -28 -15 -34 -7
-34 47 l0 46 -27 -58 c-24 -53 -27 -56 -37 -35 -6 12 -17 23 -25 26 -8 3 -11
0 -8 -5 4 -6 -5 -15 -19 -22 -32 -14 -37 -14 -28 2 6 8 3 8 -9 -1 -9 -8 -22
-10 -28 -6 -9 5 -7 10 5 19 15 11 15 13 1 19 -9 3 -23 -1 -31 -9 -9 -8 -24
-15 -35 -15 -11 0 -18 -4 -15 -9 4 -5 -3 -7 -14 -4 -19 5 -19 6 3 24 29 24 7
24 -24 0 -14 -11 -48 -22 -79 -25 -35 -3 -50 -2 -40 4 8 5 18 6 24 3 5 -4 7 1
3 9 -4 12 0 15 16 11 16 -4 18 -2 8 5 -7 5 -11 14 -8 19 4 6 -5 15 -19 22 -31
14 -37 14 -29 1 4 -7 -3 -7 -20 0 -34 13 -38 13 -29 -2 5 -8 2 -9 -10 -5 -9 4
-15 3 -12 -2 3 -5 -13 -8 -37 -7 -47 1 -107 34 -86 47 9 5 10 11 2 21 -15 18
-41 106 -47 153 -2 22 -7 50 -9 62 -4 13 0 24 9 27 19 7 14 36 -9 58 -17 15
-16 16 12 15 17 -1 30 3 30 8 0 6 -7 9 -15 7 -9 -2 -14 6 -15 20 l-1 23 -6
-22 c-5 -15 -11 -20 -19 -15 -9 6 -7 17 11 42 12 19 21 41 19 47 -3 7 7 18 21
25 19 8 23 14 14 20 -9 5 -6 8 9 8 12 0 28 6 35 13 7 8 30 17 50 21 21 4 43
12 50 19 7 7 34 23 61 35 26 12 47 27 47 32 0 6 7 10 15 10 9 0 18 7 21 15 4
8 12 15 19 15 7 0 21 11 31 25 13 18 28 25 51 25 17 0 35 5 38 10 3 6 17 10
31 10 15 0 23 4 19 10 -6 10 64 7 120 -6z m65 -14 c0 -5 -4 -10 -10 -10 -5 0
-10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m10 -41 c0 -6 -4 -7 -10 -4 -5
3 -10 11 -10 16 0 6 5 7 10 4 6 -3 10 -11 10 -16z m27 -25 c-3 -3 -12 -4 -19
-1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m88 -14 c-11 -5 -27 -9 -35 -9 -13 -1 -13
0 0 9 8 5 24 9 35 9 l20 0 -20 -9z m-105 -20 c0 -5 -2 -10 -4 -10 -3 0 -8 5
-11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m536 -27 c-4 -9 -1 -20 6 -25 9 -6
0 -20 -36 -53 -38 -35 -47 -40 -41 -22 4 12 7 30 7 39 -1 10 10 26 24 37 13
10 24 24 24 30 0 6 5 11 11 11 6 0 8 -7 5 -17z m-543 -8 c-3 -9 -8 -14 -10
-11 -3 3 -2 9 2 15 9 16 15 13 8 -4z m64 -135 c-2 -10 -9 -5 -20 15 -13 24
-16 26 -16 10 -1 -28 15 -50 36 -51 10 -1 26 -5 36 -9 13 -5 17 -2 17 13 0 11
7 25 15 32 9 7 13 21 10 31 -4 12 -1 19 7 20 7 1 28 2 46 4 33 3 51 -8 32 -20
-5 -3 -10 -13 -10 -22 0 -15 2 -14 18 0 24 22 32 21 32 -2 0 -11 4 -22 10 -26
5 -3 7 -12 3 -20 -3 -8 0 -15 6 -15 6 0 11 16 11 35 0 34 1 34 33 28 17 -3 42
-12 53 -20 12 -8 32 -12 45 -9 13 3 42 8 64 11 22 3 52 14 67 25 30 22 49 27
30 8 -7 -7 -12 -26 -12 -42 0 -23 -3 -27 -12 -18 -7 7 -17 12 -22 12 -6 -1 0
-10 14 -21 l25 -21 11 27 11 28 7 -27 c10 -41 22 -31 35 31 7 31 19 72 26 92
13 36 13 36 11 -25 0 -34 -4 -60 -8 -57 -5 2 -8 -8 -8 -22 0 -15 4 -24 10 -20
6 3 10 1 10 -4 0 -6 -7 -11 -16 -11 -11 0 -15 -6 -11 -19 3 -14 1 -18 -9 -14
-10 4 -14 -3 -14 -25 0 -25 -3 -29 -25 -27 -27 3 -41 -21 -30 -55 6 -18 2 -17
-35 7 l-41 28 26 7 c54 14 74 57 36 77 -14 8 -23 5 -41 -14 -13 -14 -32 -25
-42 -25 -10 0 -27 -5 -37 -12 -15 -9 -25 -9 -48 2 -45 23 -46 23 -39 11 12
-19 -44 -13 -80 10 -19 11 -37 18 -41 16 -5 -3 -16 1 -26 8 -20 14 -13 45 10
45 8 0 12 4 8 9 -8 14 -65 -8 -65 -24 0 -7 -3 -27 -6 -45 -6 -30 -5 -32 15
-25 14 4 29 1 39 -7 20 -17 92 -39 104 -32 4 3 8 -3 8 -12 0 -16 1 -16 19 0
12 11 27 15 44 11 14 -4 28 -2 31 4 15 24 24 9 22 -36 -1 -37 -4 -47 -16 -44
-45 11 -54 11 -30 0 46 -21 87 -22 94 -3 4 10 2 22 -3 27 -7 7 -7 15 0 23 13
16 69 -11 69 -34 0 -8 9 -26 21 -38 l21 -23 -23 -68 c-22 -66 -23 -67 -31 -38
-5 17 -7 49 -6 73 1 27 -3 48 -13 57 -14 14 -18 14 -37 -3 -29 -25 -28 -32 4
-32 16 0 24 -5 22 -12 -3 -9 -32 -14 -86 -16 -76 -3 -82 -2 -82 16 0 25 -38
36 -65 18 -15 -10 -22 -26 -23 -55 -3 -50 13 -55 22 -6 4 19 12 37 18 41 8 5
9 1 4 -12 -16 -41 -17 -70 -2 -89 13 -17 15 -18 16 -3 0 9 -4 20 -10 23 -20
12 -9 23 18 19 77 -13 142 -14 142 -4 0 6 5 8 10 5 6 -3 10 1 10 9 0 10 6 13
15 10 8 -4 15 -15 15 -25 0 -11 -7 -22 -15 -25 -24 -10 -17 -26 8 -19 21 6 21
5 4 -8 -13 -11 -14 -16 -6 -19 20 -7 3 -37 -26 -48 -45 -17 -129 -12 -153 9
-27 22 -28 31 -4 31 15 1 14 2 -3 12 -11 6 -28 20 -38 32 -17 21 -17 21 -8 -6
7 -19 7 -29 -1 -34 -12 -8 -28 14 -28 40 0 24 -22 86 -30 86 -3 0 -4 -16 -2
-35 l4 -34 -56 55 c-54 53 -69 73 -44 58 11 -7 10 12 -6 86 -3 13 -2 40 4 58
10 39 -6 76 -29 67 -8 -3 -18 0 -23 7 -6 10 -8 8 -8 -4 0 -10 -5 -18 -10 -18
-19 0 -28 46 -27 128 l2 80 22 -61 c13 -34 22 -69 20 -77z m161 85 c3 -3 -22
-5 -56 -5 -34 0 -62 4 -62 9 0 9 109 5 118 -4z m352 -15 c-31 -26 -60 -38 -60
-25 0 7 73 55 84 55 6 0 -5 -13 -24 -30z m-211 -2 c7 -2 -13 -4 -44 -4 -55 0
-56 1 -29 12 16 7 36 9 44 4 8 -4 21 -9 29 -12z m256 -59 c11 -16 1 -19 -13
-3 -7 8 -8 14 -3 14 5 0 13 -5 16 -11z m-553 -112 c-12 -13 -22 -31 -22 -40 0
-9 -6 -17 -14 -17 -8 0 -13 7 -12 16 3 20 44 64 59 64 6 0 1 -10 -11 -23z
m498 15 c0 -15 -24 -32 -44 -32 -20 0 -19 2 4 20 27 21 40 25 40 12z m-283
-30 c-23 -5 -47 4 -47 17 0 6 13 5 33 -2 23 -8 27 -12 14 -15z m403 -57 c12
-28 16 -44 9 -37 -22 21 -31 13 -25 -23 6 -29 4 -34 -9 -29 -14 6 -21 28 -14
49 1 6 4 26 5 45 1 19 3 39 3 44 1 15 8 4 31 -49z m-652 -18 c-3 -15 -18 -26
-18 -12 0 3 -5 12 -12 19 -14 15 -32 11 -23 -4 6 -9 -88 -60 -111 -60 -8 0
-14 7 -14 15 0 17 38 40 63 36 9 -1 17 3 17 10 0 8 -14 10 -50 6 -55 -7 -70 9
-17 18 106 17 170 7 165 -28z m880 -8 c41 -22 71 -36 68 -30 -4 6 -3 11 3 11
5 0 12 -4 15 -9 4 -5 35 -23 70 -39 52 -24 74 -43 116 -96 29 -36 56 -64 61
-61 9 6 68 -105 99 -188 11 -29 23 -80 28 -114 7 -53 6 -60 -7 -55 -14 5 -14
4 -1 -13 12 -15 12 -17 1 -10 -11 6 -13 4 -8 -9 4 -10 3 -15 -3 -11 -14 9 -12
-9 2 -23 7 -7 -6 -5 -29 5 -25 11 -39 23 -36 30 3 7 1 19 -5 26 -6 6 -14 45
-17 85 -8 76 -19 97 -31 60 -4 -13 -2 -24 5 -26 6 -2 11 -15 11 -29 0 -18 -4
-24 -15 -19 -22 8 -18 -3 8 -25 l22 -20 -25 7 -25 6 24 -25 23 -26 -23 6 c-24
5 -24 5 -4 -10 13 -11 15 -16 6 -17 -11 0 -11 -3 -1 -15 7 -8 8 -15 2 -15 -13
0 -23 -38 -11 -46 12 -7 11 -24 -1 -24 -6 0 -9 5 -8 11 2 6 -3 14 -11 17 -10
3 -13 -1 -8 -17 3 -14 0 -21 -9 -21 -8 0 -14 -10 -14 -22 0 -18 2 -20 9 -9 8
12 12 13 25 1 14 -11 16 -10 11 3 -4 8 -1 18 6 23 7 4 10 3 6 -3 -4 -6 -1 -16
7 -22 10 -9 17 -6 30 14 9 14 22 25 29 24 9 0 9 -2 0 -6 -17 -6 -17 -20 0 -20
9 0 13 11 11 34 -1 22 2 31 10 26 6 -4 5 1 -3 10 -7 9 -11 17 -7 17 3 0 9 0
14 0 9 0 9 -10 2 -77 -4 -29 -3 -53 0 -53 3 0 16 9 28 20 l21 20 7 -36 c9 -50
-1 -122 -20 -143 -23 -25 -120 -71 -150 -71 -14 0 -26 -4 -26 -10 0 -5 8 -10
17 -10 9 0 14 -3 10 -6 -3 -3 -24 2 -46 12 -44 19 -55 50 -26 74 18 15 20 40
3 40 -9 0 -8 3 2 10 34 21 1 97 -36 83 -13 -5 -11 -9 12 -19 l29 -13 -31 6
c-30 5 -31 4 -26 -28 5 -35 -20 -94 -45 -103 -19 -8 -115 20 -175 50 -96 48
-130 96 -144 203 -1 13 -5 26 -8 29 -3 3 15 16 41 29 26 13 50 28 54 34 4 8 8
8 13 1 8 -13 100 -5 130 11 16 8 18 6 12 -9 -5 -17 -5 -17 10 1 16 20 16 19 9
-4 -6 -20 -4 -23 10 -17 12 4 23 0 32 -13 7 -12 20 -18 28 -15 8 4 15 1 15 -6
0 -6 -5 -8 -12 -4 -8 5 -9 2 -5 -10 4 -10 7 -22 7 -27 0 -4 7 -6 15 -3 9 4 15
0 15 -10 0 -14 12 -20 33 -17 4 0 7 -3 7 -9 0 -5 5 -10 10 -10 6 0 10 11 10
25 0 14 -4 25 -10 25 -5 0 -10 9 -10 19 0 11 -5 23 -10 26 -6 3 -27 32 -49 63
-28 43 -36 62 -30 77 11 28 11 37 -1 30 -5 -3 -10 2 -10 13 0 23 75 142 90
142 7 0 8 5 3 13 -12 19 -14 45 -3 52 18 11 10 26 -10 20 -14 -4 -20 -2 -18 7
2 7 -4 12 -14 10 -13 -2 -16 2 -11 14 5 13 3 16 -10 11 -9 -3 -17 -2 -17 4 0
11 -78 113 -91 117 -5 2 -9 10 -9 17 0 19 -21 30 -30 15 -5 -8 -14 0 -29 24
-12 19 -34 44 -49 55 -44 33 -14 24 66 -20z m-834 23 c3 -5 -1 -9 -9 -9 -8 0
-12 4 -9 9 3 4 7 8 9 8 2 0 6 -4 9 -8z m-867 -37 c0 -9 -6 -14 -14 -11 -8 3
-11 1 -8 -4 4 -6 -8 -10 -27 -10 l-33 1 35 19 c43 24 47 24 47 5z m848 -2 c-4
-10 -7 -29 -6 -42 l1 -23 -20 23 c-19 24 -19 24 1 42 12 9 23 17 26 17 3 0 2
-8 -2 -17z m-847 -35 c0 -7 4 -24 7 -38 4 -14 3 -20 -2 -14 -5 7 -16 8 -28 4
-21 -8 -19 -10 28 -24 17 -5 61 -138 55 -167 -3 -13 -9 -32 -13 -41 -5 -13 -2
-16 17 -11 l23 5 -22 -16 c-14 -11 -31 -14 -47 -10 -17 4 -37 -1 -61 -16 -39
-24 -100 -36 -89 -18 5 7 0 9 -14 6 -14 -4 -20 -2 -15 5 4 6 0 8 -10 4 -28
-10 -44 2 -39 28 2 14 -2 31 -11 39 -19 20 -5 101 23 131 11 12 20 26 20 31 0
6 10 20 23 32 12 12 31 30 41 41 15 17 50 30 107 40 3 1 6 -5 7 -11z m876 -12
c-6 -15 -24 -23 -24 -11 0 8 24 34 28 30 1 -1 0 -10 -4 -19z m-116 -31 c-21
-19 -43 -35 -50 -35 -7 0 1 8 17 18 17 11 36 26 44 35 7 10 16 17 20 17 3 0
-11 -16 -31 -35z m671 7 c7 -14 5 -18 -9 -18 -12 0 -17 7 -16 22 1 24 11 22
25 -4z m-309 -12 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0
11 -4 11 -10z m331 -143 c-10 -9 -11 -8 -5 6 3 10 9 15 12 12 3 -3 0 -11 -7
-18z m-18 -32 c-3 -9 -8 -14 -10 -11 -3 3 -2 9 2 15 9 16 15 13 8 -4z m-1138
-25 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14 6 0 13 -4 16 -10z m-170 -68 c-3 -3
3 -15 12 -26 17 -20 17 -20 1 -7 -15 11 -21 11 -35 0 -45 -35 -65 -68 -63
-102 4 -38 0 -47 -17 -47 -9 0 -24 -7 -34 -16 -11 -10 -25 -13 -40 -9 -15 5
-18 9 -9 15 8 5 9 10 1 14 -8 5 -7 11 2 20 6 8 16 12 20 9 5 -3 4 4 -2 14 -6
11 -7 23 -4 27 3 3 -2 6 -12 6 -15 0 -14 3 6 18 13 10 49 33 79 51 30 19 59
40 63 48 7 11 12 12 23 2 8 -6 12 -14 9 -17z m65 1 c13 3 18 1 13 -6 -4 -6 0
-8 8 -5 8 3 26 0 39 -7 l24 -13 -34 -21 c-19 -11 -39 -21 -43 -21 -4 0 -14
-14 -21 -30 -10 -26 -10 -41 3 -88 9 -36 11 -66 6 -78 -11 -24 -10 -21 -19
-70 -6 -33 -2 -53 17 -100 13 -33 27 -74 30 -91 6 -28 4 -33 -13 -33 -31 0
-34 -1 -48 -13 -12 -9 -11 -12 5 -18 14 -6 13 -8 -9 -8 -30 -1 -38 16 -13 25
52 21 -34 46 -112 34 -61 -10 -68 -14 -59 -29 4 -5 22 -7 40 -4 19 3 42 0 52
-7 17 -10 15 -11 -9 -5 -15 3 -37 0 -49 -6 -17 -9 -23 -9 -26 0 -2 6 -13 11
-23 11 -14 0 -18 4 -13 13 5 8 3 8 -9 -2 -15 -12 -20 -9 -44 18 -25 28 -28 29
-45 14 -11 -10 -18 -12 -18 -5 0 7 -8 12 -17 12 -15 0 -16 2 -3 10 13 8 13 10
-2 10 -22 0 -28 -21 -11 -38 7 -8 11 -17 9 -20 -2 -4 7 -18 20 -32 16 -17 24
-20 24 -10 0 9 6 7 16 -8 16 -23 41 -31 28 -9 -4 6 4 3 17 -9 13 -12 31 -25
39 -29 13 -8 13 -7 0 10 -14 17 -14 18 17 1 18 -9 36 -16 40 -15 4 1 40 1 78
0 l70 -2 -45 -19 c-58 -24 -39 -25 31 -2 30 11 83 22 120 26 57 5 68 4 87 -14
25 -24 27 -28 10 -27 -28 3 -108 -15 -108 -24 0 -5 7 -9 15 -9 8 0 15 -5 15
-11 0 -6 5 -7 13 -2 17 10 39 13 51 6 5 -4 -7 -12 -28 -20 -21 -7 -43 -10 -49
-6 -6 3 -7 1 -3 -5 5 -8 0 -12 -13 -12 -11 0 -23 -4 -26 -10 -3 -5 -14 -10
-23 -10 -15 0 -15 2 -2 11 12 8 10 9 -10 7 -14 -2 -24 -9 -23 -16 4 -17 -14
-15 -21 3 -3 8 -10 15 -15 15 -6 0 -8 -6 -5 -14 3 -7 -2 -16 -10 -19 -11 -4
-13 -1 -9 10 5 12 3 14 -8 8 -11 -7 -12 -6 -2 6 10 12 8 15 -8 16 -11 1 -17
-2 -14 -8 4 -5 -2 -10 -12 -11 -39 -3 -49 -5 -67 -13 -13 -6 -21 -4 -24 3 -2
7 -12 12 -22 12 -10 0 -31 7 -46 16 -26 14 -26 15 -4 8 14 -4 50 -8 82 -8 31
-1 51 -4 45 -8 -7 -4 -7 -8 -2 -8 6 0 17 4 24 9 12 8 9 11 -12 16 -15 4 -27
10 -27 14 0 4 -21 13 -47 19 -27 6 -66 19 -88 28 -22 10 -43 18 -47 18 -4 1
-13 7 -19 14 -7 6 -21 12 -30 12 -9 0 -22 7 -29 15 -7 8 -18 15 -24 15 -6 0
-4 -5 4 -10 13 -9 13 -10 0 -10 -25 0 -125 114 -114 132 3 4 10 6 15 3 5 -4 9
5 9 19 0 14 -4 28 -10 31 -19 11 -10 23 13 17 21 -5 21 -4 6 14 -31 37 -34 47
-9 34 20 -11 21 -10 10 9 -6 12 -8 21 -5 21 3 0 0 10 -6 23 -12 22 -12 22 9 4
20 -18 20 -18 27 3 6 20 7 21 21 3 12 -16 13 -16 14 -1 0 9 5 20 11 24 8 4 9
-1 5 -17 -7 -23 -6 -23 8 -5 16 20 41 96 59 182 9 43 14 52 33 52 21 0 22 -4
17 -57 -3 -33 -13 -68 -25 -85 -17 -23 -18 -30 -7 -37 10 -6 16 -2 22 14 7 20
28 35 85 58 21 8 23 7 17 -11 -7 -24 2 -25 29 -5 11 8 28 15 38 15 10 0 18 4
18 9 0 19 56 19 91 1 36 -18 37 -18 32 1 -3 10 -14 19 -24 19 -11 0 -19 3 -19
8 0 7 30 47 64 85 17 18 22 42 7 32 -5 -3 -12 -1 -16 4 -3 6 3 8 15 6 11 -2
20 0 20 6 0 5 11 9 25 9 14 0 25 5 25 10 0 10 -11 12 -58 13 -12 0 -20 2 -17
5 2 3 -1 12 -8 21 -11 14 -10 14 5 2 10 -7 27 -11 38 -8z m249 -19 c-12 -15
-34 -15 -71 1 -11 4 -18 3 -18 -4 0 -6 8 -11 18 -11 10 0 23 -5 30 -12 8 -8
15 -8 26 1 8 7 20 10 25 6 6 -3 20 -1 31 5 23 12 25 7 10 -21 -12 -22 2 -26
19 -5 17 20 83 27 76 8 -3 -8 0 -21 6 -28 11 -14 6 -31 -33 -111 -6 -11 -7
-27 -3 -34 5 -8 4 -10 -4 -5 -6 4 -14 0 -17 -8 -3 -9 -11 -13 -17 -9 -6 4 -8
0 -4 -11 4 -11 3 -15 -4 -10 -6 3 -26 -2 -45 -12 -24 -13 -37 -16 -42 -8 -4 6
-23 19 -42 29 -19 10 -38 23 -42 29 -5 7 -8 5 -8 -6 0 -9 20 -28 44 -42 49
-29 67 -53 97 -128 11 -29 28 -61 37 -71 15 -17 13 -20 -24 -57 l-41 -39 -17
40 c-13 30 -23 39 -42 39 -25 0 -47 17 -76 60 l-17 25 6 -25 c4 -14 17 -36 30
-49 18 -19 21 -27 12 -38 -7 -7 -9 -17 -5 -20 4 -4 11 -1 15 6 7 11 16 8 45
-14 37 -28 49 -52 20 -41 -12 5 -15 2 -10 -10 3 -8 6 -25 6 -37 1 -19 3 -17
14 8 14 32 118 135 135 135 16 0 13 -26 -4 -40 -20 -17 -19 -46 4 -69 18 -18
17 -19 -14 -61 -18 -24 -40 -45 -50 -46 -13 -2 -15 0 -6 9 15 15 14 24 -5 31
-10 4 -13 2 -8 -7 5 -8 2 -7 -9 2 -14 11 -20 11 -33 0 -10 -8 -18 -9 -22 -3
-10 15 -42 25 -42 13 0 -6 -5 -7 -10 -4 -6 4 -8 10 -5 15 3 4 -3 14 -12 21
-15 12 -16 12 -10 -3 4 -12 2 -15 -9 -11 -8 3 -12 8 -9 11 9 9 -37 52 -57 52
-10 0 -18 5 -18 11 0 5 4 8 9 5 5 -3 0 11 -10 32 -11 20 -19 53 -17 72 1 19
-4 44 -11 55 -11 19 -12 19 -6 -2 8 -30 1 -29 -19 3 -14 20 -15 31 -6 58 14
44 20 74 22 118 1 20 5 35 10 32 5 -4 8 -21 6 -39 -1 -19 1 -37 5 -41 8 -9 9
72 1 103 -4 13 -9 21 -13 19 -3 -2 -13 3 -21 12 -13 14 -12 15 4 9 16 -7 17
-5 5 9 -11 14 -11 18 6 30 15 11 20 11 27 1 6 -9 8 -8 8 3 0 17 64 72 95 82
11 3 42 6 69 7 43 1 47 -1 35 -15z m-624 -84 c3 -6 -1 -7 -9 -4 -18 7 -21 14
-7 14 6 0 13 -4 16 -10z m820 -40 c3 -5 -1 -10 -9 -10 -9 0 -16 5 -16 10 0 6
4 10 9 10 6 0 13 -4 16 -10z m-7 -48 c2 -7 -3 -12 -12 -12 -9 0 -16 7 -16 16
0 17 22 14 28 -4z m52 -12 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4
10 6 0 11 -4 11 -10z m67 -6 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2
13 -5z m1353 -74 c0 -5 -4 -10 -9 -10 -6 0 -13 5 -16 10 -3 6 1 10 9 10 9 0
16 -4 16 -10z m-3 -26 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z
m-187 -39 c0 -5 -5 -3 -10 5 -5 8 -10 20 -10 25 0 6 5 3 10 -5 5 -8 10 -19 10
-25z m190 21 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10
-2 10 -4z m-1166 -88 c3 -13 3 -40 -1 -61 -4 -30 -11 -39 -32 -43 -14 -4 -35
-15 -46 -25 -11 -9 -37 -20 -57 -24 -21 -4 -38 -11 -38 -16 0 -5 12 -7 28 -3
26 6 26 6 7 -9 -23 -19 -45 -22 -45 -7 0 6 -17 8 -41 5 -37 -5 -40 -4 -34 15
10 30 -4 24 -16 -7 -7 -16 -13 -23 -16 -15 -3 6 -9 10 -14 7 -5 -4 -3 -12 4
-19 8 -10 17 -11 31 -4 13 7 16 7 12 -1 -4 -6 -1 -11 6 -12 7 0 -14 -11 -47
-24 -40 -15 -61 -29 -63 -41 -3 -17 -3 -18 10 -3 21 27 103 52 142 45 22 -4
37 -2 42 5 4 8 3 9 -4 5 -13 -8 -62 3 -62 13 0 10 62 8 78 -2 7 -5 12 -3 12 3
0 6 5 8 12 4 6 -4 8 -3 5 3 -9 14 78 93 102 93 25 0 36 -16 16 -23 -7 -3 -19
-23 -24 -44 -6 -23 -27 -54 -52 -78 -23 -22 -39 -34 -35 -27 4 6 2 12 -4 12
-6 0 -8 5 -5 10 11 19 -4 10 -40 -21 -27 -24 -39 -29 -48 -20 -8 8 -8 14 1 23
19 19 14 29 -8 16 -12 -8 -20 -24 -20 -40 0 -29 -31 -54 -55 -45 -7 3 -18 0
-24 -6 -8 -8 -15 -6 -27 9 -8 10 -12 12 -8 4 5 -10 0 -9 -14 4 -18 16 -22 16
-22 4 0 -9 -10 -18 -22 -22 -19 -5 -20 -8 -8 -15 8 -6 11 -13 7 -18 -7 -7 -67
48 -67 61 0 4 10 6 22 6 12 0 35 12 51 28 17 15 28 20 25 12 -3 -8 0 -20 7
-27 10 -10 12 -4 8 27 -5 33 0 45 31 85 19 26 41 62 48 81 14 39 21 42 40 16
8 -12 31 -21 63 -25 44 -5 54 -2 81 21 17 15 36 42 43 61 11 35 38 71 51 71 4
0 10 -10 14 -22z m-390 -44 c32 -3 36 -5 36 -14 0 -16 -42 -12 -62 7 -22 20
-24 41 -2 22 9 -8 22 -14 28 -15z m96 -24 c0 -25 -35 -106 -50 -115 -6 -4 -17
-2 -23 4 -8 8 -7 11 2 11 11 0 11 3 2 14 -10 11 -10 20 0 38 37 71 69 94 69
48z m-765 -88 c5 -16 3 -22 -7 -20 -15 3 -28 18 -28 33 0 6 5 3 11 -5 9 -12
10 -10 5 9 -6 29 9 15 19 -17z m235 -16 c0 -2 -7 -9 -15 -16 -12 -10 -15 -10
-15 4 0 9 7 16 15 16 8 0 15 -2 15 -4z m104 -19 c-4 -13 -9 -14 -19 -4 -11 10
-10 13 4 18 20 8 23 6 15 -14z m-169 -5 c-3 -3 -11 0 -18 7 -9 10 -8 11 6 5
10 -3 15 -9 12 -12z m-34 -29 c13 -16 12 -17 -3 -4 -10 7 -18 15 -18 17 0 8 8
3 21 -13z m240 -1 c-7 -2 -18 1 -23 6 -8 8 -4 9 13 5 13 -4 18 -8 10 -11z
m538 -80 c-7 -12 -22 -23 -32 -26 -15 -4 -13 2 10 24 31 32 41 32 22 2z m436
10 c-3 -3 -11 0 -18 7 -9 10 -8 11 6 5 10 -3 15 -9 12 -12z m74 7 c17 -6 31
-15 31 -21 0 -5 4 -7 9 -4 5 3 15 -1 22 -10 11 -13 9 -14 -16 -8 -21 5 -31 3
-42 -12 -13 -18 -14 -18 -19 3 -8 28 -30 36 -48 18 -18 -19 -26 -19 -26 -1 0
18 45 29 70 16 23 -12 30 -13 30 -2 0 5 -12 13 -27 19 -37 14 -25 16 16 2z
m-884 -17 c-3 -3 -11 0 -18 7 -9 10 -8 11 6 5 10 -3 15 -9 12 -12z m-610 -12
c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14 6 0 13 -4 16 -10z m40 -28 c-3 -3 -11 0
-18 7 -9 10 -8 11 6 5 10 -3 15 -9 12 -12z m-195 5 c0 -2 -10 -12 -22 -23
l-23 -19 19 23 c18 21 26 27 26 19z m48 -19 c-9 -7 -25 -22 -35 -33 -10 -12
-14 -14 -8 -5 18 29 38 50 48 50 6 0 4 -6 -5 -12z"/>
<path d="M2590 2805 c0 -2 10 -10 23 -16 20 -11 21 -11 8 4 -13 16 -31 23 -31
12z"/>
<path d="M2172 2793 c-19 -3 -48 -13 -65 -24 -34 -22 -31 -22 48 2 96 28 99
32 17 22z"/>
<path d="M1955 2778 c-11 -6 -23 -16 -27 -22 -4 -6 -8 -7 -8 -2 0 17 -42 -29
-62 -67 -22 -44 -15 -63 10 -30 15 19 19 20 35 8 17 -12 16 -14 -12 -20 -17
-4 -33 -11 -36 -16 -9 -13 19 -11 33 3 6 6 15 8 19 4 4 -4 1 -11 -7 -17 -13
-8 -13 -10 0 -19 8 -5 16 -5 18 -1 2 5 15 3 30 -5 15 -8 35 -14 46 -14 12 0
16 -5 12 -15 -3 -10 1 -15 12 -16 9 0 25 -2 35 -4 9 -2 15 0 12 5 -11 18 38
18 58 -1 11 -10 26 -19 33 -19 7 0 20 -8 30 -17 18 -19 54 -28 54 -14 0 26
-139 109 -161 96 -5 -4 -7 -11 -4 -16 3 -5 -1 -6 -9 -3 -9 3 -16 1 -16 -5 0
-20 -37 6 -56 39 -14 23 -23 28 -43 24 l-26 -4 25 11 c24 11 24 11 5 19 -18 8
-17 9 8 9 15 1 27 5 27 10 0 5 16 12 36 16 27 5 41 2 54 -10 10 -9 33 -18 50
-19 18 -1 36 -10 42 -19 14 -25 38 -21 38 7 0 18 -8 27 -31 35 -18 6 -41 11
-53 11 -20 1 -19 2 4 16 l25 15 -25 -8 c-14 -4 -62 -7 -107 -7 -64 -1 -79 -4
-71 -13 6 -7 9 -13 7 -14 -36 -7 -46 -8 -57 -4 -17 6 43 69 76 79 23 8 31 26
10 26 -7 0 -22 -6 -33 -12z"/>
<path d="M2460 2753 c0 -14 25 -34 38 -31 6 2 18 -6 26 -17 16 -19 16 -19 5 8
-7 15 -20 27 -29 27 -9 0 -21 5 -28 12 -8 8 -12 8 -12 1z"/>
<path d="M2170 2740 c0 -5 7 -7 15 -4 8 4 15 8 15 10 0 2 -7 4 -15 4 -8 0 -15
-4 -15 -10z"/>
<path d="M2680 2733 c0 -15 41 -34 62 -27 11 3 16 10 12 14 -13 12 -74 23 -74
13z"/>
<path d="M2530 2654 c0 -5 7 -20 16 -32 8 -12 13 -26 10 -30 -2 -4 -1 -14 5
-22 6 -11 9 -6 9 18 0 19 -8 42 -20 54 -11 12 -20 17 -20 12z"/>
<path d="M1770 2618 c0 -19 2 -20 10 -8 13 19 13 30 0 30 -5 0 -10 -10 -10
-22z"/>
<path d="M1820 2616 c0 -13 7 -40 15 -59 19 -46 19 -49 -5 -77 -11 -13 -20
-18 -20 -12 0 7 -4 12 -10 12 -5 0 -10 -10 -10 -23 0 -12 -11 -34 -24 -48 -33
-36 -38 -59 -23 -104 21 -61 40 -58 36 6 -3 55 14 99 37 99 7 0 12 6 11 13 -1
32 4 48 13 42 6 -3 13 1 16 9 4 10 19 16 40 16 29 0 33 2 22 14 -7 8 -14 10
-16 5 -8 -20 -18 -7 -20 24 -1 17 -9 37 -17 43 -8 6 -11 14 -7 18 4 4 0 6 -8
4 -10 -2 -14 4 -13 20 2 12 -2 22 -7 22 -6 0 -10 -11 -10 -24z"/>
<path d="M1768 2555 c-2 -21 0 -35 7 -35 7 0 9 14 7 35 -2 19 -5 35 -7 35 -2
0 -5 -16 -7 -35z"/>
<path d="M2455 2580 c-4 -6 7 -10 27 -10 25 0 29 3 18 10 -19 13 -37 13 -45 0z"/>
<path d="M1942 2533 c-18 -4 -21 -7 -12 -18 8 -9 19 -11 33 -6 35 12 90 -1 93
-22 4 -30 14 -50 21 -43 3 3 17 -11 29 -32 27 -42 27 -42 15 -60 -7 -12 -12
-12 -29 -1 -18 11 -24 11 -34 -1 -7 -9 -24 -24 -37 -35 l-24 -20 12 25 12 25
-18 -25 c-10 -14 -29 -35 -42 -47 -13 -13 -21 -23 -18 -23 13 0 112 63 120 76
10 18 27 18 41 0 6 -7 28 -16 48 -19 33 -5 39 -3 44 17 3 12 4 26 3 32 -1 5
-1 11 0 14 2 3 4 19 7 37 3 26 -1 35 -19 44 -19 11 -20 10 -10 -2 10 -12 8
-15 -8 -16 -11 -1 -23 5 -26 13 -3 8 -14 14 -25 14 -11 0 -16 4 -12 11 3 6 -1
10 -12 9 -32 -4 -40 0 -24 10 22 14 -3 35 -43 36 -18 0 -39 3 -47 6 -8 3 -25
3 -38 1z m248 -204 c0 -5 -4 -9 -10 -9 -5 0 -10 7 -10 16 0 8 5 12 10 9 6 -3
10 -10 10 -16z"/>
<path d="M2276 2515 c-21 -9 -24 -13 -13 -18 8 -3 23 0 34 8 25 19 14 25 -21
10z"/>
<path d="M1945 2310 c-21 -23 -44 -27 -25 -5 7 8 8 15 2 15 -5 0 -22 -16 -37
-36 -28 -37 -44 -40 -25 -5 13 26 -1 27 -23 3 -18 -20 -23 -37 -8 -27 6 3 14
-2 19 -11 9 -16 11 -15 23 4 8 12 21 22 31 22 9 0 23 6 30 13 7 7 21 18 32 24
10 6 14 13 9 16 -6 4 -18 -2 -28 -13z"/>
<path d="M1720 2243 c0 -55 5 -54 14 5 4 26 2 42 -4 42 -5 0 -10 -21 -10 -47z"/>
<path d="M1786 2244 c-3 -8 -10 -13 -15 -9 -12 7 -31 -26 -32 -57 0 -13 -3
-17 -6 -10 -2 6 -9 10 -14 6 -12 -7 -12 -54 1 -54 6 0 10 7 10 15 0 8 6 14 13
13 6 -2 11 3 9 10 -1 8 2 11 7 8 11 -7 36 31 43 67 6 29 -6 37 -16 11z"/>
<path d="M1893 2153 c9 -2 23 -2 30 0 6 3 -1 5 -18 5 -16 0 -22 -2 -12 -5z"/>
<path d="M1928 2133 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
<path d="M1768 1850 c26 -11 30 -25 5 -16 -15 5 -15 3 1 -7 10 -7 32 -23 48
-36 16 -13 32 -21 35 -17 8 7 7 9 -37 35 -19 11 -29 21 -21 21 11 0 11 3 1 15
-7 8 -22 15 -34 14 -21 0 -21 0 2 -9z"/>
<path d="M2248 1853 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
<path d="M1836 1832 c5 -4 26 -23 47 -41 20 -19 37 -32 37 -28 0 14 -63 77
-78 77 -9 0 -12 -3 -6 -8z"/>
<path d="M2360 1731 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
<path d="M1073 1703 c-36 -5 -42 -17 -17 -31 14 -8 11 -10 -15 -14 -17 -2 -31
-1 -31 4 0 5 -9 4 -19 -2 -26 -13 -31 -13 -25 4 4 10 -2 12 -20 9 -20 -4 -26
-11 -26 -32 0 -14 -8 -35 -17 -46 -13 -16 -15 -17 -10 -2 7 18 -8 24 -18 7 -4
-6 -10 -8 -15 -5 -5 3 -14 -4 -20 -15 -6 -11 -14 -19 -18 -16 -4 2 -12 -6 -18
-19 -9 -18 -8 -22 3 -21 7 1 18 7 25 14 6 6 23 8 38 5 22 -4 29 -1 34 15 4 10
16 28 29 38 12 11 17 12 11 4 -7 -8 -15 -25 -18 -37 -6 -20 -4 -19 25 8 17 16
34 27 37 25 3 -3 -6 -15 -19 -26 l-24 -20 27 13 c15 8 36 25 48 38 16 19 19
20 13 5 -4 -13 -3 -17 5 -12 11 6 17 -12 13 -37 -1 -5 3 -6 9 -2 6 3 8 10 5
14 -2 5 11 1 30 -7 19 -9 32 -19 29 -24 -3 -4 2 -11 10 -14 9 -3 14 -10 11
-14 -3 -5 -1 -12 5 -15 7 -4 7 -11 2 -18 -14 -18 -25 -100 -12 -92 5 3 10 15
10 25 0 10 4 21 9 24 5 4 8 22 7 41 -2 20 1 38 6 42 6 3 5 9 -3 14 -10 6 -5 9
16 10 21 1 24 3 10 6 -34 9 -82 51 -93 83 -8 21 -8 30 0 30 5 0 8 6 5 14 -3 7
0 19 6 25 6 6 7 10 2 9 -6 0 -25 -3 -42 -5z m-188 -143 c3 -5 1 -10 -4 -10 -6
0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z"/>
<path d="M1440 1631 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
<path d="M840 1530 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M1191 1399 c0 -19 3 -27 6 -19 3 8 10 18 15 21 5 3 2 12 -7 19 -13
11 -15 8 -14 -21z"/>
<path d="M1300 1352 c0 -18 -4 -32 -9 -32 -5 0 -14 -13 -20 -30 -5 -16 -8 -30
-5 -30 12 0 32 28 45 63 10 29 10 40 1 49 -9 9 -12 5 -12 -20z"/>
<path d="M1093 1353 c-18 -6 -16 -23 1 -23 8 0 17 -6 19 -12 3 -7 6 -1 6 15 1
27 -3 30 -26 20z"/>
<path d="M1430 1221 c0 -5 -9 -7 -20 -4 -25 7 -26 -12 -2 -36 21 -22 79 -35
88 -19 5 7 11 2 17 -13 9 -23 9 -23 17 -4 17 40 12 45 -46 45 -51 0 -55 2 -49
20 3 11 4 20 1 20 -3 0 -6 -4 -6 -9z"/>
<path d="M1231 1172 c-17 -31 -13 -40 5 -14 9 13 14 26 11 29 -3 2 -10 -4 -16
-15z"/>
<path d="M1388 1156 c-3 -14 -2 -26 2 -26 13 0 21 33 12 42 -6 6 -11 -1 -14
-16z"/>
<path d="M1035 1147 c11 -8 31 -18 45 -22 24 -7 24 -6 5 8 -11 8 -31 18 -45
22 -24 7 -24 6 -5 -8z"/>
<path d="M1540 1136 c0 -24 12 -41 22 -30 8 7 -3 54 -13 54 -5 0 -9 -11 -9
-24z"/>
<path d="M1197 1123 c-4 -3 -7 -11 -7 -17 0 -6 5 -5 12 2 6 6 9 14 7 17 -3 3
-9 2 -12 -2z"/>
<path d="M1480 1000 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M1845 949 c-4 -6 -5 -12 -2 -15 2 -3 7 2 10 11 7 17 1 20 -8 4z"/>
<path d="M2090 1519 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M1639 1483 c-1 -2 -2 -17 -3 -34 -1 -24 6 -36 33 -56 l33 -26 -17 27
c-12 18 -15 36 -11 59 5 28 3 33 -14 33 -11 0 -21 -2 -21 -3z"/>
<path d="M2002 1409 c2 -7 10 -15 17 -17 8 -3 12 1 9 9 -2 7 -10 15 -17 17 -8
3 -12 -1 -9 -9z"/>
<path d="M2048 1295 c-3 -14 -1 -28 3 -31 5 -3 9 9 9 25 0 38 -6 40 -12 6z"/>
<path d="M1828 1203 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M1910 1170 c-12 -8 -11 -10 7 -10 12 0 25 5 28 10 8 13 -15 13 -35 0z"/>
<path d="M2547 1305 c36 -46 52 -46 17 0 -14 19 -31 35 -36 35 -5 0 4 -16 19
-35z"/>
<path d="M2590 1246 c0 -9 5 -16 10 -16 6 0 10 4 10 9 0 6 -4 13 -10 16 -5 3
-10 -1 -10 -9z"/>
<path d="M2681 1086 c-2 -17 22 -86 30 -86 14 0 16 27 4 55 -7 17 -14 23 -15
15 -1 -11 -4 -9 -10 5 -5 11 -9 16 -9 11z"/>
<path d="M2600 642 c-23 -4 -24 -5 -5 -13 17 -6 17 -8 3 -8 -10 -1 -18 -5 -18
-10 0 -6 12 -6 30 0 46 17 39 39 -10 31z"/>
<path d="M2840 591 c0 -5 7 -12 16 -15 14 -5 15 -4 4 9 -14 17 -20 19 -20 6z"/>
<path d="M2642 430 c2 -8 13 -15 23 -15 10 0 20 7 22 15 4 13 3 13 -5 1 -9
-13 -13 -13 -28 0 -15 12 -17 12 -12 -1z"/>
<path d="M651 1342 c-1 -7 -5 -10 -11 -7 -5 3 -10 1 -10 -5 0 -6 -4 -9 -8 -6
-5 3 -16 -4 -26 -16 -18 -20 -18 -21 10 -14 36 9 58 30 51 48 -4 10 -6 10 -6
0z"/>
<path d="M498 840 c-5 -30 3 -46 16 -33 9 10 7 63 -3 63 -5 0 -11 -14 -13 -30z"/>
<path d="M860 835 c0 -18 19 -40 26 -32 4 4 0 15 -9 24 -9 10 -17 13 -17 8z"/>
<path d="M613 739 c14 -8 22 -8 30 0 8 8 3 11 -18 11 -26 -1 -28 -2 -12 -11z"/>
<path d="M555 729 c4 -6 -4 -22 -16 -36 -17 -18 -20 -27 -11 -30 6 -3 9 -9 6
-15 -4 -6 -1 -9 7 -6 8 3 15 18 16 34 1 16 9 34 17 40 17 12 11 24 -11 24 -8
0 -11 -5 -8 -11z"/>
<path d="M482 700 c-33 -35 -47 -77 -32 -95 7 -8 15 -15 19 -15 8 0 44 121 37
127 -2 2 -13 -5 -24 -17z"/>
<path d="M561 642 c-14 -27 -12 -35 8 -23 7 5 11 17 9 27 -4 17 -5 17 -17 -4z"/>
<path d="M725 627 c-21 -13 -42 -14 -84 -1 -21 6 -23 5 -18 -15 4 -15 -1 -24
-15 -32 -16 -8 -19 -8 -13 1 5 8 1 11 -10 8 -22 -4 -28 -18 -16 -37 8 -12 19
-7 58 24 26 22 42 32 34 22 -18 -22 -3 -22 22 1 20 16 20 16 13 -3 -6 -16 0
-14 26 10 18 17 35 31 37 33 2 1 0 2 -5 2 -5 0 -18 -6 -29 -13z"/>
<path d="M770 630 c0 -5 4 -10 9 -10 6 0 13 5 16 10 3 6 -1 10 -9 10 -9 0 -16
-4 -16 -10z"/>
<path d="M400 575 c0 -8 -4 -15 -8 -15 -5 0 -9 -16 -10 -35 -1 -19 3 -35 8
-35 6 0 10 6 11 13 1 6 3 29 4 50 2 20 2 37 -1 37 -2 0 -4 -7 -4 -15z"/>
<path d="M465 570 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M715 570 l-20 -9 20 1 c11 0 31 4 45 8 l25 8 -25 0 c-14 0 -34 -3
-45 -8z"/>
<path d="M538 533 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M407 486 c-12 -30 30 -66 84 -73 39 -6 42 -4 31 9 -7 8 -32 23 -57
32 -24 10 -45 25 -47 34 -3 15 -5 15 -11 -2z"/>
<path d="M1095 946 c-11 -17 -40 -41 -65 -53 -24 -13 -36 -23 -27 -23 10 0 22
-10 27 -22 9 -22 9 -22 9 3 1 17 10 33 26 43 22 15 61 74 53 81 -2 1 -12 -11
-23 -29z"/>
<path d="M915 930 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0 -7
-4 -4 -10z"/>
<path d="M950 888 c0 -17 3 -19 12 -10 7 7 20 12 29 12 10 0 21 5 24 10 4 6
-8 10 -29 10 -30 0 -36 -3 -36 -22z"/>
<path d="M1014 776 c-7 -19 3 -36 21 -36 22 0 23 14 3 33 -16 15 -19 15 -24 3z"/>
<path d="M962 728 c0 -16 8 -43 18 -60 l18 -30 -2 56 c-1 41 -5 56 -17 59 -12
3 -16 -3 -17 -25z"/>
<path d="M906 713 c-2 -2 -1 -15 2 -28 3 -20 8 -23 22 -15 13 7 20 6 24 -5 3
-8 10 -15 15 -15 6 0 3 15 -7 34 -14 29 -42 43 -56 29z"/>
<path d="M1216 353 c-6 -14 -5 -15 5 -6 7 7 10 15 7 18 -3 3 -9 -2 -12 -12z"/>
<path d="M1532 402 c-11 -25 -11 -25 4 -10 9 9 15 21 13 27 -2 6 -10 -2 -17
-17z"/>
</g>
</svg>

After

(image error) Size: 32 KiB

View file

@ -0,0 +1,19 @@
{
"name": "",
"short_name": "",
"icons": [
{
"src": "/assets/favicons/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/assets/favicons/android-chrome-256x256.png",
"sizes": "256x256",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

View file

@ -0,0 +1,5 @@
<svg id="admonition-caution-colored" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<path
d="M7.254.545L.545 7.255v9.49l6.71 6.71h9.49l6.71-6.71v-9.49l-6.71-6.71h-9.49zm.79 1.91h7.911l5.59 5.59v7.91l-5.59 5.59h-7.91l-5.59-5.59V8.046l5.59-5.59zm3 3.815v7.64h1.912V6.27h-1.912zm0 9.55v1.91h1.912v-1.91h-1.912z"
transform="translate(-1.142 -1.142) scale(2.09516)" fill="#c43933" />
</svg>

After

(image error) Size: 428 B

View file

@ -0,0 +1 @@
<svg version="1.1" id="admonition-important-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M-64-85.333v37h18.3l15.7 11v-11h14v-37h-48zm4 4h40v29h-14v8l-11.7-8H-60v-29zm17.244 2.705l.826 15.912h3.961l.824-15.912h-5.61zm2.807 18.486c-.793 0-1.475.209-2.047.627-.55.418-.826 1.134-.826 2.147 0 .968.276 1.673.826 2.113.572.418 1.254.627 2.047.627.77 0 1.43-.21 1.98-.627.572-.44.858-1.145.858-2.113 0-1.013-.286-1.729-.858-2.147-.55-.418-1.21-.627-1.98-.627z" transform="translate(64 85.333)" fill="#c43933"/></svg>

After

(image error) Size: 538 B

View file

@ -0,0 +1 @@
<svg version="1.1" id="admonition-note-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M24 0C10.745 0 0 10.745 0 24s10.745 24 24 24 24-10.745 24-24S37.255 0 24 0zm0 4c10.587 0 20 9.413 20 20s-9.413 20-20 20S4 34.587 4 24 13.413 4 24 4zm-1.988 9v4.002h3.98V13h-3.98zM20 19.016v3.998h2v7.984h-2V35h8.004v-4.002h-2.002V19.016H20z" fill="#206ccc"/></svg>

After

(image error) Size: 375 B

View file

@ -0,0 +1 @@
<svg version="1.1" id="admonition-tip-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M197.328 0v64.003h32.01V0h-32.01zM73.79 51.17L51.167 73.791l45.263 45.263 22.622-22.623L73.79 51.17zm279.089 0l-45.263 45.262 22.622 22.623L375.5 73.792l-22.622-22.623zM213.333 85.33c-70.692 0-128.005 57.313-128.005 128.006 0 47.378 25.744 88.738 64.003 110.87v81.12l21.328 21.346h21.346c0 11.782 9.546 21.328 21.328 21.328s21.328-9.546 21.328-21.328h21.347l21.328-21.346v-81.12c38.259-22.132 64.003-63.492 64.003-110.87 0-70.693-57.313-128.005-128.006-128.005zm0 42.675c47.129 0 85.331 38.203 85.331 85.33 0 47.13-38.202 85.332-85.33 85.332-47.129 0-85.331-38.203-85.331-85.331s38.202-85.33 85.33-85.33zM-.003 197.331v32.01H64v-32.01H-.003zm362.67 0v32.01h64.002v-32.01h-64.002zM96.43 307.617l-45.263 45.245 22.622 22.64 45.263-45.262-22.622-22.623zm233.807 0l-22.622 22.623 45.263 45.263 22.622-22.641-45.263-45.245zm-138.232 31.938a128.789 128.789 0 0021.328 1.786c7.27 0 14.39-.622 21.328-1.786v44.442h-42.656v-44.442z" transform="translate(1.143) scale(.10714)" fill="#7dcc20"/></svg>

After

(image error) Size: 1.1 KiB

View file

@ -0,0 +1 @@
<svg version="1.1" id="admonition-warning-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M24 0a2 2 0 00-1.79 1.105l-22 44A2 2 0 002 48h44a2 2 0 001.79-2.895l-22-44A2 2 0 0024 0zm0 6.473L42.764 44H5.236L24 6.473zm-2.95 10.406l.872 16.828h4.19l.872-16.828h-5.933zm2.968 19.55c-.838 0-1.56.223-2.164.665-.582.442-.874 1.197-.874 2.267 0 1.024.292 1.77.874 2.235.605.442 1.326.664 2.164.664.814 0 1.511-.222 2.093-.664.605-.466.909-1.21.909-2.235 0-1.07-.304-1.825-.909-2.267-.582-.442-1.279-.664-2.093-.664z" fill="#cc5e20"/></svg>

After

(image error) Size: 554 B

View file

@ -0,0 +1 @@
<svg version="1.1" id="filetype-doc" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-3.73 9.388c.513 0 .933.1 1.264.304.336.198.583.48.742.847.159.362.238.788.238 1.277 0 .49-.08.92-.244 1.285a1.837 1.837 0 01-.736.848c-.33.203-.754.304-1.27.304-.512 0-.935-.101-1.27-.304a1.868 1.868 0 01-.742-.854c-.159-.366-.239-.795-.239-1.285 0-.486.08-.91.239-1.271a1.83 1.83 0 01.741-.847c.336-.203.761-.304 1.278-.304zm5.263.006c.234 0 .47.027.708.08.243.048.472.126.688.232l-.33.807a3.483 3.483 0 00-.51-.192 1.833 1.833 0 00-.57-.086c-.379 0-.678.143-.899.43-.216.283-.324.673-.324 1.172 0 .499.103.886.31 1.164.212.274.53.41.953.41.208 0 .406-.024.596-.072.194-.049.389-.11.583-.185v.86a3.285 3.285 0 01-1.29.239c-.504 0-.919-.1-1.245-.298a1.86 1.86 0 01-.722-.847c-.155-.366-.232-.792-.232-1.278 0-.476.089-.898.266-1.264.176-.366.434-.653.774-.86.34-.208.754-.312 1.244-.312zm-12.166.067H6.78c.741 0 1.319.196 1.734.589.419.388.628.953.628 1.694 0 .543-.1.995-.304 1.357a1.94 1.94 0 01-.86.814c-.37.18-.81.271-1.318.271H5.22v-4.725zm6.904.767c-.42 0-.724.142-.914.424-.185.282-.278.67-.278 1.164 0 .495.093.883.278 1.166.19.278.492.417.907.417.424 0 .725-.14.906-.417.186-.283.278-.671.278-1.166 0-.494-.092-.882-.278-1.164-.18-.282-.48-.424-.9-.424zm-5.892.06v3.065h.423c.954 0 1.43-.523 1.43-1.57 0-.507-.112-.882-.337-1.124-.225-.248-.556-.372-.993-.372H6.23zm-1.83 5.058h15.197v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></svg>

After

(image error) Size: 1.6 KiB

View file

@ -0,0 +1 @@
<svg version="1.1" id="filetype-docx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-6.037 9.388c.512 0 .934.1 1.265.304.335.198.583.48.741.847.16.362.239.788.239 1.277 0 .49-.082.92-.245 1.285a1.835 1.835 0 01-.735.848c-.331.203-.755.304-1.272.304-.511 0-.935-.101-1.27-.304a1.868 1.868 0 01-.742-.854c-.158-.366-.238-.795-.238-1.285 0-.486.08-.91.238-1.271a1.83 1.83 0 01.742-.847c.335-.203.76-.304 1.277-.304zm5.263.006c.234 0 .47.027.708.08.243.048.473.126.689.232l-.331.807a3.483 3.483 0 00-.51-.192 1.827 1.827 0 00-.569-.086c-.38 0-.68.143-.9.43-.217.283-.325.673-.325 1.172 0 .499.104.886.311 1.164.212.274.53.41.954.41.207 0 .406-.024.596-.072.194-.049.388-.11.582-.185v.86a3.285 3.285 0 01-1.291.239c-.503 0-.918-.1-1.245-.298a1.858 1.858 0 01-.72-.847c-.155-.366-.232-.792-.232-1.278 0-.476.088-.898.264-1.264a2.01 2.01 0 01.774-.86c.34-.208.755-.312 1.245-.312zm-12.167.067h1.562c.742 0 1.32.196 1.735.589.42.388.629.953.629 1.694 0 .543-.101.995-.304 1.357-.203.362-.49.633-.862.814-.37.18-.809.271-1.316.271H2.91v-4.725zm13.881 0h1.126l.973 1.615.953-1.615h1.132l-1.482 2.349 1.595 2.376h-1.166l-1.045-1.701-1.052 1.701H16.7l1.569-2.435-1.477-2.29zm-6.977.767c-.42 0-.723.142-.913.424-.185.282-.278.67-.278 1.164 0 .495.093.883.278 1.166.19.278.492.417.906.417.424 0 .727-.14.908-.417.185-.283.278-.671.278-1.166 0-.494-.093-.882-.278-1.164-.181-.282-.482-.424-.9-.424zm-5.891.06v3.065h.424c.953 0 1.43-.523 1.43-1.57 0-.507-.113-.882-.338-1.124-.225-.248-.556-.372-.993-.372h-.523zm.478 5.058h15.196v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></svg>

After

(image error) Size: 1.7 KiB

View file

@ -0,0 +1 @@
<svg version="1.1" id="filetype-pdf" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-9.7 9.46h1.482c.61 0 1.06.128 1.35.384.292.252.437.61.437 1.073 0 .278-.057.538-.172.78-.114.243-.306.44-.575.59-.265.15-.625.225-1.08.225h-.43v1.674H6.151v-4.725zm4.11 0h1.562c.742 0 1.32.197 1.735.59.42.388.629.953.629 1.694 0 .543-.101.995-.304 1.357-.203.362-.49.633-.862.814-.37.18-.809.271-1.316.271h-1.444v-4.725zm4.879 0h2.708v.82h-1.722v1.22h1.602v.82h-1.602v1.866h-.986v-4.725zm-7.977.827v1.39h.338c.278 0 .497-.054.656-.165.163-.11.244-.298.244-.563 0-.211-.066-.375-.198-.49-.128-.114-.329-.172-.603-.172h-.437zm4.11 0v3.066h.425c.953 0 1.43-.523 1.43-1.57 0-.507-.113-.882-.338-1.124-.225-.248-.556-.372-.993-.372h-.523zm-6.872 5.059h15.196v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></svg>

After

(image error) Size: 978 B

28
public/assets/js/js.js Normal file
View file

@ -0,0 +1,28 @@
const pres = document.querySelectorAll('pre')
pres.forEach(pre => {
pre.addEventListener('click', event => {
navigator.clipboard.writeText(event.target.innerText);
alert("Code copied to clipboard");
});
});
const toggleDarkMode = document.querySelectorAll('.toggle-dark-mode');
toggleDarkMode.forEach(link => {
link.addEventListener('click', function (event) {
let actualTheme = document.documentElement.getAttribute('data-theme');
if (actualTheme === null) {
actualTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
}
if (actualTheme === null || actualTheme === 'light') {
document.documentElement.setAttribute('data-theme', 'dark');
localStorage.setItem('theme', 'dark');
} else {
document.documentElement.setAttribute('data-theme', 'light');
localStorage.setItem('theme', 'light');
}
return false;
});
});

View file

@ -1,79 +0,0 @@
/*!
* Minimal theme switcher
*
* Pico.css - https://picocss.com
* Copyright 2019-2024 - Licensed under MIT
*/
const themeSwitcher = {
// Config
_scheme: "auto",
menuTarget: "details.dropdown",
buttonsTarget: "a[data-theme-switcher]",
buttonAttribute: "data-theme-switcher",
rootAttribute: "data-theme",
localStorageKey: "picoPreferredColorScheme",
// Init
init() {
this.scheme = this.schemeFromLocalStorage;
this.initSwitchers();
},
// Get color scheme from local storage
get schemeFromLocalStorage() {
return window.localStorage?.getItem(this.localStorageKey) ?? this._scheme;
},
// Preferred color scheme
get preferredColorScheme() {
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
},
// Init switchers
initSwitchers() {
const buttons = document.querySelectorAll(this.buttonsTarget);
buttons.forEach((button) => {
button.addEventListener(
"click",
(event) => {
event.preventDefault();
// Set scheme
this.scheme = button.getAttribute(this.buttonAttribute);
// Close dropdown
document.querySelector(this.menuTarget)?.removeAttribute("open");
},
false
);
});
},
// Set scheme
set scheme(scheme) {
if (scheme == "auto") {
this._scheme = this.preferredColorScheme;
} else if (scheme == "dark" || scheme == "light") {
this._scheme = scheme;
}
this.applyScheme();
this.schemeToLocalStorage();
},
// Get scheme
get scheme() {
return this._scheme;
},
// Apply scheme
applyScheme() {
document.querySelector("html")?.setAttribute(this.rootAttribute, this.scheme);
},
// Store scheme to local storage
schemeToLocalStorage() {
window.localStorage?.setItem(this.localStorageKey, this.scheme);
},
};
// Init
themeSwitcher.init();

View file

@ -1,75 +0,0 @@
/*
* Modal
*
* Pico.css - https://picocss.com
* Copyright 2019-2024 - Licensed under MIT
*/
// Config
const isOpenClass = "modal-is-open";
const openingClass = "modal-is-opening";
const closingClass = "modal-is-closing";
const scrollbarWidthCssVar = "--pico-scrollbar-width";
const animationDuration = 400; // ms
let visibleModal = null;
// Toggle modal
const toggleModal = (event) => {
event.preventDefault();
const modal = document.getElementById(event.currentTarget.dataset.target);
if (!modal) return;
modal && (modal.open ? closeModal(modal) : openModal(modal));
};
// Open modal
const openModal = (modal) => {
const { documentElement: html } = document;
const scrollbarWidth = getScrollbarWidth();
if (scrollbarWidth) {
html.style.setProperty(scrollbarWidthCssVar, `${scrollbarWidth}px`);
}
html.classList.add(isOpenClass, openingClass);
setTimeout(() => {
visibleModal = modal;
html.classList.remove(openingClass);
}, animationDuration);
modal.showModal();
};
// Close modal
const closeModal = (modal) => {
visibleModal = null;
const { documentElement: html } = document;
html.classList.add(closingClass);
setTimeout(() => {
html.classList.remove(closingClass, isOpenClass);
html.style.removeProperty(scrollbarWidthCssVar);
modal.close();
}, animationDuration);
};
// Close with a click outside
document.addEventListener("click", (event) => {
if (visibleModal === null) return;
const modalContent = visibleModal.querySelector("article");
const isClickInside = modalContent.contains(event.target);
!isClickInside && closeModal(visibleModal);
});
// Close with Esc key
document.addEventListener("keydown", (event) => {
if (event.key === "Escape" && visibleModal) {
closeModal(visibleModal);
}
});
// Get scrollbar width
const getScrollbarWidth = () => {
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
return scrollbarWidth;
};
// Is scrollbar visible
const isScrollbarVisible = () => {
return document.body.scrollHeight > screen.height;
};

View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg"><symbol id="admonition-caution-colored" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<path
d="M7.254.545L.545 7.255v9.49l6.71 6.71h9.49l6.71-6.71v-9.49l-6.71-6.71h-9.49zm.79 1.91h7.911l5.59 5.59v7.91l-5.59 5.59h-7.91l-5.59-5.59V8.046l5.59-5.59zm3 3.815v7.64h1.912V6.27h-1.912zm0 9.55v1.91h1.912v-1.91h-1.912z"
transform="translate(-1.142 -1.142) scale(2.09516)" fill="#c43933" />
</symbol><symbol version="1.1" id="admonition-important-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M-64-85.333v37h18.3l15.7 11v-11h14v-37h-48zm4 4h40v29h-14v8l-11.7-8H-60v-29zm17.244 2.705l.826 15.912h3.961l.824-15.912h-5.61zm2.807 18.486c-.793 0-1.475.209-2.047.627-.55.418-.826 1.134-.826 2.147 0 .968.276 1.673.826 2.113.572.418 1.254.627 2.047.627.77 0 1.43-.21 1.98-.627.572-.44.858-1.145.858-2.113 0-1.013-.286-1.729-.858-2.147-.55-.418-1.21-.627-1.98-.627z" transform="translate(64 85.333)" fill="#c43933"/></symbol><symbol version="1.1" id="admonition-note-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M24 0C10.745 0 0 10.745 0 24s10.745 24 24 24 24-10.745 24-24S37.255 0 24 0zm0 4c10.587 0 20 9.413 20 20s-9.413 20-20 20S4 34.587 4 24 13.413 4 24 4zm-1.988 9v4.002h3.98V13h-3.98zM20 19.016v3.998h2v7.984h-2V35h8.004v-4.002h-2.002V19.016H20z" fill="#206ccc"/></symbol><symbol version="1.1" id="admonition-tip-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M197.328 0v64.003h32.01V0h-32.01zM73.79 51.17L51.167 73.791l45.263 45.263 22.622-22.623L73.79 51.17zm279.089 0l-45.263 45.262 22.622 22.623L375.5 73.792l-22.622-22.623zM213.333 85.33c-70.692 0-128.005 57.313-128.005 128.006 0 47.378 25.744 88.738 64.003 110.87v81.12l21.328 21.346h21.346c0 11.782 9.546 21.328 21.328 21.328s21.328-9.546 21.328-21.328h21.347l21.328-21.346v-81.12c38.259-22.132 64.003-63.492 64.003-110.87 0-70.693-57.313-128.005-128.006-128.005zm0 42.675c47.129 0 85.331 38.203 85.331 85.33 0 47.13-38.202 85.332-85.33 85.332-47.129 0-85.331-38.203-85.331-85.331s38.202-85.33 85.33-85.33zM-.003 197.331v32.01H64v-32.01H-.003zm362.67 0v32.01h64.002v-32.01h-64.002zM96.43 307.617l-45.263 45.245 22.622 22.64 45.263-45.262-22.622-22.623zm233.807 0l-22.622 22.623 45.263 45.263 22.622-22.641-45.263-45.245zm-138.232 31.938a128.789 128.789 0 0021.328 1.786c7.27 0 14.39-.622 21.328-1.786v44.442h-42.656v-44.442z" transform="translate(1.143) scale(.10714)" fill="#7dcc20"/></symbol><symbol version="1.1" id="admonition-warning-colored" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M24 0a2 2 0 00-1.79 1.105l-22 44A2 2 0 002 48h44a2 2 0 001.79-2.895l-22-44A2 2 0 0024 0zm0 6.473L42.764 44H5.236L24 6.473zm-2.95 10.406l.872 16.828h4.19l.872-16.828h-5.933zm2.968 19.55c-.838 0-1.56.223-2.164.665-.582.442-.874 1.197-.874 2.267 0 1.024.292 1.77.874 2.235.605.442 1.326.664 2.164.664.814 0 1.511-.222 2.093-.664.605-.466.909-1.21.909-2.235 0-1.07-.304-1.825-.909-2.267-.582-.442-1.279-.664-2.093-.664z" fill="#cc5e20"/></symbol></svg>

After

(image error) Size: 3 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg"><symbol version="1.1" id="filetype-doc" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-3.73 9.388c.513 0 .933.1 1.264.304.336.198.583.48.742.847.159.362.238.788.238 1.277 0 .49-.08.92-.244 1.285a1.837 1.837 0 01-.736.848c-.33.203-.754.304-1.27.304-.512 0-.935-.101-1.27-.304a1.868 1.868 0 01-.742-.854c-.159-.366-.239-.795-.239-1.285 0-.486.08-.91.239-1.271a1.83 1.83 0 01.741-.847c.336-.203.761-.304 1.278-.304zm5.263.006c.234 0 .47.027.708.08.243.048.472.126.688.232l-.33.807a3.483 3.483 0 00-.51-.192 1.833 1.833 0 00-.57-.086c-.379 0-.678.143-.899.43-.216.283-.324.673-.324 1.172 0 .499.103.886.31 1.164.212.274.53.41.953.41.208 0 .406-.024.596-.072.194-.049.389-.11.583-.185v.86a3.285 3.285 0 01-1.29.239c-.504 0-.919-.1-1.245-.298a1.86 1.86 0 01-.722-.847c-.155-.366-.232-.792-.232-1.278 0-.476.089-.898.266-1.264.176-.366.434-.653.774-.86.34-.208.754-.312 1.244-.312zm-12.166.067H6.78c.741 0 1.319.196 1.734.589.419.388.628.953.628 1.694 0 .543-.1.995-.304 1.357a1.94 1.94 0 01-.86.814c-.37.18-.81.271-1.318.271H5.22v-4.725zm6.904.767c-.42 0-.724.142-.914.424-.185.282-.278.67-.278 1.164 0 .495.093.883.278 1.166.19.278.492.417.907.417.424 0 .725-.14.906-.417.186-.283.278-.671.278-1.166 0-.494-.092-.882-.278-1.164-.18-.282-.48-.424-.9-.424zm-5.892.06v3.065h.423c.954 0 1.43-.523 1.43-1.57 0-.507-.112-.882-.337-1.124-.225-.248-.556-.372-.993-.372H6.23zm-1.83 5.058h15.197v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></symbol><symbol version="1.1" id="filetype-docx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-6.037 9.388c.512 0 .934.1 1.265.304.335.198.583.48.741.847.16.362.239.788.239 1.277 0 .49-.082.92-.245 1.285a1.835 1.835 0 01-.735.848c-.331.203-.755.304-1.272.304-.511 0-.935-.101-1.27-.304a1.868 1.868 0 01-.742-.854c-.158-.366-.238-.795-.238-1.285 0-.486.08-.91.238-1.271a1.83 1.83 0 01.742-.847c.335-.203.76-.304 1.277-.304zm5.263.006c.234 0 .47.027.708.08.243.048.473.126.689.232l-.331.807a3.483 3.483 0 00-.51-.192 1.827 1.827 0 00-.569-.086c-.38 0-.68.143-.9.43-.217.283-.325.673-.325 1.172 0 .499.104.886.311 1.164.212.274.53.41.954.41.207 0 .406-.024.596-.072.194-.049.388-.11.582-.185v.86a3.285 3.285 0 01-1.291.239c-.503 0-.918-.1-1.245-.298a1.858 1.858 0 01-.72-.847c-.155-.366-.232-.792-.232-1.278 0-.476.088-.898.264-1.264a2.01 2.01 0 01.774-.86c.34-.208.755-.312 1.245-.312zm-12.167.067h1.562c.742 0 1.32.196 1.735.589.42.388.629.953.629 1.694 0 .543-.101.995-.304 1.357-.203.362-.49.633-.862.814-.37.18-.809.271-1.316.271H2.91v-4.725zm13.881 0h1.126l.973 1.615.953-1.615h1.132l-1.482 2.349 1.595 2.376h-1.166l-1.045-1.701-1.052 1.701H16.7l1.569-2.435-1.477-2.29zm-6.977.767c-.42 0-.723.142-.913.424-.185.282-.278.67-.278 1.164 0 .495.093.883.278 1.166.19.278.492.417.906.417.424 0 .727-.14.908-.417.185-.283.278-.671.278-1.166 0-.494-.093-.882-.278-1.164-.181-.282-.482-.424-.9-.424zm-5.891.06v3.065h.424c.953 0 1.43-.523 1.43-1.57 0-.507-.113-.882-.338-1.124-.225-.248-.556-.372-.993-.372h-.523zm.478 5.058h15.196v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></symbol><symbol version="1.1" id="filetype-pdf" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-9.7 9.46h1.482c.61 0 1.06.128 1.35.384.292.252.437.61.437 1.073 0 .278-.057.538-.172.78-.114.243-.306.44-.575.59-.265.15-.625.225-1.08.225h-.43v1.674H6.151v-4.725zm4.11 0h1.562c.742 0 1.32.197 1.735.59.42.388.629.953.629 1.694 0 .543-.101.995-.304 1.357-.203.362-.49.633-.862.814-.37.18-.809.271-1.316.271h-1.444v-4.725zm4.879 0h2.708v.82h-1.722v1.22h1.602v.82h-1.602v1.866h-.986v-4.725zm-7.977.827v1.39h.338c.278 0 .497-.054.656-.165.163-.11.244-.298.244-.563 0-.211-.066-.375-.198-.49-.128-.114-.329-.172-.603-.172h-.437zm4.11 0v3.066h.425c.953 0 1.43-.523 1.43-1.57 0-.507-.113-.882-.338-1.124-.225-.248-.556-.372-.993-.372h-.523zm-6.872 5.059h15.196v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></symbol></svg>

After

(image error) Size: 4.3 KiB

File diff suppressed because one or more lines are too long

Before

(image error) Size: 43 KiB

File diff suppressed because one or more lines are too long

Before

(image error) Size: 43 KiB

44
public/humans.txt Normal file
View file

@ -0,0 +1,44 @@
██ ██ ██ ██ ████ ██ ██ ██████ ████ ████ ██████ █████
██ ██ ███ ██ ██ ██ ██ ██ █ ██ █ ██ █ ██ ██ ██ ██ ██
████ ██████ ██████ ██████ ██ ██ ██████ █████ █████
██ ██ ██ ███ ██ ██ ██ ██ ██ █ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ████ ████ ██ ██ ██████ █████
Generate with http://bigascii.warriordudimanche.net/ <3
/* SITE */
Site Name: KT theme and design
Site URL: https://theme.knah-tsaeb.org/
Created: 2024/09/20
Standards: HTML5, CSS3, JS
Software: Homemade
Web Design: Knah Tsaeb
/* AUTHOR */
Name: Knah Tsaeb
Nickname: Knah Tsaeb
Location: France
Site: https://knah-tsaeb.org
Blog: https://knah-tsaeb.org/posts
Contact: https://knah-tsaeb.org/contact
/* SOCIAL */
About.me: https://knah-tsaeb.org/about
Mastodon: https://mamot.fr/@Knah_Tsaeb
/* META */
Favicon: https://realfavicongenerator.net
Icons: https://www.svgrepo.com/svg/195725/moon
CSS Reset: https://piccalil.li/blog/a-more-modern-css-reset/
/* THANKS */
To everyone who shares, likes, comments, and contributes!
And you of course !

View file

@ -1,79 +0,0 @@
<?php
$listFile = glob("assets/icons/*.svg");
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="assets/css/kt-scheme-min.css" />
<link rel="stylesheet" href="assets/css/icons.css" />
<link rel="preload" href="assets/sprites/full.svg" as="image" type="image/svg+xml">
</head>
<body>
<nav>
<ul>
<li><a href="index.html">Preview</a></li>
</ul>
</nav>
<main>
<?php foreach ($listFile as $icon): ?>
<section>
<h3><svg viewBox="0 0 48 48" aria-hidden="true" focusable="false" role="presentation">
<title><?= basename($icon, '.svg'); ?></title>
<use href="assets/sprites/full.svg#<?= basename($icon, '.svg'); ?>"></use>
</svg> <?= basename($icon, '.svg'); ?></h3>
<article>
<details>
<summary>Sprite</summary>
<svg viewBox="0 0 48 48" aria-hidden="true" focusable="false" role="presentation">
<title><?= basename($icon, '.svg'); ?></title>
<use href="assets/sprites/full.svg#<?= basename($icon, '.svg'); ?>"></use>
</svg>
<pre>
<?= trim(htmlentities('
<svg viewBox="0 0 48 48" aria-hidden="true" focusable="false" role="presentation">
<title>' . basename($icon, '.svg') . '</title>
<use href="assets/sprites/full.svg#' . basename($icon, '.svg') . '"></use>
</svg>')); ?></pre>
</details>
</article>
<article>
<details>
<summary>Inline</summary>
<?= file_get_contents($icon); ?>
<pre>
<?= trim(htmlentities(file_get_contents($icon))); ?></pre>
</details>
</article>
<article>
<details>
<summary>Img</summary>
<img class="svg-icon" src="<?= $icon; ?>" alt="<?= basename($icon, '.svg'); ?>" />
<pre>
<?= trim(htmlentities('<img class="svg-icon" src="' . $icon . '" alt="' . basename($icon, '.svg') . '" /> ')); ?></pre>
</details>
</article>
</section>
<?php endforeach; ?>
</main>
</body>
<script>
const pres = document.querySelectorAll('pre')
pres.forEach(pre => {
pre.addEventListener('click', event => {
navigator.clipboard.writeText(event.target.innerText);
alert("Code copied to clipboard");
});
});
</script>
</html>

Binary file not shown.

Before

(image error) Size: 484 KiB

BIN
public/img/avatar_120.webp Normal file

Binary file not shown.

After

(image error) Size: 4.4 KiB

Binary file not shown.

After

(image error) Size: 805 KiB

View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 250 250" width="250px" height="250px">
<rect width="250" height="250" fill="#cccccc"></rect>
<text x="50%" y="50%" dominant-baseline="middle" text-anchor="middle" font-family="monospace" font-size="26px"
fill="#333333">250x250</text>
</svg>

After

(image error) Size: 309 B

View file

@ -1,534 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="color-scheme" content="light dark" />
<title>Preview • Pico CSS</title>
<meta name="description" content="A pure HTML example, without dependencies." />
<!-- Pico.css -->
<link rel="stylesheet" href="assets/css/kt-scheme.css" />
<link rel="stylesheet" href="assets/css/pico.min.css" />
<link rel="stylesheet" href="assets/css/css.css" />
</head>
<body>
<!-- Header -->
<header class="container">
<hgroup>
<h1>Pico</h1>
<p>A pure HTML example, without dependencies.</p>
</hgroup>
<nav>
<ul>
<li>
<details class="dropdown">
<summary role="button" class="primary">Theme</summary>
<ul>
<li><a href="#" data-theme-switcher="auto">Auto</a></li>
<li><a href="#" data-theme-switcher="light">Light</a></li>
<li><a href="#" data-theme-switcher="dark">Dark</a></li>
</ul>
</details>
</li>
</ul>
</nav>
<nav>
<ul>
<li><a href="#preview">Preview</a></li>
<li><a href="#typography">Typography</a></li>
<li><a href="#buttons">Buttons</a></li>
<li><a href="#form">Form</a></li>
<li><a href="#tables">Tables</a></li>
<li><a href="#modal">Modal</a></li>
<li><a href="#accordions">Accordions</a></li>
<li><a href="#article">Article/card</a></li>
<li><a href="icons.php">SVG icons</a></li>
</ul>
</nav>
<nav aria-label="breadcrumb">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Services</a></li>
<li>Design</li>
</ul>
</nav>
</header>
<header class="header container">
<hgroup class="flex">
<img src="logo.png" width="40px">
<h1>Pico</h1>
<p>A pure HTML example, without dependencies.</p>
</hgroup>
<nav aria-label="breadcrumb">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Services</a></li>
<li>Design</li>
</ul>
</nav>
<p>
Lorem ipsum dolor sit amet consectetur <a href=""> adipisicing elit</a>. Odit dolore dolorum vitae
necessitatibus, facere
reprehenderit ipsa vero quaerat, obcaecati nihil consequatur animi. Perferendis fuga possimus ducimus, iure
ipsa nisi quidem?
</p>
</header>
<!-- ./ Header -->
<!-- Main -->
<main class="container">
<!-- Preview -->
<section id="preview">
<h2>Preview</h2>
<p>
Sed ultricies dolor non ante vulputate hendrerit. Vivamus sit amet suscipit sapien. Nulla
iaculis eros a elit pharetra egestas.
</p>
<form>
<div class="grid">
<input type="text" name="firstname" placeholder="First name" aria-label="First name" required />
<input type="email" name="email" placeholder="Email address" aria-label="Email address"
autocomplete="email" required />
<button type="submit">Subscribe</button>
</div>
<fieldset>
<label for="terms">
<input type="checkbox" role="switch" id="terms" name="terms" />
I agree to the
<a href="#" onclick="event.preventDefault()">Privacy Policy</a>
</label>
</fieldset>
</form>
</section>
<!-- ./ Preview -->
<!-- Typography-->
<section id="typography">
<h2>Typography</h2>
<p>
Aliquam lobortis vitae nibh nec rhoncus. Morbi mattis neque eget efficitur feugiat.
Vivamus porta nunc a erat mattis, mattis feugiat turpis pretium. Quisque sed tristique
felis.
</p>
<!-- Blockquote-->
<blockquote>
"Maecenas vehicula metus tellus, vitae congue turpis hendrerit non. Nam at dui sit amet
ipsum cursus ornare."
<footer>
<cite>- Phasellus eget lacinia</cite>
</footer>
</blockquote>
<!-- Lists-->
<h3>Lists</h3>
<ul>
<li>Aliquam lobortis lacus eu libero ornare facilisis.</li>
<li>Nam et magna at libero scelerisque egestas.</li>
<li>Suspendisse id nisl ut leo finibus vehicula quis eu ex.</li>
<li>Proin ultricies turpis et volutpat vehicula.</li>
</ul>
<!-- Inline text elements-->
<h3>Inline text elements</h3>
<div class="grid">
<p><a href="#" onclick="event.preventDefault()">Primary link</a></p>
<p><a href="#" class="secondary" onclick="event.preventDefault()">Secondary link</a></p>
<p><a href="#" class="error" onclick="event.preventDefault()">Error link</a></p>
<p><a href="#" class="success" onclick="event.preventDefault()">Success link</a></p>
<p><a href="#" class="warning" onclick="event.preventDefault()">Warning link</a></p>
<p><a href="#" class="info" onclick="event.preventDefault()">Info link</a></p>
</div>
<div class="grid">
<p><strong>Bold</strong></p>
<p><em>Italic</em></p>
<p><u>Underline</u></p>
</div>
<div class="grid">
<p><del>Deleted</del></p>
<p><ins>Inserted</ins></p>
<p><s>Strikethrough</s></p>
</div>
<div class="grid">
<p><small>Small </small></p>
<p>Text <sub>Sub</sub></p>
<p>Text <sup>Sup</sup></p>
</div>
<div class="grid">
<p>
<abbr title="Abbreviation" data-tooltip="Abbreviation">Abbr.</abbr>
</p>
<p><kbd>Kbd</kbd></p>
<p><mark>Highlighted</mark></p>
</div>
<!-- Headings-->
<h1>Heading 1</h1>
<p>
Integer bibendum malesuada libero vel eleifend. Fusce iaculis turpis ipsum, at efficitur
sem scelerisque vel. Aliquam auctor diam ut purus cursus fringilla. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
</p>
<h2>Heading 2</h2>
<p>
Integer bibendum malesuada libero vel eleifend. Fusce iaculis turpis ipsum, at efficitur
sem scelerisque vel. Aliquam auctor diam ut purus cursus fringilla. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
</p>
<h3>Heading 3</h3>
<p>
Integer bibendum malesuada libero vel eleifend. Fusce iaculis turpis ipsum, at efficitur
sem scelerisque vel. Aliquam auctor diam ut purus cursus fringilla. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
</p>
<h4>Heading 4</h4>
<p>
Cras fermentum velit vitae auctor aliquet. Nunc non congue urna, at blandit nibh. Donec ac
fermentum felis. Vivamus tincidunt arcu ut lacus hendrerit, eget mattis dui finibus.
</p>
<h5>Heading 5</h5>
<p>
Donec nec egestas nulla. Sed varius placerat felis eu suscipit. Mauris maximus ante in
consequat luctus. Morbi euismod sagittis efficitur. Aenean non eros orci. Vivamus ut diam
sem.
</p>
<h6>Heading 6</h6>
<p>
Ut sed quam non mauris placerat consequat vitae id risus. Vestibulum tincidunt nulla ut
tortor posuere, vitae malesuada tortor molestie. Sed nec interdum dolor. Vestibulum id
auctor nisi, a efficitur sem. Aliquam sollicitudin efficitur turpis, sollicitudin
hendrerit ligula semper id. Nunc risus felis, egestas eu tristique eget, convallis in
velit.
</p>
<!-- Medias-->
<figure>
<img src="img/aleksandar-jason-a562ZEFKW8I-unsplash-2000x1000.jpg" alt="Minimal landscape" />
<figcaption>
Image from
<a href="https://unsplash.com/photos/a562ZEFKW8I" target="_blank">unsplash.com</a>
</figcaption>
</figure>
</section>
<!-- ./ Typography-->
<!-- Buttons-->
<section id="buttons">
<h2>Buttons</h2>
<p class="grid">
<button data-tooltip="Tooltip">Primary</button>
<button class="secondary">Secondary</button>
<button class="error">Error</button>
<button class="success">Success</button>
<button class="warning">Warning</button>
<button class="info">Info</button>
</p>
<p class="grid">
<button class="outline">Primary outline</button>
<button class="outline secondary">Secondary outline</button>
<button class="outline error">Contrast outline</button>
<button class="outline success">Contrast outline</button>
<button class="outline warning">Contrast outline</button>
<button class="outline info">Contrast outline</button>
</p>
</section>
<!-- ./ Buttons -->
<!-- Form elements-->
<section id="form">
<form>
<h2>Form elements</h2>
<!-- Search -->
<label for="search">Search</label>
<input type="search" id="search" name="search" placeholder="Search" />
<!-- Text -->
<label for="text">Text</label>
<input type="text" id="text" name="text" placeholder="Text" />
<small>Curabitur consequat lacus at lacus porta finibus.</small>
<!-- Select -->
<label for="select">Select</label>
<select id="select" name="select" required>
<option value="" selected>Select…</option>
<option></option>
</select>
<!-- File browser -->
<label for="file">File browser
<input type="file" id="file" name="file" />
</label>
<!-- Range slider control -->
<label for="range">Range slider
<input type="range" min="0" max="100" value="50" id="range" name="range" />
</label>
<!-- States -->
<div class="grid">
<label for="valid">
Valid
<input type="text" id="valid" name="valid" placeholder="Valid" aria-invalid="false" />
</label>
<label for="invalid">
Invalid
<input type="text" id="invalid" name="invalid" placeholder="Invalid" aria-invalid="true" />
</label>
<label for="disabled">
Disabled
<input type="text" id="disabled" name="disabled" placeholder="Disabled" disabled />
</label>
</div>
<div class="grid">
<!-- Date-->
<label for="date">Date
<input type="date" id="date" name="date" />
</label>
<!-- Time-->
<label for="time">Time
<input type="time" id="time" name="time" />
</label>
<!-- Color-->
<label for="color">Color
<input type="color" id="color" name="color" value="#0eaaaa" />
</label>
</div>
<div class="grid">
<!-- Checkboxes -->
<fieldset>
<legend><strong>Checkboxes</strong></legend>
<label for="checkbox-1">
<input type="checkbox" id="checkbox-1" name="checkbox-1" checked />
Checkbox
</label>
<label for="checkbox-2">
<input type="checkbox" id="checkbox-2" name="checkbox-2" />
Checkbox
</label>
</fieldset>
<!-- Radio buttons -->
<fieldset>
<legend><strong>Radio buttons</strong></legend>
<label for="radio-1">
<input type="radio" id="radio-1" name="radio" value="radio-1" checked />
Radio button
</label>
<label for="radio-2">
<input type="radio" id="radio-2" name="radio" value="radio-2" />
Radio button
</label>
</fieldset>
<!-- Switch -->
<fieldset>
<legend><strong>Switches</strong></legend>
<label for="switch-1">
<input type="checkbox" id="switch-1" name="switch-1" role="switch" checked />
Switch
</label>
<label for="switch-2">
<input type="checkbox" id="switch-2" name="switch-2" role="switch" />
Switch
</label>
</fieldset>
</div>
<!-- Buttons -->
<input type="reset" value="Reset" onclick="event.preventDefault()" />
<input type="submit" value="Submit" onclick="event.preventDefault()" />
</form>
</section>
<!-- ./ Form elements-->
<!-- Tables -->
<section id="tables">
<h2>Tables</h2>
<div class="overflow-auto">
<table class="striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Heading</th>
<th scope="col">Heading</th>
<th scope="col">Heading</th>
<th scope="col">Heading</th>
<th scope="col">Heading</th>
<th scope="col">Heading</th>
<th scope="col">Heading</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody>
</table>
</div>
</section>
<!-- ./ Tables -->
<!-- Modal -->
<section id="modal">
<h2>Modal</h2>
<button class="contrast" data-target="modal-example" onclick="toggleModal(event)">
Launch demo modal
</button>
</section>
<!-- ./ Modal -->
<!-- Accordions -->
<section id="accordions">
<h2>Accordions</h2>
<details>
<summary>Accordion 1</summary>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque urna diam,
tincidunt nec porta sed, auctor id velit. Etiam venenatis nisl ut orci consequat, vitae
tempus quam commodo. Nulla non mauris ipsum. Aliquam eu posuere orci. Nulla convallis
lectus rutrum quam hendrerit, in facilisis elit sollicitudin. Mauris pulvinar pulvinar
mi, dictum tristique elit auctor quis. Maecenas ac ipsum ultrices, porta turpis sit
amet, congue turpis.
</p>
</details>
<details open>
<summary>Accordion 2</summary>
<ul>
<li>Vestibulum id elit quis massa interdum sodales.</li>
<li>Nunc quis eros vel odio pretium tincidunt nec quis neque.</li>
<li>Quisque sed eros non eros ornare elementum.</li>
<li>Cras sed libero aliquet, porta dolor quis, dapibus ipsum.</li>
</ul>
</details>
</section>
<!-- ./ Accordions -->
<!-- Article-->
<article id="article">
<h2>Article</h2>
<p>
Nullam dui arcu, malesuada et sodales eu, efficitur vitae dolor. Sed ultricies dolor non
ante vulputate hendrerit. Vivamus sit amet suscipit sapien. Nulla iaculis eros a elit
pharetra egestas. Nunc placerat facilisis cursus. Sed vestibulum metus eget dolor pharetra
rutrum.
</p>
<footer>
<small>Duis nec elit placerat, suscipit nibh quis, finibus neque.</small>
</footer>
</article>
<article>
<header>Card Header</header>
Card Body
<footer>Card Footer</footer>
</article>
<!-- ./ Article-->
<!-- Group -->
<section id="group">
<h2>Group</h2>
<form>
<fieldset role="group">
<input name="email" type="email" placeholder="Enter your email" autocomplete="email" />
<input type="submit" value="Subscribe" />
</fieldset>
</form>
</section>
<!-- ./ Group -->
<!-- Progress -->
<section id="progress">
<h2>Progress bar</h2>
<progress id="progress-1" value="25" max="100"></progress>
<progress id="progress-2"></progress>
</section>
<!-- ./ Progress -->
<!-- Loading -->
<section id="loading">
<h2>Loading</h2>
<article aria-busy="true"></article>
<button aria-busy="true">Please wait…</button>
</section>
<!-- ./ Loading -->
</main>
<!-- ./ Main -->
<!-- Footer -->
<footer class="container">
<small>Built with <a href="https://picocss.com">Pico</a>
<a href="https://github.com/picocss/examples/blob/master/v2-html/index.html">Source code</a></small>
</footer>
<!-- ./ Footer -->
<!-- Modal example -->
<dialog id="modal-example">
<article>
<header>
<button aria-label="Close" rel="prev" data-target="modal-example" onclick="toggleModal(event)"></button>
<h3>Confirm your action!</h3>
</header>
<p>
Cras sit amet maximus risus. Pellentesque sodales odio sit amet augue finibus
pellentesque. Nullam finibus risus non semper euismod.
</p>
<footer>
<button role="button" class="secondary" data-target="modal-example" onclick="toggleModal(event)">
Cancel</button><button autofocus data-target="modal-example" onclick="toggleModal(event)">
Confirm
</button>
</footer>
</article>
</dialog>
<!-- ./ Modal example -->
<!-- Minimal theme switcher -->
<script src="assets/js/minimal-theme-switcher.js"></script>
<!-- Modal -->
<script src="assets/js/modal.js"></script>
</body>
</html>

1599
public/index.php Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

(image error) Size: 6.3 KiB

View file

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="48"
height="48"
viewBox="0 0 48 48"
id="Layer_1"
data-name="Layer 1"
version="1.1"
sodipodi:docname="admonition-caution-colored.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="9.5698414"
inkscape:cx="28.004644"
inkscape:cy="22.152927"
inkscape:window-width="1858"
inkscape:window-height="1171"
inkscape:window-x="60"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<defs
id="defs1">
<style
id="style1">.cls-1{fill:none;stroke:#020202;stroke-miterlimit:10;stroke-width:1.91px;}</style>
</defs>
<g
id="g2"
transform="matrix(2.095155,0,0,2.095155,-1.14186,-1.14186)"
style="fill-opacity:1;stroke:#c43933;stroke-opacity:1">
<polygon
class="cls-1"
points="1.5,7.65 1.5,16.35 7.65,22.5 16.35,22.5 22.5,16.35 22.5,7.65 16.35,1.5 7.65,1.5 "
id="polygon1"
style="fill-opacity:1;stroke:#c43933;stroke-opacity:1" />
<line
class="cls-1"
x1="12"
y1="6.27"
x2="12"
y2="13.91"
id="line1"
style="fill-opacity:1;stroke:#c43933;stroke-opacity:1" />
<line
class="cls-1"
x1="12"
y1="15.82"
x2="12"
y2="17.73"
id="line2"
style="fill-opacity:1;stroke:#c43933;stroke-opacity:1" />
</g>
</svg>

After

(image error) Size: 1.9 KiB

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg1"
sodipodi:docname="admonition-important-colored.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="6.9077547"
inkscape:cx="14.766014"
inkscape:cy="38.073153"
inkscape:window-width="1858"
inkscape:window-height="1171"
inkscape:window-x="60"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1"
showguides="true" />
<title
id="title1">inquiry</title>
<path
id="path1"
d="m -64,-85.333333 v 37 h 18.3 l 15.7,11 v -11 h 14 v -37 z m 4,4 h 40 v 29 h -14 v 8 l -11.7,-8 h -14.299995 z"
sodipodi:nodetypes="cccccccccccccccc"
transform="translate(64,85.333333)"
style="stroke:none;fill:#c43933;fill-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:33.0124px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#c43933;fill-opacity:1;paint-order:fill markers stroke;stroke:none"
x="19.395594"
y="30.27544"
id="text1"><tspan
sodipodi:role="line"
id="tspan1"
x="19.395594"
y="30.27544"
style="fill:#c43933;fill-opacity:1;stroke:none">!</tspan></text>
<metadata
id="metadata1">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>inquiry</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

(image error) Size: 2.4 KiB

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg1"
sodipodi:docname="admonition-note-colored.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.957049"
inkscape:cx="23.637751"
inkscape:cy="24.002813"
inkscape:window-width="1858"
inkscape:window-height="1171"
inkscape:window-x="60"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<title
id="title1">info</title>
<g
id="g1"
style="stroke:#206ccc;stroke-opacity:1">
<line
class="cls-1"
x1="20"
y1="32.998257"
x2="28.003492"
y2="32.998257"
id="line1"
style="fill:none;stroke:#206ccc;stroke-width:4.00175px;stroke-miterlimit:10;stroke-opacity:1" />
<line
class="cls-1"
x1="22.011349"
y1="15.000874"
x2="25.992144"
y2="15.000874"
id="line2"
style="fill:none;stroke:#206ccc;stroke-width:4.00175px;stroke-miterlimit:10;stroke-opacity:1" />
<path
d="M 213.33333,0 C 95.51296,0 0,95.51168 0,213.33333 c 0,117.82038 95.51296,213.33334 213.33333,213.33334 117.82166,0 213.33334,-95.51296 213.33334,-213.33334 C 426.66667,95.51168 331.15499,0 213.33333,0 Z m 0,391.11111 c -94.10538,0 -177.777773,-83.67239 -177.777773,-177.77778 0,-94.10538 83.672393,-177.777773 177.777773,-177.777773 94.10667,0 177.77778,83.672393 177.77778,177.777773 0,94.10539 -83.67111,177.77778 -177.77778,177.77778 z"
id="Shape"
sodipodi:nodetypes="ssssssssss"
transform="scale(0.1125)"
style="stroke:none;stroke-opacity:1;fill:#206ccc;fill-opacity:1" />
<polyline
class="cls-1"
points="10.09 12.96 12 12.96 12 18.68"
id="polyline2"
style="fill:none;stroke:#206ccc;stroke-width:1.91px;stroke-miterlimit:10;stroke-opacity:1"
transform="matrix(2.095155,0,0,2.095155,-1.140114,-6.139241)" />
</g>
<metadata
id="metadata1">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>info</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

(image error) Size: 2.8 KiB

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg1"
sodipodi:docname="admonition-tip-colored.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="9.0688771"
inkscape:cx="42.563153"
inkscape:cy="28.890016"
inkscape:window-width="1858"
inkscape:window-height="1171"
inkscape:window-x="60"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<title
id="title1">bulb</title>
<g
id="Page-1"
stroke="none"
stroke-width="1"
fill="none"
fill-rule="evenodd"
style="stroke:none;stroke-opacity:1;fill:#7dcc20;fill-opacity:1">
<g
id="Combined-Shape"
fill="#000000"
transform="matrix(0.10714286,0,0,0.10714286,1.1428564,-6.4e-7)"
style="stroke:none;stroke-opacity:1;fill:#7dcc20;fill-opacity:1">
<path
d="m 213.33333,85.333333 c 70.69245,0 128,57.307547 128,127.999997 0,47.37791 -25.74053,88.74379 -63.9996,110.87565 l -4e-4,81.12435 L 256,426.66667 H 234.66667 C 234.66667,438.44874 225.11541,448 213.33333,448 201.55126,448 192,438.44874 192,426.66667 v 0 h -21.33333 l -21.33334,-21.33334 -3.8e-4,-81.12434 C 111.07388,302.07714 85.333333,260.71125 85.333333,213.33333 c 0,-70.69245 57.307547,-127.999997 127.999997,-127.999997 z m 21.33433,254.230057 c -6.93809,1.16404 -14.06545,1.76994 -21.33433,1.76994 -7.26887,0 -14.39623,-0.6059 -21.33433,-1.76994 L 192,384 h 42.66667 z M 96.425012,307.61424 119.05243,330.24165 73.797595,375.49649 51.170178,352.86907 Z m 233.816638,0 45.25484,45.25483 -22.62742,22.62742 -45.25483,-45.25484 z M 213.33333,128 C 166.20503,128 128,166.20503 128,213.33333 c 0,47.1283 38.20503,85.33334 85.33333,85.33334 47.1283,0 85.33334,-38.20504 85.33334,-85.33334 C 298.66667,166.20503 260.46163,128 213.33333,128 Z m 213.33334,69.33333 v 32 h -64 v -32 z m -362.66667,0 v 32 H 0 v -32 z M 352.86907,51.170178 375.49649,73.797595 330.24165,119.05243 307.61424,96.425012 Z m -279.071475,0 L 119.05243,96.425012 96.425012,119.05243 51.170178,73.797595 Z M 229.33333,0 v 64 h -32 V 0 Z"
id="path1"
style="stroke:none;stroke-opacity:1;fill:#7dcc20;fill-opacity:1" />
</g>
</g>
<metadata
id="metadata1">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>bulb</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

(image error) Size: 3.1 KiB

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg1"
sodipodi:docname="admonition-warning-colored.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="12.717157"
inkscape:cx="23.236326"
inkscape:cy="23.275643"
inkscape:window-width="1858"
inkscape:window-height="1171"
inkscape:window-x="60"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1"
showguides="true" />
<title
id="title1">warning</title>
<metadata
id="metadata1">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>warning</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<path
style="display:inline;fill:none;stroke:#cc5e20;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:32.271;stroke-opacity:1;fill-opacity:1"
d="M 24,2 2,46 h 44 z"
id="path1"
sodipodi:nodetypes="cccc" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:34.9118px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#cc5e20;fill-opacity:1;stroke:none;stroke-width:9.23708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:32.271;stroke-opacity:1"
x="19.094893"
y="41.80587"
id="text2"><tspan
sodipodi:role="line"
id="tspan2"
x="19.094893"
y="41.80587"
style="stroke-width:9.23708;fill:#cc5e20;fill-opacity:1">!</tspan></text>
</svg>

After

(image error) Size: 2.3 KiB