10 Commits

Author SHA1 Message Date
e6c0c57b1f favicon compress, rofls, calculator new parameters 2026-04-19 20:13:57 +05:00
60884ab2ed from perm to site renamed 2026-04-19 16:54:39 +05:00
16b0361268 submodules fix 2026-04-19 12:58:59 +05:00
5a7edafee2 created 2026-04-19 12:39:16 +05:00
c631428699 dots replaced with three.js shader 2026-01-08 18:04:40 +05:00
d26b0ca9ea популярные заказы 2026-01-02 00:27:47 +05:00
7fb037d155 footer 2025-12-01 00:11:20 +07:00
db3a515aaa icons and started on description section 2025-11-24 01:37:35 +07:00
1ee70ba8d6 introdution, workload, statistics and desctiption 2025-11-24 01:17:59 +07:00
d70791aff2 after Ksenia 2025-11-22 10:25:53 +03:00
516 changed files with 10098 additions and 2333 deletions

16
.gitmodules vendored Executable file
View File

@@ -0,0 +1,16 @@
[submodule "hotline.mjs"]
path = hotline.mjs
url = https://git.svoboda.works/mirzaev/hotline.mjs
branch = stable
[submodule "damper.mjs"]
path = damper.mjs
url = https://git.svoboda.works/mirzaev/damper.mjs.git
branch = stable
[submodule "icons"]
path = icons
url = https://git.svoboda.works/mirzaev/icons
branch = stable
[submodule "womb3-simplex.mjs"]
path = womb3-simplex.mjs
url = https://git.svoboda.works/mirzaev/womb3-simplex.mjs
branch = stable

View File

@@ -1,13 +1,13 @@
{ {
"name": "kodorvan/perm", "name": "kodorvan/site",
"description": "Лендинг для Перми от Ксении", "description": "The kodorvan team main site",
"homepage": "https://git.svoboda.works/kodorvan/perm", "homepage": "https://git.svoboda.works/kodorvan/site",
"type": "site", "type": "site",
"keywords": [ "keywords": [
"minimal", "minimal",
"baza", "baza",
"landing", "landing",
"perm" "site"
], ],
"readme": "README.md", "readme": "README.md",
"license": "WTFPL", "license": "WTFPL",
@@ -17,25 +17,22 @@
"email": "arsen@mirzaev.sexy", "email": "arsen@mirzaev.sexy",
"homepage": "https://mirzaev.sexy", "homepage": "https://mirzaev.sexy",
"role": "Programmer" "role": "Programmer"
},
{
"name": "Hollspae",
"email": "ksena.vilkova79@gmail.om",
"role": "Creator-Programmer"
} }
], ],
"support": { "support": {
"wiki": "https://git.svoboda.works/kodorvan/perm/wiki", "wiki": "https://git.svoboda.works/kodorvan/site/wiki",
"issues": "https://git.svoboda.works/kodorvan/perm/issues" "issues": "https://git.svoboda.works/kodorvan/site/issues"
}, },
"require": { "require": {
"php": "^8.4", "php": "^8.5",
"ext-blake3": "^0.1",
"mirzaev/minimal": "^3.8", "mirzaev/minimal": "^3.8",
"mirzaev/baza": "^3.4", "mirzaev/baza": "^3.4",
"mirzaev/languages": "^1", "mirzaev/languages": "^1",
"twig/twig": "^3.2", "twig/twig": "^3.2",
"twig/extra-bundle": "^3.7", "twig/extra-bundle": "^3.7",
"twig/intl-extra": "^3.10" "twig/intl-extra": "^3.10",
"phpmailer/phpmailer": "^7.0"
}, },
"suggest": { "suggest": {
"mirzaev/files": "Easy working with files", "mirzaev/files": "Easy working with files",
@@ -44,12 +41,12 @@
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"kodorvan\\perm\\": "kodorvan/perm/system" "kodorvan\\site\\": "kodorvan/site/system"
} }
}, },
"autoload-dev": { "autoload-dev": {
"psr-4": { "psr-4": {
"kodorvan\\perm\\tests\\": "kodorvan/perm/tests" "kodorvan\\site\\tests\\": "kodorvan/site/tests"
} }
}, },
"scripts": { "scripts": {

1000
composer.lock generated Normal file → Executable file

File diff suppressed because it is too large Load Diff

1
damper.mjs Submodule

Submodule damper.mjs added at 81d208b964

1
icons Submodule

Submodule icons added at c4dedad538

View File

@@ -1,23 +1,43 @@
#!/bin/bash #!/bin/bash
git submodule update --init --recursive
if [ -d author/project ]; then if [ -d author/project ]; then
mv author/project author/perm mv author/project author/site
fi fi
if [ -d author ]; then if [ -d author ]; then
mv author kodorvan mv author kodorvan
fi fi
if [ -e kodorvan/perm/system/settings/*.sample ]; then for i in kodorvan/site/system/settings/*.sample; do
for i in kodorvan/perm/system/settings/*.sample; do echo $i;
cp "$i" "${i/.sample/}"; if [ ! -f "${i/.sample/}" ]; then
cp -n "$i" "${i/.sample/}";
echo ${i/.sample/};
fi
done done
if ! [ -d kodorvan/site/system/public/js/modules ]; then
mkdir kodorvan/site/system/public/js/modules -p
fi fi
if ! [ -d kodorvan/perm/system/public/js/modules ]; then if ! [ -L kodorvan/site/system/public/js/modules/damper.mjs ]; then
mkdir kodorvan/perm/system/public/js/modules -p ln -s ../../../../../../damper.mjs/damper.mjs kodorvan/site/system/public/js/modules/damper.mjs;
fi fi
if ! [ -L kodorvan/perm/system/public/js/modules/hotline.mjs ]; then if ! [ -L kodorvan/site/system/public/js/modules/hotline.mjs ]; then
ln -s ../../../../../../hotline.mjs/hotline.mjs kodorvan/perm/system/public/js/modules/hotline.mjs; ln -s ../../../../../../hotline.mjs/hotline.mjs kodorvan/site/system/public/js/modules/hotline.mjs;
fi
if ! [ -L kodorvan/site/system/public/js/modules/womb3-simplex.mjs ]; then
ln -s ../../../../../../womb3-simplex.mjs/womb3-simplex.mjs kodorvan/site/system/public/js/modules/womb3-simplex.mjs;
fi
if ! [ -L kodorvan/site/system/public/js/modules/simplex-noise.mjs ]; then
ln -s ../../../../../../womb3-simplex.mjs/simplex-noise.mjs kodorvan/site/system/public/js/modules/simplex-noise.mjs;
fi
if ! [ -L kodorvan/site/system/public/css/icons ]; then
ln -s ../../../../../icons/css kodorvan/site/system/public/css/icons;
fi fi

View File

@@ -1,15 +0,0 @@
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));

View File

@@ -1,19 +0,0 @@
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');
}
});
});
});

View File

@@ -1,21 +0,0 @@
"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;
});

View File

@@ -1,7 +0,0 @@
@charset "UTF-8";
aside {
&:not(:has(*)) {
display: none;
}
}

View File

@@ -1,67 +0,0 @@
@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);
}
}

View File

@@ -1,10 +0,0 @@
@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;
}

View File

@@ -1,42 +0,0 @@
@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: "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;
}
}
}
}

View File

@@ -1,84 +0,0 @@
@charset "UTF-8";
header {
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;
justify-items: center;
align-items: center;
background-color: #f7fafc;
z-index: 1000;
&:not(:has(*)) {
display: none;
}
> span#logotype {
display: flex;
flex-direction: column;
font-size: 1.1rem;
> 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;
}
}
}
> 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);
}
}
}

View File

@@ -1,31 +0,0 @@
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;
}
}
}

View File

@@ -1,36 +0,0 @@
@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;
}
}

View File

@@ -1,31 +0,0 @@
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; /* Цвет бумажного самолетика */
}

View File

@@ -1,142 +0,0 @@
@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;
background-color: #f7fafc;
}
main {
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;
}
}
}
}

