515 lines
12 KiB
CSS
515 lines
12 KiB
CSS
/* ============================================================
|
||
Тема Redmine — ТСН Бризе
|
||
Стиль: современный минимализм, природная палитра
|
||
Версия: 1.0 | 2026
|
||
============================================================ */
|
||
|
||
/* --- Переменные палитры ------------------------------------ */
|
||
:root {
|
||
--brize-dark: #1d3a1d; /* шапка, заголовки */
|
||
--brize-mid: #2d5a2d; /* акцент, кнопки */
|
||
--brize-accent: #4a8a44; /* ссылки, иконки */
|
||
--brize-light: #eef1eb; /* фон сайдбара, тулбара */
|
||
--brize-bg: #f5f7f4; /* фон страницы */
|
||
--brize-border: #d0d8cc; /* бордеры */
|
||
--brize-text: #1a2e1a; /* основной текст */
|
||
--brize-muted: #6a9260; /* вспомогательный текст */
|
||
--brize-header-fg: #a8c8a0; /* текст в шапке */
|
||
--brize-header-link:#7aaa72; /* ссылки в шапке */
|
||
--brize-urgent: #c05028; /* аварийное */
|
||
}
|
||
|
||
/* --- Шрифты ------------------------------------------------ */
|
||
@import url('https://fonts.googleapis.com/css2?family=Geologica:wght@300;400;500&family=Unbounded:wght@400;500&display=swap');
|
||
|
||
body {
|
||
font-family: 'Geologica', -apple-system, sans-serif;
|
||
font-size: 13px;
|
||
color: var(--brize-text);
|
||
background: var(--brize-bg);
|
||
}
|
||
|
||
/* --- Шапка (header) --------------------------------------- */
|
||
#header {
|
||
background: var(--brize-dark) !important;
|
||
border-bottom: none !important;
|
||
box-shadow: none !important;
|
||
padding: 0 24px;
|
||
height: 52px;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
#header h1,
|
||
#header h1 a {
|
||
font-family: 'Unbounded', sans-serif !important;
|
||
font-size: 13px !important;
|
||
font-weight: 400 !important;
|
||
color: var(--brize-header-fg) !important;
|
||
letter-spacing: .04em;
|
||
text-decoration: none;
|
||
}
|
||
|
||
#header h1 a:hover {
|
||
color: #c8e8c0 !important;
|
||
}
|
||
|
||
/* Навигация в шапке */
|
||
#navigation {
|
||
background: transparent !important;
|
||
border: none !important;
|
||
}
|
||
|
||
#navigation ul li a,
|
||
#navigation ul li a:visited {
|
||
color: var(--brize-header-link) !important;
|
||
font-family: 'Geologica', sans-serif;
|
||
font-size: 12px;
|
||
padding: 6px 10px;
|
||
border-radius: 5px;
|
||
transition: background .15s, color .15s;
|
||
}
|
||
|
||
#navigation ul li a:hover,
|
||
#navigation ul li.selected a {
|
||
background: rgba(120, 180, 110, .15) !important;
|
||
color: #c8e8c0 !important;
|
||
}
|
||
|
||
/* Пользовательское меню */
|
||
#loggedas,
|
||
#account {
|
||
color: var(--brize-header-link) !important;
|
||
font-size: 12px;
|
||
}
|
||
|
||
#account a,
|
||
#loggedas a {
|
||
color: var(--brize-header-link) !important;
|
||
}
|
||
|
||
/* Поиск в шапке */
|
||
#header #quick-search input {
|
||
background: rgba(255,255,255,.08) !important;
|
||
border: 0.5px solid rgba(255,255,255,.15) !important;
|
||
color: #c8e8c0 !important;
|
||
border-radius: 6px;
|
||
font-size: 12px;
|
||
}
|
||
|
||
#header #quick-search input::placeholder {
|
||
color: rgba(168, 200, 160, .5);
|
||
}
|
||
|
||
/* --- Основной layout -------------------------------------- */
|
||
#main {
|
||
background: var(--brize-bg);
|
||
}
|
||
|
||
#sidebar {
|
||
background: var(--brize-light);
|
||
border-right: 0.5px solid var(--brize-border);
|
||
}
|
||
|
||
#content {
|
||
background: var(--brize-bg);
|
||
}
|
||
|
||
/* --- Сайдбар ---------------------------------------------- */
|
||
#sidebar h3,
|
||
#sidebar h4 {
|
||
font-family: 'Geologica', sans-serif;
|
||
font-size: 10px;
|
||
font-weight: 500;
|
||
color: var(--brize-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: .08em;
|
||
border-bottom: none;
|
||
padding-bottom: 4px;
|
||
margin-bottom: 4px;
|
||
}
|
||
|
||
#sidebar ul li a {
|
||
color: var(--brize-accent) !important;
|
||
font-size: 12px;
|
||
padding: 4px 8px;
|
||
border-radius: 5px;
|
||
display: block;
|
||
}
|
||
|
||
#sidebar ul li a:hover {
|
||
background: rgba(60, 110, 55, .08);
|
||
color: var(--brize-mid) !important;
|
||
}
|
||
|
||
/* --- Тулбар над контентом --------------------------------- */
|
||
#main-menu,
|
||
div.contextual {
|
||
background: var(--brize-light);
|
||
border-bottom: 0.5px solid var(--brize-border);
|
||
}
|
||
|
||
/* --- Заголовки страниц ------------------------------------ */
|
||
h1, h2 {
|
||
font-family: 'Unbounded', sans-serif !important;
|
||
font-weight: 400 !important;
|
||
color: var(--brize-dark) !important;
|
||
letter-spacing: -.01em;
|
||
}
|
||
|
||
h1 { font-size: 18px !important; margin-bottom: 16px; }
|
||
h2 { font-size: 14px !important; margin-bottom: 10px; }
|
||
h3 { font-size: 13px; font-weight: 500; color: var(--brize-dark); }
|
||
|
||
/* --- Ссылки ----------------------------------------------- */
|
||
a, a:visited {
|
||
color: var(--brize-accent) !important;
|
||
text-decoration: none;
|
||
}
|
||
|
||
a:hover {
|
||
color: var(--brize-mid) !important;
|
||
text-decoration: underline;
|
||
}
|
||
|
||
/* --- Кнопки ----------------------------------------------- */
|
||
.button,
|
||
input[type=submit],
|
||
input[type=button],
|
||
a.button {
|
||
background: var(--brize-mid) !important;
|
||
color: #c8e8c0 !important;
|
||
border: none !important;
|
||
border-radius: 6px !important;
|
||
font-family: 'Geologica', sans-serif !important;
|
||
font-size: 12px !important;
|
||
font-weight: 400 !important;
|
||
padding: 6px 14px !important;
|
||
cursor: pointer;
|
||
transition: background .15s;
|
||
}
|
||
|
||
.button:hover,
|
||
input[type=submit]:hover,
|
||
a.button:hover {
|
||
background: var(--brize-dark) !important;
|
||
color: #c8e8c0 !important;
|
||
}
|
||
|
||
/* Второстепенные кнопки */
|
||
a.icon, .icon-only {
|
||
color: var(--brize-accent) !important;
|
||
}
|
||
|
||
/* --- Таблица задач ---------------------------------------- */
|
||
table.list {
|
||
border-collapse: collapse;
|
||
width: 100%;
|
||
background: #fff;
|
||
border: 0.5px solid var(--brize-border);
|
||
border-radius: 8px;
|
||
overflow: hidden;
|
||
}
|
||
|
||
table.list thead th {
|
||
background: var(--brize-light) !important;
|
||
color: var(--brize-muted) !important;
|
||
font-size: 10px;
|
||
font-weight: 500;
|
||
text-transform: uppercase;
|
||
letter-spacing: .05em;
|
||
border-bottom: 0.5px solid var(--brize-border) !important;
|
||
padding: 8px 12px;
|
||
}
|
||
|
||
table.list thead th a {
|
||
color: var(--brize-muted) !important;
|
||
}
|
||
|
||
table.list tbody tr td {
|
||
padding: 8px 12px;
|
||
border-top: 0.5px solid #e8ede4;
|
||
font-size: 12px;
|
||
color: var(--brize-text);
|
||
}
|
||
|
||
table.list tbody tr:hover td {
|
||
background: #f8faf6;
|
||
}
|
||
|
||
table.list tbody tr.odd td {
|
||
background: transparent;
|
||
}
|
||
|
||
table.list tbody tr.even td {
|
||
background: #fafcf8;
|
||
}
|
||
|
||
table.list tbody tr.even:hover td,
|
||
table.list tbody tr.odd:hover td {
|
||
background: #f2f6ef;
|
||
}
|
||
|
||
/* --- Статусы задач (badges) ------------------------------- */
|
||
.issue-status-label,
|
||
span.status {
|
||
display: inline-block;
|
||
font-size: 10px;
|
||
font-weight: 500;
|
||
padding: 2px 8px;
|
||
border-radius: 10px;
|
||
}
|
||
|
||
/* Настрой под свои реальные имена статусов */
|
||
.status-new, [class*="New"] { background: #e8ede4; color: #3d5e38; }
|
||
.status-in-progress, [class*="In Progress"] { background: #ddeef8; color: #1a5080; }
|
||
.status-resolved, [class*="Resolved"] { background: #d8ecd0; color: #2a5824; }
|
||
.status-closed, [class*="Closed"] { background: #f0ede8; color: #5a5450; }
|
||
.status-urgent { background: #fde8e0; color: #8a3020; }
|
||
|
||
/* --- Приоритеты ------------------------------------------- */
|
||
.priority-urgent, .priority-immediate {
|
||
color: var(--brize-urgent) !important;
|
||
font-weight: 500;
|
||
}
|
||
|
||
/* --- Блок деталей задачи ---------------------------------- */
|
||
#issue-detail,
|
||
.issue.details {
|
||
background: #fff;
|
||
border: 0.5px solid var(--brize-border);
|
||
border-radius: 8px;
|
||
padding: 20px 24px;
|
||
}
|
||
|
||
.issue.details h3 {
|
||
border-bottom: 0.5px solid var(--brize-border);
|
||
padding-bottom: 8px;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
/* Атрибуты задачи */
|
||
table.attributes th {
|
||
color: var(--brize-muted);
|
||
font-size: 11px;
|
||
font-weight: 500;
|
||
text-align: right;
|
||
padding-right: 12px;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
table.attributes td {
|
||
font-size: 12px;
|
||
color: var(--brize-text);
|
||
}
|
||
|
||
/* --- Журнал (комментарии) --------------------------------- */
|
||
div.journal {
|
||
background: #fff;
|
||
border: 0.5px solid var(--brize-border);
|
||
border-radius: 8px;
|
||
margin-bottom: 10px;
|
||
overflow: hidden;
|
||
}
|
||
|
||
div.journal h4 {
|
||
background: var(--brize-light);
|
||
padding: 8px 14px;
|
||
font-size: 11px;
|
||
font-weight: 500;
|
||
color: var(--brize-muted);
|
||
border-bottom: 0.5px solid var(--brize-border);
|
||
margin: 0;
|
||
}
|
||
|
||
div.journal .wiki {
|
||
padding: 12px 14px;
|
||
font-size: 13px;
|
||
line-height: 1.6;
|
||
}
|
||
|
||
/* --- Wiki ------------------------------------------------- */
|
||
#wiki {
|
||
background: #fff;
|
||
border: 0.5px solid var(--brize-border);
|
||
border-radius: 8px;
|
||
padding: 24px;
|
||
line-height: 1.7;
|
||
}
|
||
|
||
#wiki h1, #wiki h2, #wiki h3 {
|
||
border-bottom: 0.5px solid var(--brize-border);
|
||
padding-bottom: 6px;
|
||
}
|
||
|
||
#wiki table {
|
||
border-collapse: collapse;
|
||
width: 100%;
|
||
}
|
||
|
||
#wiki table th {
|
||
background: var(--brize-light);
|
||
padding: 6px 10px;
|
||
font-size: 12px;
|
||
text-align: left;
|
||
border: 0.5px solid var(--brize-border);
|
||
}
|
||
|
||
#wiki table td {
|
||
padding: 6px 10px;
|
||
font-size: 12px;
|
||
border: 0.5px solid var(--brize-border);
|
||
}
|
||
|
||
/* --- Формы ------------------------------------------------- */
|
||
input[type=text],
|
||
input[type=email],
|
||
input[type=password],
|
||
textarea,
|
||
select {
|
||
font-family: 'Geologica', sans-serif !important;
|
||
font-size: 13px !important;
|
||
border: 0.5px solid var(--brize-border) !important;
|
||
border-radius: 6px !important;
|
||
padding: 6px 10px !important;
|
||
background: #fff !important;
|
||
color: var(--brize-text) !important;
|
||
transition: border-color .15s;
|
||
}
|
||
|
||
input[type=text]:focus,
|
||
textarea:focus,
|
||
select:focus {
|
||
border-color: var(--brize-accent) !important;
|
||
outline: none !important;
|
||
box-shadow: 0 0 0 3px rgba(74, 138, 68, .12) !important;
|
||
}
|
||
|
||
/* --- Флеш-уведомления ------------------------------------- */
|
||
div#flash_notice, p.notice {
|
||
background: #d8ecd0;
|
||
color: #1d3a1d;
|
||
border: 0.5px solid #b0d0a8;
|
||
border-radius: 6px;
|
||
padding: 10px 14px;
|
||
font-size: 12px;
|
||
}
|
||
|
||
div#flash_error, p.error {
|
||
background: #fde8e0;
|
||
color: #6a2010;
|
||
border: 0.5px solid #f0b8a0;
|
||
border-radius: 6px;
|
||
padding: 10px 14px;
|
||
font-size: 12px;
|
||
}
|
||
|
||
div#flash_warning {
|
||
background: #fdf3d8;
|
||
color: #5a3c08;
|
||
border: 0.5px solid #f0d898;
|
||
border-radius: 6px;
|
||
padding: 10px 14px;
|
||
font-size: 12px;
|
||
}
|
||
|
||
/* --- Пагинация -------------------------------------------- */
|
||
p.pagination {
|
||
font-size: 12px;
|
||
color: var(--brize-muted);
|
||
}
|
||
|
||
p.pagination a {
|
||
color: var(--brize-accent) !important;
|
||
border: 0.5px solid var(--brize-border);
|
||
padding: 3px 8px;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
p.pagination a:hover {
|
||
background: var(--brize-light);
|
||
}
|
||
|
||
p.pagination span.current {
|
||
background: var(--brize-mid);
|
||
color: #c8e8c0;
|
||
padding: 3px 8px;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
/* --- Стартовая страница / Welcome block ------------------- */
|
||
#welcome {
|
||
background: var(--brize-dark);
|
||
border-radius: 8px;
|
||
padding: 20px 24px;
|
||
margin-bottom: 20px;
|
||
color: var(--brize-header-fg);
|
||
}
|
||
|
||
#welcome h2 {
|
||
font-family: 'Unbounded', sans-serif !important;
|
||
font-size: 15px !important;
|
||
color: #c8e8c0 !important;
|
||
margin-bottom: 6px;
|
||
}
|
||
|
||
#welcome p {
|
||
color: var(--brize-header-link);
|
||
font-size: 12px;
|
||
}
|
||
|
||
/* --- Хлебные крошки --------------------------------------- */
|
||
p#breadcrumb,
|
||
div.breadcrumb {
|
||
font-size: 11px;
|
||
color: var(--brize-muted);
|
||
padding: 8px 0;
|
||
}
|
||
|
||
div.breadcrumb a {
|
||
color: var(--brize-accent) !important;
|
||
}
|
||
|
||
/* --- Табы (вкладки) --------------------------------------- */
|
||
div.tabs ul li a {
|
||
color: var(--brize-accent) !important;
|
||
border-bottom: 2px solid transparent;
|
||
font-size: 12px;
|
||
padding: 6px 12px;
|
||
transition: border-color .15s;
|
||
}
|
||
|
||
div.tabs ul li a:hover,
|
||
div.tabs ul li.selected a {
|
||
border-bottom-color: var(--brize-mid);
|
||
color: var(--brize-mid) !important;
|
||
background: transparent !important;
|
||
}
|
||
|
||
/* --- Gantt / Календарь ------------------------------------ */
|
||
.gantt_hdr {
|
||
background: var(--brize-light) !important;
|
||
color: var(--brize-muted) !important;
|
||
font-size: 11px;
|
||
}
|
||
|
||
/* --- Скроллбар (webkit) ----------------------------------- */
|
||
::-webkit-scrollbar { width: 6px; height: 6px; }
|
||
::-webkit-scrollbar-track { background: var(--brize-bg); }
|
||
::-webkit-scrollbar-thumb { background: #b8c8b0; border-radius: 3px; }
|
||
::-webkit-scrollbar-thumb:hover { background: var(--brize-accent); }
|
||
|
||
/* --- Футер ------------------------------------------------ */
|
||
#footer {
|
||
background: var(--brize-dark);
|
||
color: #5a7a54;
|
||
font-size: 11px;
|
||
text-align: center;
|
||
padding: 12px;
|
||
border-top: none;
|
||
}
|
||
|
||
#footer a {
|
||
color: #6a9a64 !important;
|
||
}
|