Files
watersurf-erp/app/static/css/theme.css

527 lines
12 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.
/* ERP WaterSurf — только цвета и шрифты из брендбука */
/* Основные цвета бренда (базовые): White, Gray 0104, Black */
:root {
--ws-white: #FFFFFF;
--ws-gray-01: #F5F9FD;
--ws-gray-02: #DCE7EF;
--ws-gray-03: #B1C7D7;
--ws-gray-04: #617E92;
--ws-black: #0A121D;
/* Дополнительные цвета бренда — только для акцента и состояний */
--ws-accent: #34AFE3; /* Blue (02) — дополнительный */
--ws-accent-hover: #00868F; /* Blue (03) — дополнительный */
--ws-accent-light: #E3F7FF; /* Blue (01) */
--ws-danger: #FF3A20; /* Red (02) */
--ws-danger-dark: #AA1400; /* Red (03) */
--ws-success: #13AD53; /* Green (02) */
/* Фон страницы и поверхностей — только из основных */
--ws-bg-page: #0A121D;
--ws-bg-surface: #0A121D;
--ws-bg-elevated: #0A121D;
--ws-bg-hover: #0f1823;
--ws-border: #617E92;
--ws-border-focus: #34AFE3;
--ws-text: #F5F9FD;
--ws-text-muted: #B1C7D7;
--ws-text-secondary: #617E92;
--ws-danger-bg: rgba(255, 58, 32, 0.12);
--ws-success-bg: rgba(19, 173, 83, 0.12);
--ws-radius: 8px;
--ws-radius-sm: 6px;
--ws-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
--ws-font: "Geologica", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
/* Жёсткое переопределение Bootstrap: фон и шрифт по брендбуку */
html {
scroll-behavior: smooth;
background: var(--ws-bg-page) !important;
}
body {
background: var(--ws-bg-page) !important;
color: var(--ws-text) !important;
font-family: var(--ws-font) !important;
font-weight: 300 !important;
font-size: 16px !important;
line-height: 1.5 !important;
letter-spacing: -0.02em !important;
min-height: 100vh;
-webkit-font-smoothing: antialiased;
}
* {
box-sizing: border-box;
}
/* Типографика: Geologica, веса по брендбуку */
.ws-page-title {
font-family: var(--ws-font) !important;
font-size: 24px;
line-height: 1.25;
letter-spacing: -0.02em;
font-weight: 700;
margin-bottom: 1rem;
color: var(--ws-text);
}
.ws-form-section-title {
font-family: var(--ws-font) !important;
font-size: 20px;
line-height: 1.3;
letter-spacing: -0.02em;
font-weight: 500;
margin-bottom: 0.75rem;
color: var(--ws-text);
}
/* Навбар — без лого, только текст */
.navbar-ws {
background: var(--ws-bg-surface) !important;
border-bottom: 1px solid var(--ws-border) !important;
padding: 0.5rem 0;
}
.navbar-ws .navbar-brand {
color: var(--ws-text) !important;
font-family: var(--ws-font) !important;
font-weight: 700 !important;
font-size: 1.1rem !important;
letter-spacing: -0.02em !important;
}
.navbar-ws .navbar-brand:hover {
color: var(--ws-accent) !important;
}
.navbar-ws .nav-link {
color: var(--ws-text-muted) !important;
font-family: var(--ws-font) !important;
border-radius: var(--ws-radius-sm);
padding: 0.4rem 0.75rem !important;
font-weight: 300;
}
.navbar-ws .nav-link:hover {
color: var(--ws-text) !important;
background: var(--ws-bg-hover) !important;
}
.navbar-ws .dropdown-menu {
background: var(--ws-bg-surface) !important;
border: 1px solid var(--ws-border) !important;
border-radius: var(--ws-radius);
box-shadow: var(--ws-shadow);
padding: 0.25rem;
}
.navbar-ws .dropdown-item {
color: var(--ws-text) !important;
font-family: var(--ws-font) !important;
border-radius: var(--ws-radius-sm);
}
.navbar-ws .dropdown-item:hover {
background: var(--ws-bg-hover) !important;
color: var(--ws-text) !important;
}
.navbar-ws .navbar-text {
color: var(--ws-text-muted) !important;
font-family: var(--ws-font) !important;
font-size: 14px;
letter-spacing: -0.01em;
}
.navbar-ws .navbar-toggler {
border-color: var(--ws-border) !important;
color: var(--ws-text) !important;
}
.navbar-ws .navbar-toggler-icon {
filter: invert(1);
}
/* Контент */
.ws-main {
max-width: 1200px;
margin: 0 auto;
padding: 1.5rem 1rem 3rem;
background: var(--ws-bg-page) !important;
}
/* Карточки — поверхности из основных цветов, граница Gray 04 */
.ws-card {
background: var(--ws-bg-surface) !important;
border: 1px solid var(--ws-border) !important;
border-radius: var(--ws-radius);
padding: 1.25rem;
margin-bottom: 1rem;
}
.ws-card-header {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 0.75rem;
margin-bottom: 1rem;
}
/* Таблицы */
.ws-table-wrap {
overflow-x: auto;
border-radius: var(--ws-radius);
border: 1px solid var(--ws-border);
background: var(--ws-bg-surface) !important;
}
.ws-table {
width: 100%;
border-collapse: collapse;
color: var(--ws-text) !important;
font-family: var(--ws-font) !important;
}
.ws-table th,
.ws-table td {
padding: 0.75rem 1rem;
text-align: left;
border-bottom: 1px solid var(--ws-border) !important;
}
.ws-table th {
background: var(--ws-bg-elevated) !important;
font-weight: 500 !important;
font-size: 14px;
letter-spacing: -0.01em;
color: var(--ws-text-secondary) !important;
}
.ws-table tbody tr:hover {
background: var(--ws-bg-hover) !important;
}
.ws-table tbody tr:last-child td {
border-bottom: none;
}
.ws-table .ws-actions {
white-space: nowrap;
}
.ws-table .ws-link {
color: var(--ws-accent) !important;
text-decoration: none;
font-size: 14px;
}
.ws-table .ws-link:hover {
color: var(--ws-accent-hover) !important;
text-decoration: underline;
}
.ws-table .ws-link-danger {
color: var(--ws-danger) !important;
}
.ws-table .ws-link-danger:hover {
color: var(--ws-danger-dark) !important;
}
/* Кнопки — акцент только из дополнительных (Blue 02) */
.btn-ws-primary {
background: var(--ws-accent) !important;
color: var(--ws-black) !important;
border: none !important;
border-radius: var(--ws-radius-sm);
padding: 0.5rem 1rem;
font-family: var(--ws-font) !important;
font-weight: 500 !important;
font-size: 14px;
letter-spacing: -0.01em;
}
.btn-ws-primary:hover {
background: var(--ws-accent-hover) !important;
color: var(--ws-white) !important;
}
.btn-ws-secondary {
background: transparent !important;
color: var(--ws-text-muted) !important;
border: 1px solid var(--ws-border) !important;
border-radius: var(--ws-radius-sm);
padding: 0.5rem 1rem;
font-family: var(--ws-font) !important;
font-size: 14px;
}
.btn-ws-secondary:hover {
background: var(--ws-bg-hover) !important;
color: var(--ws-text) !important;
border-color: var(--ws-gray-04) !important;
}
.btn-ws-danger {
background: var(--ws-danger-bg) !important;
color: var(--ws-danger) !important;
border: 1px solid var(--ws-danger) !important;
border-radius: var(--ws-radius-sm);
padding: 0.5rem 1rem;
font-family: var(--ws-font) !important;
font-size: 14px;
}
.btn-ws-danger:hover {
background: var(--ws-danger) !important;
color: var(--ws-white) !important;
}
.ws-btn-group {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
align-items: center;
}
/* Формы — шрифт Geologica, границы из основных */
.ws-form-group {
margin-bottom: 1rem;
}
.ws-form-group label {
display: block;
font-family: var(--ws-font) !important;
font-weight: 500;
font-size: 14px;
letter-spacing: -0.01em;
color: var(--ws-text-muted);
margin-bottom: 0.35rem;
}
.ws-form-group input,
.ws-form-group select,
.ws-form-group textarea {
width: 100%;
max-width: 400px;
padding: 0.5rem 0.75rem;
background: var(--ws-black) !important;
border: 1px solid var(--ws-border) !important;
border-radius: var(--ws-radius-sm);
color: var(--ws-text) !important;
font-family: var(--ws-font) !important;
font-size: 15px;
}
.ws-form-group input:focus,
.ws-form-group select:focus,
.ws-form-group textarea:focus {
outline: none !important;
border-color: var(--ws-border-focus) !important;
box-shadow: 0 0 0 2px rgba(52, 175, 227, 0.25) !important;
}
.ws-form-group input::placeholder,
.ws-form-group textarea::placeholder {
color: var(--ws-text-secondary);
opacity: 0.9;
}
.ws-form-login input,
.ws-form-login input[type="text"],
.ws-form-login input[type="password"] {
width: 100%;
max-width: 100%;
padding: 0.5rem 0.75rem;
background: var(--ws-black) !important;
border: 1px solid var(--ws-border) !important;
border-radius: var(--ws-radius-sm);
color: var(--ws-text) !important;
font-family: var(--ws-font) !important;
font-size: 15px;
}
.ws-form-login input:focus {
outline: none !important;
border-color: var(--ws-border-focus) !important;
box-shadow: 0 0 0 2px rgba(52, 175, 227, 0.25) !important;
}
.ws-text-danger {
color: var(--ws-danger);
font-size: 14px;
display: block;
margin-top: 0.25rem;
}
.ws-form-section {
margin-top: 1.5rem;
padding-top: 1.25rem;
border-top: 1px solid var(--ws-border);
}
/* Сообщения (alerts) */
.ws-alert {
padding: 0.75rem 1rem;
border-radius: var(--ws-radius-sm);
margin-bottom: 1rem;
border: 1px solid transparent;
font-family: var(--ws-font) !important;
}
.ws-alert-success {
background: var(--ws-success-bg) !important;
color: var(--ws-success) !important;
border-color: rgba(19, 173, 83, 0.3) !important;
}
.ws-alert-error,
.ws-alert-danger {
background: var(--ws-danger-bg) !important;
color: var(--ws-danger) !important;
border-color: rgba(255, 58, 32, 0.3) !important;
}
.ws-alert-warning {
background: rgba(255, 136, 0, 0.12) !important;
color: #FF8800 !important;
border-color: rgba(255, 136, 0, 0.3) !important;
}
.ws-alert .btn-close {
filter: invert(1);
opacity: 0.7;
}
.ws-empty {
text-align: center;
padding: 2rem 1rem;
color: var(--ws-text-secondary);
font-family: var(--ws-font) !important;
font-size: 15px;
}
.ws-login-card {
max-width: 380px;
margin: 2rem auto;
padding: 2rem;
}
.ws-login-title {
font-family: var(--ws-font) !important;
font-size: 24px;
line-height: 1.25;
letter-spacing: -0.02em;
font-weight: 700;
margin-bottom: 1.5rem;
text-align: center;
color: var(--ws-text);
}
.ws-hero {
padding: 2rem 0;
text-align: center;
}
.ws-hero h1 {
font-family: var(--ws-font) !important;
font-size: 32px;
line-height: 1.25;
letter-spacing: -0.02em;
font-weight: 700;
margin-bottom: 0.5rem;
color: var(--ws-text);
}
.ws-hero p {
color: var(--ws-text-muted);
font-family: var(--ws-font) !important;
font-size: 16px;
line-height: 1.5;
}
.ws-confirm-text {
color: var(--ws-text-muted);
margin-bottom: 1.25rem;
}
/* Таблица в форме заказа */
.ws-table input.form-control,
.ws-table select.form-select,
.ws-table input[type="text"],
.ws-table input[type="number"],
.ws-table select {
background: var(--ws-black) !important;
border: 1px solid var(--ws-border) !important;
color: var(--ws-text) !important;
padding: 0.4rem 0.5rem;
font-family: var(--ws-font) !important;
font-size: 14px;
}
.ws-form-card .ws-form-group input,
.ws-form-card .ws-form-group select,
.ws-form-card .ws-form-group textarea {
max-width: 100%;
}
.ws-table input[type="checkbox"] {
width: 1rem;
height: 1rem;
accent-color: var(--ws-accent);
}
.ws-table input:focus,
.ws-table select:focus {
border-color: var(--ws-border-focus) !important;
box-shadow: 0 0 0 2px rgba(52, 175, 227, 0.2) !important;
}
.ws-table .ws-num {
text-align: right;
font-variant-numeric: tabular-nums;
}
/* Переопределение Bootstrap: кнопки и инпуты в контенте */
.ws-main .btn-primary {
background: var(--ws-accent) !important;
border-color: var(--ws-accent) !important;
color: var(--ws-black) !important;
font-family: var(--ws-font) !important;
}
.ws-main .btn-primary:hover {
background: var(--ws-accent-hover) !important;
border-color: var(--ws-accent-hover) !important;
color: var(--ws-white) !important;
}
.ws-main .form-control,
.ws-main .form-select {
background: var(--ws-black) !important;
border-color: var(--ws-border) !important;
color: var(--ws-text) !important;
font-family: var(--ws-font) !important;
}
.ws-main .form-control:focus,
.ws-main .form-select:focus {
border-color: var(--ws-border-focus) !important;
box-shadow: 0 0 0 0.25rem rgba(52, 175, 227, 0.25) !important;
}
.ws-main .form-control::placeholder {
color: var(--ws-text-secondary);
}
.ws-main h1, .ws-main h2, .ws-main h3, .ws-main h4 {
font-family: var(--ws-font) !important;
color: var(--ws-text) !important;
}
.ws-main p, .ws-main label, .ws-main td, .ws-main th, .ws-main li {
font-family: var(--ws-font) !important;
}