diff --git a/composer.lock b/composer.lock
index 281a9c8..da28734 100644
--- a/composer.lock
+++ b/composer.lock
@@ -93,11 +93,11 @@
},
{
"name": "mirzaev/minimal",
- "version": "3.8.5",
+ "version": "3.8.6",
"source": {
"type": "git",
"url": "https://git.svoboda.works/mirzaev/minimal",
- "reference": "ed2a41a13973802e884513e1357807dc4d44a04a"
+ "reference": "584285b92ce84dd219891639f065a0c55bda7d41"
},
"require": {
"php": "~8.4"
@@ -138,7 +138,7 @@
"docs": "https://git.svoboda.works/mirzaev/minimal/wiki",
"issues": "https://git.svoboda.works/mirzaev/minimal/issues"
},
- "time": "2025-11-03T19:42:27+00:00"
+ "time": "2025-11-04T09:27:54+00:00"
},
{
"name": "psr/cache",
@@ -344,16 +344,16 @@
},
{
"name": "symfony/cache",
- "version": "v7.3.5",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad"
+ "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/4a55feb59664f49042a0824c0f955e2f4c1412ad",
- "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/1277a1ec61c8d93ea61b2a59738f1deb9bfb6701",
+ "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701",
"shasum": ""
},
"require": {
@@ -422,7 +422,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v7.3.5"
+ "source": "https://github.com/symfony/cache/tree/v7.3.6"
},
"funding": [
{
@@ -442,7 +442,7 @@
"type": "tidelift"
}
],
- "time": "2025-10-16T13:55:38+00:00"
+ "time": "2025-10-30T13:22:58+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -522,16 +522,16 @@
},
{
"name": "symfony/config",
- "version": "v7.3.4",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "8a09223170046d2cfda3d2e11af01df2c641e961"
+ "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/8a09223170046d2cfda3d2e11af01df2c641e961",
- "reference": "8a09223170046d2cfda3d2e11af01df2c641e961",
+ "url": "https://api.github.com/repos/symfony/config/zipball/9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7",
+ "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7",
"shasum": ""
},
"require": {
@@ -577,7 +577,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v7.3.4"
+ "source": "https://github.com/symfony/config/tree/v7.3.6"
},
"funding": [
{
@@ -597,20 +597,20 @@
"type": "tidelift"
}
],
- "time": "2025-09-22T12:46:16+00:00"
+ "time": "2025-11-02T08:04:43+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v7.3.4",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4"
+ "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/82119812ab0bf3425c1234d413efd1b19bb92ae4",
- "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69",
+ "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69",
"shasum": ""
},
"require": {
@@ -661,7 +661,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v7.3.4"
+ "source": "https://github.com/symfony/dependency-injection/tree/v7.3.6"
},
"funding": [
{
@@ -681,7 +681,7 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:12:26+00:00"
+ "time": "2025-10-31T10:11:11+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -752,16 +752,16 @@
},
{
"name": "symfony/error-handler",
- "version": "v7.3.4",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4"
+ "reference": "bbe40bfab84323d99dab491b716ff142410a92a8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4",
- "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8",
+ "reference": "bbe40bfab84323d99dab491b716ff142410a92a8",
"shasum": ""
},
"require": {
@@ -809,7 +809,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v7.3.4"
+ "source": "https://github.com/symfony/error-handler/tree/v7.3.6"
},
"funding": [
{
@@ -829,7 +829,7 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:12:26+00:00"
+ "time": "2025-10-31T19:12:50+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -993,16 +993,16 @@
},
{
"name": "symfony/filesystem",
- "version": "v7.3.2",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd"
+ "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd",
- "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a",
+ "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a",
"shasum": ""
},
"require": {
@@ -1039,7 +1039,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v7.3.2"
+ "source": "https://github.com/symfony/filesystem/tree/v7.3.6"
},
"funding": [
{
@@ -1059,7 +1059,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-07T08:17:47+00:00"
+ "time": "2025-11-05T09:52:27+00:00"
},
{
"name": "symfony/finder",
@@ -1131,16 +1131,16 @@
},
{
"name": "symfony/framework-bundle",
- "version": "v7.3.5",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d"
+ "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ebd42b1fc2652b96d33520195ea0f6e55c36f09d",
- "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/cabfdfa82bc4f75d693a329fe263d96937636b77",
+ "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77",
"shasum": ""
},
"require": {
@@ -1265,7 +1265,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v7.3.5"
+ "source": "https://github.com/symfony/framework-bundle/tree/v7.3.6"
},
"funding": [
{
@@ -1285,20 +1285,20 @@
"type": "tidelift"
}
],
- "time": "2025-10-16T16:16:53+00:00"
+ "time": "2025-10-30T09:42:24+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v7.3.5",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "ce31218c7cac92eab280762c4375fb70a6f4f897"
+ "reference": "6379e490d6ecfc5c4224ff3a754b90495ecd135c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce31218c7cac92eab280762c4375fb70a6f4f897",
- "reference": "ce31218c7cac92eab280762c4375fb70a6f4f897",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6379e490d6ecfc5c4224ff3a754b90495ecd135c",
+ "reference": "6379e490d6ecfc5c4224ff3a754b90495ecd135c",
"shasum": ""
},
"require": {
@@ -1348,7 +1348,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.3.5"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.3.6"
},
"funding": [
{
@@ -1368,20 +1368,20 @@
"type": "tidelift"
}
],
- "time": "2025-10-24T21:42:11+00:00"
+ "time": "2025-11-06T11:05:57+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.3.5",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "24fd3f123532e26025f49f1abefcc01a69ef15ab"
+ "reference": "f9a34dc0196677250e3609c2fac9de9e1551a262"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/24fd3f123532e26025f49f1abefcc01a69ef15ab",
- "reference": "24fd3f123532e26025f49f1abefcc01a69ef15ab",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f9a34dc0196677250e3609c2fac9de9e1551a262",
+ "reference": "f9a34dc0196677250e3609c2fac9de9e1551a262",
"shasum": ""
},
"require": {
@@ -1466,7 +1466,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v7.3.5"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.3.6"
},
"funding": [
{
@@ -1486,7 +1486,7 @@
"type": "tidelift"
}
],
- "time": "2025-10-28T10:19:01+00:00"
+ "time": "2025-11-06T20:58:12+00:00"
},
{
"name": "symfony/intl",
@@ -1828,16 +1828,16 @@
},
{
"name": "symfony/routing",
- "version": "v7.3.4",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c"
+ "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c",
- "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091",
+ "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091",
"shasum": ""
},
"require": {
@@ -1889,7 +1889,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v7.3.4"
+ "source": "https://github.com/symfony/routing/tree/v7.3.6"
},
"funding": [
{
@@ -1909,20 +1909,20 @@
"type": "tidelift"
}
],
- "time": "2025-09-11T10:12:26+00:00"
+ "time": "2025-11-05T07:57:47+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.6.0",
+ "version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
"shasum": ""
},
"require": {
@@ -1976,7 +1976,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -1987,25 +1987,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-25T09:37:31+00:00"
+ "time": "2025-07-15T11:30:57+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.6.0",
+ "version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d"
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
- "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977",
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977",
"shasum": ""
},
"require": {
@@ -2054,7 +2058,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -2065,25 +2069,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-27T08:32:26+00:00"
+ "time": "2025-07-15T13:41:35+00:00"
},
{
"name": "symfony/twig-bridge",
- "version": "v7.3.3",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "33558f013b7f6ed72805527c8405cae0062e47c5"
+ "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/33558f013b7f6ed72805527c8405cae0062e47c5",
- "reference": "33558f013b7f6ed72805527c8405cae0062e47c5",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d1aaec8eee1f5591f56b9efe00194d73a8e38319",
+ "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319",
"shasum": ""
},
"require": {
@@ -2165,7 +2173,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v7.3.3"
+ "source": "https://github.com/symfony/twig-bridge/tree/v7.3.6"
},
"funding": [
{
@@ -2185,7 +2193,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-18T13:10:53+00:00"
+ "time": "2025-11-04T15:37:51+00:00"
},
{
"name": "symfony/twig-bundle",
diff --git a/hotline.mjs b/hotline.mjs
new file mode 160000
index 0000000..01e8ddf
--- /dev/null
+++ b/hotline.mjs
@@ -0,0 +1 @@
+Subproject commit 01e8ddf50202afedc4d0b74ba2bc2f01d360d9ac
diff --git a/install.sh b/install.sh
index b356308..df8328c 100755
--- a/install.sh
+++ b/install.sh
@@ -13,3 +13,11 @@ if [ -e kodorvan/perm/system/settings/*.sample ]; then
cp "$i" "${i/.sample/}";
done
fi
+
+if ! [ -d kodorvan/perm/system/public/js/modules ]; then
+ mkdir kodorvan/perm/system/public/js/modules -p
+fi
+
+if ! [ -L kodorvan/perm/system/public/js/modules/hotline.mjs ]; then
+ ln -s ../../../../../../hotline.mjs/hotline.mjs kodorvan/perm/system/public/js/modules/hotline.mjs;
+fi
diff --git a/kodorvan/perm/system/controllers/index.php b/kodorvan/perm/system/controllers/index.php
index 4858f90..16ba32b 100755
--- a/kodorvan/perm/system/controllers/index.php
+++ b/kodorvan/perm/system/controllers/index.php
@@ -45,7 +45,7 @@ final class index extends core
// Request for HTML response
// Render page
- $page = $this->view->render('index.html');
+ $page = $this->view->render('main/index.html');
// Sending response
$this->response
diff --git a/kodorvan/perm/system/public/js/modules/advantages.js b/kodorvan/perm/system/public/js/modules/advantages.js
new file mode 100644
index 0000000..f1c2ff5
--- /dev/null
+++ b/kodorvan/perm/system/public/js/modules/advantages.js
@@ -0,0 +1,15 @@
+const items = document.querySelectorAll(".accordion button");
+
+function toggleAccordion() {
+ const itemToggle = this.getAttribute('aria-expanded');
+
+ for (i = 0; i < items.length; i++) {
+ items[i].setAttribute('aria-expanded', 'false');
+ }
+
+ if (itemToggle == 'false') {
+ this.setAttribute('aria-expanded', 'true');
+ }
+}
+
+items.forEach(item => item.addEventListener('click', toggleAccordion));
\ No newline at end of file
diff --git a/kodorvan/perm/system/public/js/modules/hotline.mjs b/kodorvan/perm/system/public/js/modules/hotline.mjs
new file mode 120000
index 0000000..2eecd90
--- /dev/null
+++ b/kodorvan/perm/system/public/js/modules/hotline.mjs
@@ -0,0 +1 @@
+../../../../../../hotline.mjs/hotline.mjs
\ No newline at end of file
diff --git a/kodorvan/perm/system/public/js/modules/service.js b/kodorvan/perm/system/public/js/modules/service.js
new file mode 100644
index 0000000..6411720
--- /dev/null
+++ b/kodorvan/perm/system/public/js/modules/service.js
@@ -0,0 +1,19 @@
+document.addEventListener('DOMContentLoaded', function() {
+ const blocks = document.querySelectorAll('.block');
+
+ blocks.forEach(block => {
+ const question = block.querySelector('.question');
+ const answerCont = block.querySelector('.answercont');
+
+ question.addEventListener('click', function() {
+ // Просто переключаем текущий блок без влияния на другие
+ if (block.classList.contains('active')) {
+ answerCont.style.maxHeight = '0';
+ block.classList.remove('active');
+ } else {
+ answerCont.style.maxHeight = answerCont.scrollHeight + 'px';
+ block.classList.add('active');
+ }
+ });
+ });
+});
\ No newline at end of file
diff --git a/kodorvan/perm/system/public/js/pages/main.js b/kodorvan/perm/system/public/js/pages/main.js
new file mode 100644
index 0000000..00d44dc
--- /dev/null
+++ b/kodorvan/perm/system/public/js/pages/main.js
@@ -0,0 +1,21 @@
+"use strict";
+
+import("../modules/hotline.mjs").then((module) => {
+ // Imported the hotline.mjs module
+
+ // Initializing an instance of the hotline.mjs
+ const instance = new module.hotline(document.getElementById("wrap"));
+
+ // Initializing settings of the hotline instance
+ instance.alive = true;
+ instance.wheel = false;
+ instance.delta = 3;
+
+ // Starting the hotline instance
+ instance.start();
+});
+
+ document.addEventListener('dragstart', function(event) {
+ event.preventDefault();
+ return false;
+ });
\ No newline at end of file
diff --git a/kodorvan/perm/system/public/themes/default/css/colorscheme.css b/kodorvan/perm/system/public/themes/default/css/colorscheme.css
index 49b480d..6da50c3 100644
--- a/kodorvan/perm/system/public/themes/default/css/colorscheme.css
+++ b/kodorvan/perm/system/public/themes/default/css/colorscheme.css
@@ -1,45 +1,67 @@
@charset "UTF-8";
+@media (prefers-color-scheme: default) {
+ :root {
+ --text-color: #fff;
+ --text-color-inverted: #000;
+ --button-background-color-inverted: #fff;
+ --button-background-color: #000;
+ --section-background-color-inverted: #fff;
+ --section-background-color: #000;
+ --background-color: #000;
+ --background-color-inverted: #fff;
+
+ --interface-top-background-color: var(--background-color, #000);
+ --interface-background-color: var(--background-color, #000);
+ --interface-bottom-background-color: var(--background-color, #000);
+
+ --red: red;
+ --white: #fff;
+ --blue: #0ea5e9;
+
+ --paper: var(--white);
+ }
+}
@media (prefers-color-scheme: dark) {
- :root {
- --text-color: #fff;
- --text-color-inverted: #000;
- --button-background-color-inverted: #fff;
- --button-background-color: #000;
- --section-background-color-inverted: #fff;
- --section-background-color: #000;
- --background-color: #000;
- --background-color-inverted: #fff;
+ :root {
+ --text-color: #fff;
+ --text-color-inverted: #000;
+ --button-background-color-inverted: #fff;
+ --button-background-color: #000;
+ --section-background-color-inverted: #fff;
+ --section-background-color: #fff;
+ --background-color: #000;
+ --background-color-inverted: #fff;
- --interface-top-background-color: var(--background-color, #000);
- --interface-background-color: var(--background-color, #000);
- --interface-bottom-background-color: var(--background-color, #000);
+ --interface-top-background-color: var(--background-color, #000);
+ --interface-background-color: var(--background-color, #000);
+ --interface-bottom-background-color: var(--background-color, #000);
- --red: red;
- --white: #fff;
+ --red: red;
+ --white: #fff;
- --paper: var(--white);
- }
+ --paper: var(--white);
+ }
}
@media (prefers-color-scheme: light) {
- :root {
- --text-color: #fff;
- --text-color-inverted: #000;
- --button-background-color-inverted: #fff;
- --button-background-color: #000;
- --section-background-color-inverted: #fff;
- --section-background-color: #000;
- --background-color: #000;
- --background-color-inverted: #fff;
+ :root {
+ --text-color: #fff;
+ --text-color-inverted: #000;
+ --button-background-color-inverted: #fff;
+ --button-background-color: #000;
+ --section-background-color-inverted: #fff;
+ --section-background-color: #000;
+ --background-color: #000;
+ --background-color-inverted: #fff;
- --interface-top-background-color: var(--background-color, #000);
- --interface-background-color: var(--background-color, #000);
- --interface-bottom-background-color: var(--background-color, #000);
+ --interface-top-background-color: var(--background-color, #000);
+ --interface-background-color: var(--background-color, #000);
+ --interface-bottom-background-color: var(--background-color, #000);
- --red: red;
- --white: #fff;
+ --red: red;
+ --white: #fff;
- --paper: var(--white);
- }
+ --paper: var(--white);
+ }
}
diff --git a/kodorvan/perm/system/public/themes/default/css/footer.css b/kodorvan/perm/system/public/themes/default/css/footer.css
index 5e5e484..996cafa 100644
--- a/kodorvan/perm/system/public/themes/default/css/footer.css
+++ b/kodorvan/perm/system/public/themes/default/css/footer.css
@@ -1,7 +1,42 @@
@charset "UTF-8";
footer {
- &:not(:has(*)) {
- display: none;
+ box-sizing: border-box;
+ padding: 0 20%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ text-align: center;
+ gap: 0.5rem;
+ margin: 2rem 0 1rem 0;
+
+ &:not(:has(*)) {
+ display: none;
+ }
+
+ > p#description {
+ text-align: center;
+ font-size: 1rem;
+ font-family: "Bahnschrift";
+ font-weight: 400;
+ margin: unset;
+ color: rgb(0, 0, 0, 0.6);
+ }
+ > div#link {
+ display: inline-flex;
+ justify-content: center;
+ gap: 1rem;
+
+ > a {
+ text-decoration: none;
+ font-size: 1rem;
+ font-family: "Bahnschrift";
+ font-weight: 400;
+ color: rgb(160, 160, 160);
+ transition: ease 0.2s;
+ &:hover {
+ color: #000;
+ }
}
-}
\ No newline at end of file
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/default/css/header.css b/kodorvan/perm/system/public/themes/default/css/header.css
index 491b4eb..8b159e4 100644
--- a/kodorvan/perm/system/public/themes/default/css/header.css
+++ b/kodorvan/perm/system/public/themes/default/css/header.css
@@ -1,68 +1,84 @@
@charset "UTF-8";
header {
- top: 0;
- left: 0;
- position: fixed;
- width: 100vw;
- height: 70px;
- box-sizing: border-box;
- padding: 0 20%;
- display: flex;
- justify-content: space-between;
- background-color: #931919;
+ top: 0;
+ left: 0;
+ position: fixed;
+ width: 100vw;
+ height: 70px;
+ box-sizing: border-box;
+ padding: 0 20%;
+ display: grid;
+ grid-template-columns: 1fr 2fr 1fr;
- &:not(:has(*)) {
- display: none;
- }
+ justify-items: center;
+ align-items: center;
+ background-color: #f7fafc;
+ z-index: 1000;
- >span#logotype {
- display: flex;
- flex-direction: column;
- font-size: 1.1rem;
+ &:not(:has(*)) {
+ display: none;
+ }
- >h4:only-of-type:first-child {
- margin: unset;
- font-family: "Cascadia Code";
- font-size: 2.8em;
- }
+ > span#logotype {
+ display: flex;
+ flex-direction: column;
+ font-size: 1.1rem;
- >small:only-of-type:last-child {
- justify-self: end;
- align-self: end;
- margin-top: -0.8em;
- font-family: 'Bahnschrift';
- font-size: 0.7em;
- font-weight: 800;
- text-transform: uppercase;
- }
- }
+ > h4:only-of-type:first-child {
+ margin: unset;
+ font-family: "Cascadia Code";
+ font-size: 2.5em;
+ }
- >nav#menu {
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 1rem;
- font-family: 'Geologica';
+ > small:only-of-type:last-child {
+ justify-self: end;
+ align-self: end;
+ margin-top: -0.8em;
+ font-family: "Bahnschrift";
+ font-size: 0.62em;
+ font-weight: 800;
+ text-transform: uppercase;
+ }
+ }
- >a {
- text-decoration: none;
- font-weight: 600;
- font-size: 1rem;
- text-transform: uppercase;
- color: #fff;
- }
- }
+ > nav#menu {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 1rem;
+ font-family: "Geologica";
- >a#order {
- align-self: center;
- background-color: #660909;
- padding: 0.5em 1.3em;
- border-radius: 1.125em;
- color: #fff;
- font-family: 'Cascadia Code';
- font-weight: 400;
- text-decoration: none;
- border: 2px solid;
- }
+ > a {
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1rem;
+ text-transform: uppercase;
+ color: rgb(0, 0, 0, 0.5);
+ transition: ease 0.2s;
+
+ &:hover {
+ color: #000;
+ }
+ }
+ }
+
+ > a#order {
+ display: flex;
+ gap: 5px;
+ align-items: center;
+ padding: 0.5em 1.3em;
+ border-radius: 1.125em;
+
+ font-family: "Cascadia Code";
+ font-weight: 400;
+ text-decoration: none;
+ background-color: #0ea5e9;
+ color: #fff;
+ transition: 0.2s;
+
+ &:hover {
+ transform: scale(1.05);
+ }
+ }
}
diff --git a/kodorvan/perm/system/public/themes/default/css/hotline.css b/kodorvan/perm/system/public/themes/default/css/hotline.css
new file mode 100644
index 0000000..9cb03f7
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/default/css/hotline.css
@@ -0,0 +1,31 @@
+section.hotline {
+
+ max-width: 100vw;
+ max-height: 360px;
+ height: max(16vw, 16vh);
+ display: inline-flex;
+ gap: 15px;
+
+ > :is(article, div) {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: centr;
+
+ min-width: 200px;
+ height: 100%;
+ border-radius: 1.125rem;
+ overflow: hidden;
+ background: rgb(0, 0, 0);
+
+ p {
+ font-family: "Cascadia Code";
+ font-size: 1.8rem;
+ font-weight: bold;
+ color: #ffffff;
+ text-shadow: 5px 5px 2px rgba(14, 165, 2335, 0.7);
+ text-align: center;
+ }
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/default/css/icons/code_slash.css b/kodorvan/perm/system/public/themes/default/css/icons/code_slash.css
new file mode 100644
index 0000000..a83352d
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/default/css/icons/code_slash.css
@@ -0,0 +1,36 @@
+@charset "UTF-8";
+
+i.icon.code.slash {
+ position: relative;
+ width: 2px;
+ height: 16px;
+ box-sizing: border-box;
+ display: block;
+ transform: rotate(15deg);
+ background: currentColor;
+
+ &::after,
+ &::before {
+ position: absolute;
+ content: "";
+ width: 8px;
+ height: 8px;
+ box-sizing: border-box;
+ display: block;
+ transform: rotate(-60deg);
+ }
+
+ &::before {
+ top: 5px;
+ left: -8px;
+ border-top: 2px solid;
+ border-left: 2px solid;
+ }
+
+ &::after {
+ top: 3px;
+ right: -8px;
+ border-right: 2px solid;
+ border-bottom: 2px solid;
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/default/css/icons/telegram.css b/kodorvan/perm/system/public/themes/default/css/icons/telegram.css
new file mode 100644
index 0000000..4451b88
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/default/css/icons/telegram.css
@@ -0,0 +1,31 @@
+i.icon.telegram {
+ width: 24px;
+ height: 24px;
+ background: transparent;
+ position: relative;
+}
+
+i.icon.telegram::before {
+ content: "";
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ background: white;
+ border-radius: 50%;
+ top: 2px;
+ left: 2px;
+}
+
+i.icon.telegram::after {
+ content: "";
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-bottom: 8px solid currentColor;
+ transform: rotate(-30deg);
+ top: 7px;
+ left: 9px;
+ color: #ffffff; /* Цвет бумажного самолетика */
+}
diff --git a/kodorvan/perm/system/public/themes/default/css/main.css b/kodorvan/perm/system/public/themes/default/css/main.css
index 1314602..bbce4f1 100755
--- a/kodorvan/perm/system/public/themes/default/css/main.css
+++ b/kodorvan/perm/system/public/themes/default/css/main.css
@@ -6,16 +6,137 @@
@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@900&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Geologica:wght@100..900&family=Pochaevsk&display=swap");
-
body {
- margin: unset;
+ margin: unset;
+ background-color: #f7fafc;
}
main {
- flex-grow: 1;
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: var(--gap);
- transition: 0s;
+ flex-grow: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 2rem;
+ transition: 0s;
+ margin-top: 6rem;
+ /* overflow-x: hidden; */
+
+ &:not(:has(*)) {
+ display: none;
+ }
+ > div.container {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ height: auto;
+
+ > span#shape {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 20px;
+ padding: 0.3em 1em;
+ border-radius: 1.125rem;
+ font-family: "Bahnschrift";
+ font-size: 1.2rem;
+ font-weight: 400;
+ color: #0ea5e9;
+ background: linear-gradient(
+ 90deg,
+ rgba(227, 242, 249, 1) 0%,
+ rgba(14, 165, 233, 0.2) 50%,
+ rgba(227, 242, 249, 1) 100%
+ );
+ }
+
+ > h2#title {
+ font-size: 2.4rem;
+ font-family: "Bahnschrift";
+ margin: 0.1em 0 0.2em 0;
+
+ > span {
+ color: #0ea5e9;
+ }
+ }
+
+ > p#description {
+ text-align: center;
+ font-size: 1.2rem;
+ font-family: "Bahnschrift";
+ font-weight: 400;
+
+ margin: unset;
+ color: rgb(0, 0, 0, 0.6);
+ }
+ > p.description {
+ width: 40%;
+ }
+
+ > div#team {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ gap: 1rem;
+ margin-top: 1rem;
+
+ > div#card {
+ display: flex;
+ flex-direction: column;
+ justify-content: start;
+ padding: 0.6em 0.8em;
+ border-radius: 1.125rem;
+ box-shadow: 0px 0px 15px 0px rgba(14, 165, 233, 0.1);
+ background-color: #fff;
+ transition: ease 0.2s;
+
+ &:hover {
+ transform: scaleY(1.03);
+ }
+ > img {
+ object-fit: cover;
+ width: 250px;
+ height: 270px;
+ margin: 0 auto;
+ border-radius: 1.125rem;
+ }
+ > p {
+ font-size: 1.5em;
+ font-weight: 900;
+ font-family: "Cascadia Code";
+ color: #000000;
+ margin: 15px 0 0;
+ }
+ > span {
+ font-size: 1em;
+ font-family: "Cascadia Code";
+ font-weight: 400;
+ color: #0ea5e9;
+ }
+ }
+ }
+ > a#telegram {
+ display: flex;
+ gap: 5px;
+ align-items: center;
+ padding: 0.5em 1.3em;
+ margin-top: 1rem;
+ border-radius: 1.125em;
+ font-size: 1em;
+ font-family: "Cascadia Code";
+ font-weight: 400;
+ text-decoration: none;
+ background-color: #0ea5e9;
+ color: #fff;
+ transition: 0.2s;
+
+ &:hover {
+ transform: scale(1.05);
+ }
+ > img {
+ width: 20px;
+ height: 20px;
+ }
+ }
+ }
}
diff --git a/kodorvan/perm/system/public/themes/default/images/avatar/algiz.png b/kodorvan/perm/system/public/themes/default/images/avatar/algiz.png
new file mode 100644
index 0000000..9e832a4
Binary files /dev/null and b/kodorvan/perm/system/public/themes/default/images/avatar/algiz.png differ
diff --git a/kodorvan/perm/system/public/themes/default/images/avatar/arsen.jpg b/kodorvan/perm/system/public/themes/default/images/avatar/arsen.jpg
new file mode 100644
index 0000000..5d4dd13
Binary files /dev/null and b/kodorvan/perm/system/public/themes/default/images/avatar/arsen.jpg differ
diff --git a/kodorvan/perm/system/public/themes/default/images/avatar/hollspae.png b/kodorvan/perm/system/public/themes/default/images/avatar/hollspae.png
new file mode 100644
index 0000000..78fd4e9
Binary files /dev/null and b/kodorvan/perm/system/public/themes/default/images/avatar/hollspae.png differ
diff --git a/kodorvan/perm/system/public/themes/default/images/avatar/seva.jpg b/kodorvan/perm/system/public/themes/default/images/avatar/seva.jpg
new file mode 100644
index 0000000..4c94944
Binary files /dev/null and b/kodorvan/perm/system/public/themes/default/images/avatar/seva.jpg differ
diff --git a/kodorvan/perm/system/public/themes/default/images/icons/telegram.svg b/kodorvan/perm/system/public/themes/default/images/icons/telegram.svg
new file mode 100644
index 0000000..f5b505e
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/default/images/icons/telegram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/kodorvan/perm/system/public/themes/test/css/aside.css b/kodorvan/perm/system/public/themes/test/css/aside.css
new file mode 100644
index 0000000..7ba2c94
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/aside.css
@@ -0,0 +1,7 @@
+@charset "UTF-8";
+
+aside {
+ &:not(:has(*)) {
+ display: none;
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/blocks/advantages.css b/kodorvan/perm/system/public/themes/test/css/blocks/advantages.css
new file mode 100644
index 0000000..ec8b3e0
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/blocks/advantages.css
@@ -0,0 +1,116 @@
+.advantages {
+ margin: 0 auto;
+
+ width: 48rem;
+
+ > h2.title {
+ text-align: center;
+ font-size: 2.4rem;
+ font-family: "Bahnschrift";
+ margin: 0.1em 0 0.2em 0;
+ }
+
+ .accordion {
+ .accordion-item {
+ border-bottom: 1px solid #4d5974;
+
+ button[aria-expanded="true"] {
+ border-bottom: 1px solid #0ea5e9;
+ }
+
+ &:last-child {
+ border: none;
+ }
+ }
+ button {
+ position: relative;
+ display: block;
+ text-align: left;
+ width: 100%;
+ padding: 1em 0;
+ color: #7288a2;
+ font-size: 1.2rem;
+ font-family: "Bahnschrift";
+ font-weight: 400;
+ border: none;
+ background: none;
+ outline: none;
+
+ &:hover,
+ &:focus {
+ cursor: pointer;
+ color: #0ea5e9;
+
+ &::after {
+ cursor: pointer;
+ color: #0ea5e9;
+ border: 1px solid #0ea5e9;
+ }
+ }
+ .title {
+ padding: 1em 1.5em 1em 0;
+ }
+ .icon {
+ display: inline-block;
+ position: absolute;
+ top: 18px;
+ right: 0;
+ width: 22px;
+ height: 22px;
+ border: 1px solid;
+ border-radius: 22px;
+
+ &::before {
+ display: block;
+ position: absolute;
+ content: "";
+ top: 11px;
+ left: 6px;
+ width: 10px;
+ height: 2px;
+ background: currentColor;
+ }
+ &::after {
+ display: block;
+ position: absolute;
+ content: "";
+ top: 7px;
+ left: 10px;
+ width: 2px;
+ height: 10px;
+ background: currentColor;
+ }
+ }
+ }
+ }
+
+ button[aria-expanded="true"] {
+ color: #0ea5e9;
+ .icon {
+ &::after {
+ width: 0;
+ }
+ }
+ + .accordion-content {
+ opacity: 1;
+ max-height: 9em;
+ transition: all 200ms linear;
+ will-change: opacity, max-height;
+ }
+ }
+ .accordion-content {
+ opacity: 0;
+ max-height: 0;
+ overflow: hidden;
+ transition: opacity 200ms linear, max-height 200ms linear;
+ will-change: opacity, max-height;
+
+ p {
+ align-items: left;
+ font-size: 1.05rem;
+ font-weight: 300;
+ font-family: "Bahnschrift";
+ margin: 2em 0;
+ }
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/blocks/hotline.css b/kodorvan/perm/system/public/themes/test/css/blocks/hotline.css
new file mode 100644
index 0000000..489fe18
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/blocks/hotline.css
@@ -0,0 +1,38 @@
+section#projects {
+ > h2.title {
+ font-size: 2.4rem;
+ font-family: "Bahnschrift";
+ margin: 0.1em 0 0.2em 0;
+ }
+
+ div.hotline {
+ max-width: 100vw;
+ max-height: 360px;
+ height: max(16vw, 16vh);
+ display: inline-flex;
+ gap: 15px;
+
+ > :is(article, div) {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: centr;
+
+ min-width: 200px;
+ height: 100%;
+ border-radius: 1.125rem;
+ overflow: hidden;
+ background: rgb(0, 0, 0);
+
+ p {
+ font-family: "Bahnschrift";
+ font-size: 1.8rem;
+ font-weight: bold;
+ color: #ffffff;
+ text-shadow: 5px 5px 2px rgba(14, 165, 2335, 0.7);
+ text-align: center;
+ }
+ }
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/blocks/introdution.css b/kodorvan/perm/system/public/themes/test/css/blocks/introdution.css
new file mode 100644
index 0000000..8255f54
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/blocks/introdution.css
@@ -0,0 +1,126 @@
+section#introdution {
+ position: relative;
+ width: 100%;
+ height: min(500px, 45vh);
+ overflow: hidden;
+
+ >div.dots {
+ --dot-bg: black;
+ --dot-color: red;
+ --dot-size: 3px;
+ --dot-space: 8px;
+ z-index: -50;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background:
+ linear-gradient(90deg, var(--dot-bg) calc(var(--dot-space) - var(--dot-size)), transparent 1%) center / var(--dot-space) var(--dot-space),
+ linear-gradient(var(--dot-bg) calc(var(--dot-space) - var(--dot-size)), transparent 1%) center / var(--dot-space) var(--dot-space), var(--dot-color);
+ mix-blend-mode: color-burn;
+ filter: blur(1px);
+ }
+
+ >video:only-of-type {
+ z-index: -100;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ object-position: center;
+ scale: 1.1;
+ filter: blur(5px);
+ }
+
+ >div {
+ position: relative;
+ width: 30vw;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ cursor: default;
+
+ >span#label {
+ margin-top: -60px;
+ margin-bottom: 20px;
+ width: 320px;
+ padding: 0.3em .5em 0.3em 1em;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 20px;
+ font-size: 1.2rem;
+ font-family: "Bahnschrift";
+ font-weight: 400;
+ border-radius: 1.125rem;
+ border: 1px solid #8080803d;
+ color: #ffe0e0;
+ border: 1px solid #eeeeee1c;
+ background-color: #dadada30;
+ backdrop-filter: blur(2px);
+ }
+
+ >h2#title {
+ margin: unset;
+ width: max-content;
+ padding: 0.2em 0.5em 0em;
+ font-family: 'Bahnschrift';
+ font-size: 2.6rem;
+ font-weight: 600;
+ border-radius: 0 0.75rem 0 0;
+ color: #241fd3;
+ background-color: #fff;
+ }
+
+ >p#team {
+ margin: unset;
+ width: 650px;
+ height: 70px;
+ box-sizing: border-box;
+ padding: 0.6em 1.2em;
+ text-align: center;
+ font-size: 1.2rem;
+ font-family: "Geologica";
+ font-weight: 400;
+ border-radius: 0.75rem;
+ background-color: #fff;
+
+ >span {
+ color: #0ea5e9;
+ font-weight: 800;
+ }
+ }
+
+ >span {
+ position: absolute;
+ display: flex;
+ padding: 0.4em 0.8rem 0.3em;
+ font-size: 1.2rem;
+ font-family: 'Bahnschrift';
+ font-weight: 400;
+ border-radius: 0.75rem;
+ background-color: #fff;
+
+ &:is(#experience) {
+ bottom: -3.4rem;
+ left: 0px;
+ font-size: 1.4rem;
+ font-weight: 600;
+ }
+
+ &:is(#anything) {
+ right: -10px;
+ bottom: -30px;
+ font-weight: 200;
+ border-radius: 0 0 0.75rem 0.75rem;
+ }
+
+ &:is(#technology) {
+ left: -70px;
+ top: -1.5rem;
+ font-size: 1rem;
+ font-weight: 600;
+ border-bottom-right-radius: 0;
+ }
+ }
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/blocks/service.css b/kodorvan/perm/system/public/themes/test/css/blocks/service.css
new file mode 100644
index 0000000..b03305d
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/blocks/service.css
@@ -0,0 +1,60 @@
+section#services {
+ margin: unset;
+ display: flex;
+ gap: 5px;
+
+ > div#service {
+ display: inline-flex;
+ gap: 20px;
+
+ > div#card {
+ width: 270px;
+ height: 300px;
+ padding: 1rem 0.8rem;
+ flex-direction: column;
+ border-radius: 1.125rem;
+ background-color: #fff;
+ box-shadow: 0px 0px 15px 0px rgba(14, 165, 233, 0.1);
+
+ > div.text {
+ height: 82%;
+ margin-bottom: 1em;
+ display: flex;
+ flex-direction: column;
+
+ > p.title {
+ margin: 0 auto;
+ font-size: 1.2rem;
+ font-family: "Geologica";
+ font-weight: 800;
+ color: #0ea5e9;
+ }
+
+ > span.discription {
+ margin: 1em 0;
+ font-size: 1rem;
+ font-family: "Geologica";
+ font-weight: 200;
+ }
+ }
+
+ > a {
+ max-width: 250px;
+ padding: 0.6em 0.8em;
+ text-decoration: none;
+ font-size: 1rem;
+ font-family: "Geologica";
+ font-weight: 300;
+ border: 0.15em solid #0ea5e9;
+ border-radius: 1.125rem;
+ color: #0ea5e9;
+ transition: ease 0.2s;
+
+ &:hover {
+ background-color: #0ea5e9;
+ color: #fff;
+ }
+ }
+ }
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/colorscheme.css b/kodorvan/perm/system/public/themes/test/css/colorscheme.css
new file mode 100644
index 0000000..6da50c3
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/colorscheme.css
@@ -0,0 +1,67 @@
+@charset "UTF-8";
+
+@media (prefers-color-scheme: default) {
+ :root {
+ --text-color: #fff;
+ --text-color-inverted: #000;
+ --button-background-color-inverted: #fff;
+ --button-background-color: #000;
+ --section-background-color-inverted: #fff;
+ --section-background-color: #000;
+ --background-color: #000;
+ --background-color-inverted: #fff;
+
+ --interface-top-background-color: var(--background-color, #000);
+ --interface-background-color: var(--background-color, #000);
+ --interface-bottom-background-color: var(--background-color, #000);
+
+ --red: red;
+ --white: #fff;
+ --blue: #0ea5e9;
+
+ --paper: var(--white);
+ }
+}
+@media (prefers-color-scheme: dark) {
+ :root {
+ --text-color: #fff;
+ --text-color-inverted: #000;
+ --button-background-color-inverted: #fff;
+ --button-background-color: #000;
+ --section-background-color-inverted: #fff;
+ --section-background-color: #fff;
+ --background-color: #000;
+ --background-color-inverted: #fff;
+
+ --interface-top-background-color: var(--background-color, #000);
+ --interface-background-color: var(--background-color, #000);
+ --interface-bottom-background-color: var(--background-color, #000);
+
+ --red: red;
+ --white: #fff;
+
+ --paper: var(--white);
+ }
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ --text-color: #fff;
+ --text-color-inverted: #000;
+ --button-background-color-inverted: #fff;
+ --button-background-color: #000;
+ --section-background-color-inverted: #fff;
+ --section-background-color: #000;
+ --background-color: #000;
+ --background-color-inverted: #fff;
+
+ --interface-top-background-color: var(--background-color, #000);
+ --interface-background-color: var(--background-color, #000);
+ --interface-bottom-background-color: var(--background-color, #000);
+
+ --red: red;
+ --white: #fff;
+
+ --paper: var(--white);
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/fonts.css b/kodorvan/perm/system/public/themes/test/css/fonts.css
new file mode 100644
index 0000000..114da44
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/fonts.css
@@ -0,0 +1,10 @@
+@import url('/css/fonts/fira.css');
+@import url('/css/fonts/hack.css');
+@import url('/css/fonts/dejavu.css');
+@import url('/css/fonts/bahnschrift.css');
+
+@font-face {
+ font-family: 'Commissioner';
+ src: url('/fonts/commissioner.ttf');
+ font-weight: 400;
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/footer.css b/kodorvan/perm/system/public/themes/test/css/footer.css
new file mode 100644
index 0000000..485723c
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/footer.css
@@ -0,0 +1,42 @@
+@charset "UTF-8";
+
+footer {
+ box-sizing: border-box;
+ padding: 0 20%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ text-align: center;
+ gap: 0.5rem;
+ margin: 2rem 0 1rem 0;
+
+ &:not(:has(*)) {
+ display: none;
+ }
+
+ > p#description {
+ text-align: center;
+ font-size: 1rem;
+ font-family: "Geologica";
+ font-weight: 400;
+ margin: unset;
+ color: rgb(0, 0, 0, 0.6);
+ }
+ > div#link {
+ display: inline-flex;
+ justify-content: center;
+ gap: 1rem;
+
+ > a {
+ text-decoration: none;
+ font-size: 1rem;
+ font-family: "Geologica";
+ font-weight: 400;
+ color: rgb(160, 160, 160);
+ transition: ease 0.2s;
+ &:hover {
+ color: #000;
+ }
+ }
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/header.css b/kodorvan/perm/system/public/themes/test/css/header.css
new file mode 100644
index 0000000..5fe56b2
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/header.css
@@ -0,0 +1,68 @@
+@charset "UTF-8";
+
+header {
+ top: 0;
+ left: 0;
+ position: fixed;
+ width: 100vw;
+ height: var(--menu-height);
+ box-sizing: border-box;
+ padding: 0 20%;
+ display: flex;
+ justify-content: space-between;
+
+ align-items: center;
+ background-color: #f7fafc;
+ z-index: 1000;
+
+ &:not(:has(*)) {
+ display: none;
+ }
+
+ > a#logotype {
+ display: flex;
+ flex-direction: column;
+ font-size: 1.1rem;
+ text-decoration: none;
+ color: #000;
+
+ > h4:only-of-type:first-child {
+ margin: unset;
+ font-family: "Cascadia Code";
+ font-size: 2.5em;
+ }
+
+ > small:only-of-type:last-child {
+ justify-self: end;
+ align-self: end;
+ margin-top: -0.8em;
+ font-family: "Bahnschrift";
+ font-size: 0.62em;
+ font-weight: 800;
+ text-transform: uppercase;
+ }
+ }
+
+ > nav#menu {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 1rem;
+ font-family: "Geologica";
+
+ > a {
+ text-decoration: none;
+ font-weight: 500;
+ font-size: 1rem;
+ text-transform: uppercase;
+ color: rgb(0, 0, 0, 0.5);
+ transition: ease 0.2s;
+
+ &:hover {
+ color: #000;
+ }
+ }
+ }
+
+
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/icons/code_slash.css b/kodorvan/perm/system/public/themes/test/css/icons/code_slash.css
new file mode 100644
index 0000000..a83352d
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/icons/code_slash.css
@@ -0,0 +1,36 @@
+@charset "UTF-8";
+
+i.icon.code.slash {
+ position: relative;
+ width: 2px;
+ height: 16px;
+ box-sizing: border-box;
+ display: block;
+ transform: rotate(15deg);
+ background: currentColor;
+
+ &::after,
+ &::before {
+ position: absolute;
+ content: "";
+ width: 8px;
+ height: 8px;
+ box-sizing: border-box;
+ display: block;
+ transform: rotate(-60deg);
+ }
+
+ &::before {
+ top: 5px;
+ left: -8px;
+ border-top: 2px solid;
+ border-left: 2px solid;
+ }
+
+ &::after {
+ top: 3px;
+ right: -8px;
+ border-right: 2px solid;
+ border-bottom: 2px solid;
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/icons/telegram.css b/kodorvan/perm/system/public/themes/test/css/icons/telegram.css
new file mode 100644
index 0000000..4451b88
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/icons/telegram.css
@@ -0,0 +1,31 @@
+i.icon.telegram {
+ width: 24px;
+ height: 24px;
+ background: transparent;
+ position: relative;
+}
+
+i.icon.telegram::before {
+ content: "";
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ background: white;
+ border-radius: 50%;
+ top: 2px;
+ left: 2px;
+}
+
+i.icon.telegram::after {
+ content: "";
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-bottom: 8px solid currentColor;
+ transform: rotate(-30deg);
+ top: 7px;
+ left: 9px;
+ color: #ffffff; /* Цвет бумажного самолетика */
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/main.css b/kodorvan/perm/system/public/themes/test/css/main.css
new file mode 100644
index 0000000..645d64c
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/main.css
@@ -0,0 +1,163 @@
+@charset "UTF-8";
+
+@import url("https://fonts.googleapis.com/css2?family=Commissioner:wght@100;200;300;400;500;600;700;800;900&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Cascadia+Code:ital,wght@0,200..700;1,200..700&family=Rubik:ital,wght@0,300..900;1,300..900&family=Wix+Madefor+Display:wght@400..800&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Share+Tech+Mono&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@900&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Geologica:wght@100..900&family=Pochaevsk&display=swap");
+
+body {
+ margin: unset;
+ /* overflow-x: hidden; */
+ background-color: #f7fafc;
+}
+
+.unselectable {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ outline: none;
+}
+
+main {
+ margin-top: var(--menu-height);
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ align-items: center;
+ gap: 2rem;
+ transition: 0s;
+ overflow-x: hidden;
+
+ &:not(:has(*)) {
+ display: none;
+ }
+
+ > section.container {
+ height: auto;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ > h2#title {
+ font-size: 2.4rem;
+ font-family: "Bahnschrift";
+ margin: 0.1em 0 0.2em 0;
+
+ > span {
+ color: #0ea5e9;
+ }
+ }
+
+ > p#description {
+ margin: unset;
+ text-align: center;
+ font-size: 1.2rem;
+ font-family: "Geologica";
+ font-weight: 400;
+ color: rgb(0, 0, 0, 0.6);
+
+ > span {
+ color: #0ea5e9;
+ font-weight: 800;
+ }
+ }
+
+ > p.description {
+ width: 40%;
+ }
+
+ > a#order {
+ padding: 0.5em 1.3em;
+ margin-top: 1rem;
+ display: flex;
+ align-items: center;
+ gap: 5px;
+ border-radius: 1.125em;
+ font-size: 1em;
+ font-family: "Geologica";
+ font-weight: 400;
+ text-decoration: none;
+ background-color: #0ea5e9;
+ color: #fff;
+ transition: 0.2s;
+
+ &:hover {
+ transform: scale(1.05);
+ }
+ }
+ > div#team {
+ margin-top: 1rem;
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ gap: 1rem;
+
+ > div#card {
+ padding: 0.6em 0.8em;
+ width: 180px;
+ height: 220px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border-radius: 1.125rem;
+ box-shadow: 0px 0px 15px 0px rgba(14, 165, 233, 0.1);
+ background-color: #fff;
+ transition: ease 0.2s;
+
+ > img {
+ object-fit: cover;
+ width: 140px;
+ height: 140px;
+ border-radius: 100%;
+ }
+
+ > p {
+ margin: 1em 0 0;
+ font-size: 1.2em;
+ font-family: "Geologica";
+ font-weight: 900;
+ color: #000000;
+ }
+
+ > span {
+ font-size: 1em;
+ font-family: "Geologica";
+ font-weight: 400;
+ color: #0ea5e9;
+ }
+ }
+ }
+
+ > a#telegram {
+ padding: 0.5em 1.3em;
+ margin-top: 1rem;
+ display: flex;
+ align-items: center;
+ gap: 5px;
+ border-radius: 1.125em;
+ font-size: 1em;
+ font-family: "Geologica";
+ font-weight: 400;
+ text-decoration: none;
+ background-color: #0ea5e9;
+ color: #fff;
+ transition: 0.2s;
+
+ &:hover {
+ transform: scale(1.05);
+ }
+
+ > img {
+ width: 20px;
+ height: 20px;
+ }
+ }
+ }
+}
diff --git a/kodorvan/perm/system/public/themes/test/css/system.css b/kodorvan/perm/system/public/themes/test/css/system.css
new file mode 100644
index 0000000..4020bee
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/css/system.css
@@ -0,0 +1,35 @@
+@charset "UTF-8";
+
+:root {
+ --menu-height: 70px;
+ --gap: min(12px, 1rem);
+
+ /* font-family: , system-ui, sans-serif; */
+ font-family: "dejavu";
+ text-decoration: none;
+ outline: none;
+ border: none;
+ transition: 0.1s ease-out;
+}
+
+/* Selection */
+::selection {
+ color: var(--text-selected-color);
+ background: var(--text-selected-background-color);
+}
+
+::-moz-selection {
+ color: var(--text-selected-color);
+ background: var(--text-selected-background-color);
+}
+
+
+.unselectable {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
diff --git a/kodorvan/perm/system/public/themes/test/images/avatar/123.jpg b/kodorvan/perm/system/public/themes/test/images/avatar/123.jpg
new file mode 100644
index 0000000..3939e05
Binary files /dev/null and b/kodorvan/perm/system/public/themes/test/images/avatar/123.jpg differ
diff --git a/kodorvan/perm/system/public/themes/test/images/avatar/algiz.png b/kodorvan/perm/system/public/themes/test/images/avatar/algiz.png
new file mode 100644
index 0000000..9e832a4
Binary files /dev/null and b/kodorvan/perm/system/public/themes/test/images/avatar/algiz.png differ
diff --git a/kodorvan/perm/system/public/themes/test/images/avatar/arsen.jpg b/kodorvan/perm/system/public/themes/test/images/avatar/arsen.jpg
new file mode 100644
index 0000000..5d4dd13
Binary files /dev/null and b/kodorvan/perm/system/public/themes/test/images/avatar/arsen.jpg differ
diff --git a/kodorvan/perm/system/public/themes/test/images/avatar/hollspae.png b/kodorvan/perm/system/public/themes/test/images/avatar/hollspae.png
new file mode 100644
index 0000000..78fd4e9
Binary files /dev/null and b/kodorvan/perm/system/public/themes/test/images/avatar/hollspae.png differ
diff --git a/kodorvan/perm/system/public/themes/test/images/avatar/seva.jpg b/kodorvan/perm/system/public/themes/test/images/avatar/seva.jpg
new file mode 100644
index 0000000..4c94944
Binary files /dev/null and b/kodorvan/perm/system/public/themes/test/images/avatar/seva.jpg differ
diff --git a/kodorvan/perm/system/public/themes/test/images/icons/telegram.svg b/kodorvan/perm/system/public/themes/test/images/icons/telegram.svg
new file mode 100644
index 0000000..f5b505e
--- /dev/null
+++ b/kodorvan/perm/system/public/themes/test/images/icons/telegram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/kodorvan/perm/system/public/themes/test/videos/cover.mp4 b/kodorvan/perm/system/public/themes/test/videos/cover.mp4
new file mode 100644
index 0000000..b1f73b4
Binary files /dev/null and b/kodorvan/perm/system/public/themes/test/videos/cover.mp4 differ
diff --git a/kodorvan/perm/system/views/templater.php b/kodorvan/perm/system/views/templater.php
index a169b4f..70c9a34 100755
--- a/kodorvan/perm/system/views/templater.php
+++ b/kodorvan/perm/system/views/templater.php
@@ -62,7 +62,7 @@ final class templater extends controller implements array_access
$this->twig = new twig(new FilesystemLoader(VIEWS));
// Initializing global variables
- $this->twig->addGlobal('theme', 'default');
+ $this->twig->addGlobal('theme', 'test');
$this->twig->addGlobal('server', $_SERVER);
$this->twig->addGlobal('cookies', $_COOKIE);
$this->twig->addGlobal('language', $language = $session?->buffer['language'] ?? language::en);
diff --git a/kodorvan/perm/system/views/themes/default/aside.html b/kodorvan/perm/system/views/themes/default/aside.html
index afb2aa1..1de7b19 100644
--- a/kodorvan/perm/system/views/themes/default/aside.html
+++ b/kodorvan/perm/system/views/themes/default/aside.html
@@ -2,8 +2,7 @@
{% endblock %}
{% block body %}
-
+
{% endblock %}
{% block js %}
diff --git a/kodorvan/perm/system/views/themes/default/core.html b/kodorvan/perm/system/views/themes/default/core.html
index 1bb43a7..f97c420 100755
--- a/kodorvan/perm/system/views/themes/default/core.html
+++ b/kodorvan/perm/system/views/themes/default/core.html
@@ -27,5 +27,4 @@
{% endblock %}