View File

@@ -1,34 +0,0 @@
@charset "UTF-8";
:root {
--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;
}

View File

@@ -1 +0,0 @@
<svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M46.137,6.552c-0.75-0.636-1.928-0.727-3.146-0.238l-0.002,0C41.708,6.828,6.728,21.832,5.304,22.445 c-0.259,0.09-2.521,0.934-2.288,2.814c0.208,1.695,2.026,2.397,2.248,2.478l8.893,3.045c0.59,1.964,2.765,9.21,3.246,10.758 c0.3,0.965,0.789,2.233,1.646,2.494c0.752,0.29,1.5,0.025,1.984-0.355l5.437-5.043l8.777,6.845l0.209,0.125 c0.596,0.264,1.167,0.396,1.712,0.396c0.421,0,0.825-0.079,1.211-0.237c1.315-0.54,1.841-1.793,1.896-1.935l6.556-34.077 C47.231,7.933,46.675,7.007,46.137,6.552z M22,32l-3,8l-3-10l23-17L22,32z"/></svg>

Before

Width:  |  Height:  |  Size: 631 B

View File

@@ -1,7 +0,0 @@
@charset "UTF-8";
aside {
&:not(:has(*)) {
display: none;
}
}

View File

@@ -1,116 +0,0 @@
.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;
}
}
}

View File

@@ -1,38 +0,0 @@
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;
}
}
}
}

View File

@@ -1,126 +0,0 @@
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;
}
}
}
}

View File

@@ -1,67 +0,0 @@
@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);
}
}

View File

@@ -1,10 +0,0 @@
@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;
}

View File

@@ -1,42 +0,0 @@
@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;
}
}
}
}

View File

@@ -1,68 +0,0 @@
@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;
}
}
}
}

View File

@@ -1,36 +0,0 @@
@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;
}
}

View File

@@ -1,31 +0,0 @@
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; /* Цвет бумажного самолетика */
}

View File

@@ -1,163 +0,0 @@
@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;
}
}
}
}

View File

@@ -1,35 +0,0 @@
@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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -1 +0,0 @@
<svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M46.137,6.552c-0.75-0.636-1.928-0.727-3.146-0.238l-0.002,0C41.708,6.828,6.728,21.832,5.304,22.445 c-0.259,0.09-2.521,0.934-2.288,2.814c0.208,1.695,2.026,2.397,2.248,2.478l8.893,3.045c0.59,1.964,2.765,9.21,3.246,10.758 c0.3,0.965,0.789,2.233,1.646,2.494c0.752,0.29,1.5,0.025,1.984-0.355l5.437-5.043l8.777,6.845l0.209,0.125 c0.596,0.264,1.167,0.396,1.712,0.396c0.421,0,0.825-0.079,1.211-0.237c1.315-0.54,1.841-1.793,1.896-1.935l6.556-34.077 C47.231,7.933,46.675,7.007,46.137,6.552z M22,32l-3,8l-3-10l23-17L22,32z"/></svg>

Before

Width:  |  Height:  |  Size: 631 B

View File

@@ -1,4 +0,0 @@
<?php
// Initializing default theme for the views templater
define('THEME', 'default');

View File

@@ -1,9 +0,0 @@
{% block css %}
{% endblock %}
{% block body %}
{% endblock %}
{% block js %}
{% endblock %}

View File

@@ -1,30 +0,0 @@
<!DOCTYPE html>
<html lang="ru">
<head>
{% use '/themes/default/head.html' with title as head_title, meta as head_meta, css as head_css %}
{% block title %}
{{ block('head_title') }}
{% endblock %}
{% block meta %}
{{ block('head_meta') }}
{% endblock %}
{{ block('head_css') }}
{% block css %}
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
{% include '/themes/default/js.html' %}
{% block js %}
{% endblock %}
</body>
</html>

