przebudowa systemu

This commit is contained in:
Mateusz Gruszczyński
2025-08-28 10:27:06 +02:00
parent d71d33cfe0
commit e9db945bb4
36 changed files with 2307 additions and 809 deletions

View File

@@ -1,168 +1,295 @@
/* Import czcionki Roboto */
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
/* Globalne */
/* ========= TOKENS ========= */
:root {
color-scheme: dark;
--bg: #121212;
/* główne tło */
--surface-0: #1a1a1a;
/* navbar, header */
--surface-1: #202020;
/* karty */
--surface-2: #2a2a2a;
/* nagłówki kart, ciemniejsze sekcje */
--border: #3a3a3a;
--text: #e4e4e4;
--text-muted: #a8a8a8;
--accent: #f5c84c;
/* żółty/amber akcent */
--accent-600: #e3b23f;
--accent-700: #cfa033;
--accent-300: #ffe083;
--radius: 10px;
--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);
--shadow-md: 0 4px 12px rgba(0, 0, 0, .45);
--trans: 220ms cubic-bezier(.2, .8, .2, 1);
}
/* ========= BASE ========= */
body {
font-family: 'Roboto', sans-serif;
background-color: #121212;
color: #dcdcdc;
padding-top: 1vh;
font-family: 'Roboto', system-ui, -apple-system, Segoe UI, Arial, sans-serif;
background: var(--bg);
color: var(--text);
margin: 0;
padding-top: 1vh;
}
/* Nawigacja */
.navbar {
background-color: #1c1c1c;
border-bottom: 1px solid #444;
transition: background-color 0.3s ease;
}
.navbar-brand {
color: #f5f5f5;
font-weight: bold;
transition: color 0.3s ease;
}
.nav-link {
color: #cccccc;
transition: color 0.3s ease;
}
.nav-link:hover {
color: #ffc107;
}
/* Karty */
.card {
background-color: #444242;
border: none;
border-radius: 0.5rem;
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.6);
margin-bottom: 20px;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card:hover {
transform: translateY(-5px);
box-shadow: 0px 3px 16px rgba(0, 0, 0, 0.8);
}
.card-header {
background-color: #272727;
border-bottom: 1px solid #444;
font-weight: bold;
}
.card-body {
background-color: #444242;
}
/* Przyciski */
.btn {
text-transform: uppercase;
font-weight: bold;
transition: background-color 0.3s ease, transform 0.2s ease;
}
.btn:hover {
transform: translateY(-2px);
}
.btn-primary {
background-color: #2d2c2c;
border-color: #ffeb3b;
color: #ffffff;
}
.btn-primary:hover {
background-color: #1e1e1e;
border-color: #ffc107;
}
/* Linki */
a {
color: #ffc107;
transition: color 0.3s ease;
color: var(--accent);
text-decoration: none;
transition: color var(--trans);
}
a:hover {
color: #ffeb3b;
color: var(--accent-300);
}
/* Progress Bar */
.progress {
background-color: #2a2a2a;
border-radius: 0.5rem;
height: 35px;
font-size: 1.2rem;
/* ========= NAVBAR ========= */
.navbar {
background: var(--surface-0);
border-bottom: 1px solid var(--border);
}
.progress-bar {
background: linear-gradient(90deg, #ffc107, #ffeb3b);
font-weight: bold;
transition: width 0.3s ease;
animation: progressAnimation 1s ease-in-out forwards;
.navbar-brand {
color: var(--text);
font-weight: 700;
transition: color var(--trans);
}
@keyframes progressAnimation {
from { width: 0%; }
to { width: var(--progress-width); }
.navbar-brand:hover {
color: var(--accent);
}
/* Alerty (flash messages) */
.alert {
opacity: 0;
animation: fadeIn 0.5s forwards;
margin-bottom: 1rem;
.nav-link {
color: var(--text-muted);
transition: color var(--trans);
}
@keyframes fadeIn {
to { opacity: 1; }
.nav-link:hover,
.nav-link:focus {
color: var(--accent);
}
/* Dodatkowe marginesy */
.container {
padding: 0 15px;
/* ========= CARDS ========= */
.card {
background: var(--surface-1);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: var(--shadow-sm);
margin-bottom: 20px;
transition: transform 160ms ease, box-shadow 160ms ease, border-color var(--trans);
}
/* Responsywność */
@media (max-width: 767px) {
.card {
margin-bottom: 1rem;
}
.card-title {
font-size: 1.25rem;
}
.btn {
font-size: 0.9rem;
}
.card:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-md);
border-color: color-mix(in srgb, var(--accent) 20%, var(--border));
}
h1 { font-size: 2rem; margin-bottom: 1rem; }
h2 { font-size: 1.7rem; margin-bottom: 0.8rem; }
h3 { font-size: 0.9rem; margin-bottom: 0.6rem; }
.card-header {
background: var(--surface-2);
border-bottom: 1px solid var(--border);
font-weight: 700;
}
/* Wspomóż */
.card-body {
background: transparent;
}
/* Wyróżniona karta */
.card.wspomoz-card {
border: 1px solid #ffc107 !important;
border-radius: 0.2rem !important;
border: 1px solid var(--accent) !important;
border-radius: var(--radius) !important;
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);
}
.card.wspomoz-card .card-body,
.card.wspomoz-card .card-title,
.card.wspomoz-card .card-text {
color: #ffffff !important;
font-weight: bold;
font-size: 1.25rem;
color: var(--text) !important;
font-weight: 700;
font-size: 1.15rem;
}
.btn-primary:focus,
.btn-primary:active,
.btn-primary.focus,
.btn-primary.active {
background-color: #2d2c2c !important;
border-color: #ffeb3b !important;
color: #ffffff !important;
box-shadow: none;
/* ========= BUTTONS ========= */
.btn {
font-weight: 700;
border-radius: 8px;
transition: transform 120ms ease, background-color var(--trans), border-color var(--trans), color var(--trans);
}
.btn:hover {
transform: translateY(-1px);
}
.btn:focus-visible {
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 40%, transparent);
outline: none;
}
/* Primary = żółty */
.btn-primary {
background-color: var(--accent);
border-color: var(--accent-600);
color: #111;
}
.btn-primary:hover {
background-color: var(--accent-600);
border-color: var(--accent-700);
color: #111;
}
.btn-primary:active,
.btn-primary:focus {
background-color: var(--accent-700) !important;
border-color: var(--accent-700) !important;
color: #111 !important;
}
/* Secondary = ciemna szarość */
.btn-secondary,
.btn-outline-primary {
background: var(--surface-1);
border: 1px solid var(--border);
color: var(--text);
}
.btn-secondary:hover,
.btn-outline-primary:hover {
border-color: var(--accent-600);
color: var(--accent);
}
/* ========= PROGRESS ========= */
.progress {
background: var(--surface-2);
border-radius: 999px;
height: 14px;
overflow: hidden;
border: 1px solid var(--border);
}
.progress-bar {
--progress-width: 0%;
width: var(--progress-width);
background: linear-gradient(90deg, var(--accent-600), var(--accent));
transition: width var(--trans);
}
/* ========= ALERTS ========= */
/* ALERT VARIANTS */
.alert-success {
background: rgba(40, 167, 69, 0.15);
/* lekka zieleń */
border-color: #28a745;
color: #28a745;
}
.alert-danger {
background: rgba(220, 53, 69, 0.15);
/* lekka czerwień */
border-color: #dc3545;
color: #dc3545;
}
.alert-warning {
background: rgba(255, 193, 7, 0.15);
/* lekki bursztyn */
border-color: #ffc107;
color: #ffc107;
}
.alert-info {
background: rgba(23, 162, 184, 0.15);
/* lekki cyjan */
border-color: #17a2b8;
color: #17a2b8;
}
@keyframes fadeIn {
to {
opacity: 1;
}
}
/* ========= TYPO ========= */
h1 {
font-size: 2rem;
margin-bottom: .75rem;
}
h2 {
font-size: 1.6rem;
margin-bottom: .6rem;
}
h3 {
font-size: 1.1rem;
margin-bottom: .5rem;
color: var(--text-muted);
}
small,
.text-muted {
color: var(--text-muted) !important;
}
/* ========= RESPONSIVE ========= */
.container {
padding: 0 15px;
}
@media (max-width: 767px) {
.card {
margin-bottom: 1rem;
}
.card-title {
font-size: 1.1rem;
}
.btn {
font-size: .95rem;
}
}
.table-responsive {
overflow: visible;
}
.dropdown-menu {
z-index: 1080;
}
/* ponad kartą/tabelą */
@media (max-width: 576px) {
.table-responsive {
overflow-x: auto;
}
}
/* ========= FORMS ========= */
input.form-control,
textarea.form-control,
select.form-select {
background-color: var(--surface-1);
border: 1px solid var(--border);
color: var(--text);
}
input.form-control:focus,
textarea.form-control:focus,
select.form-select:focus {
background-color: var(--surface-1);
border-color: var(--accent-600);
color: var(--text);
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 50%, transparent);
}