:root{--blau:#1f5fa8;--blau-dunkel:#164a85;--gruen:#2e8b57;--rot:#c0392b;--gelb:#e3a008;--grau:#6b7280;--rahmen:#dfe3e8;--bg:#f4f6f9;--karte:#fff;--text:#1f2937;--radius:8px}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;font-size:14.5px;color:var(--text);background:var(--bg)}
a{color:var(--blau);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:1.5rem;margin:0 0 .2rem}h2{font-size:1.05rem;margin:0 0 .8rem;color:var(--blau-dunkel)}h3{font-size:.95rem;margin:1rem 0 .4rem}
.topbar{display:flex;align-items:center;gap:1.5rem;background:#fff;border-bottom:1px solid var(--rahmen);padding:0 1.5rem;height:54px;position:sticky;top:0;z-index:10}
.brand a{color:var(--text);font-weight:600;font-size:1.05rem}.brand a:hover{text-decoration:none}
.logo{background:var(--blau);color:#fff;padding:2px 8px;border-radius:5px;font-weight:700;letter-spacing:.5px;margin-right:4px}
.topbar nav{display:flex;gap:.25rem;flex:1}
.topbar nav a{padding:.5rem .8rem;border-radius:6px;color:var(--text)}.topbar nav a.active,.topbar nav a:hover{background:var(--bg);text-decoration:none}
.topbar nav a.active{color:var(--blau);font-weight:600}
.pill{background:var(--rot);color:#fff;border-radius:10px;padding:0 7px;font-size:.75rem;font-weight:700;margin-left:3px}
.user{font-size:.85rem;color:var(--grau)}
.container{max-width:1500px;margin:0 auto;padding:1.5rem}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.back{font-size:.85rem;color:var(--grau)}
.card{background:var(--karte);border:1px solid var(--rahmen);border-radius:var(--radius);padding:1.1rem 1.3rem;margin-bottom:1rem}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:1000px){.cols{grid-template-columns:1fr}}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.4rem .9rem}.grid4{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:.4rem .9rem}
@media(max-width:700px){.grid2,.grid4{grid-template-columns:1fr}}
label{display:block;font-size:.8rem;color:var(--grau);margin-bottom:.6rem}
label.check{display:flex;align-items:center;gap:.4rem;color:var(--text);font-size:.9rem;margin-top:1.1rem}
input:not([type=checkbox]):not([type=file]),select,textarea{display:block;width:100%;margin-top:.2rem;padding:.5rem .6rem;border:1px solid var(--rahmen);border-radius:6px;font:inherit;color:var(--text);background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid #bcd3f0;border-color:var(--blau)}
textarea{resize:vertical;line-height:1.45}
.btn{display:inline-block;padding:.5rem .95rem;border:1px solid var(--rahmen);background:#fff;border-radius:6px;font:inherit;cursor:pointer;color:var(--text);white-space:nowrap}
.btn:hover{background:#f0f2f5;text-decoration:none}
.btn-primary{background:var(--blau);border-color:var(--blau);color:#fff}.btn-primary:hover{background:var(--blau-dunkel)}
.btn-success{background:var(--gruen);border-color:var(--gruen);color:#fff}.btn-danger{background:var(--rot);border-color:var(--rot);color:#fff}
.btn-sm{padding:.3rem .6rem;font-size:.8rem}.btn-block{width:100%}
.link{background:none;border:0;padding:0;color:var(--blau);cursor:pointer;font:inherit;font-size:.85rem}.link.danger{color:var(--rot)}
.inline{display:inline}.inline input[type=file]{display:none}
.row-actions{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:.8rem 0}
.align-end{display:flex;align-items:flex-end;padding-bottom:.6rem}
.table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--rahmen);border-radius:var(--radius)}
.table th,.table td{padding:.6rem .7rem;border-bottom:1px solid var(--rahmen);text-align:left;vertical-align:top}
.table th{background:#f8f9fb;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--grau)}
.table.compact th,.table.compact td{padding:.4rem .5rem}
.table tr.total td{font-weight:600;background:#f8f9fb}
.table.clickable tbody tr{cursor:pointer}.table.clickable tbody tr:hover{background:#f3f7fd}
.num{text-align:right!important;font-variant-numeric:tabular-nums}.center{text-align:center}
.ellipsis{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.muted{color:var(--grau)}.small{font-size:.82rem}.warn{color:var(--gelb);font-weight:600}
.badge{display:inline-block;padding:2px 9px;border-radius:12px;font-size:.75rem;font-weight:600;vertical-align:middle}
.badge-neu{background:#fde8e6;color:var(--rot)}.badge-in_pruefung{background:#fff4d6;color:#9a6700}.badge-bewilligt{background:#dff3e6;color:var(--gruen)}.badge-abgelehnt{background:#eceff3;color:#4b5563}.badge-archiviert{background:#eceff3;color:var(--grau)}
.flash{padding:.7rem 1rem;border-radius:6px;margin-bottom:1rem;border:1px solid}
.flash-success{background:#e8f6ee;border-color:#b7e1c6;color:#1e6b3f}.flash-error{background:#fdecea;border-color:#f3b9b4;color:#8e2a1f}.flash-info{background:#eaf2fc;border-color:#bcd3f0;color:var(--blau-dunkel)}
.filterbar{display:flex;gap:.6rem;align-items:center;margin-bottom:1rem;flex-wrap:wrap}
.filterbar select,.filterbar input{width:auto;margin:0}.filterbar input[type=search]{min-width:260px}
.tabs{display:flex;gap:.2rem;flex:1;margin-bottom:.6rem}.tabs a{padding:.45rem .8rem;border-radius:6px;color:var(--text)}.tabs a.active{background:#fff;border:1px solid var(--rahmen);font-weight:600}.tabs a:hover{text-decoration:none;background:#eceff3}
.scans{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem}
.scans figure{margin:0;border:1px solid var(--rahmen);border-radius:6px;overflow:hidden;background:#fafafa}
.scans img{display:block;width:100%;height:280px;object-fit:contain;background:#eee}
.scans figcaption{font-size:.75rem;padding:.4rem .5rem;color:var(--grau);display:flex;justify-content:space-between;gap:.4rem}
.pdf-thumb{display:flex;align-items:center;justify-content:center;height:280px;background:#eee;font-weight:600}
.mailtext{white-space:pre-wrap;font-family:inherit;background:#f8f9fb;border:1px solid var(--rahmen);border-radius:6px;padding:.8rem;max-height:360px;overflow:auto;font-size:.88rem;line-height:1.45}
.code{background:#1f2937;color:#e5e7eb;padding:.7rem;border-radius:6px;font-size:.8rem;overflow:auto}
.timeline{list-style:none;padding:0;margin:0;font-size:.85rem}.timeline li{padding:.35rem 0;border-bottom:1px dashed var(--rahmen)}
.dialog{border:0;border-radius:var(--radius);padding:1.4rem;width:min(640px,95vw);box-shadow:0 20px 60px rgba(0,0,0,.25)}.dialog::backdrop{background:rgba(0,0,0,.4)}
.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.6rem}
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh}
.login-box{background:#fff;border:1px solid var(--rahmen);border-radius:10px;padding:2rem;width:min(400px,92vw)}
.login-box .brand{font-size:1.3rem;font-weight:600;margin-bottom:.2rem}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}
@media(max-width:800px){.kpis{grid-template-columns:1fr 1fr}}
.kpi{background:#fff;border:1px solid var(--rahmen);border-radius:var(--radius);padding:.9rem 1.1rem}
.kpi-label{font-size:.78rem;color:var(--grau);text-transform:uppercase;letter-spacing:.03em}.kpi-value{font-size:1.5rem;font-weight:600;margin-top:.2rem}
.table-scroll{overflow-x:auto}
.matrix td,.matrix th{white-space:nowrap}.matrix td label{display:flex;align-items:center;justify-content:flex-end;gap:.3rem;margin:0;color:inherit;font-size:.85rem;cursor:pointer}
.matrix td label input{margin:0}
.cell-offen{background:#fff7e0}.cell-verbucht{background:#e9f7ee}.cell-leer{background:#fafafa}
.legend{margin-left:auto;font-size:.8rem;color:var(--grau);display:flex;align-items:center;gap:.4rem}
.sw{display:inline-block;width:14px;height:14px;border:1px solid var(--rahmen);border-radius:3px}.sw-offen{background:#fff7e0}.sw-verbucht{background:#e9f7ee}