View File

@@ -1,16 +0,0 @@
{% block css %}
{% endblock %}
{% block body %}
<footer>
<p id="description">Профессиональная разработка ваших проектов</p>
<div id="link">
<a href="https://t.me/kodorvan?direct">КОДОРВАНЬ</a>
<a href="https://git.svoboda.works/kodorvan">РЕПОЗИТОРИИ</a>
<a href="https://ru.wikipedia.org/wiki/WTFPL">WTFPL</a>
</div>
</footer>
{% endblock %}
{% block js %}
{% endblock %}

View File

@@ -1,26 +0,0 @@
{% block title %}
<title>{% if head.title != empty %}{{ head.title }}{% else %}perm by kodorvan{% endif %}</title>
{% endblock %}
{% block meta %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% for meta in head.metas %}
<meta {% for name, value in meta.attributes %}{{ name }}="{{ value }}" {% endfor %}>
{% endfor %}
{% endblock %}
{% block css %}
{% for element in css %}
<link type="text/css" rel="stylesheet" {% if element.href %} href="{{ element.href }}" {% endif %} />
{% endfor %}
<link type="text/css" rel="stylesheet" href="/themes/default/css/fonts.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/system.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/header.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/main.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/aside.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/footer.css" />
<style id="theme">
@import url('/themes/default/css/themes/default/colorscheme.css');
</style>
{% endblock %}

View File

@@ -1,16 +0,0 @@
{% block css %} {% endblock %} {% block body %}
<header>
<span id="logotype" class="unselectable">
<h4>КОДОРВАНЬ</h4>
<small>реальных программистов</small>
</span>
<nav id="menu" class="unselectable">
<a href="/project">Проекты</a>
<a href="#contacts">Контакты</a>
<a href="#comand">Команда</a>
</nav>
<a id="order" class="unselectable" href="https://t.me/kodorvan?direct">Заказать</a>
</header>
{% endblock %} {% block js %} {% endblock %}

View File

@@ -1,9 +0,0 @@
{% block js %}
{% for element in js %}
<script
{% if element.src %}src="{{ element.src }}" {% endif %}
{% if element.type %}type="{{ element.type }}" {% endif %}>
{{ element.innerText }}
</script>
{% endfor %}
{% endblock %}

View File

@@ -1,27 +0,0 @@
<div id="comand" class="container">
<h2 id="title">Наша команда</h2>
<p id="description">
Познакомьтесь с профессионалами, которые воплотят ваши идеи в жизнь
</p>
<div id="team">
<div id="card">
<img src="themes/default/images/avatar/arsen.jpg" alt="Арсен" />
<p>Арсен</p>
<span>Программист</span>
</div>
<div id="card">
<img src="themes/default/images/avatar/hollspae.png" alt="Ксения" />
<p>Ксения</p>
<span>Coder</span>
</div>
<div id="card">
<img src="themes/default/images/avatar/algiz.png" alt="Альгиз" />
<p>Альгиз</p>
<span>Нроcетка и крипта</span>
</div>
</div>
</div>
<!-- познакомьтесь что-то там никто читать на хуй не будет
заменяем на
Более 12 лет опыта в разных IT направлениях -->

View File

@@ -1,17 +0,0 @@
<div id="contacts" class="container unselectable">
<h2 id="title">Связатьcя с нами</h2>
<p id="description">Готовы обсудить ваш проект? Напишите нам!</p>
<a id="telegram" class="unselectable" href="https://t.me/kodorvan?direct">
<img src="themes/default/images/icons/telegram.svg" alt="">
<span>TELEGRAM</span>
</a>
</div>
<!-- Готовы обсудить проект
заменить на
что-то связанное с конструктором заказа
написать о том что будет посчитана цена, составлено ТЗ, сроки
влепить что есть рассрочка, оплата по СБП, работа с юр лицами
поэтапная оплата и возможность индивидуального чего-нибудь -->

View File

@@ -1,20 +0,0 @@
<div id="description" class="container">
<span id="shape">
<i class="icon code slash"></i>
<span>Профессиональная разработка</span>
</span>
<h2 id="title">
Ваша идея — наша <span>реализация</span>
</h2>
<p id="description" class="description">
Команда из опытных разработчиков, специализирующихся на создании
современных веб-приложений, чат-ботов, приложений, видеоигр для малого
бизнеса
</p>
</div>
<!-- IDEA -->
<!-- Создаем решения будущего -->
<!-- Ваш рост - наш код -->
<!-- От идеи до работающего бизнеса -->

View File

@@ -1,36 +0,0 @@
<section id="wrap" class="hotline unselectable" data-hotline="true" data-hotline-step="-3"
data-hotline-magnetic="center" data-hotline-interval="10">
<article>
<p>ZHARKO</p>
</article>
<article>
<p>STCS</p>
</article>
<article>
<p>BRAINROT</p>
</article>
<article>
<p>ZHARKO</p>
</article>
<article>
<p>STCS</p>
</article>
<article>
<p>BRAINROT</p>
</article>
<article>
<p>ZHARKO</p>
</article>
<article>
<p>STCS</p>
</article>
<article>
<p>BRAINROT</p>
</article>
<article>
<p>ZHARKO</p>
</article>
</section>

View File

@@ -1,19 +0,0 @@
{% extends "/themes/default/index.html" %}
{% block css %}
<link type="text/css" rel="stylesheet" href="/themes/default/css/icons/code_slash.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/icons/telegram.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/hotline.css" />
{% endblock %}
{% block main %}
{% include '/themes/default/main/blocks/introdution.html' %}
{% include '/themes/default/main/blocks/projects.html' %}
{% include '/themes/default/main/blocks/comand.html' %}
{% include '/themes/default/main/blocks/contacts.html' %}
{% endblock %}
{% block js %}
<script src="/js/modules/hotline.mjs" type="module"></script>
<script src="/js/pages/main.js" defer></script>
{% endblock %}

View File

