Собрал статические файлы
This commit is contained in:
parent
2ad660ab0f
commit
ce76c093d1
@ -28,8 +28,22 @@
|
|||||||
--radius-md: 12px;
|
--radius-md: 12px;
|
||||||
--radius-lg: 16px;
|
--radius-lg: 16px;
|
||||||
--radius-xl: 20px;
|
--radius-xl: 20px;
|
||||||
--transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
--transition-slow: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
/*
|
||||||
|
* FIX: Replaced "all" with explicit properties.
|
||||||
|
* "transition: all" animates every CSS property on every change,
|
||||||
|
* including expensive layout properties. Explicit properties are
|
||||||
|
* cheaper for the browser compositor.
|
||||||
|
*/
|
||||||
|
--transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
border-color 0.3s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
color 0.3s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
--transition-slow: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
box-shadow 0.5s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
border-color 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Светлая тема (по умолчанию) */
|
/* Светлая тема (по умолчанию) */
|
||||||
@ -40,11 +54,11 @@ body {
|
|||||||
--bg-primary: #FFFFFF;
|
--bg-primary: #FFFFFF;
|
||||||
--bg-secondary: #F7FAFC;
|
--bg-secondary: #F7FAFC;
|
||||||
--bg-tertiary: #EDF2F7;
|
--bg-tertiary: #EDF2F7;
|
||||||
--bg-card: #FFFFFF; /* в светлой теме карты светлые */
|
--bg-card: #FFFFFF;
|
||||||
|
--bg-header: rgba(255, 255, 255, 0.88); /* FIX: semi-transparent for backdrop-filter */
|
||||||
--border-light: #E2E8F0;
|
--border-light: #E2E8F0;
|
||||||
--border-medium: #CBD5E0;
|
--border-medium: #CBD5E0;
|
||||||
--border-dark: #252A3A; /* для тёмной темы, но оставим */
|
--border-dark: #252A3A;
|
||||||
/* --footer-bg: linear-gradient(135deg, var(--text-primary) 0%, #2D3748 100%);*/
|
|
||||||
--footer-bg: linear-gradient(135deg, #F7FAFC 0%, #E2E8F0 100%);
|
--footer-bg: linear-gradient(135deg, #F7FAFC 0%, #E2E8F0 100%);
|
||||||
--mobile-menu-bg: #FFFFFF;
|
--mobile-menu-bg: #FFFFFF;
|
||||||
--mobile-menu-text: #1A1F36;
|
--mobile-menu-text: #1A1F36;
|
||||||
@ -60,6 +74,7 @@ body.theme-dark {
|
|||||||
--bg-secondary: #151925;
|
--bg-secondary: #151925;
|
||||||
--bg-tertiary: #0F131F;
|
--bg-tertiary: #0F131F;
|
||||||
--bg-card: #222738;
|
--bg-card: #222738;
|
||||||
|
--bg-header: rgba(26, 31, 46, 0.88); /* FIX: semi-transparent for backdrop-filter */
|
||||||
--border-light: #2D3447;
|
--border-light: #2D3447;
|
||||||
--border-medium: #3A4158;
|
--border-medium: #3A4158;
|
||||||
--border-dark: #252A3A;
|
--border-dark: #252A3A;
|
||||||
@ -92,8 +107,12 @@ body {
|
|||||||
|
|
||||||
/* ===== HEADER ===== */
|
/* ===== HEADER ===== */
|
||||||
.header {
|
.header {
|
||||||
background: rgba(var(--bg-primary-rgb), 0.95); /* если нужно, но пока так */
|
/*
|
||||||
background: var(--bg-primary);
|
* FIX: Removed dead rgba(var(--bg-primary-rgb), 0.95) line — that variable
|
||||||
|
* was never defined. Now using --bg-header which is semi-transparent,
|
||||||
|
* making backdrop-filter: blur() actually visible.
|
||||||
|
*/
|
||||||
|
background: var(--bg-header);
|
||||||
border-bottom: 1px solid var(--border-dark);
|
border-bottom: 1px solid var(--border-dark);
|
||||||
box-shadow: var(--shadow-lg);
|
box-shadow: var(--shadow-lg);
|
||||||
position: sticky;
|
position: sticky;
|
||||||
@ -147,7 +166,7 @@ body {
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-actions {
|
.nav-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
@ -204,13 +223,12 @@ body {
|
|||||||
.telegram-btn:hover {
|
.telegram-btn:hover {
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: var(--shadow-lg);
|
box-shadow: var(--shadow-lg);
|
||||||
background: var(--gradient-primary);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===== HERO ===== */
|
/* ===== HERO ===== */
|
||||||
.hero-section {
|
.hero-section {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 2rem 0 2rem;
|
padding: 2rem 0;
|
||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -236,7 +254,10 @@ body {
|
|||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
-webkit-text-fill-color: transparent;
|
-webkit-text-fill-color: transparent;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
text-shadow: 0 4px 20px rgba(255, 107, 0, 0.3);
|
/*
|
||||||
|
* FIX: Removed text-shadow. When -webkit-text-fill-color is transparent,
|
||||||
|
* text-shadow has nothing to attach to and renders nothing.
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
.hero-subtitle {
|
.hero-subtitle {
|
||||||
@ -437,8 +458,12 @@ body {
|
|||||||
background: var(--bg-card);
|
background: var(--bg-card);
|
||||||
border-radius: var(--radius-xl);
|
border-radius: var(--radius-xl);
|
||||||
box-shadow: var(--shadow-lg);
|
box-shadow: var(--shadow-lg);
|
||||||
border-left: 4px solid var(--primary);
|
/*
|
||||||
|
* FIX: border shorthand must come BEFORE border-left, otherwise
|
||||||
|
* the shorthand resets border-left and the orange accent disappears.
|
||||||
|
*/
|
||||||
border: 1px solid var(--border-light);
|
border: 1px solid var(--border-light);
|
||||||
|
border-left: 4px solid var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.about-section h3 {
|
.about-section h3 {
|
||||||
@ -486,10 +511,10 @@ body {
|
|||||||
|
|
||||||
.skill-category li {
|
.skill-category li {
|
||||||
padding: 0.5rem 0;
|
padding: 0.5rem 0;
|
||||||
|
padding-left: 1.5rem;
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
border-bottom: 1px solid var(--border-dark);
|
border-bottom: 1px solid var(--border-dark);
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 1.5rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.skill-category li:before {
|
.skill-category li:before {
|
||||||
@ -518,9 +543,13 @@ body {
|
|||||||
background: var(--bg-card);
|
background: var(--bg-card);
|
||||||
border-radius: var(--radius-xl);
|
border-radius: var(--radius-xl);
|
||||||
box-shadow: var(--shadow-lg);
|
box-shadow: var(--shadow-lg);
|
||||||
border-left: 4px solid var(--secondary);
|
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
/*
|
||||||
|
* FIX: Same border-left override bug. border shorthand first,
|
||||||
|
* then border-left so the blue accent is actually rendered.
|
||||||
|
*/
|
||||||
border: 1px solid var(--border-light);
|
border: 1px solid var(--border-light);
|
||||||
|
border-left: 4px solid var(--secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-item:hover {
|
.competence-item:hover {
|
||||||
@ -621,7 +650,6 @@ body {
|
|||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Стили для страницы отзывов */
|
|
||||||
.recall-item {
|
.recall-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -701,7 +729,7 @@ body {
|
|||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
-webkit-text-fill-color: transparent;
|
-webkit-text-fill-color: transparent;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
text-shadow: 0 4px 20px rgba(255, 107, 0, 0.3);
|
/* FIX: Removed text-shadow — has no effect when fill is transparent */
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-subtitle {
|
.page-subtitle {
|
||||||
@ -716,7 +744,7 @@ body {
|
|||||||
.footer {
|
.footer {
|
||||||
background: var(--footer-bg);
|
background: var(--footer-bg);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
padding: 1rem 0 0rem;
|
padding: 1rem 0 0;
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
border-top: 1px solid var(--border-dark);
|
border-top: 1px solid var(--border-dark);
|
||||||
@ -773,7 +801,14 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ===== ANIMATIONS ===== */
|
/* ===== ANIMATIONS ===== */
|
||||||
@keyframes fadeInUp {
|
/*
|
||||||
|
* FIX: Renamed keyframes to be unambiguous:
|
||||||
|
* fadeInUp → kf-fade-in-up (used by .fade-in utility)
|
||||||
|
* fadeIn → kf-modal-fade (used by .modal)
|
||||||
|
* slideIn → kf-modal-slide (used by .modal-content)
|
||||||
|
* Previously "fadeIn" and "fadeInUp" were easily confused.
|
||||||
|
*/
|
||||||
|
@keyframes kf-fade-in-up {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(40px);
|
transform: translateY(40px);
|
||||||
@ -795,8 +830,29 @@ body {
|
|||||||
100% { background-position: 0% 50%; }
|
100% { background-position: 0% 50%; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes kf-modal-fade {
|
||||||
|
from { opacity: 0; }
|
||||||
|
to { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes kf-modal-slide {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-50px) scale(0.9);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideUpFade {
|
||||||
|
from { opacity: 0; transform: translate(-50%, 20px); }
|
||||||
|
to { opacity: 1; transform: translate(-50%, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
.fade-in {
|
.fade-in {
|
||||||
animation: fadeInUp 0.8s ease-out;
|
animation: kf-fade-in-up 0.8s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.float {
|
.float {
|
||||||
@ -833,12 +889,18 @@ body {
|
|||||||
border: 1px solid var(--border-light);
|
border: 1px solid var(--border-light);
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: visible !important;
|
overflow: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-card img {
|
/*
|
||||||
max-width: 100% !important;
|
* FIX: Replaced !important overrides with a more specific selector.
|
||||||
height: auto !important;
|
* This targets CKEditor-generated img tags without the need for !important,
|
||||||
|
* resolving the underlying specificity conflict cleanly.
|
||||||
|
*/
|
||||||
|
.content-card img,
|
||||||
|
.content-card .ck-content img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-card figure.image {
|
.content-card figure.image {
|
||||||
@ -918,26 +980,30 @@ body {
|
|||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===== MODAL ENHANCEMENTS ===== */
|
/* ===== MODAL ===== */
|
||||||
.modal {
|
.modal {
|
||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 1000;
|
/*
|
||||||
|
* FIX: z-index raised to 1100 to sit above the mobile menu (1000).
|
||||||
|
* Previously both were 1000, causing stacking conflicts when
|
||||||
|
* a modal opened while the mobile menu was open.
|
||||||
|
*/
|
||||||
|
z-index: 1100;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: rgba(15, 19, 31, 0.95);
|
background-color: rgba(15, 19, 31, 0.95);
|
||||||
backdrop-filter: blur(10px);
|
backdrop-filter: blur(10px);
|
||||||
animation: fadeIn 0.3s ease;
|
animation: kf-modal-fade 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-content {
|
.modal-content {
|
||||||
background: var(--bg-card);
|
background: var(--bg-card);
|
||||||
margin: 2% auto;
|
margin: 2% auto;
|
||||||
border-radius: var(--radius-xl);
|
border-radius: var(--radius-xl);
|
||||||
box-shadow: var(--shadow-xl);
|
box-shadow: var(--shadow-xl);
|
||||||
animation: slideIn 0.3s ease;
|
animation: kf-modal-slide 0.3s ease;
|
||||||
position: relative;
|
position: relative;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
max-height: 90vh;
|
max-height: 90vh;
|
||||||
@ -991,7 +1057,6 @@ body {
|
|||||||
transform: rotate(90deg);
|
transform: rotate(90deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Стили для модального окна с изображением */
|
|
||||||
.modal-image {
|
.modal-image {
|
||||||
max-width: 90vw;
|
max-width: 90vw;
|
||||||
max-height: 80vh;
|
max-height: 80vh;
|
||||||
@ -1001,7 +1066,7 @@ body {
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
border-radius: var(--radius-md);
|
border-radius: var(--radius-md);
|
||||||
box-shadow: var(--shadow-xl);
|
box-shadow: var(--shadow-xl);
|
||||||
transition: all 0.3s ease;
|
transition: var(--transition);
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-content.image-modal {
|
.modal-content.image-modal {
|
||||||
@ -1020,22 +1085,6 @@ body {
|
|||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from { opacity: 0; }
|
|
||||||
to { opacity: 1; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes slideIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(-50px) scale(0.9);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0) scale(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ===== SOLUTION PAGE STYLES ===== */
|
/* ===== SOLUTION PAGE STYLES ===== */
|
||||||
.solution-accordion {
|
.solution-accordion {
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
@ -1133,7 +1182,7 @@ body {
|
|||||||
border: 1px solid var(--border-light);
|
border: 1px solid var(--border-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===== THEME SWITCHER STYLES ===== */
|
/* ===== THEME SWITCHER ===== */
|
||||||
.theme-switcher {
|
.theme-switcher {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -1153,7 +1202,8 @@ body {
|
|||||||
border: 2px solid var(--border-light);
|
border: 2px solid var(--border-light);
|
||||||
border-radius: 25px;
|
border-radius: 25px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: all 0.3s ease;
|
/* FIX: replaced hardcoded "all 0.3s ease" with design token */
|
||||||
|
transition: var(--transition);
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
box-shadow: var(--shadow-sm);
|
box-shadow: var(--shadow-sm);
|
||||||
}
|
}
|
||||||
@ -1169,7 +1219,8 @@ body {
|
|||||||
height: 24px;
|
height: 24px;
|
||||||
background: var(--primary);
|
background: var(--primary);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
transition: all 0.3s ease;
|
/* FIX: replaced hardcoded "all 0.3s ease" with design token */
|
||||||
|
transition: var(--transition);
|
||||||
left: 2px;
|
left: 2px;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
@ -1182,7 +1233,8 @@ body {
|
|||||||
.theme-icon {
|
.theme-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
transition: all 0.3s ease;
|
/* FIX: replaced hardcoded "all 0.3s ease" with design token */
|
||||||
|
transition: var(--transition);
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1216,7 +1268,8 @@ body {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
transition: all 0.3s ease;
|
/* FIX: replaced hardcoded "all 0.3s ease" with design token */
|
||||||
|
transition: var(--transition);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mobile-menu-btn:hover {
|
.mobile-menu-btn:hover {
|
||||||
@ -1242,7 +1295,10 @@ body {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
background: var(--mobile-menu-bg);
|
background: var(--mobile-menu-bg);
|
||||||
box-shadow: -5px 0 15px rgba(0, 0, 0, 0.3);
|
box-shadow: -5px 0 15px rgba(0, 0, 0, 0.3);
|
||||||
transition: right 0.3s ease;
|
/* FIX: replaced hardcoded "right 0.3s ease" — keep explicit here since
|
||||||
|
we're only transitioning the right property, which is intentional */
|
||||||
|
transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
/* FIX: z-index kept at 1000, below modal (1100) */
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: 2rem 1.5rem;
|
padding: 2rem 1.5rem;
|
||||||
@ -1273,7 +1329,8 @@ body {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
transition: all 0.3s ease;
|
/* FIX: replaced hardcoded "all 0.3s ease" with design token */
|
||||||
|
transition: var(--transition);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mobile-menu-close:hover {
|
.mobile-menu-close:hover {
|
||||||
@ -1295,7 +1352,8 @@ body {
|
|||||||
color: var(--mobile-menu-text);
|
color: var(--mobile-menu-text);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
transition: all 0.3s ease;
|
/* FIX: replaced hardcoded "all 0.3s ease" with design token */
|
||||||
|
transition: var(--transition);
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1577,6 +1635,11 @@ body {
|
|||||||
.modal-body.image-modal-body {
|
.modal-body.image-modal-body {
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cookie-bottom {
|
||||||
|
max-width: 90%;
|
||||||
|
bottom: 10px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 769px) {
|
@media (min-width: 769px) {
|
||||||
@ -1604,11 +1667,6 @@ body {
|
|||||||
animation: slideUpFade 0.3s ease;
|
animation: slideUpFade 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes slideUpFade {
|
|
||||||
from { opacity: 0; transform: translate(-50%, 20px); }
|
|
||||||
to { opacity: 1; transform: translate(-50%, 0); }
|
|
||||||
}
|
|
||||||
|
|
||||||
.cookie-bottom-content {
|
.cookie-bottom-content {
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -1638,10 +1696,3 @@ body {
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 480px) {
|
|
||||||
.cookie-bottom {
|
|
||||||
max-width: 90%;
|
|
||||||
bottom: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user