:root{--rahmen: #dfe3e8;--grau: #6b7280;--hintergrund: #f7f8fa;--flaeche: #ffffff;--akzent: #1f5fa9;--ok: #2f9e44;--warn: #e8a317;--fehler: #c92a2a;--text: #1a1d21;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--hintergrund)}.app{display:flex;flex-direction:column;height:100vh}.kopf{display:flex;align-items:center;gap:24px;padding:12px 20px;background:var(--flaeche);border-bottom:1px solid var(--rahmen);flex-wrap:wrap}.monatswahl{display:flex;align-items:center;gap:10px}.monatswahl h1{font-size:18px;margin:0;min-width:170px}.monatswahl button{border:1px solid var(--rahmen);background:var(--flaeche);border-radius:6px;padding:4px 10px;cursor:pointer}.summen{display:flex;gap:18px;align-items:center;font-variant-numeric:tabular-nums}.summen .saldo{font-weight:600;padding-left:18px;border-left:1px solid var(--rahmen)}.zaehler{display:flex;align-items:center;gap:4px;color:var(--grau)}.zaehler .ampel{margin-left:10px}.konto{margin-left:auto}.ampel{font-size:12px}.ampel.ok{color:var(--ok)}.ampel.mehrdeutig{color:var(--warn)}.ampel.offen{color:var(--fehler)}.ampel.ignoriert{color:var(--grau)}.banner{padding:8px 20px;display:flex;justify-content:space-between;align-items:center}.banner.fehler{background:#fdecec;color:var(--fehler)}.banner.info{background:#e8f2fd;color:var(--akzent)}.banner.warnung{background:#fff8e6;color:#8a6100;border-bottom:1px solid #f0dca8}.banner button{background:none;border:none;cursor:pointer;font-size:16px}.banner button.inline{font-size:13px;text-decoration:underline;color:inherit;padding:0 6px}.marke{font-size:9px;padding:1px 4px;border-radius:3px;margin-left:4px;white-space:nowrap}.marke.sevdesk-offen{background:#fdf0d5;color:#8a6100}main{display:flex;flex:1;min-height:0}.liste{flex:1;overflow-y:auto;padding:16px 20px}.detail{width:460px;border-left:1px solid var(--rahmen);background:var(--flaeche);overflow-y:auto;padding:16px}.detail.leer{display:flex;align-items:center;justify-content:center;color:var(--grau)}table.positionen{width:100%;border-collapse:collapse;background:var(--flaeche);border:1px solid var(--rahmen);border-radius:8px;overflow:hidden}.positionen th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--grau);padding:8px 10px;border-bottom:1px solid var(--rahmen);background:#fbfcfd}.positionen td{padding:7px 10px;border-bottom:1px solid #f0f2f4;vertical-align:top}.positionen tbody tr{cursor:pointer}.positionen tbody tr:hover{background:#f5f8fc}.positionen tbody tr.aktiv{background:#e8f2fd}.positionen tbody tr.ausgeblendet{opacity:.45}.sp-status{width:24px}.sp-datum{width:82px;white-space:nowrap}.sp-betrag{width:100px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.sp-typ{width:46px}.sp-az{width:130px}.sp-beleg{width:90px;color:var(--grau);font-size:12px}.positiv{color:var(--ok)}.negativ{color:var(--fehler)}.sp-zweck .zweck{display:block;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-zweck .gegenkonto{display:block;font-size:11px;color:var(--grau)}.typ{font-size:10px;padding:2px 5px;border-radius:3px;background:#eef1f4;color:var(--grau)}.typ.eingang{background:#e6f4ea;color:#1e7b34}.sp-az code{font-size:11px}.sp-az code.sicher{color:var(--ok)}.fehlt{color:var(--grau)}.detail-kopf{margin-bottom:12px}.detail h4{margin:18px 0 6px;font-size:12px;text-transform:uppercase;color:var(--grau)}.detail section{border-top:1px solid var(--rahmen);padding-top:4px}.hinweis{background:#fff8e6;border:1px solid #f0dca8;border-radius:6px;padding:8px 10px;font-size:12px;margin-bottom:12px}.vorschau{border:1px solid var(--rahmen);border-radius:6px;overflow:hidden}.vorschau .pdf{width:100%;height:440px;border:none}.vorschau img{width:100%;display:block}.kein-beleg{padding:40px;text-align:center;color:var(--grau)}.az-zeile{display:flex;gap:6px}.az-zeile input{flex:1;padding:6px 8px;border:1px solid var(--rahmen);border-radius:6px}.kandidaten{list-style:none;padding:0;margin:6px 0}.kandidaten li{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px}.kandidaten li label{display:flex;gap:6px;align-items:center;flex:1;cursor:pointer}.extraktion{display:grid;grid-template-columns:90px 1fr;gap:4px 10px;font-size:12px;margin:0}.extraktion dt{color:var(--grau)}.extraktion dd{margin:0}.extraktion dd.abweichung{color:var(--fehler);font-weight:600}.aktionen{display:flex;flex-direction:column;gap:6px}.kontoauszuege{margin-top:20px;background:var(--flaeche);border:1px solid var(--rahmen);border-radius:8px;padding:12px 14px}.kontoauszuege ul{list-style:none;padding:0;margin:0 0 10px}.kontoauszuege li{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}.kontoauszuege .nummer{color:var(--grau);width:18px}.kontoauszuege .loeschen{margin-left:auto;border:none;background:none;color:var(--grau);cursor:pointer;font-size:16px}.review{margin-top:20px;background:var(--flaeche);border:1px solid var(--rahmen);border-radius:8px;padding:12px 14px}.review ul{list-style:none;padding:0}.review li{border-left:3px solid var(--rahmen);padding:6px 10px;margin-bottom:8px}.review li.warnung{border-color:var(--warn)}.review li.fehler{border-color:var(--fehler)}.review li p{margin:4px 0;font-size:13px}.verweis{background:none;border:none;color:var(--akzent);cursor:pointer;padding:0;font-size:12px}.aktionsleiste{display:flex;gap:10px;align-items:center;padding:10px 20px;background:var(--flaeche);border-top:1px solid var(--rahmen)}.fueller{flex:1}button{font:inherit;padding:7px 14px;border:1px solid var(--rahmen);background:var(--flaeche);border-radius:6px;cursor:pointer}button:hover:not(:disabled){background:#f2f5f8}button:disabled{opacity:.5;cursor:not-allowed}button.primaer{background:var(--akzent);color:#fff;border-color:var(--akzent)}button.primaer:hover:not(:disabled){background:#18497f}button.ki{border-style:dashed}button.sekundaer,.grau{color:var(--grau)}.klein{font-size:12px}.leer{color:var(--grau);padding:30px;text-align:center}code{background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:12px}.fortschritt{list-style:none;margin:0;padding:16px 20px;display:flex;flex-direction:column;gap:2px}.fortschritt li{display:grid;grid-template-columns:20px minmax(150px,auto) 1fr auto;align-items:center;gap:10px;padding:7px 0;color:var(--grau);animation:einblenden .25s ease-out}@keyframes einblenden{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.fortschritt li .marke{text-align:center}.fortschritt li.erledigt .marke{color:var(--ok)}.fortschritt li .titel{color:var(--text)}.fortschritt li.aktiv .titel{font-weight:600}.fortschritt li .text{font-size:12px}.fortschritt li.aktiv .marke{color:var(--akzent);animation:pulsieren 1.1s ease-in-out infinite}@keyframes pulsieren{0%,to{opacity:1}50%{opacity:.25}}.fortschritt .balken{display:flex;align-items:center;gap:8px;width:170px}.fortschritt .spur{flex:1;height:4px;border-radius:2px;background:var(--rahmen);overflow:hidden}.fortschritt .fuellung{display:block;height:100%;border-radius:2px;background:var(--akzent);transition:width .3s ease-out}.fortschritt .balken em{font-style:normal;font-size:11px;font-variant-numeric:tabular-nums;min-width:52px;text-align:right}.anmeldung{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.anmeldung .karte{background:var(--flaeche);border:1px solid var(--rahmen);border-radius:10px;padding:32px;max-width:420px}.anmeldung h1{font-size:20px;margin:0 0 12px}.anmeldung p{color:var(--grau);line-height:1.5}.anmeldung a.primaer{display:inline-block;margin:12px 0;background:var(--akzent);color:#fff;padding:9px 18px;border-radius:6px;text-decoration:none}.anmeldung a.primaer:hover{background:#18497f}