@@ -1,16 +0,0 @@
{% block css %}
{% endblock %}
{% block body %}
<footer class="unselectable">
<p id="description">Профессиональная разработка ваших проектов</p>
<div id="link" class="unselectable" >
<a href="https://t.me/kodorvan?direct" > КОДОРВАНЬ</a>
<a href="https://git.svoboda.works/kodorvan">РЕПОЗИТОРИИ</a>
<a href="https://ru.wikipedia.org/wiki/WTFPL">WTFPL</a>
</div>
</footer>
{% endblock %}
{% block js %}
{% endblock %}

View File

@@ -1,26 +0,0 @@
{% block title %}
<title>{% if head.title != empty %}{{ head.title }}{% else %}perm by kodorvan{% endif %}</title>
{% endblock %}
{% block meta %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% for meta in head.metas %}
<meta {% for name, value in meta.attributes %}{{ name }}="{{ value }}" {% endfor %}>
{% endfor %}
{% endblock %}
{% block css %}
{% for element in css %}
<link type="text/css" rel="stylesheet" {% if element.href %} href="{{ element.href }}" {% endif %} />
{% endfor %}
<link type="text/css" rel="stylesheet" href="/themes/test/css/fonts.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/system.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/header.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/main.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/aside.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/footer.css" />
<style id="theme">
@import url('/themes/test/css/themes/test/colorscheme.css');
</style>
{% endblock %}

View File

@@ -1,16 +0,0 @@
{% block css %} {% endblock %} {% block body %}
<header>
<a href="https://perm.kodorvan.tech" id="logotype" class="unselectable">
<h4>КОДОРВАНЬ</h4>
<small>реальных программистов</small>
</ф>
<nav id="menu" class="unselectable">
<a href="https://git.svoboda.works/kodorvan">Проекты</a>
<a href="#contacts">Контакты</a>
<a href="#services">Услуги</a>
</nav>
</header>
{% endblock %} {% block js %} {% endblock %}

View File

@@ -1,30 +0,0 @@
{% extends "/themes/test/core.html" %}
{% use "/themes/test/header.html" with css as header_css, body as header, js as header_js %}
{% use "/themes/test/aside.html" with css as aside_css, body as aside, js as aside_js %}
{% use "/themes/test/footer.html" with css as footer_css, body as footer, js as footer_js %}
{% block css %}
{{ block('header_css') }}
{{ block('aside_css') }}
{{ block('footer_css') }}
{% endblock %}
{% block body %}
{{ block('header') }}
{{ block('aside') }}
<main>
{% block main %}
{{main|raw}}
{% endblock %}
</main>
{{ block('footer') }}
{% endblock %}
{% block js %}
{{ block('header_js') }}
{{ block('aside_js') }}
{{ block('footer_js') }}
{% endblock %}

View File

@@ -1,9 +0,0 @@
{% block js %}
{% for element in js %}
<script
{% if element.src %}src="{{ element.src }}" {% endif %}
{% if element.type %}type="{{ element.type }}" {% endif %}>
{{ element.innerText }}
</script>
{% endfor %}
{% endblock %}

View File

@@ -1,62 +0,0 @@
<section class="advantages">
<h2 class="title unselectable">Преимущества</h2>
<div class="accordion">
<div class="accordion-item">
<button id="accordion-button-1" aria-expanded="false">
<span class="title ">Техническое задание</span>
<span class="icon" aria-hidden="true"></span>
</button>
<div class="accordion-content">
<p>Четкое описание всех требований и функционала проекта.</p>
</div>
</div>
<div class="accordion-item">
<button id="accordion-button-2" aria-expanded="false">
<span class="title">Хостинг на нашем сервере</span>
<span class="icon" aria-hidden="true"></span>
</button>
<div class="accordion-content">
<p>Проект может быть размещен на нашем сервере или перенесен на другой по желанию клиента.</p>
</div>
</div>
<div class="accordion-item">
<button id="accordion-button-3" aria-expanded="false">
<span class="title">Безопасность и приватность</span>
<span class="icon" aria-hidden="true"></span>
</button>
<div class="accordion-content">
<p>Код зашифрован, проект полностью приватный и защищен от несанкционированного доступа.</p>
</div>
</div>
<div class="accordion-item">
<button id="accordion-button-4" aria-expanded="false">
<span class="title">Бесплатная поддержка</span>
<span class="icon" aria-hidden="true"></span>
</button>
<div class="accordion-content">
<p>Помощь и консультация после запуска проекта.</p>
</div>
</div>
<div class="accordion-item">
<button id="accordion-button-5" aria-expanded="false">
<span class="title">Персонализированный подход</span>
<span class="icon" aria-hidden="true"></span>
</button>
<div class="accordion-content">
<p>Учет уникальных потребностей и пожеланий клиента.</p>
</div>
</div>
</div>
</section>

View File

@@ -1,24 +0,0 @@
<section id="comand" class="container">
<h2 id="title" class="unselectable">Разработчики</h2>
<p id="description" class="unselectable">
Более <span>12 лет</span> разработки в различных IT сферах
</p>
<div id="team">
<div id="card">
<img src="themes/test/images/avatar/123.jpg" alt="Арсен" />
<p class="unselectable">Арсен</p>
<span class="unselectable">Программист</span>
</div>
<div id="card">
<img src="themes/test/images/avatar/123.jpg" alt="Ксения" />
<p class="unselectable">Ксения</p>
<span class="unselectable">Coder</span>
</div>
<div id="card">
<img src="themes/test/images/avatar/123.jpg" alt="Альгиз" />
<p class="unselectable">Альгиз</p>
<span class="unselectable">Нроcетка и крипта</span>
</div>
</div>
</section>

View File

