Donker thema toevoegen via gebruikersmenu rechtsboven
Klik op je naam rechtsboven om een menu te openen met een schakelaar voor het donkere thema. De keuze wordt per browser onthouden. - global.css: donkere kleurvariabelen, alleen op scherm (afdrukken blijft licht) - base.html: gebruikersmenu met themaschakelaar - vaste witte achtergronden en pastelkleuren op enkele pagina's volgen nu het thema Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
684db2ec82
commit
8b7fa3f716
10 files changed
+163
-20
No files matched your search
+103
-8
@@ -37,11 +37,85 @@
|
||||
--shadow: 0 1px 3px rgba(15, 23, 42, .08), 0 4px 12px rgba(15, 23, 42, .05);
|
||||
--shadow-lg: 0 10px 30px rgba(15, 23, 42, .18);
|
||||
|
||||
/* Overige vlakken */
|
||||
--header-bg: var(--primary-color);
|
||||
--row-hover: #f8fbfe;
|
||||
--badge-bg: #e2e8f0; --badge-text: #334155;
|
||||
--overlay: rgba(255, 255, 255, .85);
|
||||
|
||||
--header-height: 64px;
|
||||
--page-width: 1200px;
|
||||
--font: "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
|
||||
}
|
||||
|
||||
/* ---------- 1b. Donker thema (aan/uit via het gebruikersmenu rechtsboven) ---------- */
|
||||
/* Alleen op scherm: afdrukken gebeurt altijd in het lichte thema */
|
||||
@media screen {
|
||||
html[data-theme="dark"] {
|
||||
color-scheme: dark;
|
||||
|
||||
--primary-color: #3a8cc9;
|
||||
--primary-dark: #2d73a8;
|
||||
--primary-light: #17324a;
|
||||
--background-color: #0f172a;
|
||||
|
||||
--surface: #1e293b;
|
||||
--surface-muted: #172033;
|
||||
--border: #334155;
|
||||
--border-strong: #475569;
|
||||
--text: #e2e8f0;
|
||||
--text-muted: #94a3b8;
|
||||
|
||||
--success-bg: #14361f; --success-text: #86efac;
|
||||
--warning-bg: #3a300b; --warning-text: #fde047;
|
||||
--danger-bg: #3f1515; --danger-text: #fca5a5;
|
||||
--info-bg: #172a4d; --info-text: #93c5fd;
|
||||
|
||||
--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);
|
||||
--shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .25);
|
||||
--shadow-lg: 0 10px 30px rgba(0, 0, 0, .6);
|
||||
|
||||
--header-bg: #13304a;
|
||||
--row-hover: #243349;
|
||||
--badge-bg: #334155; --badge-text: #e2e8f0;
|
||||
--overlay: rgba(15, 23, 42, .85);
|
||||
}
|
||||
html[data-theme="dark"] .flash-message,
|
||||
html[data-theme="dark"] .flash-message.success,
|
||||
html[data-theme="dark"] .flash-message.error,
|
||||
html[data-theme="dark"] .flash-message.danger,
|
||||
html[data-theme="dark"] .flash-message.warning { border-color: var(--border); }
|
||||
html[data-theme="dark"] .dash-section-title.admin::after { background: var(--danger-bg); }
|
||||
html[data-theme="dark"] .tile.tile-tools .tile-icon,
|
||||
html[data-theme="dark"] .tile.tile-tools .tile-links a:hover { background: #123b38; }
|
||||
html[data-theme="dark"] .tile.tile-tools h3,
|
||||
html[data-theme="dark"] .tile.tile-tools .tile-links a:hover { color: #5eead4; }
|
||||
html[data-theme="dark"] .tile.tile-scholengroep .tile-icon,
|
||||
html[data-theme="dark"] .tile.tile-scholengroep .tile-links a:hover { background: #2e1f52; }
|
||||
html[data-theme="dark"] .tile.tile-scholengroep h3,
|
||||
html[data-theme="dark"] .tile.tile-scholengroep .tile-links a:hover { color: #c4b5fd; }
|
||||
html[data-theme="dark"] .google-btn { background: var(--surface); color: var(--text); border-color: var(--border-strong); }
|
||||
html[data-theme="dark"] .google-btn:hover { background: var(--surface-muted); }
|
||||
html[data-theme="dark"] body.auth-page { background: var(--background-color); }
|
||||
html[data-theme="dark"] mark { background: #854d0e; color: #fef9c3; }
|
||||
|
||||
/* Pagina's met eigen pastelkleuren (gemarkeerde rijen, legendes, filters) */
|
||||
html[data-theme="dark"] .tellers .let,
|
||||
html[data-theme="dark"] .filters button.let { background: var(--warning-bg); border-color: #854d0e; }
|
||||
html[data-theme="dark"] .filters button.let[aria-pressed="true"] { background: #854d0e; color: #fef9c3; }
|
||||
html[data-theme="dark"] td.leeg,
|
||||
html[data-theme="dark"] tr.flagged td,
|
||||
html[data-theme="dark"] table.aw .vandaag,
|
||||
html[data-theme="dark"] td.inv input.gewijzigd,
|
||||
html[data-theme="dark"] .panel.directie,
|
||||
html[data-theme="dark"] .panel.vraag { background: #2e2710 !important; border-color: #854d0e; }
|
||||
html[data-theme="dark"] tr.rij-fout td { background: #3a1a1a; }
|
||||
html[data-theme="dark"] button.st:not(.aanwezig):not(.afwezig) { background: var(--surface-muted); border-color: var(--border-strong); color: var(--text-muted); }
|
||||
html[data-theme="dark"] #personeelBody tr.g-account td, html[data-theme="dark"] .legende i.account { background: #14361f; border-color: #166534; }
|
||||
html[data-theme="dark"] #personeelBody tr.g-alias td, html[data-theme="dark"] .legende i.alias { background: #3a2a10; border-color: #9a5b13; }
|
||||
html[data-theme="dark"] #personeelBody tr.g-geen td, html[data-theme="dark"] .legende i.geen { background: #3a1a1a; border-color: #991b1b; }
|
||||
}
|
||||
|
||||
/* ---------- 2. Basis ---------- */
|
||||
*, *::before, *::after { box-sizing: border-box; }
|
||||
|
||||
@@ -84,7 +158,7 @@ a { color: var(--primary-color); }
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
padding: 0 24px;
|
||||
background: var(--primary-color);
|
||||
background: var(--header-bg);
|
||||
color: #fff;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, .15);
|
||||
}
|
||||
@@ -130,10 +204,29 @@ a { color: var(--primary-color); }
|
||||
}
|
||||
.home-btn, .header-btn { background: rgba(255, 255, 255, .16); color: #fff; }
|
||||
.home-btn:hover, .header-btn:hover { background: rgba(255, 255, 255, .28); }
|
||||
.logout-btn { background: #fff; color: var(--danger); }
|
||||
.logout-btn { background: var(--surface); color: var(--danger); }
|
||||
.logout-btn:hover { background: var(--danger-bg); }
|
||||
.app-header form { margin: 0; }
|
||||
|
||||
/* Gebruikersmenu (klik op je naam rechtsboven) */
|
||||
.user-menu { position: relative; }
|
||||
.user-menu-btn { opacity: 1; font-weight: 500; }
|
||||
.user-menu-btn .caret { font-size: 10px; opacity: .8; }
|
||||
.user-menu-panel {
|
||||
display: none;
|
||||
position: absolute; right: 0; top: calc(100% + 8px);
|
||||
z-index: 1100;
|
||||
min-width: 260px;
|
||||
padding: 6px 14px;
|
||||
background: var(--surface); color: var(--text);
|
||||
border: 1px solid var(--border); border-radius: var(--radius);
|
||||
box-shadow: var(--shadow-lg);
|
||||
}
|
||||
.user-menu.open .user-menu-panel { display: block; }
|
||||
.user-menu-head { padding: 8px 0 10px; border-bottom: 1px solid var(--border); font-size: 13px; color: var(--text-muted); overflow-wrap: anywhere; }
|
||||
.user-menu-head strong { display: block; color: var(--text); font-size: 14px; }
|
||||
.user-menu-panel .switch-row { font-size: 14px; font-weight: 500; cursor: pointer; }
|
||||
|
||||
/* ---------- 4. Pagina-layout ---------- */
|
||||
.app-main {
|
||||
flex: 1;
|
||||
@@ -187,7 +280,7 @@ select, textarea {
|
||||
font: inherit;
|
||||
font-size: 15px;
|
||||
color: var(--text);
|
||||
background: #fff;
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border-strong);
|
||||
border-radius: var(--radius-sm);
|
||||
transition: border-color .15s, box-shadow .15s;
|
||||
@@ -260,7 +353,7 @@ button:disabled, .btn:disabled { opacity: .5; cursor: not-allowed; }
|
||||
|
||||
.btn-secondary { background: #475569; }
|
||||
.btn-secondary:hover { background: #334155; }
|
||||
.btn-light { background: #fff; color: var(--text); border-color: var(--border-strong); }
|
||||
.btn-light { background: var(--surface); color: var(--text); border-color: var(--border-strong); }
|
||||
.btn-light:hover { background: var(--surface-muted); }
|
||||
.btn-success { background: var(--success); }
|
||||
.btn-success:hover { background: #15803d; }
|
||||
@@ -291,7 +384,7 @@ button:disabled, .btn:disabled { opacity: .5; cursor: not-allowed; }
|
||||
border-radius: var(--radius);
|
||||
margin-top: 12px;
|
||||
}
|
||||
table { width: 100%; border-collapse: collapse; background: #fff; text-align: left; }
|
||||
table { width: 100%; border-collapse: collapse; background: var(--surface); text-align: left; }
|
||||
th, td { padding: 11px 14px; border-bottom: 1px solid var(--border); vertical-align: middle; }
|
||||
th {
|
||||
background: var(--surface-muted);
|
||||
@@ -299,7 +392,7 @@ th {
|
||||
color: var(--text-muted); white-space: nowrap;
|
||||
}
|
||||
tbody tr:last-child td { border-bottom: 0; }
|
||||
tbody tr:hover { background: #f8fbfe; }
|
||||
tbody tr:hover { background: var(--row-hover); }
|
||||
td.actions, th.actions { text-align: right; white-space: nowrap; }
|
||||
td.actions form { display: inline; margin: 0; }
|
||||
td.actions > * + * { margin-left: 6px; }
|
||||
@@ -324,7 +417,7 @@ td.center, th.center { text-align: center; }
|
||||
display: inline-flex; align-items: center; gap: 4px;
|
||||
padding: 3px 10px; border-radius: 999px;
|
||||
font-size: 12.5px; font-weight: 600; white-space: nowrap;
|
||||
background: #e2e8f0; color: #334155;
|
||||
background: var(--badge-bg); color: var(--badge-text);
|
||||
}
|
||||
.badge-success { background: var(--success-bg); color: var(--success-text); }
|
||||
.badge-warning { background: var(--warning-bg); color: var(--warning-text); }
|
||||
@@ -448,7 +541,7 @@ td.center, th.center { text-align: center; }
|
||||
position: fixed; inset: 0;
|
||||
z-index: 9999;
|
||||
flex-direction: column; justify-content: center; align-items: center; gap: 16px;
|
||||
background: rgba(255, 255, 255, .85);
|
||||
background: var(--overlay);
|
||||
backdrop-filter: blur(2px);
|
||||
}
|
||||
.spinner {
|
||||
@@ -563,6 +656,8 @@ body.auth-page { background: linear-gradient(160deg, #eaf2f9 0%, var(--backgroun
|
||||
/* ---------- 17. Responsief ---------- */
|
||||
@media (max-width: 900px) {
|
||||
.brand-school, .header-user { display: none; }
|
||||
.user-menu-btn { display: inline-flex; }
|
||||
.user-menu-btn .user-naam { display: none; }
|
||||
}
|
||||
@media (max-width: 720px) {
|
||||
.app-header {
|
||||
|
||||
Reference in new issue
Block a user