:root { --bg:#f7f3ef; --card:#fff; --primary:#CC3366; --primary-dark:#EA6778; --pink:#CC3366; --accent:#D4A95C; --gold:#D4A95C; --blue:#759BC0; --text:#333333; --muted:#8a7d74; --border:#e7dadd; --green:#16a34a; --red:#dc2626; --amber:#d97706; --shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04); --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; }
* { box-sizing:border-box; }
body { margin:0; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; background:
  radial-gradient(circle at 12% 18%, rgba(212,169,92,.06), transparent 42%),
  radial-gradient(circle at 88% 82%, rgba(117,155,192,.07), transparent 46%),
  var(--bg);
  color:var(--text); font-size:14px; }
header .logo { display:flex; align-items:center; height:48px; }
header .logo img { height:48px; width:auto; display:block; }
header h1 { margin:0; font-size:18px; font-weight:700; letter-spacing:.6px; text-transform:uppercase; }
header .spacer { flex:1; }
header button, header a.btn { margin-left:8px; }
header a.btn { background:rgba(255,255,255,.16); color:#fff; border:1px solid rgba(255,255,255,.45); }
header a.btn:hover { background:#fff; color:var(--primary); }
.wrap { max-width:1400px; margin:0 auto; padding:20px 24px 60px; width:100%; box-sizing:border-box; }
.card { background:var(--card); border:1px solid var(--border); border-radius:12px; box-shadow:var(--shadow); padding:20px; margin-bottom:20px; }
.card h2 { margin:0 0 14px; font-size:17px; font-weight:600; font-family:var(--sans); letter-spacing:.2px; display:flex; align-items:center; gap:8px; }
.table-scroll td.num { text-align:right; font-variant-numeric:tabular-nums; }
.stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; }
/* Zuklappbare Übersicht */
.collapsible-h { cursor:pointer; user-select:none; display:flex; align-items:center; gap:8px; }
.collapsible-h .chev { font-size:14px; transition:transform .15s ease; color:var(--muted); }
.collapsible-h.closed .chev { transform:rotate(-90deg); }
.collapsible.closed { display:none; }
.stat { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:18px 16px; position:relative; overflow:hidden; box-shadow:var(--shadow); }
.stat::before { content:''; position:absolute; left:0; top:0; bottom:0; width:5px; background:var(--accent); }
.stat .num { font-size:28px; font-weight:700; font-family:var(--sans); color:var(--primary); }
.stat .lbl { color:var(--muted); font-size:12px; margin-top:6px; }
.stat.green { background:linear-gradient(180deg,#f4fbf6,#fff); }
.stat.green::before { background:var(--green); }
.stat.green .num { color:var(--green); }
.stat.amber { background:linear-gradient(180deg,#fffaf0,#fff); }
.stat.amber::before { background:var(--gold); }
.stat.amber .num { color:var(--amber); }
.stat.red { background:linear-gradient(180deg,#fff6f6,#fff); }
.stat.red::before { background:var(--blue); }
.stat.red .num { color:var(--red); }
.payment-panel { margin-top:18px; border:1px solid var(--border); border-radius:10px; padding:14px; background:#fdfbfa; }
.pp-head { display:flex; justify-content:space-between; align-items:center; gap:10px; font-weight:600; font-size:13px; margin-bottom:10px; flex-wrap:wrap; }
.payment-list { display:flex; flex-direction:column; gap:6px; }
.pay-row { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:7px 10px; background:#fff; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.pay-row button { padding:4px 10px; font-size:12px; }
.mini { padding:2px 7px; font-size:11px; line-height:1; border-radius:6px; margin-left:4px; }
.as-btn { cursor:pointer; border:1px solid var(--border); background:#fff; font-family:inherit; }
.btn-toggle { cursor:pointer; border:1px solid var(--border); border-radius:6px; padding:4px 10px; font-family:inherit; font-size:12px; font-weight:600; white-space:nowrap; }
.btn-toggle.on { background:#dcfce7; color:var(--green); border-color:#86efac; }
.btn-toggle.off { background:#fee2e2; color:var(--red); border-color:#fca5a5; }
.tag-suggest { display:flex; flex-wrap:wrap; gap:4px; margin-top:4px; font-size:12px; }
.tag-suggest .tag { cursor:pointer; }
.col-list { display:flex; flex-direction:column; gap:6px; margin:8px 0; max-height:55vh; overflow:auto; }
.col-row { display:flex; align-items:center; justify-content:space-between; padding:7px 10px; background:#fdf8f9; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.col-row label { display:flex; align-items:center; gap:8px; cursor:pointer; }
.col-move { display:flex; gap:4px; }
.col-move button { padding:2px 8px; font-size:12px; }
.tag { display:inline-block; background:var(--pink); color:#fff; border-radius:999px; padding:1px 8px; font-size:11px; margin:1px 2px; }
.audit-body td.old { color:var(--muted); text-decoration:line-through; max-width:260px; }
.audit-body td.new { color:var(--green); font-weight:500; max-width:260px; }
.empty { text-align:center; color:var(--muted); padding:20px; }
.toolbar { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:14px; }
button { background:linear-gradient(180deg,var(--primary),var(--primary-dark)); color:#fff; border:none; border-radius:9px; padding:9px 15px; font-size:13px; font-weight:600; cursor:pointer; display:inline-flex; align-items:center; gap:6px; box-shadow:0 1px 2px rgba(153,32,75,.25); }
button:hover { background:linear-gradient(180deg,var(--primary-dark),var(--primary)); }
button.secondary { background:#fff; color:var(--text); border:1px solid var(--border); box-shadow:none; }
button.secondary:hover { background:#fbf6f3; color:var(--primary); border-color:var(--primary); }
button.danger { background:#fff; color:var(--red); border:1px solid var(--border); box-shadow:none; }
button.danger:hover { background:#fff5f5; }
button.warn { background:#fff; color:var(--amber); border:1px solid var(--border); box-shadow:none; }
button.warn:hover { background:#fef9ec; color:#b8852a; border-color:var(--amber); }
button:disabled { opacity:.6; cursor:default; }
input,select,textarea { font-family:inherit; font-size:13px; padding:8px 10px; border:1px solid var(--border); border-radius:8px; background:#fff; color:var(--text); }
input:focus,select:focus,textarea:focus { outline:none; border-color:var(--gold); box-shadow:0 0 0 2px rgba(212,169,92,.25); }
.search { flex:1; min-width:200px; }
table { width:100%; border-collapse:collapse; font-size:13px; }
th,td { text-align:left; padding:10px 11px; border-bottom:1px solid var(--border); white-space:nowrap; }
th { background:#fbf2f4; font-family:var(--sans); font-weight:600; font-size:12.5px; color:var(--muted); cursor:pointer; user-select:none; position:sticky; top:0; }
th .arr { font-size:10px; color:var(--primary); }
th:hover { color:var(--primary); }
tbody tr:hover { background:#fbf6f3; }
.badge { padding:3px 9px; border-radius:20px; font-size:11px; font-weight:600; }
.badge.active { background:#dcfce7; color:var(--green); }
.badge.inactive { background:#fee2e2; color:var(--red); }
.badge.blue { background:#e8f0f8; color:var(--blue); }
.badge.amber { background:#fef3c7; color:var(--amber); }
.table-scroll { max-height:62vh; overflow:auto; border-radius:10px; border:1px solid var(--border); box-shadow:var(--shadow); }
.kv { list-style:none; margin:8px 0 0; padding:0; }
.kv li { display:flex; gap:12px; padding:5px 0; border-bottom:1px solid var(--border); font-size:13px; }
.kv li span { flex:0 0 180px; color:var(--muted); }
.kv li b { word-break:break-all; font-weight:500; }
.row-actions button { padding:5px 8px; font-size:12px; margin-right:4px; }
.col-act { width:1%; white-space:nowrap; }
.muted { color:var(--muted); }
.empty { text-align:center; padding:40px; color:var(--muted); }
.dropzone { border:2px dashed var(--border); border-radius:12px; padding:36px; text-align:center; color:var(--muted); cursor:pointer; transition:all .15s; background:#fdf8f9; }
.dropzone.drag { border-color:var(--primary); background:#fce8ee; color:var(--primary); }
.hidden { display:none !important; }
.modal-overlay { position:fixed; inset:0; background:rgba(15,23,42,.5); display:none; align-items:center; justify-content:center; z-index:50; padding:20px; }
.modal-overlay.open { display:flex; }
.modal { background:#fff; border-radius:14px; width:100%; max-width:680px; max-height:90vh; overflow:auto; padding:24px; box-shadow:0 20px 50px rgba(0,0,0,.25); }
.modal h3 { margin:0 0 16px; font-size:18px; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.field { display:flex; flex-direction:column; gap:4px; margin-bottom:4px; }
.field label { font-size:12px; color:var(--muted); font-weight:500; }
.field.full { grid-column:1/-1; }
.modal-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:18px; }
.tabs { display:flex; gap:6px; margin-bottom:16px; border-bottom:1px solid var(--border); }
.tab { padding:8px 14px; cursor:pointer; border-bottom:2px solid transparent; color:var(--muted); font-weight:500; }
.tab.active { color:var(--primary); border-bottom-color:var(--primary); }
.note { font-size:12px; color:var(--muted); margin-top:10px; line-height:1.5; }
.pill { background:#fce8ee; color:var(--primary); padding:2px 8px; border-radius:6px; font-size:11px; font-weight:600; }
.toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:#1e293b; color:#fff; padding:12px 20px; border-radius:10px; box-shadow:0 10px 30px rgba(0,0,0,.3); opacity:0; transition:opacity .25s; z-index:100; pointer-events:none; max-width:90vw; }
.toast.show { opacity:1; }
.map-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; align-items:center; padding:7px 0; border-bottom:1px solid var(--border); }
.map-row .src { font-weight:600; }
.audit-info { display:flex; gap:18px; flex-wrap:wrap; margin-top:12px; padding-top:10px; border-top:1px dashed var(--border); }
.audit-info .ff { display:flex; flex-direction:column; gap:4px; }
.audit-info .ff label { font-size:12px; color:var(--muted); font-weight:500; }
.audit-info input { background:#f1f0ef; color:var(--muted); border:1px solid var(--border); cursor:not-allowed; opacity:.85; }
.connbar.ok::before, .connbar.err::before { content:''; display:inline-block; width:10px; height:10px; border-radius:50%; }
.connbar.ok::before { background:var(--green); }
.connbar.err::before { background:var(--red); }
.connbar.ok, .connbar.err { background:transparent; color:transparent; padding:0; border:0; min-width:10px; }
@media (max-width:600px){ .grid2{grid-template-columns:1fr;} .map-row{grid-template-columns:1fr;} }

/* ---- CSP-konform: ersetzt inline style=-Attribute ---- */
.search input { width:100%; }
.modal.narrow380 { max-width:380px; }
.modal.narrow480 { max-width:480px; }
.card.add-card { display:none; }
.card.add-card.open { display:block; }
.oidc-card { max-width:420px; margin:60px auto; }
.msg-error { color:var(--red); }
.err-note { color:var(--red); }
.muted400 { font-weight:400; color:var(--muted); }

/* ---- Linke Sidebar Navigation ---- */
body { display:flex; }
#sidebar { width:248px; flex:0 0 248px; background:linear-gradient(180deg,var(--primary-dark),var(--primary) 55%, #b62e5c); color:#fff; min-height:100vh; position:sticky; top:0; display:flex; flex-direction:column; box-shadow:4px 0 18px rgba(153,32,75,.18); }
#sidebar .sb-head { display:flex; align-items:center; gap:12px; padding:20px 18px 16px; border-bottom:1px solid rgba(255,255,255,.18); background:rgba(255,255,255,.05); }
#sidebar .sb-logo { height:46px; width:auto; border-radius:6px; }
#sidebar .sb-title { font-family:var(--sans); font-size:17px; font-weight:700; letter-spacing:.3px; text-transform:uppercase; line-height:1.15; }
#sidebar .sb-nav { flex:1; padding:14px 10px; display:flex; flex-direction:column; gap:3px; overflow-y:auto; }
#sidebar .navlink { display:flex; align-items:center; gap:11px; padding:12px 15px; border-radius:9px; color:#fff; text-decoration:none; font-size:14px; opacity:.9; border-left:4px solid transparent; transition:background .12s, border-color .12s; }
#sidebar .navlink:hover { background:rgba(255,255,255,.16); opacity:1; }
#sidebar .navlink.active { background:#fff; color:var(--primary); font-weight:600; opacity:1; border-left:4px solid var(--gold); }
#sidebar .nav-ico { width:20px; text-align:center; flex:0 0 20px; }
#sidebar .nav-lbl { white-space:nowrap; }
#sidebar .sb-foot { padding:14px 10px; border-top:1px solid rgba(255,255,255,.18); display:flex; flex-direction:column; gap:9px; }
#sidebar .sb-foot .connbar { margin:0; }
#sidebar .sb-foot .whoami { font-size:12px; opacity:.85; padding:0 6px; }
#sidebar .navlink.logout { opacity:.85; border-left:4px solid transparent; }
#sidebar .navlink.logout:hover { background:rgba(255,255,255,.16); color:#fff; }
.main { flex:1; min-width:0; display:flex; flex-direction:column; }
.main .wrap { max-width:1400px; width:100%; margin:0 auto; padding:20px 24px 60px; box-sizing:border-box; }
@media (max-width:720px){ body{flex-direction:column;} #sidebar{width:100%;flex:0 0 auto;min-height:0;position:static;flex-direction:row;flex-wrap:wrap;align-items:center;} #sidebar .sb-nav{flex-direction:row;flex-wrap:wrap;padding:6px;} #sidebar .sb-foot{flex-direction:row;border-top:0;border-left:1px solid rgba(255,255,255,.18);margin-left:auto;} }

