/* APEX FROZEN — READ ONLY. Neue Klassen nur in css/components/. */
/* ════════════════════════════════════════════════════════════
   IKT Berlin — Design-System (MASTER-FIX v2)
   Gemini-Architektur + IKT-Klassennamen + Session 3
   Stand: 29.03.2026
   ════════════════════════════════════════════════════════════ */

/* ── RESET + VARIABLEN ───────────────────────────────────── */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}

:root{
  --dark:#1A3A5C;
  --blue:#0356B1;
  --orange:#E05A00;
  --border:#D1DCE8;
  --text:#1A3A5C;
  --bg:#ffffff;
  --white:#FFF;
  --red:#C42B2B;
  --muted:#5a7a9a;
  --soft:#7a9ab8;
  --green:#1a8a3c;
  --yellow:#b87800;
  --shadow:0 1px 3px rgba(0,0,0,0.04),0 1px 2px rgba(0,0,0,0.02);
  --shadow-hover:0 2px 8px rgba(0,0,0,0.06),0 1px 3px rgba(0,0,0,0.03);
  --shadow-md:0 4px 16px rgba(0,0,0,0.08);
}

/* ══════════════════════════════════════════════════════════
   GLOBALER SCROLL-FIX (Gemini-Architektur)
   Body = Document Flow, nicht Flex-Gefängnis.
   Gantt bekommt eigene feste Höhe.
   ══════════════════════════════════════════════════════════ */
html,body{
  margin:0;padding:0; /* APEX-EXCEPTION: Modul 1 Topbar-Sticky-Fix — Browser-Default body-Margin (8px) neutralisieren, damit Topbar bündig am oberen Bildschirmrand klebt */
  min-height:100%;
  height:auto!important;
  overflow-x:hidden;
  overflow-y:auto!important;
  font-family:'Barlow',sans-serif;
  color:var(--text);
  background:var(--bg);
  font-size:14px;
  -webkit-font-smoothing:antialiased;
  line-height:1.4;
}

/* ══════════════════════════════════════════════════════════
   APP-SHELL (globaler Wrapper um Main-Nav + Split-Container)
   Grenze greift erst ab Ultrawide — siehe Breakpoints unten.
   ══════════════════════════════════════════════════════════ */
.app-shell{max-width:var(--layout-max-width,1600px);margin:0 auto;padding:0;position:relative;overflow:visible}
/* Full-Bleed-Escape für .gantt-area — bricht Shell-Limit via 100vw aus. */
.u-gantt-fullbleed{position:relative;width:100vw;left:50%;margin-left:-50vw;margin-right:-50vw}

/* ── HEADER (sticky oben) ────────────────────────────────── */
/* APEX-EXCEPTION: .hdr/.hdr-* Header-Regeln entfernt 2026-05-15 (Modul 1).
   APEX-EXCEPTION: SSoT jetzt: css/components/topbar.css */

/* ── HAUPTNAVIGATION (sticky unter Header) ───────────────── */
/* APEX-EXCEPTION: .main-nav / .nav-tab entfernt 2026-05-15 (Modul 1 Shell-Refactor).
   APEX-EXCEPTION: SSoT jetzt: css/components/tabbar.css (Klassen .tabbar / .tab / .is-active). */
.nav-right{margin-left:auto;display:flex;align-items:center;gap:4px;padding-left:16px}

/* ── SPLIT-VIEW (Document Flow, kein overflow:hidden) ────── */
.split-container{display:flex;gap:1px;background:var(--border);min-height:calc(100vh - 110px)}
.panel{flex:1;display:none;flex-direction:column;background:var(--white);min-width:320px}
.panel.act{display:flex}
.panel-hdr{display:none;align-items:center;background:var(--white);border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto;scrollbar-width:none}
.panel-hdr::-webkit-scrollbar{display:none}
.panel-hdr.show{display:flex}
.panel-hdr-sep{width:1px;height:16px;background:var(--border);margin:0 4px;flex-shrink:0;align-self:center}
.panel-close{background:none;border:none;cursor:pointer;font-size:13px;color:var(--muted);padding:8px 14px;transition:color .15s;flex-shrink:0;margin-left:auto}
.panel-close:hover{color:var(--dark)}

/* ── SEKUNDÄRNAVIGATION ──────────────────────────────────── */
.sec-nav{display:flex;border-bottom:1px solid var(--border);padding:0 20px;background:var(--white);flex-shrink:0;overflow-x:auto;scrollbar-width:none}
.sec-nav::-webkit-scrollbar{display:none}
.sec-tabs{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:12px;gap:0}

/* ── SCROLLABLE CONTENT (alle Panels außer Gantt) ────────── */
/* S59: padding entfernt — Inhalts-Padding liegt ausschließlich bei
   .app-content-master (Tokens --layout-padding-*). */
.scroll{flex:1;overflow-y:auto;background:var(--white)}

/* ── GANTT: EIGENE FESTE HÖHE (isoliert vom Document Flow) ── */
.gantt-area{width:100%;height:calc(100vh - 120px);min-height:500px;overflow:hidden}