@@ -1,17 +0,0 @@
<section id="contacts" class="container unselectable">
<h2 id="title">Связатьcя с нами</h2>
<p id="description">Готовы обсудить ваш проект? Напишите нам!</p>
<a id="telegram" class="unselectable" href="https://t.me/kodorvan?direct">
<img src="themes/default/images/icons/telegram.svg" alt="">
<span>Telegram</span>
</a>
</section>
<!-- Готовы обсудить проект
заменить на
что-то связанное с конструктором заказа
написать о том что будет посчитана цена, составлено ТЗ, сроки
влепить что есть рассрочка, оплата по СБП, работа с юр лицами
поэтапная оплата и возможность индивидуального чего-нибудь -->

View File

@@ -1,29 +0,0 @@
<section id="introdution" class="container">
<div>
<!-- <span id="label">
<i class="icon code slash"></i>
<span class="unselectable">Профессиональная разработка</span>
</span> -->
<h2 id="title" class="unselectable">ПЕРМСКИЕ РАЗРАБОТЧИКИ</h2>
<p id="team" class="unselectable">Разработка с нуля командой профессионалов<br />ответственно и без лапши - работа на результат</p>
<span id="experience">БОЛЕЕ 12 ЛЕТ ОПЫТА</span>
<span id="anything">УМЕЕМ ВСЁ</span>
<span id="technology">УНИКАЛЬНЫЕ ТЕХНОЛОГИИ</span>
</div>
<div class="dots"></div>
<video autoplay loop muted>
<source src="/themes/test/videos/cover.mp4" type="video/mp4">
</video>
</section>
<!-- IDEA -->
<!-- Создаем решения будущего -->
<!-- Ваш рост - наш код -->
<!-- От идеи до работающего бизнеса -->
<!-- Ваша идея - наша реализация -->

View File

@@ -1,48 +0,0 @@
<section id="projects" class="container unselectable">
<h2 class="title">Проекты</h2>
<div id="wrap" class="hotline unselectable" data-hotline="true" data-hotline-step="-3" data-hotline-magnetic="center"
data-hotline-interval="10">
<article>
<p>ZHARKO</p>
</article>
<article>
<p>STCS</p>
</article>
<article>
<p>BRAINROT</p>
</article>
<article>
<p>ZHARKO</p>
</article>
<article>
<p>STCS</p>
</article>
<article>
<p>BRAINROT</p>
</article>
<article>
<p>ZHARKO</p>
</article>
<article>
<p>STCS</p>
</article>
<article>
<p>BRAINROT</p>
</article>
<article>
<p>ZHARKO</p>
</article>
<article>
<p>STCS</p>
</article>
<article>
<p>BRAINROT</p>
</article>
</div>
</section>

View File

@@ -1,35 +0,0 @@
<section id="services" class="container ">
<h2 id="title">Предоставляемые услуги</h2>
<div id="service">
<div id="card">
<div class="text">
<p class="title">Телеграм-боты под ключ</p>
<span class="discription">Создаем Telegram-ботов для продаж, поддержки клиентов и автоматизации
бизнес-процессов. Рассматриваем разработку мини-приложений в Telegram: магазин, сервисы, игры и полноценные
платформы</span>
</div>
<a href="https://t.me/kodorvan?direct">Запустить бота за 7 дней</a>
</div>
<div id="card">
<div class="text">
<p class="title">Разработка сайта</p>
<span class="discription">Разработаем сайт любой сложности — от одностраничных лендингов до многофункциональных интернет-магазинов и представительных корпоративных сайтов. Каждый
проект будет современным и адаптивным</span>
</div>
<a href="https://t.me/kodorvan?direct">Заказать сайт</a>
</div>
<div id="card">
<div class="text">
<p class="title"> API-интеграции под ключ</p>
<span class="discription">Настраиваем надежное и безопасное взаимодействие вашего сайта или бота с любыми внешними сервисами. Интеграция с платежными системами, CRM, Telegram, базами данных и другими системами, чтобы автоматизировать бизнес-процессы.</span>
</div>
<a href="https://t.me/kodorvan?direct">Подключить</a>
</div>
</div>
</section>

View File

@@ -1,27 +0,0 @@
{% extends "/themes/test/index.html" %}
{% block css %}
<link type="text/css" rel="stylesheet" href="/themes/test/css/icons/code_slash.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/icons/telegram.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/blocks/introdution.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/blocks/hotline.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/blocks/service.css" />
<link type="text/css" rel="stylesheet" href="/themes/test/css/blocks/advantages.css" />
{% endblock %}
{% block main %}
{% include '/themes/test/main/blocks/introdution.html' %}
{% include '/themes/test/main/blocks/projects.html' %}
{% include '/themes/test/main/blocks/service.html' %}
{% include '/themes/test/main/blocks/advantages.html' %}
{% include '/themes/test/main/blocks/comand.html' %}
{% include '/themes/test/main/blocks/contacts.html' %}
{% endblock %}
{% block js %}
<script src="/js/modules/hotline.mjs" type="module"></script>
<script src="/js/pages/main.js" defer></script>
<script src="/js/modules/service.js" defer></script>
<script src="/js/modules/advantages.js" defer></script>
{% endblock %}

View File

