Files
2026-etpgrf-site/public/static/css/etpgrf.css
erjemin 8a5be30e84
All checks were successful
Build ETPGRF-site / build (push) Successful in 1m43s
mod: исправления для v0.2.1
2026-01-31 01:55:40 +03:00

391 lines
9.5 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* === ЦВЕТОВАЯ СХЕМА === */
:root {
/* Светлая тема: Темно-серый с легкой желтизной (Warm Charcoal) */
--bs-body-bg: #f8f8f2;
--bs-body-color: #1f1f19;
--bs-primary: #4a4a44;
--bs-primary-rgb: 74, 74, 68;
--bs-link-color: #4a4a44;
--bs-link-hover-color: #2e2e2a;
--bs-focus-ring-color: rgba(74, 74, 68, 0.25);
/* Фон навбара в светлой теме */
--bs-navbar-bg: #b8b8d055; /* Тот же, что и body, или чуть темнее */
--bs-navbar-color: #1f1f19;
}
[data-bs-theme="dark"] {
/* Темная тема: Глубокий черный фон и Стальной акцент */
--bs-body-bg: #151111;
--bs-body-color: #eceff1;
/* Акцент: Светлый серо-голубой */
--bs-primary: #b0bec5;
--bs-primary-rgb: 176, 190, 197;
--bs-link-color: #90caf9;
--bs-link-hover-color: #bbdefb;
--bs-linkcolor: #14abda;
--bs-linkclolor-hover: #90caf9;
--bs-border-color: #37474f;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
/* Цвет фокуса для полей ввода */
--bs-focus-ring-color: rgba(176, 190, 197, 0.25);
/* Фон навбара в темной теме */
--bs-navbar-bg: #55558555;
--bs-navbar-color: #b0bec5;
}
/* Небольшие стили для красоты */
html {
height: 100%;
}
body {
min-height: 100%; /* Используем min-height вместо height */
background-color: var(--bs-body-bg);
display: flex;
flex-direction: column;
}
#main-navbar {
z-index: 1000;
background-color: var(--bs-navbar-bg) !important;
border-bottom: 1px solid var(--bs-border-color);
padding: 0;
position: sticky;
top: 0;
backdrop-filter: blur(8px); /* Эффект размытия */
box-shadow: 0 -25px 30px 15px var(--bs-border-color);
/* transition: height 0.3s ease, background-color 0.3s ease; /* Анимация высоты */
}
#main-navbar > .container {
background: no-repeat left;
background-size: contain;
position: relative; /* Для абсолютного позиционирования бургера */
}
#main-navbar > .container.logo-big {
background-image: var(--bg-image-text);
transition: .4s ease;
}
#main-navbar > .container:not(.logo-big) {
background-image: none;
transition: .4s ease;
}
#main-navbar > #logo > .navbar-brand {
padding: 0; /* Убираем отступы у бренда */
display: block; /* Блок, чтобы работали размеры */
background: no-repeat left;
background-size: contain;
margin-left: -1.5%;
}
#main-navbar > #logo.logo-big > .navbar-brand {
height: 105px;
width: 500px;
opacity: 1;
transition: .4s ease;
}
#main-navbar > #logo:not(.logo-big) > .navbar-brand {
height: 60px;
width: 285px;
transition: .4s ease;
opacity: 0;
}
/* --- Бургер меню --- */
#main-navbar > #logo > .navbar-toggler {
position: absolute;
right: 0.75rem; /* Отступ справа как у контейнера */
transition: top 0.4s ease; /* Анимация позиции */
z-index: 1001;
}
#main-navbar > #logo.logo-big > .navbar-toggler {
top: 32px; /* Центрируем для высоты 105px */
}
/* При скролле меняем позицию бургера */
#main-navbar > #logo:not(.logo-big) > .navbar-toggler {
top: 10px; /* Центрируем для высоты 60px */
}
/* --- Стили для ссылок в меню --- */
.nav-item {
color: var(--bs-body-bg);
padding: 10px 15px;
text-decoration: none;
position: relative;
}
/* Фикс для мобильных версий: ширина по контенту, прижатие вправо, логотипы */
@media (max-width: 991.98px) {
.nav-item {
width: fit-content;
margin-left: auto;
}
.navbar-collapse {
margin-top: -10px;
}
}
@media (max-width: 767.98px) {
#main-navbar > #logo > .navbar-brand {
background: none !important;
}
}
@media (max-width: 456.98px) {
#main-navbar > .container {
background: no-repeat left;
background-size: 105px 500px !important;
}
}
.nav-item:hover {
background-color: var(--bs-navbar-bg);
transition: background-color 0.8s;
}
.nav-item::after {
content: '';
position: absolute;
width: 100%;
height: 3px;
background: var(--bs-linkcolor);
bottom: 0;
left: 0;
transform: scaleX(0);
transition: transform 0.3s;
}
.nav-item:hover::after {
transform: scaleX(1);
}
/* Контент растягивается, чтобы прижать футер */
#content-container {
flex: 1 0 auto;
}
/* Футер */
footer.footer {
flex-shrink: 0;
padding: 1rem 0;
margin-top: 2rem;
border-top: 1px solid var(--bs-border-color);
background-color: var(--bs-navbar-bg);
color: var(--bs-navbar-color);
font-size: 0.9rem;
}
footer.footer a {
color: var(--bs-primary);
text-decoration: none;
border-bottom: 1px dotted var(--bs-primary);
}
footer.footer a:hover {
border-bottom-style: solid;
color: var(--bs-link-hover-color);
}
/* === ПЕРЕОПРЕДЕЛЕНИЕ КОМПОНЕНТОВ BOOTSTRAP === */
/* Кнопки Primary */
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-link-hover-color);
--bs-btn-hover-border-color: var(--bs-link-hover-color);
--bs-btn-active-bg: var(--bs-link-hover-color);
--bs-btn-active-border-color: var(--bs-link-hover-color);
}
/* В темной теме текст на кнопке должен быть темным */
[data-bs-theme="dark"] .btn-primary {
--bs-btn-color: #151111;
--bs-btn-hover-color: #151111;
--bs-btn-active-color: #151111;
}
/* Чекбоксы и Радио */
.form-check-input:checked {
background-color: var(--bs-primary);
border-color: var(--bs-primary);
}
/* В темной теме галочка должна быть темной */
[data-bs-theme="dark"] .form-check-input:checked {
/* SVG галочки черного цвета (закодирован в base64) */
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23151111' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}
/* Фокус на полях ввода */
.form-control:focus, .form-select:focus, .form-check-input:focus {
border-color: var(--bs-primary);
box-shadow: 0 0 0 0.25rem var(--bs-focus-ring-color);
}
.result-box {
background: var(--bs-body-bg);
color: var(--bs-body-color);
border: 1px solid var(--bs-border-color);
border-radius: 0.375rem;
min-height: 300px;
padding: 1rem 1.5rem;
white-space: pre-wrap;
font-family: inherit;
}
.cm-editor {
border: 1px solid var(--bs-border-color);
border-radius: 0.375rem;
height: 300px;
}
/* --- Висячая пунктуация (Hanging Punctuation) --- */
.result-box .etp-laquo {
margin-left: -0.44em;
}
.result-box .etp-ldquo {
margin-left: -0.44em;
}
.result-box .etp-lpar {
margin-left: -0.3em;
}
.result-box .etp-lsqb {
margin-left: -0.3em;
}
.result-box .etp-lcub {
margin-left: -0.3em;
}
.result-box .etp-raquo {
margin-right: -0.44em;
}
.result-box .etp-rdquo {
margin-right: -0.44em;
}
.result-box .etp-rpar {
margin-right: -0.3em;
}
.result-box .etp-rsqb {
margin-right: -0.3em;
}
.result-box .etp-rcub {
margin-right: -0.3em;
}
.result-box .etp-r-dot {
margin-right: -0.2em;
}
.result-box .etp-r-comma {
margin-right: -0.2em;
}
.result-box .etp-r-colon {
margin-right: -0.2em;
}
/* --- Стили для Cookie Banner --- */
#cookie-banner {
backdrop-filter: blur(10px);
border-top: 1px solid var(--bs-border-color);
z-index: 1050;
background-color: var(--bs-navbar-bg);
color: var(--bs-navbar-color); /* Используем цвет навбара для текста */
}
#cookie-banner a {
color: var(--bs-primary);
text-decoration: none;
border-bottom: 1px dotted var(--bs-primary);
}
#cookie-banner a:hover {
border-bottom-style: solid;
color: var(--bs-link-hover-color);
}
#cookie-accept {
color: var(--bs-primary);
border: 1px dashed var(--bs-primary);
background: transparent;
}
#cookie-accept:hover {
background: rgba(var(--bs-primary-rgb), 0.1);
}
/* --- Стили для контента блога (Typography) --- */
.post-page-content {
padding-bottom: 2rem;
margin-bottom: 6rem;
}
.post-page-content h1, .post-page-content h2, .post-page-content h3,
.post-page-content h4, .post-page-content h5, .post-page-content h6 {
color: var(--bs-body-color);
opacity: 90%;
font-weight: 300;
padding-top: 1rem;
padding-bottom: 0.5rem;
}
.post-page-content p, .post-page-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
font-size: 1.1rem;
}
.post-page-content > div.lead {
font-size: 1.25rem;
font-weight: 400;
opacity: 95%;
border: 1px dashed var(--bs-border-color);
}
.post-page-content > div.lead > p {
margin-bottom: 0;
padding: 0.5rem;
}
.post-content ul, .page-content ul,
.post-content ol, .page-content ol {
margin-bottom: 1.5rem;
}
.post-content blockquote, .page-content blockquote {
border-left: 4px solid var(--bs-primary);
padding-left: 1rem;
margin: 1.5rem 0;
font-style: italic;
/*color: var(--bs-secondary-color);*/
}
.post-page-content a {
color: var(--bs-linkcolor);
text-decoration: none;
border-bottom: 1px dotted var(--bs-linkcolor);
}
.post-page-content a:hover {
color: var(--bs-linkclolor-hover);
border-bottom: 1px solid var(--bs-linkclolor-hover);
}