/* ── KPI STRIP ───────────────────────────────────────────── */
.kpi-strip{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.kpi-item{flex:1;min-width:160px;padding:14px 18px;background:var(--white);border-radius:6px;box-shadow:var(--shadow);border:1px solid var(--border);border-left:3px solid var(--border)}
.kpi-item.kpi-green{border-left-color:var(--green)}
.kpi-item.kpi-red{border-left-color:var(--red)}
.kpi-item.kpi-orange{border-left-color:var(--orange)}
.kpi-item.kpi-yellow{border-left-color:var(--yellow)}
.kpi-item.kpi-blue{border-left-color:var(--blue)}
.kpi-label{font-size:10.5px;font-weight:500;color:var(--muted);letter-spacing:.4px;text-transform:uppercase}
.kpi-val{font-size:26px;font-weight:300;color:var(--dark);margin-top:4px;letter-spacing:-.5px}
.kpi-val.red{color:var(--red)}
.kpi-val.green{color:var(--green)}
.kpi-val.orange{color:var(--orange)}
.kpi-sub{font-size:11px;color:var(--muted);margin-top:3px}

/* ── TOOLBAR ─────────────────────────────────────────────── */
.toolbar{display:flex;align-items:center;gap:10px;padding:10px 20px;background:var(--c-bg,#fff);border-bottom:1px solid var(--c-border,#D1DCE8);flex-shrink:0;flex-wrap:wrap}
/* Toolbar-Kontext: borderless, soft background */
.toolbar .t-btn{border:none;background:var(--c-bg-soft,#f5f8fc);font-weight:var(--fw-medium,500);letter-spacing:.1px}
.toolbar .t-btn:hover{background:#e8edf3}
.toolbar .t-btn.primary{background:var(--c-accent,#0356B1);color:#fff}
.toolbar .t-btn.primary:hover{background:#024a9a}
.t-sep{width:1px;height:18px;background:var(--c-border,#D1DCE8);margin:0 4px;flex-shrink:0;opacity:.5}

/* ── TABELLEN ────────────────────────────────────────────── */
.table-wrap{background:var(--white);border-radius:6px;box-shadow:var(--shadow);border:1px solid var(--border)}
.tbl .right,.data-table .right{text-align:right}
/* Detail-Rows: Inhalt darf wachsen */
.td-name{font-weight:500;color:var(--dark)}

/* ── BADGES ──────────────────────────────────────────────── */

/* ── KW-BLÖCKE (Dashboard) ───────────────────────────────── */
.kw-block{background:var(--white);border-radius:6px;margin-bottom:10px;box-shadow:var(--shadow);border:1px solid var(--border);overflow:hidden}
.kw-hdr{display:flex;align-items:center;gap:14px;padding:11px 16px;background:#f5f8fc;border-bottom:1px solid var(--border);cursor:pointer;user-select:none;transition:background .15s}
.kw-hdr:hover{background:#edf2f9}
.kw-nr{font-size:15px;font-weight:300;color:var(--dark);letter-spacing:-.2px;flex-shrink:0;min-width:44px}
.kw-nr strong{font-weight:500}
.kw-dates{font-size:12px;color:var(--muted);flex-shrink:0}
.kw-pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center;flex:1}
.kw-today{display:inline-flex;align-items:center;padding:2px 8px;font-size:10px;font-weight:500;background:var(--orange);color:#fff;border-radius:3px;letter-spacing:.3px;flex-shrink:0}
.pill{display:inline-flex;align-items:center;padding:2px 8px;font-size:10.5px;font-weight:400;border-radius:3px;flex-shrink:0}
.pill-green{background:rgba(26,138,60,.1);color:#1a7a35;border:1px solid rgba(26,138,60,.15)}
.pill-yellow{background:rgba(184,120,0,.1);color:#9a6800;border:1px solid rgba(184,120,0,.15)}
.pill-red{background:rgba(194,43,43,.1);color:#b52020;border:1px solid rgba(194,43,43,.15)}
.pill-grey{background:rgba(26,58,92,.05);color:var(--muted);border:1px solid rgba(26,58,92,.08)}
/* Sprint A.4: dunkleres Grau für 'abgeschlossen' (visuell trennbar von 'offen' = pill-grey) */
.pill-muted{background:#d6d8db;color:#495057;border:1px solid #c4c8cc}
.kw-body{display:none}
.kw-body.open{display:block}

/* ── Dashboard Utility ────────────────────────────────── */
.db-stand{font-size:11px;color:var(--muted);margin-bottom:14px}
.db-range{font-size:12px;color:var(--muted);margin-left:8px}
.db-kpi-sub{font-size:11px;color:var(--muted);margin-top:3px}
.proj-schicht{font-size:10.5px;color:var(--muted);font-weight:400;margin-left:4px}
.proj-status-dot{flex:0 0 32px;text-align:center}
.status-check{font-size:12px;color:var(--green);font-weight:500}
.kw-heute{display:inline-flex;align-items:center;padding:1px 6px;font-size:10px;font-weight:500;background:var(--orange);color:#fff;border-radius:3px;letter-spacing:.2px;vertical-align:middle;margin-left:4px}
.db-pers{font-weight:500}
.db-pers-offen{color:var(--red)}
.db-pers-angefragt{color:var(--yellow)}
.db-pers-bestaetigt{color:var(--green)}
.db-pers-abgeschlossen{color:#555}
.db-pers-abgelehnt{color:#8B0000}
.db-missing{font-size:11px;color:var(--red);font-weight:700}
.proj-row{display:flex;align-items:center;padding:9px 16px;border-bottom:1px solid var(--border);transition:background .1s;cursor:pointer}
.proj-row:last-child{border-bottom:none}
.proj-row:hover{background:#f0f5fb}
.proj-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0;margin-right:12px}
.proj-name{flex:0 0 180px;font-weight:500;color:var(--dark);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proj-kunde{flex:0 0 85px;font-size:11px;color:var(--blue);font-weight:500;letter-spacing:.2px}
.proj-personal{flex:1;font-size:12.5px;color:var(--green);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── PERSONALPLANUNG BLÖCKE ──────────────────────────────── */
.ps-block{background:var(--white);border-radius:6px;box-shadow:var(--shadow);border:1px solid var(--border);margin-bottom:8px;overflow:hidden}
.ps-hdr{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--dark);color:#fff;cursor:pointer;user-select:none;transition:background .15s}
.ps-hdr:hover{background:#1e4570}
.ps-toggle{font-size:11px;flex-shrink:0;width:14px;color:rgba(255,255,255,.5)}
.ps-name{font-size:15px;font-weight:300;color:#fff;letter-spacing:-.2px}
.ps-pills{display:flex;gap:5px;flex-wrap:wrap;margin-left:auto}
.ps-pill{font-size:10px;font-weight:500;padding:2px 7px;border-radius:3px}
.ps-pill-green{background:rgba(255,255,255,.12);color:rgba(255,255,255,.8)}
.ps-pill-yellow{background:rgba(255,180,0,.2);color:#ffcc44}
.ps-pill-red{background:rgba(255,80,80,.2);color:#ff8888}
.ps-actions{display:flex;gap:4px;margin-left:8px}
.ps-body{display:none;padding:0}
.ps-body.open{display:block}

/* ── FINANZEN: AUFGABEN-KARTEN ───────────────────────────── */
.task{display:flex;align-items:center;padding:14px 20px;background:var(--white);border-radius:6px;margin-bottom:6px;cursor:pointer;position:relative;box-shadow:var(--shadow);border:1px solid transparent;transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}
.task:hover{box-shadow:var(--shadow-hover);border-color:#e0e4e9;transform:translateY(-0.5px)}
.task.signal::before{content:'';position:absolute;left:0;top:10px;bottom:10px;width:2.5px;background:var(--red);border-radius:0 2px 2px 0}
.task-name{flex:1;font-size:13.5px;font-weight:400;color:var(--dark);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-amt{font-size:13.5px;font-weight:400;color:var(--dark);margin:0 20px;white-space:nowrap;min-width:90px;text-align:right}
.btn-grp{display:flex;align-items:center;gap:8px;flex-shrink:0}
.undo{font-size:10.5px;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:2px;padding:4px 2px;max-width:0;overflow:hidden;opacity:0;transition:max-width .2s ease,opacity .2s ease}
.undo.on{max-width:72px;opacity:1}

/* ── DETAIL PANEL (Finanzen) ─────────────────────────────── */
.detail{overflow:hidden;max-height:0;transition:max-height .25s ease;margin:-3px 0 6px;border-radius:0 0 6px 6px}
.detail.open{max-height:400px}
.detail-inner{padding:16px 24px;background:#fafbfc;box-shadow:inset 0 1px 0 var(--border);border-radius:0 0 6px 6px}
.dl{display:flex;justify-content:space-between;font-size:12px;color:var(--soft);padding:3px 0;opacity:0;transform:translateY(4px);transition:opacity .2s ease-out,transform .2s ease-out}
.detail.open .dl{opacity:1;transform:none}
.detail.open .dl:nth-child(1){transition-delay:0ms}
.detail.open .dl:nth-child(2){transition-delay:80ms}
.detail.open .dl:nth-child(3){transition-delay:160ms}
.detail.open .dl:nth-child(4){transition-delay:240ms}
.detail.open .dl:nth-child(5){transition-delay:320ms}
.dl-sep{border-top:1px solid var(--border);margin-top:8px;padding-top:8px;color:var(--dark);font-weight:500}

/* ── GLIDE-OUT ANIMATIONEN ───────────────────────────────── */
.task.gliding{opacity:.4;pointer-events:none;transition:opacity .2s ease}
.task.gone{max-height:0!important;padding:0!important;margin:0!important;opacity:0!important;overflow:hidden!important;border-width:0!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important}
.task.dim{opacity:.4;cursor:default}
.task.dim:hover{box-shadow:var(--shadow);border-color:transparent;transform:none}

/* ── ARCHIV ──────────────────────────────────────────────── */
.ghost{padding:12px 20px;font-size:12px;color:var(--muted);display:flex;justify-content:space-between;background:var(--white);border-radius:6px;margin-bottom:4px;opacity:.4;box-shadow:var(--shadow);gap:16px}
.ghost span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ── SEKTIONS-LABEL ──────────────────────────────────────── */
.sec-label{font-size:10.5px;font-weight:500;color:var(--muted);letter-spacing:.4px;text-transform:uppercase;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.sec-label .dot{width:5px;height:5px;border-radius:50%;background:var(--red)}
.task-list{margin-bottom:36px}

/* ── MODAL ───────────────────────────────────────────────── */
.modal{background:var(--white);border-radius:8px;width:580px;max-width:96vw;border-top:3px solid var(--dark);max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-md)}
.modal-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.modal-head h3{font-size:16px;font-weight:500;color:var(--dark)}
.modal-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted);transition:color .15s}
.modal-close:hover{color:var(--dark)}
.modal-body{padding:16px 18px;overflow-y:auto;flex:1}
.modal-footer{padding:12px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0}
.form-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.form-row:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
.form-label{width:150px;flex-shrink:0;font-size:12px;font-weight:500;color:var(--muted)}

/* ════════════════════════════════════════════════════════════
   Form-Validation — global
   Jedes Form-Input mit .is-invalid bekommt rotes Border + Schatten.
   Optional darunter .field-error für Inline-Fehlertext.
   ════════════════════════════════════════════════════════════ */
input.is-invalid,
select.is-invalid,
textarea.is-invalid,
  border-color: var(--red, #c0392b) !important;
  outline: none;
  box-shadow: 0 0 0 2px rgba(192,57,43,.15);
}
input.is-invalid:focus,
select.is-invalid:focus,
textarea.is-invalid:focus,
  box-shadow: 0 0 0 3px rgba(192,57,43,.25);
}
.field-error {
  font-size: 11px;
  color: var(--red, #c0392b);
  margin-top: 4px;
  display: block;
  line-height: 1.3;
}
.field-error:empty { display: none; }

/* ── TOAST ───────────────────────────────────────────────── */
.toast{position:fixed;top:20px;right:20px;z-index:10000;padding:12px 20px;border-radius:6px;font-size:13px;box-shadow:var(--shadow-md);opacity:0;transform:translateY(-8px);transition:opacity .2s ease,transform .2s ease;pointer-events:none;max-width:400px}
.toast.show{opacity:1;transform:translateY(0);pointer-events:auto;cursor:pointer}
.toast-error{background:#f8d7da;color:#b52020;border:1px solid rgba(194,43,43,.2)}
.toast-ok{background:#d4edda;color:#155724;border:1px solid rgba(26,138,60,.2)}

/* ── EMPTY STATE ─────────────────────────────────────────── */
.empty{text-align:center;padding:40px;color:var(--muted);font-size:13px}

/* ── FERIEN BANNER ───────────────────────────────────────── */
.ferien-banner{background:rgba(224,90,0,.05);border:1px solid rgba(224,90,0,.18);border-radius:6px;padding:8px 14px;font-size:12px;font-weight:400;color:var(--dark);margin-bottom:16px;display:flex;align-items:center;gap:8px}

/* ── SPLIT HINT ──────────────────────────────────────────── */
.split-hint{position:fixed;bottom:20px;right:20px;background:var(--dark);color:#fff;font-size:11.5px;padding:10px 16px;border-radius:6px;box-shadow:var(--shadow-md);z-index:100;opacity:0;transform:translateY(8px);transition:opacity .3s ease,transform .3s ease;pointer-events:none}
.split-hint.show{opacity:1;transform:translateY(0)}

/* ── RESPONSIVE ──────────────────────────────────────────── */
/* (Alt-Breakpoint max-width:800px konsolidiert in die neuen 4 Stufen
   am Dateiende: Mobile/Tablet/Desktop/Ultrawide) */

/* ══════════════════════════════════════════════════════════
   SESSION 3 ERWEITERUNGEN (29.03.2026)
   ══════════════════════════════════════════════════════════ */

/* ── PNU: PERSONAL-DETAIL LAYOUT ─────────────────────────── */
.pnu-section{padding:30px 60px!important;border-bottom:1px solid var(--border)}
.pnu-section:last-child{border-bottom:none;padding-bottom:30px!important}
.pnu-section + .pnu-section{margin-top:4px}

/* ── ZERTIFIKATE ─────────────────────────────────────────── */
.cert-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #edf0f5}
.cert-row:last-child{border-bottom:none}

/* ── STATUS-SELECT FARBEN (Personalplanung) ────────────── */
.status-sel{font-size:11px;padding:2px 5px;border:1px solid var(--border);border-radius:2px;background:#fff;color:var(--text);cursor:pointer}
.status-sel.bestaetigt{background:#edfaf2;border-color:var(--green);color:#155c2d}
.status-sel.angefragt{background:#fff8e6;border-color:var(--yellow);color:#7a5f00}
.status-sel.abgeschlossen{background:#f0f0f5;border-color:#999;color:#444}
.status-sel.abgelehnt{background:#fde8e8;border-color:#8B0000;color:#8B0000}

/* ── DETAIL-AKKORDEON (Projekte-Tab) ─────────────────────── */
.ds-section{border-bottom:1px solid var(--border)}
.ds-section:last-child{border-bottom:none}
.ds-head{display:flex;align-items:center;gap:8px;padding:12px 16px 12px 10px;cursor:pointer;transition:background .1s;user-select:none}
.ds-head:hover{background:#edf2f9}
.ds-head.open{background:#e8f0fa}
.ds-tog{font-size:10px;color:var(--muted);width:16px;text-align:center;transition:transform .2s;flex-shrink:0}
.ds-tog.open{transform:rotate(90deg)}
.ds-icon{font-size:15px;flex-shrink:0}
.ds-label{font-size:13px;font-weight:500;color:var(--dark);flex:1}
.ds-badge{font-size:10px;color:var(--muted);background:#e5eaf0;padding:1px 8px;border-radius:10px;flex-shrink:0}
.ds-body{display:none;padding-left:8px}
.ds-body.open{display:block}

/* ── ISO-PROJEKTABLAGE ───────────────────────────────────── */
.iso-tree{margin:0}
.folder-L0{margin-bottom:2px}
.folder-L0>.folder-head{padding:7px 10px;border-radius:4px;display:flex;align-items:center;cursor:pointer;transition:background .1s;gap:6px}
.folder-L0>.folder-head:hover{background:#edf2f9}
.folder-L0>.folder-head.open{background:#e8f0fa}
.folder-L1{margin-left:24px;margin-bottom:1px}
.folder-L1>.folder-head{padding:5px 10px;border-radius:3px;display:flex;align-items:center;cursor:pointer;transition:background .1s;gap:6px}
.folder-L1>.folder-head:hover{background:#edf2f9}
.folder-L2{margin-left:24px;margin-bottom:1px}
.folder-L2>.folder-head{padding:4px 10px;border-radius:3px;display:flex;align-items:center;cursor:pointer;transition:background .1s;gap:6px}
.folder-L2>.folder-head:hover{background:#edf2f9}
.folder-tog{font-size:9px;color:var(--muted);width:14px;text-align:center;transition:transform .2s;flex-shrink:0}
.folder-tog.open{transform:rotate(90deg)}
.folder-ico{font-size:15px;flex-shrink:0}
.folder-label{font-weight:500;font-size:12.5px;color:var(--dark);flex:1}
.folder-L1 .folder-label{font-size:12px;font-weight:400}
.folder-L2 .folder-label{font-size:11.5px;font-weight:400}
.folder-count{font-size:10px;color:var(--muted);background:#e5eaf0;padding:1px 7px;border-radius:10px}
.is-empty{opacity:0.5}
.is-empty:hover{opacity:0.7}
.is-empty .folder-label{font-style:italic}
.folder-children{display:none}
.folder-children.open{display:block}
.file-list{padding:3px 0 6px 44px}
.file-row{display:flex;align-items:center;padding:4px 10px;border-radius:3px;gap:7px;transition:background .1s}
.file-row:hover{background:#e4ecf5}
.file-row[draggable="true"]{cursor:grab}
.file-row[draggable="true"]:active{cursor:grabbing;opacity:0.5}
.file-icon{font-size:13px;flex-shrink:0}
.file-name{font-size:11.5px;color:var(--text);flex:1;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-name:hover{color:var(--blue);text-decoration:underline}
.file-date{font-size:10.5px;color:var(--muted);min-width:72px}
.file-size{font-size:10.5px;color:var(--muted);min-width:48px;text-align:right}
.folder-head.dragover{background:#edf4ff!important;outline:2px dashed var(--blue);outline-offset:-2px}
.iso-legend{display:flex;gap:16px;align-items:center;margin-top:12px;font-size:11px;color:var(--muted)}
.iso-legend-item{display:flex;align-items:center;gap:5px}
.iso-legend-swatch{width:28px;height:14px;border-radius:3px;border:1px solid var(--border)}

/* ── FERIEN-SEKTION (Projekte-Tab) ─────────────────────── */
.ferien-section{margin-top:12px;opacity:0.5;transition:opacity .2s}
.ferien-section:hover{opacity:0.75}
.ferien-section-head{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;user-select:none;transition:background .1s;border-radius:4px}
.ferien-section-head:hover{background:#edf2f9}
.ferien-section-body{display:none}
.ferien-section-body.open{display:block}
.ferien-section .data-table{border:1px solid var(--border);border-radius:6px}

/* ── RESPONSIVE (Session 3) ──────────────────────────────── */
@media(max-width:900px){
  .pnu-section{padding:14px 20px!important}
  .pnu-grid{gap:12px}
  .pnu-field .form-input,.pnu-field input,.pnu-field select{max-width:100%!important}
}

/* ══════════════════════════════════════════════════════════
   FAKTURA MODULE (Session 26 — Design-Pass)
   Klassen für Rechnungs-Editor, Positionen, Optionen
   ══════════════════════════════════════════════════════════ */

/* ── Spinner entfernen (alle number-inputs) ───────────── */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
input[type="number"]{-moz-appearance:textfield;appearance:textfield}

/* ── Sticky Button-Leiste ─────────────────────────────── */

/* ── Editor Max-Width Wrapper ─────────────────────────── */

/* ── RE buchen Button (rot, prominent) ────────────────── */

/* ── Löschen-Link (dezent) ────────────────────────────── */

/* ── Status-Banner ────────────────────────────────────── */

/* ── Kunde + Beträge Zeile ────────────────────────────── */

/* ── Betragsübersicht-Karte ───────────────────────────── */

/* ── Standard-Label (10.5px Uppercase Muted) ──────────── */

/* ── Standard-Input ───────────────────────────────────── */

/* ── Textarea ─────────────────────────────────────────── */

/* ── Sektion mit Abstand ──────────────────────────────── */

/* ── Leistungszeitraum-Box ────────────────────────────── */

/* ── 2-Spalten Grid (Kopffelder) ──────────────────────── */

/* ── Textbaustein-Zeile ───────────────────────────────── */

/* ── Titel-Karte (Positionsgruppe) ────────────────────── */

/* ── Titel-Kopf ──────────────────────────────────────── */

/* ── Spalten-Header ───────────────────────────────────── */

/* ── Positions-Zeile ──────────────────────────────────── */

/* ── Position Icons ───────────────────────────────────── */

/* ── Titelsumme ───────────────────────────────────────── */

/* ── Zentrierte Button-Zeilen ─────────────────────────── */

/* ── Autocomplete-Dropdown ────────────────────────────── */

/* ── Abschlag-Block ───────────────────────────────────── */

/* ── Vorrechnungen-Block ──────────────────────────────── */

/* ── Optionen ─────────────────────────────────────────── */

/* ── Zahlungsziel Fälligkeitsdatum ────────────────────── */

/* ── Typ-Modal Grid ───────────────────────────────────── */

/* ── Kundensuche-Item ─────────────────────────────────── */

/* ── Leistung/Material relative Wrapper ───────────────── */

/* ── Listen-Container (Tabelle mit Rahmen) ────────────── */

/* ══════════════════════════════════════════════════════════
   Faktura Spalten-System S60
   Einheitliche Spalten-Klassen für alle .fakt-list Tabellen.
   table-layout:fixed erzwingt die Breiten; col-desc nimmt den
   verbleibenden Platz und darf umbrechen (kein Ellipsis).
   ══════════════════════════════════════════════════════════ */

/* Bezeichnung/Beschreibung: Umbruch erlaubt, kein Ellipsis */
  white-space:normal;
  word-break:break-word;
  text-overflow:clip;
  overflow:visible;
}

/* ── Kunde-ändern Inline-Link + Suche (S28) ──────────── */

/* ══════════════════════════════════════════════════════════
   FAKTURA CD-PASS (Session 33)
   Inline-Styles → CSS-Klassen
   ══════════════════════════════════════════════════════════ */

/* ── Inline-Bestätigung (faktOk, aus JS-IIFE extrahiert) ── */
/* Faktura-Erblast — neue Code-Stellen sollen ui-ok verwenden */
@keyframes faktOkAni{0%{opacity:0}15%{opacity:1}80%{opacity:1}100%{opacity:0}}

/* ── Inline-Bestätigung (ui-ok, neuer Klassenname) ────── */
.ui-ok{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:12px;letter-spacing:.4px;color:var(--muted);z-index:20;pointer-events:none;opacity:0;animation:uiOkAni .6s ease forwards}
.ui-ok-wrap{position:relative}
@keyframes uiOkAni{0%{opacity:0}15%{opacity:1}80%{opacity:1}100%{opacity:0}}

/* ── uiPrompt — Eingabedialog ─────────────────────────── */
.ui-prompt-body{display:flex;flex-direction:column;gap:8px}
.ui-prompt-message{font-size:13px;color:var(--muted)}
.ui-prompt-input{width:100%}
.ui-prompt-input.is-invalid{border-color:var(--red,#c0392b);outline:none;box-shadow:0 0 0 2px rgba(192,57,43,.15)}
.ui-prompt-error{min-height:18px;font-size:12px;color:var(--red,#c0392b)}

/* ── Modal Größenvarianten ───────────────────────────── */
.modal-sm{max-width:440px}
.modal-md{max-width:520px}
.modal-lg{max-width:720px}
.modal.modal-wide{width:min(1100px,95vw);max-width:1100px}

/* ── Modal-Head ohne Border (Typ-Auswahl) ────────────── */
.modal-head-clean{border-bottom:none;padding:14px 18px 0}

/* ── Editor-Bar Badge (Entwurflabel) ─────────────────── */

/* ── Status-Select in Editor-Bar ─────────────────────── */

/* ── Info-Banner (Angebot versendet) ─────────────────── */

/* ── Optionen-Grid (Angebot-Editor) ──────────────────── */

/* ── Quick-Buttons (Gültig-Shortcuts, Vorrechnungen) ─── */

/* ── Textarea klein (Leistungstext) ──────────────────── */

/* ── Tabelle kompakt (Vorrechnungen) ─────────────────── */
.tbl-sm{font-size:12px}
.tbl-sm th,.tbl-sm td{padding:6px 12px}
.tbl-foot-bold td{font-weight:500}

/* ── Field-Label + Field-Input (Formular-Basis) ──────── */
.field-label{display:block;margin-bottom:4px;font-size:10.5px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}

/* ── Formular-Grids (Modale) ─────────────────────────── */
.field-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px}
.field-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px 12px}

/* ── Inline-Formular (Kundenpreis etc.) ──────────────── */

/* ── Hilfstextfarben ─────────────────────────────────── */
.text-red{color:var(--red)}
.text-blue{color:var(--blue)}
/* (Hinweis: .text-orange/.text-green/.u-muted oben in S47-Block) */

/* ── Text-Align Utilities ────────────────────────────── */
.right{text-align:right}
.center{text-align:center}

/* ── Vorrechnung-Item (Checkbox-Label) ───────────────── */

/* ── Label mit mehr Abstand ──────────────────────────── */

/* ── Abschlag-Grid ───────────────────────────────────── */

/* ══════════════════════════════════════════════════════════
   UI-HELPERS KOMPONENTEN (Session 33 — Bibliothek)
   ══════════════════════════════════════════════════════════ */

/* ── uiSearch — Autocomplete-Suchfeld ────────────────── */
.ui-search-wrap{position:relative}
.ui-search-dropdown{display:none;position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;border:1px solid var(--c-border,#D1DCE8);border-top:none;border-radius:0 0 var(--radius-sm,4px) var(--radius-sm,4px);background:var(--c-bg,#fff);box-shadow:var(--shadow-md,0 4px 16px rgba(0,0,0,0.08));z-index:var(--z-dropdown,50)}
/* Modal-Body: overflow visible wenn Suchfeld enthalten, damit Dropdown nicht abgeschnitten wird */
.modal-body:has(.ui-search-wrap){overflow:visible}
.ui-search-item{padding:12px 12px;border-bottom:1px solid var(--c-border,#D1DCE8);font-size:var(--fs-table,13px);cursor:pointer;transition:background var(--transition-fast,.15s ease);line-height:var(--lh-normal,1.4)}
.ui-search-item:hover{background:var(--c-row-hover,#f0f5fb)}
.ui-search-item:last-child{border-bottom:none}
.ui-search-empty{color:var(--c-muted,#5a7a9a);cursor:default}
.ui-search-empty:hover{background:transparent}

/* ── uiField — Formularfeld ──────────────────────────── */
.ui-field{margin-bottom:10px}

/* ── uiTable — Sort-Icon ─────────────────────────────── */
.ui-sort-icon{display:inline-flex;vertical-align:middle;margin-left:4px}
.ui-sort-icon svg{vertical-align:middle}

/* ── Toast info-Typ (Erweiterung) ────────────────────── */
.toast-info{background:#e8f0fe;color:var(--c-accent,#0356B1);border:1px solid rgba(3,86,177,.2)}

/* ── Badge large ─────────────────────────────────────── */
.badge-lg{font-size:var(--fs-badge-lg,11px);padding:3px 9px}

/* ── Calendar Overlay (Header) ──────────────────────── */
.cal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9998;background:rgba(0,0,0,.25)}
.cal-popup{position:fixed;top:56px;right:24px;z-index:9999;background:var(--white);border-radius:8px;box-shadow:var(--shadow-md);border:1px solid var(--border);width:320px;padding:16px;animation:calFadeIn .15s ease}
@keyframes calFadeIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.cal-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal-hdr-title{font-size:14px;font-weight:500;color:var(--dark)}
.cal-hdr button{background:none;border:none;cursor:pointer;font-size:16px;color:var(--muted);padding:4px 8px;border-radius:4px;transition:background .15s}
.cal-hdr button:hover{background:var(--c-bg-soft,#f5f8fc);color:var(--dark)}
.cal-weekdays{display:grid;grid-template-columns:28px repeat(7,1fr);gap:2px;margin-bottom:4px}
.cal-weekdays span{font-size:10px;font-weight:500;color:var(--muted);text-transform:uppercase;text-align:center;padding:4px 0}
.cal-grid{display:grid;grid-template-columns:28px repeat(7,1fr);gap:2px}
.cal-kw{font-size:9px;color:var(--muted);display:flex;align-items:center;justify-content:center;font-weight:500}
.cal-day{text-align:center;padding:5px 0;font-size:12px;color:var(--text);border-radius:4px;cursor:default;line-height:1.3}
.cal-day.muted{color:var(--border)}
.cal-day.today{background:var(--orange);color:#fff;font-weight:500;border-radius:50%}
.cal-day.weekend{color:var(--muted)}

/* ══════════════════════════════════════════════════════════
   S47 INLINE-MIGRATION — Utility & Modul-Klassen
   ══════════════════════════════════════════════════════════ */

/* ── Utility (global) ────────────────────────────────── */
.u-bold{font-weight:500}
.u-nowrap{white-space:nowrap}
.u-relative{position:relative}
.u-flex-1{flex:1}
.u-col-full{grid-column:1/-1}
.u-fs-12{font-size:12px}
.u-fs-13{font-size:13px}
.u-fs-20{font-size:20px}
.u-mt-4{margin-top:4px}
.u-mt-6{margin-top:6px}
.u-mt-8{margin-top:8px}
.u-mb-0{margin-bottom:0}
.u-mb-10{margin-bottom:10px}
.u-mb-14{margin-bottom:14px}

/* ── UI-Helpers (wiederverwendbar, modal-footer) ─────── */
.ui-modal-footer{display:flex;gap:8px;justify-content:flex-end}

/* ── S47 INLINE-MIGRATION: faktura ───────────────────── */

/* ── S47 INLINE-MIGRATION: utility erweitert ─────────── */
.u-pointer{cursor:pointer}
.u-mb-12{margin-bottom:12px}
.u-mb-16{margin-bottom:16px}
.u-mb-20{margin-bottom:20px}
/* fin_todo.js spezifisch */
.fin-todo-dot-mini{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-left:6px;vertical-align:middle}
.fin-todo-section{margin-top:12px}
.fin-todo-task-clickable{cursor:pointer}
.fin-todo-task-aligncenter{align-items:center;cursor:pointer}
.fin-todo-name-2{flex:2}
.fin-todo-info-1{flex:1;text-align:center}
.fin-todo-info-meta{font-size:10px;color:var(--muted);margin-top:2px}
.fin-todo-info-meta-mb{font-size:10px;color:var(--muted);margin-bottom:2px}
.fin-todo-status-ok{font-size:10px;color:var(--green)}
.fin-todo-status-muted{font-size:10px;color:var(--muted)}
.fin-todo-status-red{font-size:10px;color:var(--red)}
.fin-todo-mahn-w96{width:96px;text-align:right}
.fin-todo-mahn-btn{width:96px;font-size:11px;padding:5px 0}
.fin-todo-mahn-warte{font-size:10px;color:var(--muted)}
.fin-todo-empty{margin-top:20px}
.fin-todo-historie{margin-bottom:14px;padding:10px 12px;background:#f8fafc;border-radius:6px;font-size:11px}
.fin-todo-historie-title{font-weight:500;color:var(--dark);margin-bottom:6px}
.fin-todo-historie-row{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px solid #eee}
.fin-todo-modal-card{background:#fff;border-radius:10px;width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px rgba(0,0,0,.18)}
.fin-todo-modal-info{display:flex;justify-content:space-between;margin-bottom:14px;padding:10px 12px;background:#f0f4f8;border-radius:6px}
.fin-todo-modal-rnr{font-size:13px;font-weight:500}
.fin-todo-modal-info-sub{font-size:11px;color:var(--muted)}
.fin-todo-modal-info-betrag{font-size:13px;font-weight:500}
.fin-todo-modal-overdue{font-size:11px;color:var(--red)}
.fin-todo-modal-zinsen{font-size:11px;color:var(--muted);margin-bottom:10px}
.fin-todo-grid-2-12{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.fin-todo-section-14{margin-bottom:14px}
.fin-todo-status-area{margin-bottom:10px;padding:8px 12px;border-radius:6px;font-size:12px}
.fin-todo-status-info{background:#f0f6ff;color:var(--blue)}
.fin-todo-status-ok-state{background:#f0fff4;color:var(--green)}
.fin-todo-status-warn-state{background:#fffbe6;color:#7a6a00}
.fin-todo-status-err-state{background:#fff5f5;color:var(--red)}
.fin-todo-pauschale-label{display:flex;align-items:center;gap:6px;cursor:pointer;padding:6px 0}
.fin-todo-pauschale-text{font-size:12px}
.fin-todo-bg-blue{background:var(--blue)}
.fin-todo-bg-green{background:var(--green)}
.fin-todo-pdf-link{color:var(--blue);font-weight:500}
.fin-todo-stufe-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:2px}
.fin-todo-close-btn-success{width:96px;padding:8px 0;background:var(--green);color:#fff;border:none;border-radius:5px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit}
/* projekte.js spezifisch */
.proj-row-clickable{cursor:pointer}
.proj-tog-cell{text-align:center;color:var(--muted)}
.proj-kurzname{font-size:10px;color:var(--blue)}
.proj-actions-cell{text-align:right;white-space:nowrap}
.proj-detail-row td{padding:0}
.proj-detail-bg{background:#fafbfc;border-top:1px solid var(--border)}
.proj-detail-pad{padding:14px 16px 14px 20px}
.proj-grid-4{grid-template-columns:1fr 1fr 1fr 1fr;margin-bottom:10px}
.proj-input-100{width:100%}
.proj-output-display{display:block;width:100%;background:#fafafa}
.proj-output-display-green{display:block;width:100%;color:var(--green);background:#f8faf8}
.proj-output-display-red{display:block;width:100%;color:var(--red);background:#fef8f8}
.proj-section-mb{margin-bottom:10px}
.proj-textarea-50{width:100%;min-height:50px;resize:vertical}
.proj-textarea-40{width:100%;min-height:40px;resize:vertical}
.proj-iso-pad{padding:0 16px 14px 20px}
.proj-iso-swatch-full{background:#fff;opacity:1}
.proj-iso-swatch-half{background:#fff;opacity:.5}
.proj-iso-badge-mini{font-size:9px;padding:1px 5px}
.proj-iso-del-btn{font-size:10px;padding:2px 6px}
.proj-lz-pad{padding:8px}
.proj-lz-add-btn{font-size:11px;padding:4px 12px}
.proj-lz-add-btn-mt{font-size:11px;padding:4px 12px;margin-top:8px}
.proj-lz-pers-row{display:flex;align-items:center;gap:8px;margin-bottom:2px;/* überschrieben durch Grid-Block Z.2209 */}
.proj-lz-pers-sel{min-width:140px;flex:1;font-size:11px;padding:2px 4px}
.proj-lz-pers-sel-warn{background:#fff0f0;border-color:#f5c6cb}
/* Sprint-Komplett: Rolle-Dropdown neben Personal-Dropdown */
.af-lz-pers-row{flex-wrap:nowrap}
.af-lz-rolle-sel{min-width:90px;max-width:120px;font-size:11px;padding:2px 4px}
/* (Mobile-Override für .af-lz-rolle-sel ist in den neuen Breakpoints am Dateiende) */
.proj-lz-status-badge{font-size:10px;padding:1px 5px;border-radius:2px;white-space:nowrap;font-weight:500}
.proj-lz-cell-top{vertical-align:top;padding-top:6px;white-space:nowrap}
.proj-lz-cell-noml{vertical-align:top;padding-top:4px}
.proj-lz-cell-vertical{vertical-align:top}
.proj-lz-actions{vertical-align:top;padding-top:6px;text-align:right}
.proj-lz-color-dot{width:10px;height:10px;border-radius:2px;display:inline-block;vertical-align:middle;margin-right:4px}
.proj-lz-sel-170{width:170px;font-size:11px;padding:2px 4px}
.proj-lz-sel-120{width:120px;font-size:11px;padding:2px 4px}
.proj-lz-sel-100{width:100px;font-size:11px;padding:2px 4px}
.proj-lz-input-44{width:44px;font-size:11px;padding:2px 4px}
.proj-lz-pad-overflow{padding:0 8px 8px 8px;overflow-x:auto}
.proj-lz-table-w-190{width:190px}
.proj-lz-table-mw-270{min-width:270px}
.proj-lz-table-w-110{width:110px}
.proj-lz-table-w-36{width:36px}
.proj-lz-del{font-size:11px;padding:2px 6px}
.fin-ent-modal-box{background:#fff;border-radius:10px;padding:24px 28px;width:440px;max-width:90vw;box-shadow:0 8px 32px rgba(0,0,0,.2);font-family:inherit}
.fin-ent-modal-title{font-size:14px;font-weight:500;color:var(--dark);margin-bottom:16px}
.fin-ent-grid-2{display:flex;gap:10px;margin-bottom:10px}
.fin-ent-section{margin-bottom:10px}
.fin-ent-section-14{margin-bottom:14px}
.fin-ent-actions{display:flex;gap:8px}
.fin-ent-btn-primary{flex:1;padding:8px 0;color:#fff;border:none;border-radius:5px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;width:96px}
.fin-ent-btn-primary-red{background:var(--red)}
.fin-ent-btn-primary-green{background:var(--green)}
.fin-ent-btn-cancel{flex:1;padding:8px 0;background:none;border:1px solid var(--border);border-radius:5px;font-size:13px;cursor:pointer;color:var(--muted);font-family:inherit;width:96px}
.fin-ent-row-action{font-size:11px;color:var(--muted)}
/* schulungen.js spezifisch */
.schul-stat-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.schul-stat-card{background:var(--card);border-radius:8px;padding:12px 16px;min-width:100px;box-shadow:0 1px 3px rgba(0,0,0,0.06)}
.schul-stat-card-rot{border-left:3px solid var(--red)}
.schul-stat-card-gelb{border-left:3px solid #d4a800}
.schul-stat-card-gruen{border-left:3px solid var(--green)}
/* APEX-EXCEPTION: .lief-* Regeln entfernt 2026-05-15 (Clean-Sweep S71, lieferanten.js gelöscht). */
.lief-dropzone-loaded-name{color:var(--muted);font-size:11px}
.lief-grid-2-160{display:grid;grid-template-columns:1fr 160px;gap:12px;margin-bottom:12px}
.lief-grid-3-100-160{display:grid;grid-template-columns:1fr 100px 160px;gap:12px;margin-bottom:12px}
.lief-grid-3-eq{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px}
.lief-grid-2-eq{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.lief-grid-2-100{display:grid;grid-template-columns:1fr 100px;gap:12px;margin-bottom:16px}
.lief-section-12{margin-bottom:12px}
.lief-divider{border-top:1px solid var(--border);padding-top:12px;margin-top:4px;margin-bottom:12px}
.lief-section-title{font-size:11px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
.lief-fk-bar{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.lief-fk-add-btn{width:96px;font-size:10px;padding:3px 0}
.lief-fk-list{min-height:20px;color:var(--muted);font-size:12px}
.lief-error{color:var(--red);font-size:12px;margin-bottom:8px;padding:8px;background:#fff5f5;border-radius:4px}
.lief-actions{display:flex;gap:10px;justify-content:flex-end}
.lief-fk-table{width:100%;border-collapse:collapse;font-size:12px}
.lief-fk-th{text-align:left;padding:3px 6px;color:var(--muted);font-weight:400}
.lief-fk-th-r{text-align:right;padding:3px 6px;color:var(--muted);font-weight:400}
.lief-fk-td{padding:3px 6px}
.lief-fk-td-r{text-align:right;padding:3px 6px}
.lief-fk-td-muted{padding:3px 6px;color:var(--muted)}
.lief-fk-del{background:none;border:none;color:var(--red);cursor:pointer;font-size:11px}
.w-55{width:55px}
.w-75{width:75px}
.w-60{width:60px}
.schul-stat-val{font-size:20px;font-weight:400}
.schul-stat-label{font-size:11px;color:var(--muted)}
.schul-group-wrap{margin-bottom:12px}
.schul-group-head{padding:10px 16px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.schul-group-title{font-size:13px;font-weight:500}
.schul-group-tog{display:inline-block;width:16px;font-size:11px;color:var(--muted)}
.schul-group-meta{font-size:11px;color:var(--muted);font-weight:400}
.schul-group-stats{font-size:11px}
.schul-stat-aktiv{color:var(--green);margin-right:8px}
.schul-stat-bald{color:#d4a800;margin-right:8px}
.schul-stat-abge{color:var(--red)}
.schul-table-full{width:100%;border-collapse:collapse}
.schul-table-hidden{display:none}
.schul-col-w-40{width:40px}
.schul-col-w-200{width:200px}
.schul-col-w-110{width:110px}
.schul-col-w-150{width:150px}
.schul-tr-border{border-bottom:1px solid var(--border)}
.schul-tr-border-2{border-bottom:2px solid var(--border)}
.schul-tr-border-top{border-top:1px solid var(--border)}
.schul-tr-clickable{border-bottom:1px solid var(--border);cursor:pointer}
.schul-cell-pad-0-16{padding:6px 16px}
.schul-cell-pad-0-8{padding:6px 8px}
.schul-cell-12{font-size:12px}
.schul-cell-11-muted{font-size:11px;color:var(--muted)}
.schul-cell-12-muted{font-size:12px;color:var(--muted)}
.schul-th{padding:8px 16px;text-align:left;font-size:11px;font-weight:500;color:var(--muted)}
.schul-th-mini{padding:8px;text-align:left;font-size:11px;font-weight:500;color:var(--muted)}
.schul-th-c{padding:8px;text-align:center;font-size:11px;font-weight:500;color:var(--muted)}
.schul-th-r{padding:8px 16px;text-align:right;font-size:11px;font-weight:500;color:var(--muted)}
.schul-cell-actions{padding:8px 16px;text-align:right}
.schul-row-warn{color:var(--red);font-weight:500}
.schul-cell-pad-5-0{padding:5px 0;font-size:12px}
.schul-cell-pad-5-4{padding:5px 4px;font-size:12px}
.schul-cell-pad-5-4-muted{padding:5px 4px;font-size:11px;color:var(--muted)}
.schul-cell-pad-5-r{padding:5px 0;text-align:right}
.schul-zert-info{font-size:11px;color:var(--muted);margin-bottom:12px}
.schul-vsec-wrap{margin-bottom:12px;padding:12px 16px}
.schul-vsec-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
.schul-vsec-actions{display:flex;gap:6px}
.schul-vsec-table{width:100%;border-collapse:collapse;margin-top:8px}
.schul-detail-row{display:flex;flex-direction:column;gap:10px}
.schul-textarea-50{min-height:50px;resize:vertical}
.schul-textarea-40{min-height:40px;resize:vertical}
.schul-textarea-80{min-height:80px;resize:vertical;font-size:11px}
.schul-input-80{width:80px}
.schul-input-140{width:140px;font-size:12px}
.schul-input-flex-min{flex:1;min-width:120px;font-size:12px}
.schul-divider{border-top:1px solid var(--border);padding-top:10px;margin-top:4px}
.schul-section-title{font-size:11px;font-weight:500;color:var(--muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}
.schul-historie-section{margin-top:16px;border-top:1px solid var(--border);padding-top:12px}
.schul-historie-row{font-size:12px;padding:4px 0;border-bottom:1px solid var(--border)}
.schul-historie-meta{color:var(--muted);font-size:11px}
.schul-detail-meta{margin-bottom:12px}
.schul-detail-meta-typ{font-size:13px;margin-bottom:4px}
.schul-tnliste-section{margin-bottom:14px;padding:10px 12px;background:var(--bg);border-radius:6px;border:1px solid var(--border)}
.schul-tnliste-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.schul-tnliste-name{font-size:12px;color:var(--text)}
.schul-tnliste-empty-meta{font-size:12px;color:var(--muted)}
.schul-tn-section{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.schul-tn-add-bar{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.schul-tn-sel{flex:1;font-size:12px}
.schul-tn-add-section{margin-top:4px}
.schul-tn-quick-form{margin-top:8px;padding:10px;background:var(--bg);border-radius:6px}
.schul-tn-quick-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.schul-empty{font-size:12px;color:var(--muted);padding:8px 0}
.schul-tnliste-iconpad{padding:5px 0;font-size:12px;width:28px}
.schul-tnliste-cell-name{padding:5px 4px;font-size:12px}
.schul-tnliste-cell-meta{padding:5px 4px;font-size:11px;color:var(--muted)}
.schul-tn-action-cell{padding:5px;text-align:right}
.schul-tn-pos-cell{padding:5px;font-size:11px;color:var(--green)}
.schul-tn-typ-cell{padding:6px 8px;font-size:11px;color:var(--muted)}
.schul-cell-letzte{padding:6px 8px;font-size:11px;color:var(--muted)}
.schul-action-actions{padding:6px 16px;text-align:right}
.schul-cell-pad-6-16{padding:6px 16px;width:24px}
.schul-cell-pad-6-8-12{padding:6px 8px;font-size:12px}
.schul-cell-pad-6-8-11-muted{padding:6px 8px;font-size:11px;color:var(--muted)}
.schul-cell-pad-6-8-12-muted{padding:6px 8px;font-size:12px;color:var(--muted)}
.schul-cell-pad-6-8-11-warn{padding:6px 8px;font-size:11px;color:var(--red);font-weight:500}
.schul-diff-text{font-size:10px}
.schul-quick-add-toggle{font-size:11px;padding:4px 10px}
.schul-meta-icon-row{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.schul-meta-section{margin-bottom:12px}
.u-mb-24{margin-bottom:24px}
.u-mt-18{margin-top:18px}
.u-fs-10{font-size:10px}
.u-fs-11{font-size:11px}
.u-muted{color:var(--muted)}
.text-orange{color:var(--orange)}
.text-green{color:var(--green)}
.w-40{width:40px}
.w-70{width:70px}
.w-80{width:80px}
.w-90{width:90px}
.w-100{width:100px}
.w-110{width:110px}
.w-50{width:50px}
.w-65{width:65px}
.w-120{width:120px}
.w-130{width:130px}
.w-160{width:160px}
.w-180{width:180px}
.w-85{width:85px}
.w-36{width:36px}
.w-140{width:140px}
.w-200{width:200px}
.w-320{width:320px}

/* ── S47 INLINE-MIGRATION: finanzen-modale (shared für fin_*.js) ── */
.fin-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9000;display:flex;align-items:center;justify-content:center}
.fin-modal-card{background:#fff;border-radius:10px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px rgba(0,0,0,.18)}
.fin-modal-card-560{width:560px}
.fin-modal-card-600{width:600px}
.fin-modal-card-680{width:680px}
.fin-modal-head{padding:18px 24px 14px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.fin-modal-title{font-size:16px;font-weight:500;color:var(--dark)}
.fin-modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--muted);line-height:1}
.fin-modal-body{padding:20px 24px}
.fin-form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.fin-form-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px}
.fin-form-grid-4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:12px;margin-bottom:8px}
.fin-form-grid-3-sm{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.fin-form-label{font-size:12px;color:var(--muted)}
.fin-form-label-sm{font-size:11px;color:var(--muted)}
.fin-form-input{width:100%;margin-top:3px;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px}
.fin-form-input-sm{width:100%;margin-top:2px;padding:5px 7px;border:1px solid var(--border);border-radius:4px;font-size:12px}
.fin-form-textarea{resize:vertical}
.fin-form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}
.fin-form-section{margin-bottom:14px}
.fin-form-section-title{font-size:12px;font-weight:500;margin-bottom:6px;color:var(--dark)}
.fin-btn-cancel{padding:8px 16px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;font-size:13px}
.fin-btn-w96{width:96px}

/* ── S47 INLINE-MIGRATION: fin-steuern spezifisch ────── */
.fin-header-bar{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.fin-meta-13{font-size:13px;color:var(--muted)}
.fin-btn-zahlung{width:96px;margin-left:12px}
.fin-btn-bescheid{width:96px;padding:6px 0;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;font-size:12px;color:var(--dark)}
.fin-btn-einst{background:none;border:1px solid var(--border);border-radius:4px;padding:5px 10px;cursor:pointer;font-size:13px;color:var(--muted)}
.fin-disc{font-size:11px;color:var(--muted);font-style:italic}
.fin-detail-toggle{cursor:pointer;font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:4px}
.fin-detail-label-cell{width:320px;font-size:12px}
.fin-detail-val-cell{font-size:12px;text-align:right}
.fin-detail-foot-line{font-size:11px;color:var(--muted)}
.fin-spacer-row{padding:4px}
.fin-stz-gesamt{font-size:12px;font-weight:500;margin-bottom:12px;color:var(--muted)}
.fin-stz-gesamt-active{color:var(--dark)}
.fin-stb-delta{margin-top:3px;padding:6px 8px;font-size:13px;font-weight:500}
.fin-stz-betrag-hint{font-size:10px}
.fin-detail-row-sep{font-weight:500;border-top:2px solid var(--border)}
.fin-detail-row-bold{font-weight:500}
.fin-detail-row-total{font-weight:500;font-size:14px;border-top:2px solid var(--border);padding-top:8px}

/* ── S47 INLINE-MIGRATION: fin-ausgaben/-einnahmen Forms ─ */
.fin-modal-card-640{width:640px}
.fin-form-input-rounded{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:5px;font-size:13px;font-family:inherit}
.fin-form-input-rounded-ro{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:5px;font-size:13px;background:#f8fafc;color:var(--muted);font-family:inherit}
.fin-form-grid-2-gap14{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.fin-form-grid-3-gap14{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:14px}
.fin-form-grid-2-gap12{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fin-form-section-14{margin-bottom:14px}
.fin-form-section-6{margin-bottom:6px}
.fin-form-divider{border-top:1px solid var(--border);margin:4px 0 16px}
.fin-modal-foot{padding:14px 24px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}
.fin-btn-cancel-aus{width:96px;padding:8px 0;border:1px solid var(--border);background:#fff;border-radius:5px;font-size:13px;cursor:pointer;font-family:inherit;color:var(--dark)}
.fin-btn-save-aus{width:96px;padding:8px 0;background:var(--blue);color:#fff;border:none;border-radius:5px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit}
.fin-dropzone{border:2px dashed var(--border);border-radius:8px;padding:16px;text-align:center;margin-bottom:16px;cursor:pointer;transition:border-color .2s}
.fin-dropzone.drag-active{border-color:var(--blue)}
.fin-dropzone.drop-ok{border-color:var(--green);background:#f0fff4}
.fin-dropzone.drop-err{border-color:var(--red);background:#fff5f5}
.fin-dropzone.drop-loading{border-color:var(--blue);background:#f0f6ff}
.fin-dropzone-text{font-size:12px;color:var(--muted)}
.fin-dropzone-hint{font-size:11px}
.fin-aus-hint-line{font-size:11px;color:var(--muted);margin-top:3px}
.fin-aus-error{color:#c22b2b;font-size:12px;margin-top:8px;padding:8px 10px;background:#fef2f2;border-radius:5px}
.fin-aus-loaded-fname{color:var(--muted);font-size:11px}
.fin-aus-toolbar{flex-wrap:wrap;gap:6px}
.fin-aus-count{font-size:11px;color:var(--muted);margin-right:12px}
.fin-aus-dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.fin-aus-dot-green{background:var(--green)}
.fin-aus-dot-blue{background:var(--blue)}
.fin-aus-dot-grey{background:#ddd}
.fin-aus-dot-red{background:var(--red)}
.fin-aus-popup{position:fixed;z-index:9100;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.15);padding:14px 16px;min-width:220px;font-family:inherit}
.fin-aus-popup-title{font-size:11px;font-weight:500;color:var(--muted);margin-bottom:10px}
.fin-aus-popup-row{margin-bottom:10px}
.fin-aus-popup-label{font-size:11px;color:var(--muted);display:block;margin-bottom:3px}
.fin-aus-popup-input{width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px;font-family:inherit}
.fin-aus-popup-diff{font-size:10px;color:var(--muted);margin-top:3px}
.fin-aus-popup-actions{display:flex;gap:8px}
.fin-aus-popup-btn{flex:1;padding:7px 0;color:#fff;border:none;border-radius:5px;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit}
.fin-aus-popup-btn-ok{background:var(--green)}
.fin-aus-popup-btn-storno{background:#c22b2b}
.fin-aus-popup-btn-cancel{width:100%;margin-top:8px;padding:5px 0;background:none;border:1px solid var(--border);border-radius:5px;font-size:11px;cursor:pointer;color:var(--muted);font-family:inherit}
.fin-aus-dup-btn{margin-top:6px;padding:4px 12px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;font-size:12px}
.fin-form-input-rounded-strong{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:5px;font-size:13px;font-weight:500;background:#f0f4f9;color:var(--dark);font-family:inherit}
.fin-form-input-warn-border{border-color:var(--orange)}
.u-ml-6{margin-left:6px}

/* ── S47 INLINE-MIGRATION: fin-kontoabgleich ─────────── */
.text-grey1{color:#888}
.text-grey2{color:#aaa}
.text-grey3{color:var(--muted)}
.fin-ka-empty{font-size:12px;color:var(--muted);padding:8px 0}
.fin-ka-cell-konto{font-size:12px}
.fin-ka-pct{font-size:10px;color:var(--muted)}
.fin-ka-loading{padding:20px;text-align:center;color:var(--blue)}
.fin-ka-loading-title{font-size:14px;font-weight:500;margin-bottom:6px}
.fin-ka-loading-sub{font-size:12px;color:var(--muted)}
.fin-ka-error{padding:14px;background:#fff5f5;border-radius:6px;color:var(--red);font-size:13px}
.fin-ka-loading-small{padding:12px;text-align:center;color:var(--muted)}
.fin-ka-header-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.fin-ka-header-title{font-size:13px;font-weight:500}
.fin-ka-stats-row{display:flex;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.fin-ka-stat-badge{padding:6px 14px;border-radius:5px;font-size:12px}
.fin-ka-stat-num{font-weight:500}
.fin-ka-stat-green{background:#f0fff4}
.fin-ka-stat-green .fin-ka-stat-num{color:#22a84a}
.fin-ka-stat-grey{background:#f8f8f8}
.fin-ka-stat-grey .fin-ka-stat-num{color:#888}
.fin-ka-stat-red{background:#fff5f5}
.fin-ka-stat-red .fin-ka-stat-num{color:#c22b2b}
.fin-ka-stat-blue{background:#f0f6ff}
.fin-ka-stat-blue .fin-ka-stat-num{color:var(--blue)}
.fin-ka-match-badge{font-size:10px}
.fin-ka-match-text{font-size:11px}
.fin-ka-row-erledigt{background:#f0fff4}
.fin-ka-row-privat{background:#f8f8f8}
.fin-ka-row-ignoriert{background:#fafafa}
.fin-ka-row-strike{text-decoration:line-through;opacity:.6}
.fin-ka-cell-nr{font-size:11px;color:var(--muted)}
.fin-ka-cell-12{font-size:12px}
.fin-ka-cell-vz{font-size:10px;color:var(--muted);margin-top:1px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fin-ka-cell-betrag{text-align:right;font-size:12px;font-weight:500}
.fin-ka-cell-actions{text-align:right;white-space:nowrap}
.fin-ka-erledigt-icon{font-size:10px;color:var(--green)}
.fin-ka-summary{font-size:12px;margin-top:10px;padding:8px 12px;border-radius:5px}
.fin-ka-summary-ok{background:#f0fff4}
.fin-ka-summary-todo{background:#fff5f5}
.fin-ka-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.18);padding:16px;z-index:9999;max-width:600px;width:90%;max-height:70vh;overflow-y:auto}
.fin-ka-popup-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.fin-ka-popup-title{font-size:13px}
.fin-ka-popup-close{border:none;background:none;font-size:18px;cursor:pointer;color:var(--muted)}
.fin-ka-popup-info{font-size:11px;color:var(--muted);margin-bottom:10px}
.fin-ka-popup-table{width:100%;font-size:12px;border-collapse:collapse}
.fin-ka-popup-table th{text-align:left;padding:4px}
.fin-ka-popup-table thead tr{border-bottom:1px solid var(--border)}
.fin-ka-popup-table tbody tr{border-bottom:1px solid #f0f0f0}
.fin-ka-popup-table td{padding:5px 4px}
.fin-ka-popup-th-r{text-align:right;padding:4px}
.fin-ka-popup-th-c{text-align:center;padding:4px}
.fin-ka-popup-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.3);z-index:9998}
.fin-ka-st-vz-box{margin-bottom:12px;padding:8px 10px;background:#f0f6ff;border-radius:5px;font-size:11px}
.fin-ka-st-vz-radio{display:block;margin-top:4px;cursor:pointer}
.fin-ka-st-info{font-size:12px;color:var(--muted);margin-bottom:8px}
.fin-ka-st-rest{font-size:11px;color:var(--muted);margin-bottom:12px}
.fin-ka-st-jahr-input{width:120px;box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:5px;font-size:13px;font-family:inherit}
.fin-ka-st-add-btn{font-size:11px;color:var(--blue);background:none;border:none;cursor:pointer;padding:4px 0;margin-bottom:12px}
.fin-ka-st-pos-row{display:grid;grid-template-columns:1fr 1fr 100px 24px;gap:8px;align-items:end;margin-bottom:6px;padding:8px 10px;background:#fafafa;border-radius:5px}
.fin-ka-st-pos-label{font-size:10px;color:var(--muted);display:block;margin-bottom:2px}
.fin-ka-st-pos-input{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:12px;font-family:inherit}
.fin-ka-st-pos-input-num{width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:12px;font-family:inherit}
.fin-ka-st-remove-btn{background:none;border:none;color:var(--red);cursor:pointer;font-size:16px;padding:0}
.fin-ka-st-cancel-btn{padding:8px 16px;border:1px solid var(--border);border-radius:5px;background:#fff;cursor:pointer;font-family:inherit;font-size:13px}
.fin-ka-st-save-btn{padding:8px 16px;border:none;border-radius:5px;background:var(--blue);color:#fff;cursor:pointer;font-family:inherit;font-size:13px;font-weight:500}
.fin-ka-st-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.fin-ka-st-section{margin-bottom:8px}
.fin-ka-st-section-10{margin-bottom:10px}
/* fin_kontoauszuege */
.fin-ka2-toolbar{margin-bottom:16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.fin-ka2-upload-label{cursor:pointer;color:var(--blue);font-size:13px;font-weight:500}
.fin-ka2-upload-status{font-size:11px;color:var(--muted)}
.fin-ka2-empty{text-align:center;padding:40px;color:var(--muted)}
.fin-ka2-link-green{font-size:11px;color:var(--green);font-weight:500;text-decoration:none}
.fin-ka2-link-orange{font-size:11px;color:var(--orange);font-weight:500;text-decoration:none}
.fin-ka2-buch-num{font-size:11px;font-weight:500;color:var(--dark)}
.fin-ka2-muted-sm{font-size:11px;color:var(--muted)}
.fin-ka2-pdf-link{color:var(--blue);font-size:12px;text-decoration:none}
.fin-ka2-cell-12{font-size:12px}
.fin-ka2-th-c{text-align:center}
.fin-ka2-cell-c-nw{text-align:center;white-space:nowrap}
.fin-ka2-fold-32{margin-top:16px}
.fin-ka2-loading-blue{padding:20px;text-align:center;color:var(--blue)}
.fin-ka2-meta-sm{font-size:12px;color:var(--muted)}
.u-ml-auto{margin-left:auto}
.w-30{width:30px}
.fin-uva-row-urgent{background:rgba(194,43,43,.04)}
.text-dark{color:var(--dark)}
.app-split-icon{opacity:.6;margin-left:2px;cursor:pointer;font-size:12px}
.tr-collapsed{display:none}
.tr-expanded{display:table-row}
.ui-search-dropdown.open{display:block}
.ui-field-date{max-width:170px}
.ui-textarea-resize{resize:vertical;min-height:60px}
.ui-modal-sm{max-width:440px}
.ui-modal-md{max-width:520px}
.ui-modal-lg{max-width:720px}
/* ── S47 INLINE-MIGRATION: kunden.js SQL-API ──────────────── */
/* .kd-container — max-width/margin entfernt; Shell übernimmt Breitenbegrenzung. */
.u-fs-12{font-size:12px}
.w-32{width:32px}
.w-95{width:95px}
.w-340{width:340px}
.w-34{width:34px}
.pp-banner{background:var(--bg);border-left:3px solid var(--blue);padding:9px 14px;font-size:12px;color:var(--dark);margin-bottom:16px}
.pp-row-clickable{cursor:pointer}
.pp-tog-cell{text-align:center;color:var(--muted)}
.pp-actions-cell{text-align:right;white-space:nowrap}
.pp-detail-row td{padding:0;background:#fafbfc;border-bottom:2px solid var(--border)}
.pp-detail-pad{padding:10px 16px}
.pp-data-table{margin:0}
.pp-checkbox{accent-color:var(--blue);cursor:pointer}
.pp-cell-12-blue{font-size:12px;color:var(--blue);font-weight:500}
.pp-label-mini{font-size:9px;color:var(--orange);font-weight:500;letter-spacing:.5px;display:block}
.pp-kw{font-size:10px;color:var(--muted)}
.pp-anmerkung{font-size:11px;color:var(--muted);margin-top:2px}
/* Sprint A.4: Klick-Affordance — Einsatz-Zeile springt ins Ausführungs-Akkordeon */
.pp-einsatz-row{cursor:pointer}
.pp-einsatz-row:hover{background:#f5f8fb}
.pp-btn-active{opacity:1}
.pp-btn-inactive{opacity:.4}

/* personal.js spezifisch */
.text-yellow{color:var(--yellow)}
.pnu-row-clickable{cursor:pointer}
.pnu-tog-cell{text-align:center;color:var(--muted)}
.pnu-cell-12-muted{font-size:12px;color:var(--muted)}
.pnu-actions-cell{text-align:right;white-space:nowrap}
.pnu-detail-row td{padding:0;background:#fafbfc;border-bottom:2px solid var(--border)}
.pnu-section-noflag{margin-bottom:0}
.pnu-section-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.pnu-section-actions{display:flex;gap:6px}
.pnu-textarea{width:100%;min-height:50px;resize:vertical}
.pnu-dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.pnu-dot-sm{display:inline-block;width:8px;height:8px;border-radius:50%}
.pnu-dot-green{background:var(--green)}
.pnu-dot-yellow{background:var(--yellow)}
.pnu-dot-red{background:var(--red)}
.pnu-dot-grey{background:#ccc}

/* index_v13a.html spezifisch */
.idx-ferien-btn{color:#8a1a3a;border-color:#f5c6e8}
.idx-toolbar-meta{font-size:12px;color:var(--muted);margin-left:8px}
.idx-todo-dot{color:var(--red);font-size:18px;line-height:1;vertical-align:middle;margin-left:4px}
/* Settings-Container — Vorher max-width 700px, zu eng für Stammdaten-Tabellen.
   Container nutzt jetzt volle Shell-Breite. Form-Sektionen begrenzen ihre
   Eingabefelder selbst (idx-settings-form Pattern). */
.idx-settings-scroll{max-width:100%}
.idx-settings-section-head{padding:12px 16px;border-bottom:1px solid var(--border);font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.5px;text-transform:uppercase}
.idx-settings-section-body{padding:14px 16px}
/* Form-Sektionen im Settings: schmaler für angenehmes Form-Layout */
.idx-settings-section-body.idx-settings-form{max-width:720px}
/* Tabellen-Sektionen im Settings: volle Breite */
.idx-settings-section-body.idx-settings-table{max-width:100%;overflow-x:auto}
.idx-smtp-port{width:100px;flex:none}
.idx-form-row-flat{border:none;margin:0}
.idx-search-140{width:140px}
.idx-search-160{width:160px}
/* finanzen.js spezifisch */
.fin-overdue{color:var(--red);font-weight:500}
.fin-due-today{color:var(--orange);font-weight:500}
.fin-due-soon{color:var(--orange)}
.fin-due-later{color:var(--muted)}
.fin-fb-color-blue{color:var(--blue)}
.fin-fb-color-green{color:var(--green)}
.fin-fb-color-red{color:var(--red)}
.fin-fb-color-orange{color:var(--orange)}
.fin-ac-input{width:100%;box-sizing:border-box;padding:6px 10px;border:1px solid var(--border);border-radius:5px 5px 0 0;font-size:12px;font-family:inherit;border-bottom:none;background:#fafbfc;color:var(--dark)}
.fin-ac-select-flat{border-top-left-radius:0;border-top-right-radius:0}
.fin-export-row-current{background:rgba(3,86,177,.04)}
.fin-export-meta-aktuell{font-size:10px;color:var(--blue);font-weight:400}
.fin-export-cell{text-align:center;font-size:12px}
.fin-export-link{font-size:12px;font-weight:500;color:var(--blue);text-decoration:none;cursor:pointer}
.fin-fb-state-err{background:#fff5f5;color:var(--red)}
.fin-fb-state-info{background:#f0f6ff;color:var(--blue)}
.fin-fb-state-ok{background:#f0fff4;color:var(--green)}
.u-mb-8{margin-bottom:8px}
.u-mb-14{margin-bottom:14px}

/* ══════════════════════════════════════════════════════════
   S48 CONSOLIDATED COMPONENTS — Unified from S47 Duplicates
   Phase 1: Add unified classes, old module-specific remain as aliases.
   Phase 2 (Claude Code): Update 19 JS modules → remove aliases.
   ══════════════════════════════════════════════════════════ */

/* ── ui-dropzone (consolidated from .fin-dropzone + .lief-dropzone) ── */
.ui-dropzone{border:2px dashed var(--border);border-radius:8px;padding:16px;text-align:center;cursor:pointer;margin-bottom:16px;transition:all .2s}
.ui-dropzone.drag-active{border-color:var(--blue);background:#f0f6ff}
.ui-dropzone.drop-ok{border-color:var(--green);background:#f0fff4}
.ui-dropzone.drop-err{border-color:var(--red);background:#fff5f5}
.ui-dropzone.drop-loading{border-color:var(--blue);background:#f0f6ff}
.ui-dropzone-icon{font-size:20px}
.ui-dropzone-hint{font-size:11px;color:var(--muted)}
.ui-dropzone-text{font-size:12px;color:var(--muted)}
.ui-dropzone-fname{color:var(--muted);font-size:11px}

/* ── ui-modal-card (consolidated from .fin-modal-card + .lief-modal-card + .fin-todo-modal-card) ── */
.ui-modal-card{background:#fff;border-radius:10px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px rgba(0,0,0,.18)}

/* ── ui-divider (consolidated from .lief-divider + .schul-divider + .fin-form-divider) ── */
.ui-divider{border-top:1px solid var(--border);padding-top:12px;margin-top:4px;margin-bottom:12px}

/* ── ui-section-title (consolidated from .lief-section-title + .schul-section-title) ── */
.ui-section-title{font-size:11px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}

/* ── ui-btn-cancel (consolidated from 5 cancel-button patterns) ── */
.ui-btn-cancel{padding:8px 16px;border:1px solid var(--border);border-radius:5px;background:#fff;cursor:pointer;font-family:inherit;font-size:13px;color:var(--dark)}
.ui-btn-save{padding:8px 16px;border:none;border-radius:5px;background:var(--blue);color:#fff;cursor:pointer;font-family:inherit;font-size:13px;font-weight:500}
.ui-btn-save-red{background:#C0392B}
.ui-btn-save-red:hover{background:#A93226}
.ui-btn-save-green{background:var(--green)}

/* ── ui-grid (consolidated from .fin-form-grid-* + .lief-grid-* + .field-grid-*) ── */
.ui-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.ui-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px}
.ui-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px}

/* ── ui-label / ui-input (consolidated form primitives) ── */
.ui-label{font-size:11px;font-weight:500;color:var(--muted);display:block;margin-bottom:3px}
.ui-input{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:4px;font-size:13px;font-family:inherit}
.ui-input:focus{outline:none;border-color:var(--dark)}
.ui-input-ro{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:5px;font-size:13px;background:#f8fafc;color:var(--muted);font-family:inherit}
.ui-textarea{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:4px;font-size:13px;font-family:inherit;resize:vertical;min-height:60px}

/* ── ui-popup (consolidated from .fin-aus-popup + .fin-ka-popup) ── */
.ui-popup{position:fixed;z-index:9100;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.15);padding:14px 16px;min-width:220px;font-family:inherit}
.ui-popup-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.3);z-index:9098}
.ui-popup-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.ui-popup-close{border:none;background:none;font-size:18px;cursor:pointer;color:var(--muted)}
.ui-popup-title{font-size:13px;font-weight:500}
.ui-popup-info{font-size:11px;color:var(--muted);margin-bottom:10px}

/* ── ui-stats-row (consolidated from .fin-ka-stats-row) ── */
.ui-stats-row{display:flex;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.ui-stat-badge{padding:6px 14px;border-radius:5px;font-size:12px}
.ui-stat-num{font-weight:500}
.ui-stat-green{background:#f0fff4}
.ui-stat-green .ui-stat-num{color:#22a84a}
.ui-stat-grey{background:#f8f8f8}
.ui-stat-grey .ui-stat-num{color:#888}
.ui-stat-red{background:#fff5f5}
.ui-stat-red .ui-stat-num{color:#c22b2b}
.ui-stat-blue{background:#f0f6ff}
.ui-stat-blue .ui-stat-num{color:var(--blue)}

/* ══════════════════════════════════════════════════════════
   S48 PIVOT TABLE SYSTEM — CSP-compliant dynamic colors
   Uses data-color attribute instead of inline style="color:..."
   ══════════════════════════════════════════════════════════ */

/* ── Pivot Header Cells ── */
.pivot-th-label{width:160px;min-width:160px}
.pivot-th-month{width:85px;min-width:85px;text-align:right}
.pivot-th-month-90{width:90px;min-width:90px;text-align:right}
.pivot-th-gj{width:100px;min-width:100px;text-align:right;background:#edf2f9}

/* ── Pivot Data Cells ── */
.pivot-cell{text-align:right;font-size:13px}
.pivot-cell-gj{text-align:right;font-size:13px;background:#f8fafc}
.pivot-cell-gj-accent{text-align:right;font-size:13px;background:#edf2f9}
.pivot-cell-14{text-align:right;font-size:14px}
.pivot-label{font-size:13px}

/* ── Pivot Row Variants ── */
.pivot-row-sep{border-top:1px solid var(--border)}
.pivot-row-sep2{border-top:2px solid var(--border)}
.pivot-row-sum{border-top:2px solid var(--border);background:#f5f8fc}

/* ── Dynamic Color via data-color (CSP-safe, NO inline styles) ── */
[data-color="dark"]{color:var(--dark)}
[data-color="red"]{color:var(--red)}
[data-color="green"]{color:var(--green)}
[data-color="orange"]{color:var(--orange)}
[data-color="blue"]{color:var(--blue)}
[data-color="muted"]{color:var(--muted)}
[data-color="yellow"]{color:#996600}

/* ══════════════════════════════════════════════════════════
   S48 WASSERFALL CARD — fin_controlling.js
   ══════════════════════════════════════════════════════════ */

.wf-card{background:#fff;border-radius:10px;padding:20px 24px;margin-bottom:24px;box-shadow:0 1px 4px rgba(0,0,0,.06);border-left:3px solid var(--muted)}
.wf-card[data-ampel="gruen"]{border-left-color:var(--green)}
.wf-card[data-ampel="gelb"]{border-left-color:#996600}
.wf-card[data-ampel="rot"]{border-left-color:var(--red)}
.wf-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.wf-header-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.wf-header-note{font-size:11px;color:var(--muted)}
.wf-hero{display:flex;align-items:baseline;gap:14px;margin-bottom:8px}
.wf-hero-val{font-size:28px;font-weight:500;letter-spacing:-.5px}
.wf-hero-label{font-size:14px;color:var(--muted)}
.wf-ampel-text{font-size:13px;margin-bottom:14px}
.wf-progress{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.wf-progress-label{font-size:11px;color:var(--muted);white-space:nowrap}
.wf-progress-track{flex:1;height:6px;background:var(--bg);border-radius:3px;position:relative}
.wf-progress-bar{height:100%;border-radius:3px;transition:width .3s ease}
.wf-progress-pct{font-size:11px;color:var(--muted)}
.wf-kontext{font-size:11px;color:var(--muted);border-top:1px solid var(--border);padding-top:10px;margin-bottom:8px}
.wf-detail-toggle{cursor:pointer;font-size:12px;color:var(--muted)}
.wf-detail-body{margin-top:12px}
.wf-sep{height:1px;background:var(--border);margin:4px 0}

/* ── Wasserfall Zeilen ── */
.wf-zeile{display:flex;align-items:baseline;padding:6px 10px;border-radius:2px}
.wf-zeile[data-type="sum"]{background:#f0f4f8;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.wf-zeile[data-zebra="odd"]{background:#fafbfc}
.wf-zeile[data-zebra="even"]{background:#fff}
.wf-zeile-label{font-size:12px;white-space:nowrap}
.wf-zeile-label[data-type="sum"]{color:var(--dark)}
.wf-zeile-label[data-type="item"]{color:var(--muted)}
.wf-zeile-dots{flex:1;border-bottom:1px dotted #ddd;margin:0 8px;min-width:20px;height:1px;align-self:center}
.wf-zeile-val{font-size:12px;white-space:nowrap}
.wf-zeile-val[data-weight="sum"]{font-weight:500}

/* ══════════════════════════════════════════════════════════
   S48 AMPEL CARD — fin_entnahmen.js Ziel-Ampel
   ══════════════════════════════════════════════════════════ */

.ent-ampel{background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:16px 20px;margin-bottom:20px;border-left:3px solid var(--muted)}
.ent-ampel[data-ampel="gruen"]{border-left-color:var(--green)}
.ent-ampel[data-ampel="gelb"]{border-left-color:var(--orange)}
.ent-ampel[data-ampel="rot"]{border-left-color:var(--red)}
.ent-ampel-ctx{font-size:11px;color:var(--muted);margin-bottom:10px}
.ent-ampel-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.ent-ampel-status{display:flex;align-items:center;gap:10px}
.ent-ampel-emoji{font-size:16px}
.ent-ampel-grund{font-size:13px}
.ent-ampel-monat{font-size:12px;color:var(--muted)}
.ent-bar-track{background:#e5e9ef;border-radius:6px;height:14px;position:relative;overflow:hidden;margin-bottom:12px}
.ent-bar-fill{height:100%;border-radius:6px;transition:width .3s ease}
.ent-bar-marker{position:absolute;top:0;width:2px;height:100%;background:var(--dark);opacity:.25}
.ent-bar-legend{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:14px}
.ent-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.ent-kpi-cell{text-align:center}
.ent-kpi-label{font-size:11px;color:var(--muted);margin-bottom:2px}
.ent-kpi-val{font-size:15px}
.ent-kpi-pct{font-size:11px}

/* ── Entnahmen Einzelbuchungen ── */
.ent-explain{font-size:11px;color:var(--muted);margin-bottom:24px}

/* ── Entnahmen Modal ── */
.ent-modal-box{background:#fff;border-radius:10px;padding:24px 28px;width:480px;max-width:90vw;box-shadow:0 8px 32px rgba(0,0,0,.2);font-family:inherit}
.ent-modal-title{font-size:14px;font-weight:500;color:var(--dark);margin-bottom:16px}
.ent-grid-2{display:flex;gap:10px;margin-bottom:10px}
.ent-section{margin-bottom:10px}
.ent-section-14{margin-bottom:14px}
.ent-actions{display:flex;gap:8px}
.ent-btn-primary{flex:1;padding:8px 0;color:#fff;border:none;border-radius:5px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;width:96px}
.ent-btn-primary-red{background:var(--red)}
.ent-btn-primary-green{background:var(--green)}

/* ══════════════════════════════════════════════════════════
   S48 FIXKOSTEN MODAL — fin_controlling.js
   ══════════════════════════════════════════════════════════ */

.fk-modal-bg{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.35);z-index:9200;display:flex;align-items:center;justify-content:center}
.fk-modal-box{background:#fff;border-radius:10px;padding:24px 28px;width:460px;max-width:90vw;box-shadow:0 8px 32px rgba(0,0,0,.2);font-family:inherit}
.fk-modal-title{font-size:14px;font-weight:500;color:var(--dark);margin-bottom:16px}
.fk-field{margin-bottom:10px}
.fk-field-14{margin-bottom:14px}
.fk-row-2{display:flex;gap:10px;margin-bottom:10px}
.fk-actions{display:flex;gap:8px}

/* ══════════════════════════════════════════════════════════
   S48 GRUNDLAST DETAIL — fin_controlling.js
   ══════════════════════════════════════════════════════════ */

.gl-card{margin-bottom:24px}
.gl-summary{cursor:pointer;font-size:13px;color:var(--dark);margin-bottom:12px}
.gl-summary-muted{font-size:12px;color:var(--muted)}
.gl-subsection{margin-bottom:12px}
.gl-subsection-toggle{cursor:pointer;font-size:12px;color:var(--muted);margin-bottom:6px}
.gl-posten-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.gl-posten-label{font-size:12px;color:var(--muted)}
.gl-del-btn{background:none;border:none;color:var(--red);cursor:pointer;font-size:11px}

/* ══════════════════════════════════════════════════════════
   S48 UTILITY DEDUPLICATED
   ══════════════════════════════════════════════════════════ */

/* ── Gantt Status Colors (CSP-safe attribute selectors) ── */
[data-gantt-st="offen"]{color:#d0021b}
[data-gantt-st="angefragt"]{color:#d4a800}
[data-gantt-st="bestaetigt"]{color:#22a84a}
[data-gantt-st="abgeschlossen"]{color:#555}
[data-gantt-st="abgelehnt"]{color:#8B0000}

/* ── NU-Status Colors (Projekte LZ-Badges) ── */
[data-nu-status="offen"]{color:#d0021b}
[data-nu-status="angefragt"]{color:#d4a800}
[data-nu-status="bestaetigt"]{color:#22a84a}
[data-nu-status="abgeschlossen"]{color:#555}
[data-nu-status="abgelehnt"]{color:#8B0000}

/* ── Schulungen Status ── */
[data-schul-status="durchgefuehrt"]{color:var(--green)}
[data-schul-status="geplant"]{color:#d4a800}
[data-schul-status="other"]{color:var(--muted)}
.schul-row-overdue{border-left:2.5px solid var(--red)}

/* ══════════════════════════════════════════════════════════
   S48 PHASE 2 — Final Inline-Style Elimination
   CK-colors, Status-colors, Schulungen, Stufe-dots
   ══════════════════════════════════════════════════════════ */

/* ── CK color-dot backgrounds (COLORS map from app.js) ── */
[data-ck="green"]{background:#22a84a}
[data-ck="yellow"]{background:#d4a800}
[data-ck="red"]{background:#d0021b}
[data-ck="purple"]{background:#7B2D8B}
[data-ck="darkred"]{background:#8B0000}

/* ── NU/Personal status colors ── */
.status-color-offen{color:#d0021b}
.status-color-angefragt{color:#d4a800}
.status-color-bestaetigt{color:#22a84a}
.status-color-abgeschlossen{color:#555}
.status-color-abgelehnt{color:#8B0000}

/* ── Schulungen Veranstaltung-Status ── */
.schul-ver-durchgefuehrt{color:var(--green)}
.schul-ver-geplant{color:#d4a800}
.schul-ver-other{color:var(--muted)}
.schul-row-overdue{border-left:2.5px solid var(--red)}
.schul-badge-ok{background:rgba(34,168,74,.08);color:var(--green)}
.schul-badge-partial{background:rgba(212,168,0,.08);color:#d4a800}
.schul-badge-none{background:rgba(90,122,152,.08);color:var(--muted)}

/* ── Fin-todo Mahnstufe dots ── */
.stufe-bg-muted{background:var(--muted)}
.stufe-bg-orange{background:var(--orange)}
.stufe-bg-red{background:var(--red)}
.stufe-bg-off{background:#ddd}

/* ══════════════════════════════════════════════════════════
   S48 PHASE 2 — CSP-Complete: Attribute Selectors for
   dynamic colors that were previously inline styles.
   Enables removal of style-src 'unsafe-inline'.
   ══════════════════════════════════════════════════════════ */

/* ── Gantt Status Colors (gantt.js template) ─────────── */
[data-gantt-st="offen"]{color:#d0021b}
[data-gantt-st="angefragt"]{color:#d4a800}
[data-gantt-st="bestaetigt"]{color:#22a84a}
[data-gantt-st="abgeschlossen"]{color:#555}
[data-gantt-st="abgelehnt"]{color:#8B0000}

/* ── NU-Status Colors (projekte.js LZ-Tabelle) ──────── */
[data-nu-status="offen"]{color:#d0021b}
[data-nu-status="angefragt"]{color:#d4a800}
[data-nu-status="bestaetigt"]{color:#22a84a}
[data-nu-status="abgeschlossen"]{color:#555}
[data-nu-status="abgelehnt"]{color:#8B0000}

/* ── Schulungen Status (Veranstaltungsliste) ─────────── */
[data-schul-status="durchgefuehrt"]{color:var(--green)}
[data-schul-status="geplant"]{color:#d4a800}
[data-schul-status="other"]{color:var(--muted)}

/* ── Schulungen: Überfällige Teilnehmer-Zeile ────────── */
.schul-row-overdue{border-left:2.5px solid var(--red)}

/* APEX-EXCEPTION: GANTT-Regeln entfernt 2026-05-15 (Modul 4 Gantt-Redesign).
   APEX-EXCEPTION: SSoT jetzt: css/components/gantt.apex.css */

/* ══════════════════════════════════════════════════════════
   S48 — Moved from JS createElement('style') IIFEs
   inventar.js + schulungen.js
   ══════════════════════════════════════════════════════════ */

/* ── Inventar (was inv-css IIFE) ─────────────────────── */

/* ── Schulungen Drop-Zone (was schul-drop-css IIFE) ──── */
.schul-drop-zone{border:2px dashed var(--border);border-radius:6px;padding:16px;text-align:center;cursor:pointer;transition:all .2s}
.schul-drop-zone.drag-over{border-color:var(--orange);background:rgba(255,152,0,.06)}

/* ══ AUSFÜHRUNG MODULE (S52) ══════════════════════════════════════════ */
.af-section{margin-top:16px}
.af-section-head{padding:10px 16px;border-bottom:1px solid var(--border);font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.5px;text-transform:uppercase;display:flex;align-items:center;justify-content:space-between}
.af-section-body{padding:16px}
.af-section-btn{font-size:10px;padding:3px 10px}
.af-modal-actions{display:flex;justify-content:flex-end;margin-top:16px;gap:8px}

/* ══════════════════════════════════════════════════════════════════
   TAGESBERICHT-WOCHE — Tages-Karten (S57 Schritt 5b)
   Ersetzt die Matrix-Klassen aus Schritt 5a. Alle Klassen tbw-*.
   ══════════════════════════════════════════════════════════════════ */

.tbw-hint {
    font-size: 12px;
    color: var(--c-text-soft, #666);
    margin-top: 6px;
}

/* ── Tages-Karte ─────────────────────────────────────────── */
.tbw-karte {
    border: 1px solid var(--c-border, #e5e5e5);
    border-radius: 4px;
    margin-bottom: 14px;
    background: #fff;
    overflow: hidden;
}

.tbw-karte-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--c-bg-soft, #f7f7f7);
    padding: 8px 12px;
    border-bottom: 1px solid var(--c-border, #e5e5e5);
}

.tbw-karte-title {
    font-size: 14px;
    font-weight: 400;
}

.tbw-karte-actions .t-btn {
    font-size: 12px;
}

.tbw-karte-body {
    padding: 10px 12px;
}

/* ── Tabelle im Tag ──────────────────────────────────────── */
table.tbw-day-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    margin-bottom: 6px;
}

table.tbw-day-tbl th,
table.tbw-day-tbl td {
    padding: 5px 8px;
    border-bottom: 1px solid var(--c-border, #eee);
    vertical-align: middle;
    text-align: left;
}

table.tbw-day-tbl thead th {
    font-weight: 400;
    color: var(--c-text-soft, #666);
    font-size: 12px;
    background: transparent;
    border-bottom: 1px solid var(--c-border, #e5e5e5);
}

.tbw-col-name   { width: 200px; }
.tbw-col-rolle  { width: 110px; }
.tbw-col-time   { width: 90px;  }
.tbw-col-pause  { width: 80px;  }
.tbw-col-sum    { width: 80px; text-align: right; }
.tbw-col-act    { width: 70px; text-align: right; white-space: nowrap; }

.tbw-empty-row td {
    color: var(--c-text-soft, #999);
    font-style: italic;
    text-align: center;
    padding: 12px;
}

/* ── Inputs ──────────────────────────────────────────────── */
.tbw-input {
    width: 100%;
    padding: 4px 6px;
    border: 1px solid var(--c-border, #e5e5e5);
    border-radius: 3px;
    font-size: 13px;
    font-family: inherit;
    background: #fff;
    box-sizing: border-box;
}

.tbw-input:focus {
    outline: none;
    border-color: var(--c-orange, #f39a1f);
}

.tbw-tinp,
.tbw-pinp {
    text-align: center;
}

.tbw-person-select {
    font-size: 13px;
}

.tbw-pname {
    font-size: 13px;
}

.tbw-pname-change {
    font-size: 11px;
    margin-left: 4px;
    padding: 1px 5px;
    opacity: 0.6;
}

.tbw-pname-change:hover {
    opacity: 1;
}

.tbw-rowbtn {
    padding: 2px 6px;
    font-size: 12px;
    margin-left: 2px;
}

/* ── Add-Row-Buttons ─────────────────────────────────────── */
.tbw-row-adds {
    display: flex;
    gap: 6px;
    margin: 4px 0 10px;
}

.tbw-row-adds .t-btn {
    font-size: 12px;
}

/* ── Notizen ─────────────────────────────────────────────── */
.tbw-notes {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--c-border, #e5e5e5);
}

.tbw-notes label {
    display: block;
    font-size: 11px;
    color: var(--c-text-soft, #666);
    margin-bottom: 3px;
}

.tbw-note-area {
    width: 100%;
    padding: 5px 8px;
    border: 1px solid var(--c-border, #e5e5e5);
    border-radius: 3px;
    font-size: 13px;
    font-family: inherit;
    box-sizing: border-box;
    resize: vertical;
}

.tbw-note-area:focus {
    outline: none;
    border-color: var(--c-orange, #f39a1f);
}

/* ── Leistungen im Tag ───────────────────────────────────── */
.tbw-leist-wrap {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--c-border, #e5e5e5);
}

.tbw-leist-label {
    font-size: 11px;
    color: var(--c-text-soft, #666);
    margin-bottom: 5px;
}

.tbw-leist-empty {
    font-size: 12px;
    color: var(--c-text-soft, #999);
    font-style: italic;
    margin-bottom: 5px;
}

.tbw-leist-row {
    display: grid;
    grid-template-columns: 1fr 80px 60px 50px 28px;
    gap: 4px;
    margin-bottom: 4px;
    align-items: center;
}

.tbw-leist-row .tbw-leist-pos {
    grid-column: 1 / -1;
}

.tbw-leist-row .tbw-leist-frei {
    grid-column: 1 / -1;
    margin-top: 2px;
}

.tbw-leist-menge,
.tbw-leist-einheit {
    font-size: 12px;
    padding: 3px 5px;
}

.tbw-leist-mat {
    font-size: 11px;
    color: var(--c-text-soft, #666);
    display: flex;
    align-items: center;
    gap: 3px;
    white-space: nowrap;
}

.tbw-leist-mat input[type="checkbox"] {
    margin: 0;
}

.tbw-leist-add-btn {
    font-size: 12px;
    margin-top: 4px;
}

/* ================ Controlling Cash-Basis v1 (phase1b) ================ */
/* Design-Regel: font-weight 400 in Tabellen, keine Fettschrift in KPIs   */
/* und Tabellenzellen. Abheben nur über Background-Farbe, nicht Weight.   */

/* Zell-Farben Liquiditätsvorschau (keine Fettschrift) */
.liq-green   { background:color-mix(in srgb, var(--green)  12%, transparent); color:var(--green); }
.liq-yellow  { background:color-mix(in srgb, var(--yellow) 15%, transparent); color:var(--yellow); }
.liq-red     { background:color-mix(in srgb, var(--red)    15%, transparent); color:var(--red); }

/* Pivot-Trennlinien & Summen (Hervorhebung nur via Background) */
.tab-row-separator td { border-top:1px solid var(--border); padding:0; height:4px; }
.tab-row-total    td  { background:#f5f8fc; }

/* Controlling-spezifische KPI-Erweiterungen */
.ctrl-kpi-strip       { display:flex; flex-wrap:wrap; gap:12px; }
.ctrl-kpi-clickable   { cursor:pointer; transition:background .15s; }
.ctrl-kpi-clickable:hover { background:#f5f8fc; }
.ctrl-kpi-primary     { border-left:3px solid var(--orange); background:#fff8f0; }
.ctrl-kpi-alert       { color:var(--red); }
.ctrl-kpi-sub         { font-size:11px; margin-top:3px; color:var(--muted); }

/* Sektionen & Steuerelemente */
.ctrl-section-head    { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.ctrl-jahr-select     { width:120px; }
.ctrl-kw-main         { font-size:13px; }
.ctrl-kw-sub          { font-size:11px; color:var(--muted); }

/* Header rechtsbündig: .data-table th default ist left, erhöht Spezifität
   für Pivot-Header und generische .tbl-align-right-Klasse. */
.tbl-align-right { text-align:right; }
.pivot-th-kw { min-width:90px; }

/* Cashflow-Color je Zelle (nur Farbe, keine Fettschrift) */
.cashflow-pos { color:var(--green); }
.cashflow-neg { color:var(--red); }

/* Muted Hint */
.hint-text { font-size:11px; color:var(--muted); font-style:italic; margin-bottom:8px; }

/* ════════════════════════════════════════════════════════════
   RESPONSIVE (Shell v2) — 4-stufiges Breakpoint-System
   Mobile <600 · Tablet 600–1023 · Desktop 1024–1439 · Ultrawide ≥1440
   ════════════════════════════════════════════════════════════ */

/* ── Mobile (max-width: 599px) ──────────────────────────── */
@media (max-width: 599px){
  :root{
    --app-gap: var(--app-gap-sm, 14px);
  }
  /* APEX-EXCEPTION: .hdr-* mobile-responsive entfernt — siehe topbar.css */
  /* APEX-EXCEPTION: .main-nav/.nav-tab mobile-responsive entfernt — siehe tabbar.css */
  .split-icon{display:none!important}
  .panel{min-width:0}
  .sec-nav{padding:0 12px}
  .sec-tab{padding:8px 10px;font-size:11px}
  .search-input{width:100%;min-width:0}
  .kpi-strip{flex-direction:column}
  .kpi-item{min-width:auto}
  .kpi-val{font-size:17px}
  .modal{width:96vw}
  .form-row{flex-direction:column;align-items:stretch;gap:4px}
  .form-label{width:100%}
  .af-lz-rolle-sel{min-width:100%;max-width:100%;margin-top:2px}
}

/* ── Tablet (600px – 1023px) ────────────────────────────── */
@media (min-width: 600px) and (max-width: 1023px){
  .app-shell{max-width:100%}
  /* APEX-EXCEPTION: .main-nav/.nav-tab tablet-responsive entfernt — siehe tabbar.css */
  .split-icon{display:none!important}
  .panel{min-width:280px}
  .kpi-strip{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
  .kpi-item{min-width:0}
  .toolbar{gap:8px}
  .search-input{width:160px}
}

/* ── Desktop (1024px – 1439px) ──────────────────────────── */
@media (min-width: 1024px) and (max-width: 1439px){
  .app-shell{max-width:100%}
  /* APEX-EXCEPTION: .main-nav desktop-responsive entfernt — siehe tabbar.css */
  .kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
}

/* ── Ultrawide (min-width: 1440px) ──────────────────────── */
@media (min-width: 1440px){
  .app-shell{max-width:var(--layout-max-width,1600px);margin:0 auto;padding:0 var(--app-gap,24px)}
  /* APEX-EXCEPTION: .main-nav ultrawide-responsive entfernt — siehe tabbar.css */
  .kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
}


/* ══════════════════════════════════════════════════════════
   UX-CLEANUP-SPRINT A+B — Ausführungen-Modul
   (Untertabs, Detailansicht-Umbau, Tagesberichte-Baum,
    Personalplaner-Archiv, einheitliche Tab-Breiten)
   ══════════════════════════════════════════════════════════ */

/* ── Untertabs (Laufend / Archiv) ────────────────────────── */
.af-subtabs{display:flex;gap:0;margin:0 0 12px;border-bottom:1px solid var(--border)}
.af-subtab-count{font-size:10.5px;color:var(--muted);background:#eef2f7;padding:1px 7px;border-radius:10px;font-weight:400}

/* ── Detailansicht: einheitliche Tab-Breite + fixed tables ─ */
.ds-body{width:100%;box-sizing:border-box}
.ds-body .proj-detail-pad,.ds-body .proj-lz-pad-overflow{width:100%;box-sizing:border-box}
.ds-body table.data-table,.ds-body table.tbl{table-layout:fixed;width:100%}
.ds-body table.data-table td,.ds-body table.tbl td,
.ds-body table.data-table th,.ds-body table.tbl th{word-wrap:break-word;overflow:hidden;text-overflow:ellipsis}

/* ══════════════════════════════════════════════════════════
   GLOBAL UNIFIED LAYOUT SYSTEM
   ──────────────────────────────────────────────────────────
   .app-content-master ist der einzige erlaubte Haupt-Wrapper
   für Modul-Inhalte. Alle Module (außer .gantt-area) nutzen
   exakt diesen Container. Dadurch identische Breite und
   identischer linker Startpunkt über alle Zustände (Liste,
   Detail, Tab-Aufklappung) und alle Module hinweg.
   Regeln: 168 (Tabellen-Spalten), 207 (.fakt-list fixed-layout
   bleibt unberührt — wird NICHT verändert).
   ══════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════
   DAS GESETZ (Layout-Manager Master-Klasse)
   ──────────────────────────────────────────────────────────
   .app-content-master ist der EINZIGE legitime Haupt-Wrapper
   für Modul-Inhalte. Kein Modul definiert eigene Abstände,
   Breiten oder Padding — diese Klasse kontrolliert X- UND
   Y-Achse zentral über die Tokens in design-tokens.css.
   Änderungen am Layout erfolgen ausschließlich über die vier
   --layout-* Tokens — nie über modulspezifische Klassen.
   ══════════════════════════════════════════════════════════ */

.app-content-master{
  max-width:var(--layout-max-width,1600px);
  margin:0 auto;
  padding:var(--layout-padding-top) var(--layout-padding-x) var(--layout-padding-bottom);
  box-sizing:border-box;
  width:100%;
}

/* AUSNAHME: Gantt-Chart muss die volle Panel-Breite nutzen —
   keine max-width, kein Padding-Override. */
.app-content-master .gantt-area,
.gantt-area.app-content-master{max-width:none;padding:0;width:100%}

/* Ausführungs-Titelblock-Utility (ersetzt inline-styles
   aus ausfuehrung.js, Regel "Keine Inline-Styles") */
.af-title-block{margin:8px 0 0;padding:12px 0}
.af-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.af-title-strong{font-size:15px}
.af-title-desc{margin-top:4px}
.af-sections-wrap{margin:4px 0}

/* ══════════════════════════════════════════════════════════
   Sprint A.2 EXCEL-MODUS: harte Pixel statt %-Verteilung
   Tabelle 1400 px fest, Spalten in Pixeln. Gibt verlässliche
   Slot-Geometrie statt Flex/Prozent-Brüche.
   ══════════════════════════════════════════════════════════ */
.af-lz-table {
    table-layout: fixed !important;
    width: 1400px !important;
    max-width: none !important;
}
/* Einheitliches td-Padding: 8px überall (Marc-Spec literal: 8px 8px) */
.af-lz-table th, .af-lz-table td {
    padding: 8px 8px !important;
    box-sizing: border-box !important;
    vertical-align: middle !important;
    overflow: visible !important;
}
/* Max-Spezifität: überschreibt alle ererbten Padding-Regeln aus DS-Body etc. */
.af-lz-table > tbody > tr > td,
.af-lz-table > thead > tr > th {
    padding: 8px 8px !important;
}
/* Anzahl-Input-Spalte explizit (überschreibt generisches .w-70{width:70px}) */
.af-lz-table .w-70 { width: 70px !important; }

/* Äußere Spalten — harte px (Marc-Tabelle 1:1) */
.af-lz-table th:nth-child(1), .af-lz-table td:nth-child(1) { width: 200px !important; } /* KW */
.af-lz-table th:nth-child(2), .af-lz-table td:nth-child(2) { width: 220px !important; } /* Anfang-Ende */
.af-lz-table th:nth-child(3), .af-lz-table td:nth-child(3) { width: 140px !important; } /* Anmerkung */
.af-lz-table th:nth-child(4), .af-lz-table td:nth-child(4) { width:  70px !important; } /* Anzahl */
.af-lz-table th:nth-child(5), .af-lz-table td:nth-child(5) { width: 660px !important; } /* Personal/NU */
.af-lz-table th:nth-child(6), .af-lz-table td:nth-child(6) { width:  24px !important; } /* Wochen-Del */
/* Σ: 200+220+140+70+660+24 = 1314 (in 1400px-Tabelle) */

/* Datums-Dropdowns */
.proj-lz-sel-90 { width: 85px !important; min-width: 85px !important; max-width: 85px !important; }

/* Inneres Grid — harte px, kein flex, kein auto */
.af-lz-pers-row, .proj-lz-pers-row {
    display: grid !important;
    grid-template-columns: 180px 90px 100px 190px 24px !important;
    gap: 8px !important;
    align-items: center !important;
    width: 100% !important;
}

/* Alle Dropdowns im Grid ordnen sich unter — harte px */
/* NAME-Dropdown grid-kompatibel: füllt Grid-Spalte 1 (180px), schrumpft auf 0 wenn nötig, cappt bei 180px */
.proj-lz-pers-sel {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 180px !important;
    box-sizing: border-box !important;
}
.af-lz-rolle-sel  { width:  90px !important; min-width:  90px !important; max-width:  90px !important; }
.af-zp-status-sel { width: 100px !important; min-width: 100px !important; max-width: 100px !important; }

/* Action-Buttons Container */
.af-zp-actions {
    display: flex !important;
    gap: 10px !important;
    width: 190px !important;
}

/* Slot-Delete-Button (rot, Excel-Modus unverändert) */
.af-zp-slot-del{
    width:22px;height:22px;padding:0;
    font-size:12px;
    color:var(--c-danger,#c0392b);
    background:transparent;
    border:1px solid var(--c-danger-soft,#f5c2bd);
    cursor:pointer;border-radius:3px;
}
.af-zp-slot-del:hover{
    background:var(--c-danger-soft,#fde0dd);
    color:var(--c-danger,#c0392b);
}

/* Bestätigung-Button = Primary-Style (gleiche Variable wie .t-btn.primary) */
.af-zp-send-confirm{
    background:var(--c-accent,#0356B1);
    color:#fff;
    border-color:var(--c-accent,#0356B1);
}
.af-zp-send-confirm:hover{
    background:#024a9a;
}

.proj-lz-sel-90{width:90px;font-size:11px;padding:2px 4px}

/* ── Personalplaner-Archiv (vergangene Zeiträume) ─────────── */
.af-lz-archiv-wrap{margin-top:14px;border-top:1px dashed var(--border);padding-top:10px}
.af-lz-archiv-tog{font-size:10px;transition:transform .2s;display:inline-block}
.af-lz-archiv-tog.open{transform:rotate(90deg)}
.af-lz-archiv-count{margin-left:auto;background:#dde7f2;color:var(--blue);padding:1px 7px;border-radius:10px;font-size:10.5px}
.af-lz-archiv-body{display:none;padding-top:8px}
.af-lz-archiv-body.open{display:block}
.af-lz-archiv-body .data-table{opacity:.7}

/* ── "Allgemeine Information" — Untersektion Aufträge ────── */
.af-info-tbl{margin-bottom:8px}

/* ── Tagesberichte: Baumstruktur ─────────────────────────── */
.af-tb-tree{margin:0 0 10px}
.af-tb-node{margin-bottom:2px}
.af-tb-tog{font-size:10px;color:var(--muted);width:14px;text-align:center;transition:transform .2s;display:inline-block;flex-shrink:0}
.af-tb-tog.open{transform:rotate(90deg)}
.af-tb-lbl{font-weight:500;color:var(--dark);font-size:13px;flex:1}
.af-tb-stats{font-size:11px;color:var(--muted);background:#eef2f7;padding:1px 8px;border-radius:10px;white-space:nowrap}
.af-tb-children{display:none}
.af-tb-children.open{display:block;margin-left:20px}
.af-tb-y>.af-tb-head{background:#eaf0f6;font-weight:500}
.af-tb-y>.af-tb-head:hover{background:#dde7f2}
.af-tb-y>.af-tb-head .af-tb-lbl{font-size:14px}
.af-tb-m>.af-tb-head{background:#f5f8fc}
.af-tb-m>.af-tb-head .af-tb-lbl{font-size:12.5px}
.af-tb-kw>.af-tb-head .af-tb-lbl{font-size:12px;font-weight:400}
.af-tb-dayTbl{margin:4px 0 8px;width:100%;table-layout:fixed}

/* ── Business-Partner-Modul (BP-Migration v2) ──────────────────── */

/* ════════════════════════════════════════════════════════════
   S59 — Dashboard v2 (Variante B2v4)
   Quelle: design_handoff_dashboard_v2/vanilla/dashboard-v2.css §3
   Alle Selektoren scoped unter .b2v4 — kollidiert nicht mit Bestand.
   Werte aus design-tokens.css (Bestand + S59-Erweiterungen).
   Responsive (P5) folgt am Ende dieses Blocks.
   ════════════════════════════════════════════════════════════ */

/* ── Page-head, Pager, Layout-Grid (b2v4-scoped) ── */
.b2v4 .page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px}
.b2v4 .page-head h1{font-family:var(--font-family);font-weight:500;font-size:24px;color:var(--c-primary);margin:0 0 6px 0;letter-spacing:-.01em}
.b2v4 .page-head .meta{font-size:12.5px;color:var(--c-text-muted);display:flex;gap:16px;flex-wrap:wrap}
.b2v4 .page-head .meta b{color:var(--c-text);font-weight:500}

.b2v4 .week-pager{display:flex;align-items:center;gap:2px;background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:3px;height:34px;flex-shrink:0}
.b2v4 .week-pager button{height:26px;min-width:26px;border:0;background:transparent;color:var(--c-text-muted);font-size:12px;border-radius:3px;padding:0 8px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:var(--font-family)}
.b2v4 .week-pager button:hover{background:var(--c-bg-soft);color:var(--c-text)}
.b2v4 .week-pager .today{background:var(--c-primary);color:var(--c-bg);padding:0 14px;font-weight:500}
.b2v4 .week-pager .today:hover{background:var(--c-primary);color:var(--c-bg);opacity:.92}
.b2v4 .week-pager .label{padding:0 12px;color:var(--c-text-muted);font-size:12px;border-left:1px solid var(--c-border-soft);margin-left:2px}

.b2v4 .split-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}
.b2v4 .col{min-width:0}
/* Gap zwischen Today-Card und Folgewochen-Liste = gleicher Abstand wie zwischen Folgewochen (16px = --space-md) */
.b2v4 .col--left{display:flex;flex-direction:column;gap:var(--space-md)}

/* ── Cards (today + side) ── */
.b2v4 .today-card,
.b2v4 .side-card{background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--radius-md);overflow:hidden}
.b2v4 .side-card+.side-card{margin-top:16px}
.b2v4 .side-card>.head{padding:14px 20px 10px;display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--c-border-soft)}
.b2v4 .side-card>.head h3{margin:0;font-family:var(--f-cond);font-size:11.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--c-text-subtle)}
.b2v4 .side-card>.head a{font-size:12px;color:var(--c-accent);text-decoration:none}
.b2v4 .side-card>.head a:hover{text-decoration:underline}

/* ── Today-Card Head ── */
.b2v4 .tc-head{display:grid;grid-template-columns:4px 1fr 18px 388px;align-items:center;gap:0 18px;padding:18px 24px 18px 18px;border-bottom:1px solid var(--c-border-soft);cursor:pointer}
.b2v4 .tc-head .left{grid-column:2;display:flex;align-items:baseline;gap:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.b2v4 .tc-head .num{font-family:var(--f-cond);font-size:22px;font-weight:500;color:var(--c-primary)}
.b2v4 .tc-head .num em{font-style:normal;color:var(--c-text-muted);margin-left:8px;font-family:var(--font-family);font-weight:400;font-size:13px}
.b2v4 .tc-head .chev{grid-column:3;width:14px;height:14px;color:var(--c-text-subtle);transition:transform .15s ease;justify-self:end}
.b2v4 .today-card.is-open .tc-head .chev{transform:rotate(180deg)}
.b2v4 .tc-head .tile-row{grid-column:4;justify-self:end}

/* ── Tile-Grid (uniform 3-slot) ── */
.b2v4 .tile-row{display:grid;grid-template-columns:124px 124px 124px;gap:8px;justify-content:end}
.b2v4 .tile-slot-empty{width:124px;height:44px}

.b2v4 .u-tile{height:44px;padding:6px 14px;background:var(--c-bg);border:1px solid var(--c-border-soft);border-radius:var(--radius-sm);display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;position:relative;text-align:left}
.b2v4 .u-tile .v{font-size:17px;font-weight:500;color:var(--c-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1}
.b2v4 .u-tile .l{font-family:var(--f-cond);font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--c-text-subtle);white-space:nowrap;line-height:1}
.b2v4 .u-tile.is-status .v{font-family:var(--f-cond);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--c-text);line-height:1.15}
.b2v4 .u-tile.is-status .l{display:none}
.b2v4 .u-tile.is-ok{box-shadow:inset 0 -2px 0 0 var(--c-success)}
.b2v4 .u-tile.is-warn{box-shadow:inset 0 -2px 0 0 var(--c-warning)}
.b2v4 .u-tile.is-info{box-shadow:inset 0 -2px 0 0 var(--c-accent)}
.b2v4 .u-tile.is-error{box-shadow:inset 0 -2px 0 0 var(--c-danger)}
.b2v4 .u-tile.is-zero .v{color:var(--c-text-subtle)}

/* ── Holiday-Strip (always rendered, .is-empty when no items) ── */
.b2v4 .holiday-strip{padding:7px 24px;background:rgba(224,90,0,.035);border-top:1px solid rgba(224,90,0,.08);border-bottom:1px solid rgba(224,90,0,.08);display:flex;align-items:center;gap:14px;font-size:11.5px;color:var(--c-text-muted);font-style:italic}
.b2v4 .holiday-strip .lbl{font-style:normal;font-family:var(--f-cond);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--c-accent-warn);opacity:.75}
.b2v4 .holiday-strip .items span:not(:last-child)::after{content:" · ";margin:0 6px;color:rgba(224,90,0,.25);font-style:normal}
.b2v4 .holiday-strip.is-empty{background:var(--c-bg-softer);border-top-color:var(--c-border-soft);border-bottom-color:var(--c-border-soft)}
.b2v4 .holiday-strip.is-empty .lbl{color:var(--c-text-subtle);opacity:1}
.b2v4 .holiday-strip.is-empty .items{display:none}
.b2v4 .holiday-strip.is-empty::after{content:"Keine Feiertage in dieser Woche.";color:var(--c-text-subtle)}

/* ── Today-Card Rows ── */
.b2v4 .today-card .rows{display:block}
.b2v4 .today-card .row{display:grid;grid-template-columns:24px 1.6fr 1.0fr 1.4fr 388px;align-items:center;gap:18px;padding:14px 24px;font-size:13px;border-top:1px solid var(--c-border-soft);cursor:pointer}
.b2v4 .today-card .row .tile-row{justify-self:end}
.b2v4 .today-card .row:first-child{border-top:0}
.b2v4 .today-card .row:hover{background:var(--c-row-hover)}
.b2v4 .today-card .row .dot{width:6px;height:6px;border-radius:50%;background:var(--c-text-subtle);justify-self:center}
.b2v4 .today-card .row .project{font-weight:500;color:var(--c-text)}
.b2v4 .today-card .row .client{color:var(--c-text-muted);font-size:12.5px}

/* ── Crew-Cell ── */
.b2v4 .crew-cell{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--c-text)}
.b2v4 .crew-cell .crew-names{display:inline;line-height:1.6}
.b2v4 .crew-line{display:inline-flex;align-items:baseline;vertical-align:baseline}
.b2v4 .crew-line .name{display:inline-block;padding-bottom:1px;border-bottom:2px solid transparent;line-height:1.25}
.b2v4 .crew-line .sep{color:var(--c-text-muted);border:none}
.b2v4 .crew-line.is-ok .name{border-bottom-color:var(--c-success)}
.b2v4 .crew-line.is-warn .name{border-bottom-color:var(--c-warning)}
.b2v4 .crew-line.is-info .name{border-bottom-color:var(--c-accent)}
.b2v4 .crew-line.is-error .name{border-bottom-color:var(--c-danger)}
.b2v4 .crew-cell small{color:var(--c-text-muted);font-size:11.5px}

/* ── Folgewochen (compact list) ── */
.b2v4 .weeks-list{display:flex;flex-direction:column;gap:16px;padding:16px 0 20px}
.b2v4 .weeks-list--bare{background:transparent;border:0;padding:0;gap:16px}
.b2v4 .week-block{border:1px solid var(--c-border);border-radius:var(--radius-md);background:var(--c-bg);overflow:hidden}
.b2v4 .week-block.is-open{background:var(--c-bg-softer)}
.b2v4 .week-row{display:grid;grid-template-columns:4px 130px 1fr 18px 388px;align-items:center;gap:0 18px;padding:14px 24px 14px 18px;font-size:13px;position:relative;cursor:pointer}
.b2v4 .week-row:hover{background:var(--c-row-hover)}
.b2v4 .week-row .kw-marker{grid-column:1}
.b2v4 .week-row .kw{grid-column:2}
.b2v4 .week-row .chev{grid-column:4}
.b2v4 .week-row .tile-row{grid-column:5;justify-self:end}

.b2v4 .kw-marker{width:4px;height:36px;border-radius:2px;background:var(--c-border);align-self:center}
.b2v4 .kw-marker.is-ok{background:var(--c-success)}
.b2v4 .kw-marker.is-warn{background:var(--c-warning)}
.b2v4 .kw-marker.is-info{background:var(--c-accent)}
.b2v4 .kw-marker.is-error{background:var(--c-danger)}
.b2v4 .kw-marker.is-current{background:var(--c-accent);box-shadow:0 0 0 3px rgba(3,86,177,.12)}

.b2v4 .week-row .kw{font-family:var(--f-cond);font-size:16px;font-weight:500;color:var(--c-primary);display:flex;flex-direction:column;gap:3px}
.b2v4 .week-row .kw .range{font-family:var(--font-family);font-size:11px;font-weight:400;color:var(--c-text-muted);font-variant-numeric:tabular-nums}
.b2v4 .week-row .chev{width:14px;height:14px;color:var(--c-text-subtle);transition:transform .15s ease;justify-self:end;margin-right:4px}
.b2v4 .week-block.is-open .week-row .chev{transform:rotate(180deg)}

/* Aufklapp-Detail (sichtbar nur wenn Container .is-open) — gilt für .week-block UND .today-card */
.b2v4 .week-detail{display:none;padding:4px 24px 16px 52px;border-top:1px dashed var(--c-border-soft);background:var(--c-bg)}
.b2v4 .week-block.is-open .week-detail,
.b2v4 .today-card.is-open .week-detail{display:block}
/* 3-Spalten: info | crew | tile-row(388px) — beide Container nutzen identisches Layout */
.b2v4 .week-detail .detail-row{display:grid;grid-template-columns:minmax(0,1fr) auto 388px;align-items:center;padding:10px 0;gap:18px;font-size:12.5px;color:var(--c-text);border-top:1px solid var(--c-border-soft);cursor:pointer}
.b2v4 .week-detail .detail-row:first-child{border-top:0}
.b2v4 .week-detail .detail-row:hover{background:var(--c-row-hover)}
.b2v4 .week-detail .detail-row .info{display:flex;flex-direction:column;gap:2px}
.b2v4 .week-detail .detail-row .info .project{font-weight:500;color:var(--c-text)}
.b2v4 .week-detail .detail-row .info .client{color:var(--c-text-muted);font-size:12px}
.b2v4 .week-detail .detail-row .tile-row{justify-self:end;gap:8px}
.b2v4 .week-detail .empty{padding:14px 0;font-size:12.5px;color:var(--c-text-subtle);font-style:italic}

/* ── KPI-Stack (right column) ── */
.b2v4 .kpi-stack{display:flex;flex-direction:column;gap:0}
.b2v4 .kpi-line{display:grid;grid-template-columns:4px 1fr 96px;align-items:center;gap:14px;padding:14px 20px;border-top:1px solid var(--c-border-soft);background:var(--c-bg);cursor:pointer}
.b2v4 .kpi-line:first-child{border-top:0}
.b2v4 .kpi-line:hover{background:var(--c-row-hover)}
.b2v4 .kpi-line .marker{width:4px;height:32px;border-radius:2px;background:var(--c-border)}
.b2v4 .kpi-line.is-ok .marker{background:var(--c-success)}
.b2v4 .kpi-line.is-warn .marker{background:var(--c-warning)}
.b2v4 .kpi-line.is-info .marker{background:var(--c-accent)}
.b2v4 .kpi-line.is-error .marker{background:var(--c-danger)}
.b2v4 .kpi-line .lbl{font-size:13px;color:var(--c-text);font-weight:500;display:flex;flex-direction:column;gap:3px}
.b2v4 .kpi-line .lbl small{font-size:12px;color:var(--c-text-muted);font-weight:400}
.b2v4 .kpi-line .u-tile{height:48px;justify-self:end}
.b2v4 .kpi-line .u-tile .v{font-size:22px}

/* ── Quick-Links ── */
.b2v4 .quick-list{padding:10px 8px;display:flex;flex-direction:column}
.b2v4 .quick-list a{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;color:var(--c-text);text-decoration:none;cursor:pointer;min-height:44px}
.b2v4 .quick-list a:hover{background:var(--c-bg-soft)}
.b2v4 .quick-list a .ico{width:28px;height:28px;display:grid;place-items:center;color:var(--c-text-muted)}
.b2v4 .quick-list a .arrow{color:var(--c-text-subtle);font-size:12px}
.b2v4 .quick-list a small{display:block;color:var(--c-text-muted);font-size:11.5px;margin-top:1px}

/* ── S59-P5: Responsive Breakpoints (Tablet → Mobile → iPhone 16 Pro) ──
   Pflicht-Akzeptanz: 393px viewport perfekt; Touch-Targets ≥44px (Apple HIG).
   Reihenfolge: vom größten zum kleinsten Breakpoint (kaskadiert nach unten). */

/* Tablet & schmaler Desktop: rechte Spalte unter linke Spalte legen */
@media (max-width: 1023px) {
  .b2v4 .split-grid { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .b2v4 .col--right { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
  .b2v4 .side-card + .side-card { margin-top: 0; }
}

/* Tablet portrait + Phone landscape: side-cards stapeln, tile-row wird kompakter */
@media (max-width: 767px) {
  .b2v4 .col--right { grid-template-columns: 1fr; gap: 12px; }
  .b2v4 .page-head { flex-direction: column; align-items: stretch; gap: 14px; }
  .b2v4 .week-pager { width: 100%; justify-content: space-between; height: 44px; }
  .b2v4 .week-pager button { min-height: 44px; min-width: 44px; height: 44px; font-size: 14px; }
  .b2v4 .week-pager .today { padding: 0 18px; }
  .b2v4 .week-pager .label { display: none; }

  /* Today-Card Head: 4-Spalten-Grid auflösen, Chevron rechts oben, Tiles in eigene Zeile */
  .b2v4 .tc-head {
    grid-template-columns: 1fr auto;
    gap: 12px;
    padding: 16px 16px 14px;
  }
  .b2v4 .tc-head .left { grid-column: 1; flex-wrap: wrap; gap: 6px 10px; white-space: normal; }
  .b2v4 .tc-head .num { font-size: 18px; }
  .b2v4 .tc-head .num em { display: block; margin-left: 0; margin-top: 2px; }
  .b2v4 .tc-head .chev { grid-column: 2; align-self: start; margin-top: 4px; }
  .b2v4 .tc-head .tile-row { grid-column: 1 / -1; justify-self: stretch; }
  .b2v4 .tile-row { grid-template-columns: repeat(3, 1fr); gap: 6px; }
  .b2v4 .tile-slot-empty { width: auto; }
  .b2v4 .u-tile { padding: 6px 10px; }
  .b2v4 .u-tile .v { font-size: 16px; }
  .b2v4 .u-tile.is-status .v { font-size: 11px; }

  /* Today-Row: Grid → Stack */
  .b2v4 .today-card .row {
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 14px 16px;
    min-height: 44px;
  }
  .b2v4 .today-card .row .dot { display: none; }
  .b2v4 .today-card .row .tile-row { justify-self: stretch; }

  /* Folgewochen: Grid → Stack */
  .b2v4 .week-row {
    grid-template-columns: 4px 1fr auto;
    gap: 12px;
    padding: 14px 16px 14px 12px;
    min-height: 44px;
  }
  .b2v4 .week-row .kw-marker { grid-column: 1; }
  .b2v4 .week-row .kw { grid-column: 2; }
  .b2v4 .week-row .chev { grid-column: 3; margin-right: 0; }
  .b2v4 .week-row .tile-row {
    grid-column: 1 / -1;
    justify-self: stretch;
    margin-top: 4px;
  }

  /* Aufklapp-Detail mobile: 1-Spalten-Stack, full-width Tiles */
  .b2v4 .week-detail { padding: 4px 16px 14px; }
  .b2v4 .week-detail .detail-row { grid-template-columns: 1fr; gap: 8px; padding: 10px 0; }
  .b2v4 .week-detail .detail-row .tile-row { justify-self: stretch; }

  /* KPIs: weiter 3-spaltig aber kompakter */
  .b2v4 .kpi-line { grid-template-columns: 4px 1fr 80px; padding: 14px 16px; min-height: 56px; }
  .b2v4 .kpi-line .u-tile { height: 44px; }
  .b2v4 .kpi-line .u-tile .v { font-size: 18px; }

  /* Holiday-Strip kompakter */
  .b2v4 .holiday-strip { padding: 8px 16px; gap: 10px; flex-wrap: wrap; }

  /* Page-head h1 kleiner */
  .b2v4 .page-head h1 { font-size: 20px; }
  .b2v4 .page-head .meta { font-size: 12px; gap: 10px; }
}

/* iPhone 16 Pro & ähnliche kleine Phones: 393–430px */
@media (max-width: 430px) {
  /* Wrapper-Padding kommt von .app-content-master (24px) — auf Phone reduzieren via Token-Override */
  .b2v4 { --layout-padding-x: 12px; }

  .b2v4 .week-pager { padding: 4px; gap: 1px; }
  .b2v4 .week-pager button { min-width: 44px; padding: 0 4px; font-size: 13px; }
  .b2v4 .week-pager .today { padding: 0 12px; }

  /* Tile-Row: drei Tiles bleiben nebeneinander, aber Höhe ≥44 für Tap */
  .b2v4 .tile-row { gap: 4px; }
  .b2v4 .u-tile { padding: 4px 8px; height: 44px; }
  .b2v4 .u-tile .v { font-size: 15px; }
  .b2v4 .u-tile .l { font-size: 9px; letter-spacing: .08em; }
  .b2v4 .u-tile.is-status .v { font-size: 10px; letter-spacing: .06em; }

  /* Card-Innenpaddings reduzieren, aber Min-Touch-Target halten */
  .b2v4 .tc-head { padding: 14px 12px 12px; }
  .b2v4 .today-card .row { padding: 12px 12px; min-height: 44px; }
  .b2v4 .week-row { padding: 12px 12px 12px 10px; min-height: 44px; }
  .b2v4 .kpi-line { padding: 12px; grid-template-columns: 4px 1fr 64px; gap: 10px; min-height: 56px; }
  .b2v4 .quick-list { padding: 6px 4px; }
  .b2v4 .quick-list a { padding: 12px; min-height: 48px; gap: 12px; }

  /* Side-cards: Border-Radius nicht aufweichen, aber Header etwas enger */
  .b2v4 .side-card > .head { padding: 12px 14px 8px; }

  /* Holiday-Strip: kleiner Lesegröße aber lesbar */
  .b2v4 .holiday-strip { padding: 8px 12px; font-size: 11px; }
  .b2v4 .holiday-strip .lbl { font-size: 10px; }

  /* Page-Head Meta auf zwei Zeilen brechen */
  .b2v4 .page-head .meta { flex-direction: column; gap: 4px; }
  .b2v4 .page-head h1 { font-size: 19px; margin-bottom: 4px; }
}

/* Hover nur für echte Mauseingabe — verhindert Touch-Sticky-Hover */
@media (hover: none) {
  .b2v4 .today-card .row:hover,
  .b2v4 .week-row:hover,
  .b2v4 .kpi-line:hover,
  .b2v4 .quick-list a:hover,
  .b2v4 .week-pager button:hover { background: inherit; color: inherit; }
}

/* Utility-Klassen für Sichtbarkeitssteuerung (statt Inline-Styles) */
.is-hidden { display: none !important; }

/* Funktionsrollen-Admin-Tabelle (Einstellungen → Funktionsrollen) */
.fr-admin-table { width: 100%; }
.fr-admin-table th.fr-col-sort   { width: 80px; }
.fr-admin-table th.fr-col-aktiv  { width: 60px; }
.fr-admin-table th.fr-col-act    { width: 140px; }
.fr-admin-table td.fr-cell-aktiv { text-align: center; }
.fr-admin-table input.fr-input-sort { width: 70px; }

/* ════════════════════════════════════════════════════════════════════
   Sprint D.1 — NU-Konditionen Inline-Tabelle
   Token-basiert (design-tokens.css), keine magischen Werte.
   ════════════════════════════════════════════════════════════════════ */

.nu-kond-container { display: flex; flex-direction: column; gap: var(--space-md); }

.nu-kond-toolbar {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-sm) 0;
}

.nu-kond-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-table);
    background: var(--c-bg);
}
.nu-kond-table th {
    text-align: left;
    padding: var(--space-sm) var(--space-sm);
    background: var(--c-header-bg);
    color: var(--c-header-text);
    font-weight: var(--fw-medium);
    font-size: var(--fs-label);
    text-transform: uppercase;
    letter-spacing: 0.3px;
    border-bottom: 1px solid var(--c-border);
}
.nu-kond-table td {
    padding: var(--space-xs) var(--space-sm);
    vertical-align: middle;
    border-bottom: 1px solid var(--c-border);
}
.nu-kond-table tbody tr:hover {
    background: var(--c-row-hover);
}
.nu-kond-felder-cell {
    display: flex;
    gap: var(--space-xs);
    flex-wrap: wrap;
}

.nu-kond-input {
    width: 100%;
    max-width: 140px;
    padding: var(--space-xs) var(--space-sm);
    font-size: var(--fs-input);
    font-family: var(--font-family);
    color: var(--c-primary);
    background: var(--c-bg);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-sm);
    transition: border-color var(--transition-fast);
    box-sizing: border-box;
}
.nu-kond-input:focus {
    outline: none;
    border-color: var(--c-accent-warn);
}
.nu-kond-input:disabled {
    opacity: 0.6;
    cursor: not-allowed;
    background: var(--c-bg-soft);
}
.nu-kond-input.is-error {
    border-color: var(--c-danger);
}
select.nu-kond-input {
    max-width: 220px;
}

.nu-kond-hint {
    color: var(--c-muted);
    font-size: var(--fs-table);
    font-style: italic;
}

/* Patch 2: Summenblock über Tabelle */
.nu-kond-summenblock {
    display: flex;
    align-items: center;
    gap: var(--space-lg);
    padding: var(--space-sm) var(--space-md);
    background: var(--c-bg-soft);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    flex-wrap: wrap;
}
.nu-kond-summenblock-item { display: flex; align-items: baseline; gap: var(--space-xs); }
.nu-kond-summenblock-label {
    color: var(--c-muted);
    font-size: var(--fs-label);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.nu-kond-summenblock-value {
    font-size: var(--fs-body);
    font-weight: var(--fw-medium);
    color: var(--c-primary);
}
.nu-kond-summenblock-value.nu-kond-marge-negativ { color: var(--c-danger); }
.nu-kond-summenblock-warn {
    width: 100%;
    color: var(--c-danger);
    font-size: var(--fs-label);
    font-style: italic;
}

/* Patch 2: Error-Border bei Σ-Validierungsfehler */
.nu-kond-input.nu-kond-input-error { border-color: var(--c-danger); }

/* Patch 2: Inline-Hint neben dem Anteil-Input (Vergütung NU + Marge IKT) */
.nu-kond-anteil-hint {
    color: var(--c-muted);
    font-size: var(--fs-label);
    margin-left: var(--space-xs);
}

/* Patch 3: Hint im "nicht gespeichert"-Zustand (geändert oder Fehler) */
.nu-kond-anteil-hint.nu-kond-anteil-hint-pending {
    color: var(--c-muted);
    font-style: italic;
    opacity: 0.75;
}

/* ════════════════════════════════════════════════════════════════════
   Patch 4 — LV-Kalkulations-Matrix Modal-Refit
   ════════════════════════════════════════════════════════════════════ */

.lv-modal { display: flex; flex-direction: column; gap: var(--space-md); }

.lv-modal-section {
    background: var(--c-bg-soft);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    padding: var(--space-md);
}
.lv-modal-section-title {
    font-size: var(--fs-body);
    font-weight: var(--fw-medium);
    color: var(--c-primary);
    margin-bottom: var(--space-xs);
}
.lv-modal-section-hint {
    font-size: var(--fs-label);
    color: var(--c-muted);
    margin-bottom: var(--space-sm);
    line-height: var(--lh-normal);
}

.lv-marge-row {
    display: flex;
    align-items: center;
    gap: var(--space-lg);
    margin-bottom: var(--space-xs);
    flex-wrap: wrap;
}
.lv-marge-row input {
    width: 80px;
    padding: var(--space-xs) var(--space-sm);
    font-size: var(--fs-input);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-sm);
}
.lv-marge-faktor { color: var(--c-muted); font-size: var(--fs-table); }
.lv-marge-faktor strong { color: var(--c-primary); }

.lv-funktion-add-btn {
    background: transparent;
    color: var(--c-accent);
    border: 1px solid var(--c-accent);
    margin-bottom: var(--space-sm);
}
.lv-funktion-add-btn:hover {
    background: var(--c-accent);
    color: #fff;
}

.lv-funkt-tbl,
.lv-pos-tbl,
.lv-vorschau-tbl { width: 100%; }
.lv-funkt-anteil-input { width: 70px; padding: var(--space-xs); }

.lv-pool-empty {
    font-style: italic;
    color: var(--c-muted);
    text-align: center;
    padding: var(--space-md);
}

.lv-sigma-line { margin-top: var(--space-xs); font-size: var(--fs-table); }
.lv-sigma-ok  { color: var(--c-success); }
.lv-sigma-bad { color: var(--c-danger); }

.lv-pos-toolbar {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin-bottom: var(--space-sm);
    flex-wrap: wrap;
}
.lv-pos-search { flex: 1; min-width: 200px; }

.lv-vorschau {
    border-left: 3px solid var(--c-accent);
}
.lv-vorschau-zeile {
    padding: var(--space-xs) 0;
    font-size: var(--fs-body);
    color: var(--c-primary);
}
.lv-vorschau-zeile strong { color: var(--c-primary); }
.lv-vorschau-disabled {
    color: var(--c-muted);
    font-style: italic;
    padding: var(--space-sm) 0;
}
.lv-vorschau-tbl { margin-top: var(--space-sm); }

/* ── Manuell-Zuweisen-Modal (Sprint S60-MM) ───────────────────── */
.fin-ka-mm-body{font-size:13px}
.fin-ka-mm-info{padding:8px 10px;background:#f0f6ff;border-radius:5px;margin-bottom:10px;font-weight:500}
.fin-ka-mm-toolbar{display:grid;grid-template-columns:1fr 160px auto;gap:8px;align-items:center;margin-bottom:10px}
.fin-ka-mm-input{padding:7px 10px;border:1px solid var(--border);border-radius:5px;font-size:13px;font-family:inherit}
.fin-ka-mm-typ{padding:7px 10px;border:1px solid var(--border);border-radius:5px;font-size:13px;font-family:inherit;background:#fff}
.fin-ka-mm-cb{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px;white-space:nowrap}
.fin-ka-mm-section-title{font-weight:600;margin:10px 0 4px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.fin-ka-mm-list{max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:5px;background:#fafafa}
.fin-ka-mm-table{width:100%;border-collapse:collapse;font-size:12px}
.fin-ka-mm-table th{text-align:left;padding:6px 8px;background:#f0f0f0;font-weight:600;border-bottom:1px solid var(--border)}
.fin-ka-mm-table td{padding:6px 8px;border-bottom:1px solid #ececec}
.fin-ka-mm-table tr:last-child td{border-bottom:none}
.fin-ka-mm-table .right{text-align:right}
.fin-ka-mm-summe{margin-top:12px;padding:10px;background:#f8f8f8;border-radius:5px}
.fin-ka-mm-summe-row{display:grid;grid-template-columns:1fr 1fr;padding:3px 0;font-size:13px}
.fin-ka-mm-summe-row .right{text-align:right;font-weight:500}

/* ============================================
   APEX MAIL & LANDINGPAGE CI (ab S73)
   Referenz: server/lib/mail_templates.js (CI-Konstanten)
   ============================================ */
:root {
  --mail-primary:     #1A3A5C;   /* Titel, Haupttext */
  --mail-accent:      #0356B1;   /* Trennlinie, Karten-Border */
  --mail-teal:        #0AA9BD;   /* APEX SYN "1"-Akzent */
  --mail-confirm:     #14532D;   /* Bestätigen-Button */
  --mail-decline:     #991B1B;   /* Ablehnen-Button */
  --mail-bg:          #F7F9FC;   /* Detailkarten-Hintergrund */
  --mail-border:      #D1DCE8;   /* Trennlinien */
  --mail-text-muted:  #6B7280;   /* Labels, Footer-Text */
  --mail-text-faint:  #9CA3AF;   /* Token-Ablauf, Hints */
}


/* S73-P6: Column-Manager (Finanzen) */
.col-hidden { display: none !important; }
.fin-col-toggle-btn {
    background: transparent;
    border: 1px solid var(--c-border, #d1d5db);
    border-radius: 6px;
    width: 32px;
    height: 32px;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    padding: 0;
}
.fin-col-toggle-btn:hover { background: var(--c-bg-hover, #f3f4f6); }
.fin-col-popover {
    position: absolute;
    z-index: 100;
    background: #fff;
    border: 1px solid var(--c-border, #d1d5db);
    border-radius: 8px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.12);
    padding: 12px 14px;
    min-width: 220px;
    font-size: 13px;
}
.fin-col-popover h4 {
    margin: 0 0 6px 0;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--c-text-muted, #6b7280);
}
.fin-col-popover h4:not(:first-child) { margin-top: 12px; }
.fin-col-popover label {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0;
    cursor: pointer;
}
.fin-col-popover label input[type=checkbox] { margin: 0; }