@@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace kodorvan\perm\controllers; namespace kodorvan\site\controllers;
// Files of the project // Files of the project
use kodorvan\perm\views\templater, use kodorvan\site\views\templater,
kodorvan\perm\models\core as models; kodorvan\site\models\core as models;
// Library for languages support // Library for languages support
use mirzaev\languages\language; use mirzaev\languages\language;
@@ -20,7 +20,7 @@ use mirzaev\minimal\core as minimal,
/** /**
* Controllers core * Controllers core
* *
* @package kodorvan\perm\controllers * @package kodorvan\site\controllers
* *
* @param language $language Language * @param language $language Language
* @param response $response Response * @param response $response Response

View File

@@ -0,0 +1,294 @@
<?php
declare(strict_types=1);
namespace kodorvan\site\controllers;
// Files of the project
use kodorvan\site\controllers\core;
// Framework for PHP
use mirzaev\minimal\http\enumerations\content,
mirzaev\minimal\http\enumerations\status;
/**
* Index
*
* @package kodorvan\site\controllers
*
* @param array $errors Registry of errors
*
* @method null index() Main page
*
* @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
*/
final class index extends core
{
/**
* Errors
*
* @var array $errors Registry of errors
*/
protected array $errors = [
'system' => []
];
/**
* Main page
*
* @return null
*/
public function index(): null
{
if (str_contains($this->request->headers['accept'] ?? '', content::html->value)) {
// Request for HTML response
// Initializing the team workload
$this->view->workload = (string) ($_COOKIE['workload'] ?? rand(20, 80));
// Initializing services
$this->view->services = [
[
'class' => 'telegram voronka',
'title' => 'Телеграм воронка',
'icon_left' => '',
/* 'icon_center' => 'import', */
'icon_center' => 'crown',
'icon_right' => '',
'description' => <<<TXT
Поступательно запросит данные пользователя, скомпонует, запишет в базу данных и синхронизирует в CRM
<br><br>
Используя иммерсивные технологии и многофакторный сбор обеспечивает максимальное удержание пользователя
TXT,
'howto' => 'Направьте к нему клиентов и ждите новых заказов в вашей CRM, на сайте или в чате',
'buttons' => [
[
'icon' => 'comment',
'href' => 'https://t.me/' . TELEGRAM_ROBOT['domain'] . '?start=telegram voronka'
]
],
'theses' => [
[
'class' => 'yellow',
'characteristic' => '-80%',
'text' => 'НАГРУЗКА'
],
[
'class' => 'blue',
'colored' => true,
'characteristic' => '+5%',
'text' => 'КОНВЕРСИИ'
],
[
'class' => 'green',
'characteristic' => '0₽',
'text' => 'НИКАКОЙ АРЕНДЫ'
]
],
'background_image_src' => '/themes/default/images/telegram_voronka.png',
'background_image_alt' => 'Телеграм воронка КОДОРВАНЬ',
'cost' => '2000',
'canceled' => 'ЗАБЛОКИРОВАН'
],
[
'class' => 'parser',
'title' => 'Парсер',
'icon_left' => '',
'icon_center' => 'search',
'icon_right' => '',
'description' => <<<TXT
Любая работа за компьютером может быть автоматизирована
<br><br>
Парсер берёт данные с сайтов через API, либо эмулируя пользователя, а так же из excel-документов, CRM и бухгалтерии, затем просчитывает, анализирует и записывает результат
TXT,
'howto' => 'Подключите источники и снизьте нагрузку на операторов, оптимизируйте процессы',
'extra' => [
'Wildberries',
'OZON',
'Yandex Market',
'Avito',
'CDEK',
'1C',
'Bitrix',
'Мой Склад'
],
'buttons' => [
[
'icon' => 'comment',
/* 'href' => 'https://t.me/' . TELEGRAM_ROBOT['domain'] . '?start=parser' */
'href' => 'https://t.me/' . TELEGRAM_ROBOT['domain'] . '?start=parser'
]
],
'theses' => [
[
'class' => 'yellow',
'colored' => true,
'characteristic' => '-100%',
'text' => 'НАГРУЗКА'
],
[
'class' => 'cyan',
'icon' => 'infinity',
'text' => 'ВЕЧНАЯ ПОДДЕРЖКА'
],
[
'class' => 'green',
'icon' => 'play forwards',
'text' => 'РЕКОРД СКОРОСТИ'
]
],
'background_image_src' => '/themes/default/images/excel_small_compressed.jpg',
'background_image_alt' => 'Парсеры КОДОРВАНЬ',
'cost' => '3000'
],
[
'class' => 'calculator',
'title' => 'Калькулятор',
'icon_left' => '',
'icon_center' => 'calculator',
'icon_right' => '',
'description' => <<<TXT
Составление алгоритма обработки большого объёма данных с использованием нейросетей и грамотно выбранной сортировки
<br><br>
Оператор вводит данные, нажимает на кнопки, двигает ползунки и мгновенно получает точный результат вычислений
TXT,
'howto' => 'Настройте параметры в панели управления и в долгосрочной перспективе сэкономьте тысячи часов рабочего времени',
'extra' => [],
'buttons' => [
[
'icon' => 'comment',
'href' => 'https://t.me/' . TELEGRAM_ROBOT['domain'] . '?start=calculator'
]
],
'theses' => [
[
'class' => 'yellow',
'characteristic' => '-95%',
'text' => 'НАГРУЗКА'
],
[
'class' => 'green',
'characteristic' => '-80%',
'text' => 'ОШИБОК ВЫЧИСЛЕНИЙ'
],
[
'class' => 'red',
'colored' => true,
'characteristic' => '+20%',
'text' => 'ОБУЧАЕМОСТЬ'
]
],
'background_image_src' => '/themes/default/images/tordv_compressed.jpg',
'background_image_alt' => 'Калькулятор КОДОРВАНЬ',
'cost' => '10 000'
]
];
// Sending the cookie with the team workload (1800 = 30min)
setcookie('workload', $this->view->workload, time() + 1800, '/');
// Initializing the project constructor data
$this->view->project = [
'architectures' => [
'site' => 'Сайт',
'chat_robot' => 'Чат-робот',
'program' => 'Программа',
'game' => 'Видеоигра',
'script' => 'Скрипт, парсер, макрос',
'module' => 'Модуль, плагин, расширение',
],
'purposes' => [
'funnel' => 'Воронка (обработка пользователя)',
'contacts' => 'Контакты (сбор данных)',
'ai' => 'Внедрение ИИ',
'archive' => 'Архив (галерея, библиотека, реестр)',
'crm' => 'Индивидуальная CRM',
'landing' => 'Лендинг (посадочная страница)',
'marketplace' => 'Маркетплейс, магазин, витрина',
'saas' => 'SaaS проект',
'search' => 'Поиск и анализ',
'calculate' => 'Автоматизированное вычисление (калькулятор)',
'individual' => 'Индивидуальная разработка',
],
'integrations' => [
'one_c' => '1C',
'bitrix24' => 'Битрикс24',
'moy_sklad' => 'Мой Склад',
'mail' => 'Почта',
'excel' => 'Excel',
'ozon' => 'OZON',
'wildberries' => 'Wildberries',
'yandex_market' => 'Яндекс Маркет',
'avito' => 'Авито',
'vk' => 'ВКонтакте',
'max' => 'МАКС',
'telegram' => 'Телеграм',
'neural_networks' => 'Нейросети'
]
];
// Initializing contacts data
$this->view->contacts = [
'sim' => [
'requests' => [
'full' => PROJECT_CONTACTS_SIM_REQUESTS ?? 'Ошибка',
'country' => PROJECT_CONTACTS_SIM_REQUESTS_COUNTRY ?? 'Ошибка',
'operator' => PROJECT_CONTACTS_SIM_REQUESTS_OPERATOR ?? 'Ошибка',
'number' => [
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_1 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_2 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_3 ?? 'Ошибка'
]
]
]
];
// Initializing contacts data
$this->view->integrations = [
'Вайлдберриз' => 'wildberries',
'ОЗОН' => 'ozon',
'Мой Склад' => 'moy_sklad',
'1С Предприятие' => '1c',
'Битрикс 24' => 'bitrix24',
'ВКонтакте' => 'vk',
'МАКС' => 'max',
'Авито' => 'avito',
'YClients' => 'yclients',
'ЮКасса' => 'yookassa',
'OpenAI' => 'openai',
/* 'yandex_direct', */
'Яндекс Директ' => 'yandex_market',
];
// Render page
$page = $this->view->render(
'main/index.html',
[
'smartphone' => $this->request->smartphone,
'tablet' => $this->request->tablet
]
);
// Sending response
$this->response
->start()
->clean()
->sse()
->write($page)
->validate($this->request)
?->body()
->end();
// Deinitializing rendered page
unset($page);
// Exit (success)
return null;
}
// Exit (fail)
return null;
}
}

