Files
noteapp/app/static/css/style.css
Nicolay Braetter 5c7ce5d0ca Initial commit: Notes Manager App (notes.braetter-int.de)
- Python/Flask Backend
- SQLAlchemy Models (notes, tasks, templates, users)
- Gunicorn + Nginx Deploy-Konfiguration
- Static Assets (CSS/JS)
- Jinja2 Templates
2026-04-15 09:28:33 +02:00

371 lines
9.1 KiB
CSS
Executable File
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.
/* ============================================================
NotesManager Modernes Grau-Design, barrierefrei (WCAG 2.1 AA)
============================================================ */
/* --- Farb-Variablen --- */
:root {
--nm-bg: #f0f2f5;
--nm-surface: #ffffff;
--nm-nav-bg: #1c1f26;
--nm-nav-hover: #2a2e38;
--nm-nav-active: #353a47;
--nm-nav-text: #c8cdd8;
--nm-nav-text-act: #ffffff;
--nm-accent: #4a6fa5;
--nm-accent-hover: #3a5a8f;
--nm-accent-light: #eaf0fa;
--nm-text: #1a1d23;
--nm-text-muted: #5a6070;
--nm-border: #d4d8e1;
--nm-shadow-sm: 0 1px 4px rgba(0,0,0,0.07), 0 2px 8px rgba(0,0,0,0.05);
--nm-shadow-md: 0 2px 8px rgba(0,0,0,0.09), 0 4px 16px rgba(0,0,0,0.07);
--nm-radius: 0.5rem;
--nm-radius-sm: 0.35rem;
--nm-transition: 0.18s ease;
}
/* --- Basis --- */
*, *::before, *::after { box-sizing: border-box; }
body {
background: var(--nm-bg);
color: var(--nm-text);
font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
font-size: 0.9375rem;
line-height: 1.6;
min-height: 100vh;
}
/* --- Barrierefreiheit: Fokus-Indikator --- */
:focus-visible {
outline: 3px solid var(--nm-accent);
outline-offset: 2px;
border-radius: var(--nm-radius-sm);
}
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible {
outline: 3px solid var(--nm-accent);
outline-offset: 2px;
}
/* --- Navigation --- */
.navbar {
background: var(--nm-nav-bg) !important;
border-bottom: 1px solid rgba(255,255,255,0.06);
padding: 0.65rem 1.25rem;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
}
.navbar-brand {
color: var(--nm-nav-text-act) !important;
font-weight: 700;
font-size: 1.1rem;
letter-spacing: 0.02em;
display: flex;
align-items: center;
gap: 0.5rem;
}
.navbar-brand::before {
content: "▪";
color: var(--nm-accent);
font-size: 1.3rem;
}
.nav-link {
color: var(--nm-nav-text) !important;
font-size: 0.875rem;
font-weight: 500;
padding: 0.45rem 0.8rem !important;
border-radius: var(--nm-radius-sm);
transition: background var(--nm-transition), color var(--nm-transition);
}
.nav-link:hover {
background: var(--nm-nav-hover);
color: var(--nm-nav-text-act) !important;
}
.nav-link.active {
background: var(--nm-nav-active);
color: var(--nm-nav-text-act) !important;
}
/* Navbar-User-Bereich */
.navbar .nm-user-info {
font-size: 0.8rem;
color: var(--nm-nav-text);
padding: 0.3rem 0.7rem;
background: rgba(255,255,255,0.06);
border-radius: var(--nm-radius-sm);
border: 1px solid rgba(255,255,255,0.1);
}
.btn-outline-light.btn-sm {
font-size: 0.8rem;
padding: 0.3rem 0.85rem;
border-color: rgba(255,255,255,0.3);
color: #fff;
transition: background var(--nm-transition), border-color var(--nm-transition);
}
.btn-outline-light.btn-sm:hover {
background: rgba(255,255,255,0.12);
border-color: rgba(255,255,255,0.5);
color: #fff;
}
/* --- Main-Content --- */
main.container {
max-width: 1200px;
padding-top: 1.75rem;
padding-bottom: 4rem;
}
/* --- Seitenüberschriften --- */
h1, h2, h3, h4, h5, h6 {
color: var(--nm-text);
font-weight: 600;
line-height: 1.3;
}
/* --- Cards --- */
.card {
background: var(--nm-surface);
border: 1px solid var(--nm-border) !important;
border-radius: var(--nm-radius) !important;
box-shadow: var(--nm-shadow-sm);
transition: box-shadow var(--nm-transition);
}
.card:hover {
box-shadow: var(--nm-shadow-md);
}
.card-body {
padding: 1.4rem 1.5rem;
}
/* --- Stat-Cards (Dashboard) --- */
.stat-card {
border-left: 3px solid var(--nm-accent) !important;
transition: transform var(--nm-transition), box-shadow var(--nm-transition);
}
.stat-card:hover {
transform: translateY(-2px);
box-shadow: var(--nm-shadow-md);
}
.stat-number {
font-size: 2.1rem;
font-weight: 700;
color: var(--nm-accent);
line-height: 1.1;
}
.stat-label {
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--nm-text-muted);
margin-top: 0.2rem;
}
/* --- Buttons --- */
.btn {
font-size: 0.875rem;
font-weight: 500;
border-radius: var(--nm-radius-sm);
transition: background var(--nm-transition), border-color var(--nm-transition),
transform var(--nm-transition), box-shadow var(--nm-transition);
}
.btn:active { transform: translateY(1px); }
.btn-primary {
background: var(--nm-accent);
border-color: var(--nm-accent);
color: #fff;
}
.btn-primary:hover, .btn-primary:focus {
background: var(--nm-accent-hover);
border-color: var(--nm-accent-hover);
color: #fff;
box-shadow: 0 2px 8px rgba(74,111,165,0.35);
}
.btn-outline-secondary {
color: var(--nm-text-muted);
border-color: var(--nm-border);
}
.btn-outline-secondary:hover {
background: #eef0f4;
color: var(--nm-text);
border-color: #c0c5d0;
}
.btn-outline-primary {
color: var(--nm-accent);
border-color: var(--nm-accent);
}
.btn-outline-primary:hover {
background: var(--nm-accent);
color: #fff;
}
.btn-danger {
background: #c0392b;
border-color: #a93226;
}
.btn-danger:hover { background: #a93226; border-color: #922b21; }
.btn-sm {
font-size: 0.8rem;
padding: 0.28rem 0.7rem;
}
/* --- Formularelemente --- */
.form-label {
font-size: 0.85rem;
font-weight: 600;
color: var(--nm-text);
margin-bottom: 0.35rem;
}
.form-control, .form-select {
border: 1px solid var(--nm-border);
border-radius: var(--nm-radius-sm);
color: var(--nm-text);
background: #fff;
font-size: 0.9rem;
transition: border-color var(--nm-transition), box-shadow var(--nm-transition);
padding: 0.5rem 0.75rem;
}
.form-control:focus, .form-select:focus {
border-color: var(--nm-accent);
box-shadow: 0 0 0 3px rgba(74,111,165,0.18);
outline: none;
}
textarea.form-control { min-height: 9rem; resize: vertical; }
/* --- Tabellen --- */
.table {
color: var(--nm-text);
border-color: var(--nm-border);
font-size: 0.875rem;
}
.table > thead > tr > th {
background: #f4f6f9;
color: var(--nm-text-muted);
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.07em;
border-bottom: 2px solid var(--nm-border);
padding: 0.75rem 1rem;
}
.table > tbody > tr > td {
padding: 0.75rem 1rem;
vertical-align: middle;
border-bottom: 1px solid #eef0f4;
}
.table-hover > tbody > tr:hover > td {
background: #f7f9fc;
}
/* --- Badges --- */
.badge {
font-size: 0.72rem;
font-weight: 600;
letter-spacing: 0.04em;
padding: 0.28em 0.65em;
border-radius: 0.25rem;
}
.text-bg-secondary {
background: #e4e7ed !important;
color: var(--nm-text) !important;
}
.text-bg-success { background: #d4edda !important; color: #1a5c35 !important; }
.text-bg-danger { background: #f8d7da !important; color: #7a1c1c !important; }
.text-bg-warning { background: #fff3cd !important; color: #664d03 !important; }
.text-bg-info { background: #d1ecf1 !important; color: #0c4a55 !important; }
.text-bg-primary { background: var(--nm-accent-light) !important; color: var(--nm-accent) !important; }
/* --- List-Group --- */
.list-group-item {
border-color: var(--nm-border);
color: var(--nm-text);
font-size: 0.875rem;
padding: 0.8rem 1rem;
transition: background var(--nm-transition);
}
.list-group-item-action:hover,
.list-group-item-action:focus {
background: #f4f6fa;
color: var(--nm-text);
}
.list-group-flush .list-group-item { border-left: 0; border-right: 0; }
/* --- Alerts --- */
.alert {
border-radius: var(--nm-radius-sm);
font-size: 0.875rem;
border-width: 1px;
}
.alert-success { background:#d4edda; color:#1a5c35; border-color:#b8dfc7; }
.alert-danger { background:#f8d7da; color:#7a1c1c; border-color:#f1b0b5; }
.alert-warning { background:#fff3cd; color:#664d03; border-color:#ffe69c; }
.alert-info { background:#d1ecf1; color:#0c4a55; border-color:#a8d8e1; }
/* --- Login-Seite --- */
.login-wrapper {
min-height: calc(100vh - 5rem);
display: flex;
align-items: center;
justify-content: center;
}
.login-card {
width: 100%;
max-width: 400px;
}
.login-logo {
width: 2.5rem;
height: 2.5rem;
background: var(--nm-accent);
border-radius: var(--nm-radius-sm);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.2rem;
color: #fff;
font-weight: 800;
margin: 0 auto 1rem;
}
/* --- Text-Hilfklassen --- */
.text-muted { color: var(--nm-text-muted) !important; }
/* --- Seitenüberschrift-Bereich --- */
.page-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
flex-wrap: wrap;
gap: 0.75rem;
margin-bottom: 1.5rem;
}
.page-header h1 {
margin-bottom: 0.15rem;
font-size: 1.5rem;
}
/* --- Content pre (Dokumentation) --- */
.content-pre {
white-space: pre-wrap;
word-break: break-word;
font-family: inherit;
margin: 0;
color: var(--nm-text);
line-height: 1.7;
}
/* --- Trennlinie --- */
hr { border-color: var(--nm-border); opacity: 1; }
/* --- Scrollbar (Webkit) --- */
::-webkit-scrollbar { width: 7px; height: 7px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #c5c9d4; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #a8adb9; }