From ea6a518c9c6f8105c89f2fb7a7a8f138dc414714 Mon Sep 17 00:00:00 2001 From: sylyx Date: Tue, 16 Jun 2026 16:17:08 +0200 Subject: [PATCH] =?UTF-8?q?Ablage-Fenster:=20Dark-DocuWare-Style=20(gleich?= =?UTF-8?q?e=20Palette=20wie=20Optionen)=20=E2=80=93=20Titelleiste,=20Eing?= =?UTF-8?q?aben,=20Button,=20Banner,=20Overlays,=20color-scheme=20dark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- dialog/dialog.css | 124 ++++++++++++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 47 deletions(-) diff --git a/dialog/dialog.css b/dialog/dialog.css index 1e0d938..7ca65a1 100644 --- a/dialog/dialog.css +++ b/dialog/dialog.css @@ -1,97 +1,127 @@ +/* DocuWare-naher Dark-Style – identische Palette wie die Optionsseite. */ +:root { + --bg: #11151b; + --surface: #1a1f27; + --surface-2: #222a34; + --border: #2b3340; + --border-strong: #38424f; + --text: #e8edf2; + --muted: #8c97a4; + --accent: #2aa4df; + --accent-hover: #3cb6f0; + --accent-weak: rgba(42,164,223,.14); + --ok: #46c98a; + --err: #ec6b75; + color-scheme: dark; /* native Datepicker/Scrollbars/Checkboxen im Dark-Mode */ +} * { box-sizing: border-box; } body { - font: 13px/1.45 "Segoe UI", system-ui, sans-serif; - margin: 0; color: #1a1a1a; background: #fff; + font: 13px/1.45 "Segoe UI", "Helvetica Neue", system-ui, sans-serif; + margin: 0; color: var(--text); background: var(--bg); display: flex; flex-direction: column; height: 100vh; + -webkit-font-smoothing: antialiased; } -/* Titel-Leiste wie im Connect-to-Outlook-Dialog */ +/* Titel-Leiste */ .titlebar { - background: #2b3a44; color: #fff; - padding: 8px 14px; font-weight: 600; font-size: 13px; + background: #0f1318; color: var(--text); + padding: 9px 16px; font-weight: 600; font-size: 13px; letter-spacing: .2px; + border-bottom: 1px solid var(--border); + box-shadow: 0 1px 0 rgba(42,164,223,.35); flex-shrink: 0; } -header { padding: 12px 18px 6px; border-bottom: 1px solid #e5e7eb; flex-shrink: 0; } -header h1 { font-size: 16px; font-weight: 600; margin: 0 0 10px; } +header { padding: 14px 18px 8px; border-bottom: 1px solid var(--border); flex-shrink: 0; } +header h1 { font-size: 16px; font-weight: 650; margin: 0 0 10px; } .toolbar { display: flex; align-items: center; gap: 14px; } .toolbar .spacer { flex: 1; } +button { font: inherit; cursor: pointer; } button.link { - background: none; border: 0; color: #1f2937; cursor: pointer; - font: inherit; padding: 4px 2px; display: inline-flex; align-items: center; gap: 5px; + background: none; border: 0; color: var(--muted); + padding: 4px 2px; display: inline-flex; align-items: center; gap: 5px; } -button.link:hover { color: #2563eb; } +button.link:hover { color: var(--accent); } button.primary { - background: #f4b400; color: #1a1a1a; border: 0; border-radius: 3px; - padding: 7px 22px; font-weight: 600; cursor: pointer; + border: 0; border-radius: 8px; padding: 8px 22px; font-weight: 650; color: #04222f; + background: linear-gradient(180deg, var(--accent-hover), var(--accent)); + box-shadow: 0 4px 14px rgba(42,164,223,.3); } -button.primary:hover { background: #e0a500; } -button:disabled { opacity: .5; cursor: default; } +button.primary:hover { filter: brightness(1.06); } +button:disabled { opacity: .5; cursor: default; filter: none; } -main { flex: 1; overflow-y: auto; padding: 14px 18px; } +main { flex: 1; overflow-y: auto; padding: 16px 18px; } .target { display: grid; grid-template-columns: 150px 1fr; align-items: center; gap: 10px; margin-bottom: 12px; } -.target > label { text-align: right; color: #374151; font-weight: 500; } +.target > label { text-align: right; color: var(--muted); font-weight: 500; } /* Indexfelder: rechtsbündiges Label links, Eingabe rechts */ -.fields { display: flex; flex-direction: column; gap: 8px; } +.fields { display: flex; flex-direction: column; gap: 9px; } .field { display: grid; grid-template-columns: 150px 1fr; align-items: center; gap: 10px; } -.field > label { text-align: right; color: #374151; font-weight: 500; padding-top: 2px; } +.field > label { text-align: right; color: var(--muted); font-weight: 500; padding-top: 2px; } .field.full { grid-template-columns: 150px 1fr; align-items: start; } -.field .req { color: #b91c1c; } +.field .req { color: var(--err); } -select, input[type="text"], input[type="number"], input[type="date"], textarea { - width: 100%; padding: 6px 9px; border: 1px solid #b9c0c8; border-radius: 3px; font: inherit; background: #fff; +select, input[type="text"], input[type="number"], input[type="date"], input[type="password"], textarea { + width: 100%; padding: 8px 10px; color: var(--text); + background: var(--surface-2); border: 1px solid var(--border-strong); + border-radius: 8px; font: inherit; outline: none; + transition: border-color .15s, box-shadow .15s; } -select:focus, input:focus, textarea:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 2px #2563eb33; } -textarea { resize: vertical; min-height: 56px; } +select { appearance: none; padding-right: 30px; + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; background-position: right 11px center; +} +select:focus, input:focus, textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-weak); } +input::placeholder { color: #5f6b78; } +textarea { resize: vertical; min-height: 60px; } /* Vorbefüllte (aus der Mail übernommene) Felder dezent kennzeichnen */ -.field.prefilled input, .field.prefilled textarea { background: #f3f4f6; color: #4b5563; } +.field.prefilled input, .field.prefilled textarea, .field.prefilled select { + background: rgba(42,164,223,.08); color: #bcc8d3; +} .options { margin: 0; } -.format { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 5px 0; } -.format-label { font-weight: 500; } +.format { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 6px 0; } +.format-label { font-weight: 550; } .format .radio { margin: 0; } -.radio, .check { display: flex; align-items: center; gap: 8px; margin: 5px 0; font-weight: 400; } -.radio input, .check input { accent-color: #2563eb; } +.radio, .check { display: flex; align-items: center; gap: 8px; margin: 6px 0; font-weight: 400; } +.radio input, .check input { width: 16px; height: 16px; accent-color: var(--accent); flex: none; } .att-list { list-style: none; margin: 6px 0 0 26px; padding: 0; max-height: 110px; overflow-y: auto; } -.att-list li { display: flex; align-items: center; gap: 8px; font-size: 12px; padding: 2px 0; color: #374151; } +.att-list li { display: flex; align-items: center; gap: 8px; font-size: 12px; padding: 2px 0; color: var(--muted); } /* Footer bleibt fix sichtbar, nur der Felderbereich (main) scrollt. */ -footer { border-top: 1px solid #e5e7eb; padding: 10px 18px; background: #fafafa; flex-shrink: 0; } -.muted { color: #6b7280; font-size: 12px; } -.err { color: #b91c1c; } .ok { color: #15803d; } -.field.invalid input, .field.invalid textarea, .field.invalid select { border-color: #b91c1c; } +footer { border-top: 1px solid var(--border); padding: 11px 18px; background: var(--surface); flex-shrink: 0; } +.muted { color: var(--muted); font-size: 12px; } +.err { color: var(--err); } .ok { color: var(--ok); } +.field.invalid input, .field.invalid textarea, .field.invalid select { border-color: var(--err); } /* „Bereits abgelegt"-Banner */ .banner { display: flex; align-items: center; gap: 10px; - background: #ecfdf5; border: 1px solid #6ee7b7; color: #065f46; - border-radius: 4px; padding: 7px 10px; margin-bottom: 10px; font-size: 12px; + background: rgba(70,201,138,.12); border: 1px solid rgba(70,201,138,.4); color: #8be0b4; + border-radius: 8px; padding: 8px 11px; margin-bottom: 10px; font-size: 12px; } .banner[hidden] { display: none; } .banner .banner-text { flex: 1; } -.banner .link { color: #065f46; text-decoration: underline; } +.banner .link { color: #8be0b4; text-decoration: underline; } +.banner .link:hover { color: var(--ok); } -/* Passwort-Abfrage (Sitzungs-Login, nicht gespeichert) */ +/* Overlays: Passwort-Abfrage / Dubletten-Hinweis */ .overlay { - position: fixed; inset: 0; background: rgba(0, 0, 0, .35); + position: fixed; inset: 0; background: rgba(0, 0, 0, .55); display: flex; align-items: center; justify-content: center; z-index: 50; + backdrop-filter: blur(2px); } .overlay[hidden] { display: none; } .overlay-box { - background: #fff; border-radius: 6px; padding: 18px 20px; width: 340px; - box-shadow: 0 8px 30px rgba(0, 0, 0, .25); + background: var(--surface); border: 1px solid var(--border); border-radius: 12px; + padding: 20px 22px; width: 350px; + box-shadow: 0 18px 50px rgba(0, 0, 0, .5); } -.overlay-box h2 { font-size: 15px; font-weight: 600; margin: 0 0 8px; } -.overlay-box input[type="password"] { - width: 100%; padding: 7px 9px; border: 1px solid #b9c0c8; border-radius: 3px; - font: inherit; margin-top: 8px; -} -.overlay-box input[type="password"]:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 2px #2563eb33; } +.overlay-box h2 { font-size: 15px; font-weight: 650; margin: 0 0 8px; } +.overlay-box input[type="password"] { margin-top: 8px; } .overlay-box .err { min-height: 1em; margin-top: 6px; } -.overlay-actions { display: flex; justify-content: flex-end; align-items: center; gap: 12px; margin-top: 10px; } +.overlay-actions { display: flex; justify-content: flex-end; align-items: center; gap: 12px; margin-top: 12px; } .overlay-box .pw-note { margin-top: 10px; }