View File

@@ -2,19 +2,19 @@
declare(strict_types=1); declare(strict_types=1);
namespace kodorvan\perm\controllers; namespace kodorvan\site\controllers;
// Files of the project // Files of the project
use kodorvan\perm\controllers\core; use kodorvan\site\controllers\core;
// Framework for PHP // Framework for PHP
use mirzaev\minimal\http\enumerations\content, use mirzaev\minimal\http\enumerations\content,
mirzaev\minimal\http\enumerations\status; mirzaev\minimal\http\enumerations\status;
/** /**
* Index * Offer
* *
* @package kodorvan\perm\controllers * @package kodorvan\site\controllers
* *
* @param array $errors Registry of errors * @param array $errors Registry of errors
* *
@@ -23,7 +23,7 @@ use mirzaev\minimal\http\enumerations\content,
* @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy> * @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
*/ */
final class index extends core final class offer extends core
{ {
/** /**
* Errors * Errors
@@ -35,7 +35,7 @@ final class index extends core
]; ];
/** /**
* Main page * Page: offer
* *
* @return null * @return null
*/ */
@@ -44,8 +44,30 @@ final class index extends core
if (str_contains($this->request->headers['accept'] ?? '', content::html->value)) { if (str_contains($this->request->headers['accept'] ?? '', content::html->value)) {
// Request for HTML response // Request for HTML response
// Initializing contacts data
$this->view->contacts = [
'sim' => [
'requests' => [
'full' => PROJECT_CONTACTS_SIM_REQUESTS ?? 'Ошибка',
'country' => PROJECT_CONTACTS_SIM_REQUESTS_COUNTRY ?? 'Ошибка',
'operator' => PROJECT_CONTACTS_SIM_REQUESTS_OPERATOR ?? 'Ошибка',
'number' => [
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_1 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_2 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_3 ?? 'Ошибка'
]
]
]
];
// Render page // Render page
$page = $this->view->render('main/index.html'); $page = $this->view->render(
'main/offer.html',
[
'smartphone' => $this->request->smartphone,
'tablet' => $this->request->tablet
]
);
// Sending response // Sending response
$this->response $this->response

View File

@@ -0,0 +1,126 @@
<?php
declare(strict_types=1);
namespace kodorvan\site\controllers;
// Files of the project
use kodorvan\site\controllers\core;
// PHP framework
use mirzaev\minimal\http\enumerations\content,
mirzaev\minimal\http\enumerations\status;
// Mail server
use PHPMailer\PHPMailer\PHPMailer as mail,
PHPMailer\PHPMailer\SMTP as smtp,
PHPMailer\PHPMailer\Exception as mail_exception;
/**
* Index
*
* @package kodorvan\site\controllers
*
* @param array $errors Registry of errors
*
* @method null index() Main page
*
* @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
*/
final class project extends core
{
/**
* Errors
*
* @var array $errors Registry of errors
*/
protected array $errors = [
'system' => []
];
/**
*
*
* @return null
*/
public function request(string $request): null
{
// Initializing the project identifier (temporary solution)
$identifier = blake3($request, 20);
// Initializing the project storage path
$path = STORAGE . DIRECTORY_SEPARATOR . 'projects' . DIRECTORY_SEPARATOR . $identifier;
// Initializing the project storage directory in the storage
if (!file_exists($path)) mkdir($path, 0775, true);
// Declaring the project storage files registry
$files = [];
foreach ($this->request->files as $file) {
// Iterating over files
// Initializing the file destination path
$destination = $path . DIRECTORY_SEPARATOR . $file['name'];
// Writing the file into the project storage
copy($file['tmp_name'], $destination);
// Writing the file destination path into the project storage files registry
$files[$file['name']] = $destination;
}
// Decoding the request JSON argument
$request = json_decode(json: $request, associative: true, depth: 5);
// Initializing the mail server
$mail = new mail(true);
try {
// Writing the mail server parameters
/* $mail->SMTPDebug = smtp::DEBUG_SERVER; */
$mail->setLanguage('ru');
$mail->CharSet = mail::CHARSET_UTF8;
$mail->isSMTP();
$mail->Host = MAIL_SERVER['host'];
$mail->SMTPAuth = true;
$mail->Username = MAIL_SERVER['sender']['mail'];
$mail->Password = MAIL_SERVER['password'];
$mail->SMTPSecure = mail::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->setFrom(MAIL_SERVER['sender']['mail'], MAIL_SERVER['sender']['name']);
$mail->addAddress(MAIL_SERVER['receiver']['mail'], MAIL_SERVER['receiver']['name']);
// The message
$mail->isHTML(true);
$mail->Subject = empty($request['project']['name']) ? 'Заказ' : 'Заказ: ' . $request['project']['name'];
$mail->Body = $this->view->render('messages/request.html', $request);
/* $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; */
// Attachments
foreach ($files as $name => $file) {
// Iterating of project storage files registry
// Writing the attachment into the message
$mail->addAttachment($file, $name);
}
// Sending the message
$mail->send();
} catch (mail_exception $exception) {
}
// Sending response
$this->response
->start()
->clean()
->sse()
->validate($this->request)
?->body()
->end();
// Exit (fail)
return null;
}
}

View File

@@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace kodorvan\perm\models; namespace kodorvan\site\models;
// Framework for PHP // Framework for PHP
use mirzaev\minimal\model, use mirzaev\minimal\model,
@@ -14,7 +14,7 @@ use exception;
/** /**
* Models core * Models core
* *
* @package kodorvan\perm\models * @package kodorvan\site\models
* *
* @method void __construct() Constructor * @method void __construct() Constructor
* *

View File

@@ -0,0 +1,8 @@
@charset "UTF-8";
@font-face {
font-family: 'Akony';
src: url("/fonts/akony/AKONY.ttf");
font-weight: normal;
font-style: normal;
}

View File

@@ -0,0 +1,50 @@
@charset "UTF-8";
@font-face {
font-family: 'Cascadia Code';
src: url("/fonts/cascadia_code/CascadiaCode-ExtraLight.woff2");
font-weight: 100;
font-style: normal;
}
@font-face {
font-family: 'Cascadia Code';
src: url("/fonts/cascadia_code/CascadiaCode-Light.woff2");
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'Cascadia Code';
src: url("/fonts/cascadia_code/CascadiaCode-SemiLight.woff2");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Cascadia Code';
src: url("/fonts/cascadia_code/CascadiaCode-Regular.woff2");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Cascadia Code';
src: url("/fonts/cascadia_code/CascadiaCode-Regular.woff2");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Cascadia Code';
src: url("/fonts/cascadia_code/CascadiaCode-SemiBold.woff2");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Cascadia Code';
src: url("/fonts/cascadia_code/CascadiaCode-Bold.woff2");
font-weight: 700;
font-style: normal;
}

View File

@@ -0,0 +1,6 @@
@charset "UTF-8";
@font-face {
font-family: 'Commissioner';
src: url('/fonts/commissioner.ttf');
}

View File

@@ -0,0 +1,6 @@
@charset "UTF-8";
@font-face {
font-family: 'Compacta';
src: url("/fonts/compacta/compacta_lt_light_compress.otf");
}

View File

@@ -0,0 +1,8 @@
@charset "UTF-8";
@font-face {
font-family: 'Eitai';
src: url("/fonts/eitai/eitai.otf");
font-weight: normal;
font-style: normal;
}

View File

@@ -0,0 +1,15 @@
@charset "UTF-8";
@font-face {
font-family: 'GOST';
src: url("/fonts/gost/GOST 2.304-81 type A.ttf");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'GOST';
src: url("/fonts/gost/GOST 2.304-81 type B.ttf");
font-weight: 400;
font-style: normal;
}

View File

@@ -0,0 +1,8 @@
@charset "UTF-8";
@font-face {
font-family: 'Industry';
src: url("/fonts/industry/Industry-Bold_RUS.ttf");
font-weight: normal;
font-style: normal;
}

View File

@@ -0,0 +1,63 @@
@charset "UTF-8";
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-LightCondensed.ttf");
font-weight: 100;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-LightCondensed.ttf");
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-LightCondensed.ttf");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-RegularCondensed.ttf");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-RegularCondensed.ttf");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-Bold.ttf");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-BoldCondensed.ttf");
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-BlackCondensed.ttf");
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'MT Sans';
src: url("/fonts/mt_sans/MTSans-BlackExtended.ttf");
font-weight: 900;
font-style: normal;
}

View File

@@ -0,0 +1,64 @@
@charset "UTF-8";
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-ExtraLight.ttf");
font-weight: 100;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-Light.ttf");
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-Regular.ttf");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-Regular.ttf");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-Medium.ttf");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-Bold.ttf");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-ExtraBold.ttf");
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-Black.ttf");
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'Nunito';
src: url("/fonts/nunito/Nunito-Black.ttf");
font-weight: 900;
font-style: normal;
}

View File

@@ -0,0 +1,8 @@
@charset "UTF-8";
@font-face {
font-family: 'Palui';
src: url("/fonts/palui/PaluiSPDemo-Bold.otf");
font-weight: normal;
font-style: normal;
}

View File

@@ -0,0 +1,6 @@
@charset "UTF-8";
@font-face {
font-family: 'Slifted';
src: url("/fonts/slifted/slifted.otf");
}

View File

@@ -0,0 +1,6 @@
@charset "UTF-8";
@font-face {
font-family: 'Urban Slavic';
src: url("/fonts/urban_slavic/UrbanSlavic.otf");
}

View File

@@ -0,0 +1,6 @@
@charset "UTF-8";
@font-face {
font-family: 'Vredina';
src: url("/fonts/vredina/SAVredina-ThinUltraCondensed.woff");
}

View File

@@ -0,0 +1 @@
../../../../../icons/css

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More