/* admin-editor.css — ausgelagerte Deko-Styles des Admin-/Editor-Interfaces.
   In index.html NACH style.css eingebunden. CSS-Variablen (--border etc.) kommen aus style.css. */

/* Sidebar: Akkordeon (vormals inline in sidebar.js::_accordionSection) */
.accordion        { border:1px solid var(--border); border-radius:10px; margin-bottom:10px; overflow:hidden; }
.accordion-header { padding:11px 14px; cursor:pointer; display:flex; justify-content:space-between; align-items:center; background:var(--surface-2); user-select:none; }
.accordion-title  { font-weight:700; font-size:0.85rem; }
.accordion-arrow  { transition:transform .2s; display:inline-block; color:var(--text-muted); }
.accordion-body   { padding:10px 14px; }

/* Sidebar: Status-Pill (vormals inline in sidebar.js::_statusPill). Farbe je Status via --pill-color. */
.status-pill        { flex:1; padding:9px 6px; border-radius:999px; font-size:0.78rem; font-weight:700; cursor:pointer; transition:all .2s; font-family:inherit; border:2px solid var(--pill-color); background:transparent; color:var(--pill-color); opacity:0.6; }
.status-pill.active { background:var(--pill-color); color:#fff; opacity:1; }

/* ── Modals (lv-editor.js) — pro Modal exakt repliziert; Varianten folgen ── */
.lv-modal-overlay { position:fixed; inset:0; background:rgba(15,23,42,.55); z-index:9999; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(4px); }
.lv-modal-overlay-pad { padding:16px; }
.lv-modal-box     { background:rgba(30,41,59,0.95); border-radius:16px; max-width:460px; width:100%; box-shadow:0 20px 60px rgba(0,0,0,.4); overflow:hidden; }
.lv-modal-pad     { padding:22px 24px 16px; }
.lv-modal-title   { margin:0 0 12px; font-size:1.1rem; font-weight:700; color:var(--text); }
.lv-modal-text    { margin:0; font-size:0.9rem; line-height:1.55; color:var(--text-muted); }
.lv-modal-actions { display:flex; gap:10px; padding:8px 24px 20px; flex-wrap:wrap; }
.lv-modal-btn-primary   { flex:1; min-width:190px; background:var(--primary); }
.lv-modal-btn-secondary { flex:1; min-width:150px; background:transparent; border:1.5px solid var(--border); color:var(--text-muted); border-radius:var(--radius-md); padding:9px 14px; font-weight:600; cursor:pointer; }

/* Modal Kundenzugang (lv-editor.js::openKundenzugangModal) */
.kz-box          { background:#1e293b; border-radius:16px; padding:28px; color:#f8fafc; width:90%; max-width:460px; box-shadow:0 24px 60px rgba(0,0,0,.25); }
.kz-h3           { margin:0 0 6px; font-size:1.05rem; }
.kz-p            { color:var(--text-muted,#94a3b8); font-size:0.82rem; margin:0 0 20px; line-height:1.5; }
.kz-p-form       { color:var(--text-muted,#94a3b8); font-size:0.82rem; margin:0 0 16px; line-height:1.5; }
.kz-btn-revoke   { width:100%; padding:11px; background:#ef444422; color:#ef4444; border:1.5px solid #ef4444; border-radius:8px; font-weight:700; font-size:0.9rem; cursor:pointer; font-family:inherit; margin-bottom:10px; }
.kz-btn-close    { width:100%; padding:11px; background:transparent; color:var(--text-muted); border:1.5px solid var(--border); border-radius:8px; font-weight:600; cursor:pointer; font-family:inherit; }
.kz-info         { display:flex; align-items:center; gap:10px; background:rgba(37,99,235,.12); border:1.5px solid rgba(37,99,235,.4); border-radius:10px; padding:12px 14px; margin-bottom:20px; }
.kz-info-emoji   { font-size:1.3rem; }
.kz-info-name    { font-weight:700; font-size:0.95rem; }
.kz-info-email   { font-size:0.78rem; color:#94a3b8; }
.kz-actions      { display:flex; gap:10px; }
.kz-btn-cancel   { flex:1; padding:11px; background:transparent; color:var(--text-muted); border:1.5px solid var(--border); border-radius:8px; cursor:pointer; font-weight:600; font-family:inherit; }
.kz-btn-activate { flex:1; padding:11px; background:#2563eb; color:white; border:none; border-radius:8px; cursor:pointer; font-weight:700; font-family:inherit; }

/* Modal Ressourcen / Bulk-Assign (lv-editor.js::openBulkAssignModal) */
.bulk-modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.7); z-index:3000; display:flex; align-items:center; justify-content:center; }
.bulk-box           { background:#1e293b; border-radius:16px; padding:28px; width:440px; max-width:95vw; border:1px solid var(--border); box-shadow:0 24px 60px rgba(0,0,0,0.6); }
.bulk-header        { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; }
.bulk-h3            { margin:0; font-size:1.1rem; }
.bulk-close         { background:none; border:none; color:var(--text-muted); font-size:1.4rem; cursor:pointer; line-height:1; }
.bulk-warn          { background:rgba(251,146,60,.1); border:1px solid rgba(251,146,60,.3); border-radius:8px; padding:10px 12px; margin-bottom:14px; font-size:0.78rem; color:#fb923c; }
.bulk-label         { display:block; font-size:0.78rem; color:var(--text-muted); margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; }
.bulk-select-staff  { width:100%; height:130px; margin-bottom:4px; border-radius:8px; border:1.5px solid var(--border); background:#1e293b; color:#fff; padding:4px; font-family:inherit; font-size:0.85rem; outline:none; }
.bulk-absence-info  { min-height:20px; margin-bottom:12px; font-size:0.75rem; color:#fb923c; }
.bulk-hint          { font-size:0.7rem; color:var(--text-muted); margin-bottom:14px; }
.bulk-select-fleet  { width:100%; height:100px; margin-bottom:20px; border-radius:8px; border:1.5px solid var(--border); background:rgba(255,255,255,0.05); color:#fff; padding:6px; font-family:inherit; font-size:0.85rem; }
.bulk-actions       { display:flex; gap:10px; }
.bulk-btn-cancel    { flex:1; padding:11px; background:transparent; color:var(--text-muted); border:1.5px solid var(--border); border-radius:8px; cursor:pointer; font-family:inherit; }
.bulk-btn-apply     { flex:1; padding:11px; background:#2563eb; color:white; border:none; border-radius:8px; cursor:pointer; font-weight:700; font-family:inherit; }
.bulk-opt-conflict  { color:#fb923c; }

/* Modal Bereich-Import (lv-editor.js::openBereichImport) — Checkbox-Widget bleibt inline (zustandsgesteuert via _toggleImportChk) */
.import-modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:9999; display:flex; align-items:center; justify-content:center; padding:16px; }
.import-box         { background:var(--surface); border-radius:16px; padding:24px; max-width:460px; width:100%; max-height:80vh; display:flex; flex-direction:column; border:1px solid var(--border); box-shadow:0 20px 60px rgba(0,0,0,.4); }
.import-header      { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.import-h3          { margin:0; font-size:1rem; color:var(--text-primary); }
.import-close       { background:none; border:none; color:var(--text-muted); font-size:1.3rem; cursor:pointer; line-height:1; }
.import-intro       { font-size:0.82rem; color:var(--text-muted); margin:0 0 14px; }
.import-list        { overflow-y:auto; flex:1; margin-bottom:16px; padding-right:4px; }
.import-proj        { margin-bottom:14px; }
.import-proj-name   { font-size:0.7rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--text-muted); margin-bottom:6px; padding-bottom:4px; border-bottom:1px solid var(--border); }
.import-sec-name    { font-weight:700; font-size:0.88rem; color:var(--text-primary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.import-sec-tasks   { font-size:0.72rem; color:var(--text-muted); margin-top:2px; }
.import-empty       { color:var(--text-muted); text-align:center; padding:20px 0; }
.import-actions     { display:flex; gap:8px; }
.import-btn-confirm { flex:1; padding:11px; background:var(--primary); color:white; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; }
.import-btn-cancel  { padding:11px 16px; background:transparent; color:var(--text-muted); border:1px solid var(--border); border-radius:9px; font-weight:600; cursor:pointer; font-family:inherit; }
.import-sec-col     { flex:1; min-width:0; }

/* Modal Positions-Notiz (lv-editor.js::openTaskNotePopup) */
.note-modal-overlay { position:fixed; inset:0; background:rgba(15,23,42,.5); z-index:9999; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(3px); }
.note-box        { background:rgba(30,41,59,0.95); border-radius:14px; padding:24px; width:90%; max-width:440px; box-shadow:0 20px 60px rgba(0,0,0,.3); border:1px solid var(--border); }
.note-title      { font-weight:700; font-size:0.95rem; margin-bottom:4px; color:var(--text-primary); }
.note-desc       { font-size:0.75rem; color:var(--text-muted); margin-bottom:14px; }
.note-textarea   { width:100%; min-height:90px; background:var(--surface2,rgba(255,255,255,.06)); border:1.5px solid var(--border); border-radius:8px; color:var(--text-primary); padding:10px; font-family:inherit; font-size:0.88rem; resize:vertical; box-sizing:border-box; }
.note-actions    { display:flex; gap:8px; margin-top:12px; }
.note-btn-cancel { flex:1; padding:9px; background:transparent; color:var(--text-muted); border:1.5px solid var(--border); border-radius:8px; font-weight:600; cursor:pointer; font-family:inherit; }
.note-btn-save   { flex:1; padding:9px; background:#2563eb; color:white; border:none; border-radius:8px; font-weight:700; cursor:pointer; font-family:inherit; }

/* ── Floating-UI (lv-editor.js) ── */
/* Autocomplete-Dropdown (_setupAutocomplete) — left/top/min-width werden dynamisch inline gesetzt */
.ac-dropdown   { position:fixed; max-width:480px; max-height:220px; overflow-y:auto; background:var(--surface, #1e293b); border:1.5px solid var(--primary); border-radius:10px; z-index:99999; box-shadow:0 8px 28px rgba(0,0,0,.35); font-family:inherit; }
.ac-item       { padding:8px 12px; cursor:pointer; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--border); font-size:0.85rem; transition:background .1s; }
.ac-item-price { font-size:0.75rem; color:var(--text-muted); white-space:nowrap; margin-left:8px; }
/* Bulk-Zeit-Popover (openBulkTimePopover) — top/left dynamisch inline */
.btp-pop   { position:fixed; z-index:9999; background:rgba(30,41,59,0.95); border:1px solid var(--border); border-radius:10px; box-shadow:0 12px 32px rgba(0,0,0,.35); padding:12px 14px; font-size:0.82rem; min-width:236px; }
.btp-title { font-weight:700; margin-bottom:8px; color:var(--text-primary); }
.btp-row   { display:flex; align-items:center; gap:6px; margin-bottom:10px; }
.btp-input { padding:5px 6px; width:94px; }
.btp-sep   { color:var(--text-muted); }
.btp-apply { width:100%; padding:8px; background:#7c3aed; color:#fff; border:none; border-radius:8px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.82rem; }
/* Rhythmus-Hinweis (Element hat class einmalig-hint) */
.einmalig-hint { color:#f59e0b; font-size:0.72rem; margin-left:6px; font-weight:600; display:inline-block; }
/* Import-Haekchen-SVG (_toggleImportChk) */
.imp-checkmark { pointer-events:none; position:absolute; display:none; }

/* ── LV-Tabelle & Bereiche (lv-editor.js) — statische Deko; verzahnte/zustandsabh. Styles bleiben inline ── */
.lvh-drag      { width:20px; }
.lvh-center    { text-align:center; }
.lvh-notes     { text-align:center; min-width:68px; }
.lvh-bulk-icon { cursor:pointer; margin-left:3px; opacity:0.65; font-size:0.95em; user-select:none; }
.bereich-import-icon { cursor:pointer; font-size:0.9rem; opacity:0.45; margin-right:6px; transition:opacity .15s; user-select:none; }
.bereich-toggle      { cursor:pointer; opacity:0.55; font-size:1rem; user-select:none; transition:opacity .15s; margin-right:4px; }
.nachtrag-badge      { font-size:0.68rem; padding:2px 7px; background:#f59e0b22; color:#f59e0b; border:1px solid #f59e0b; border-radius:999px; font-weight:700; }
.btn-add-position { margin:15px; cursor:pointer; border:none; background:none; color:var(--primary); font-weight:bold; }
.lv-kbd           { font-family:sans-serif; background:#eee; padding:2px 4px; border-radius:4px; font-size:0.8em; font-weight:normal; border:1px solid #ccc; margin-left:5px; color:#666; }
.bereich-summe    { text-align:right; padding:15px; font-weight:bold; }
.bereich-lock-notice      { margin:10px 15px; padding:8px 12px; background:rgba(245,158,11,.08); border:1px solid rgba(245,158,11,.3); border-radius:8px; font-size:0.78rem; color:#f59e0b; }
.nachtrag-freigabe-notice { margin:8px 15px 10px; padding:8px 12px; background:rgba(16,185,129,.08); border:1px solid rgba(16,185,129,.3); border-radius:8px; font-size:0.78rem; color:#10b981; font-weight:600; }
.lv-td-drag    { width:20px; padding:0 4px; cursor:grab; text-align:center; }
.lv-td-nowrap  { white-space:nowrap; }
.lv-td-actions { text-align:center; white-space:nowrap; }
.row-total     { font-weight:bold; color:var(--primary); }
.einmalig-date { padding:4px 6px; border:1.5px solid var(--border); border-radius:6px; font-size:0.82rem; background:var(--surface); color:var(--text-primary); font-family:inherit; }
.lv-time-sep   { color:var(--text-muted); font-size:0.85rem; margin:0 2px; }

/* ── Stufe 3: Zustands-/Hover-Maschinen ── */
.lvh-bulk-icon:hover       { opacity:1; }
.bereich-import-icon:hover { opacity:1; }
.bereich-toggle:hover      { opacity:1; }
.bereich-collapsed         { display:none; }

/* Bulk-Icon-Sperre (_updateBulkBtnLock) */
.bulk-active { opacity:1; }
.bulk-locked { opacity:0.4; pointer-events:none; cursor:not-allowed; }
/* Kalender-Icon (updateCalIcon) — Standard versteckt, sichtbar via .cal-visible */
.cal-icon             { display:none; font-size:0.85rem; margin-right:4px; }
.cal-icon.cal-visible { display:inline; }
/* "Geändert, noch nicht im Kalender" (🔄): amber hinterlegt, damit es als Hinweis auffällt */
.cal-icon.cal-needs-sync {
    background: rgba(245,158,11,0.22);
    border-radius: 5px;
    padding: 1px 3px;
    margin-right: 4px;
}

/* Notiz-Icon (_updateNoteIcon + Hover) */
.comment-icon { display:inline; font-size:0.88rem; margin-right:4px; cursor:pointer; opacity:0.35; transition:opacity .15s; }
.comment-icon:hover { opacity:1; }
.comment-icon.has-note { opacity:1; filter:drop-shadow(0 0 3px #3b82f6); color:#60a5fa; }
/* Positions-Sperre (_applyTaskLock): Zeile bekommt .task-locked, Kinder via Nachfahren-Regeln */
.task-locked { user-select:text; }
.task-locked .beschreibung { opacity:0.7; cursor:default; user-select:text; }
.task-locked input.val-qty,
.task-locked select.val-unit,
.task-locked input.val-price,
.task-locked input.task-time,
.task-locked input.task-time-end,
.task-locked select.val-rhythm,
.task-locked input.einmalig-date { opacity:0.6; cursor:not-allowed; }
.task-locked .day-btn { pointer-events:none; opacity:0.3; }
.task-locked .day-btn.active { opacity:0.6; }
.task-locked .action-icon:not([onclick*="openSidebar"]),
.task-locked button:not(.delete-btn),
.task-locked span.cal-icon,
.task-locked span.comment-icon { pointer-events:none; opacity:0.4; }
.task-locked .action-icon[onclick*="openSidebar"] { opacity:1; }

/* Ressourcen-Icons (Mitarbeiter/Fahrzeuge) immer in Vollfarbe darstellen — wie im angenommenen
   Zustand (.task-locked oben). Die Basis-.action-icon-Regel dimmt sonst auf opacity:0.6, wodurch
   die Emojis blass/"nicht farbig" wirken. Übertragene (.lv-transferred) und abgewählte
   (data-customer-unchecked) Positionen dimmen weiterhin über ihre !important-Regeln. */
.action-icon[onclick*="openSidebar"] { opacity: 1; }
.task-locked .delete-btn { display:none; }
.task-locked .drag-handle { visibility:hidden; }

/* Vorlagen-Icon-Sperre (_syncTemplateIconLock) */
.lvh-bulk-icon.tpl-locked { pointer-events:none; opacity:0.3; cursor:not-allowed; }
.comment-icon.tpl-locked  { pointer-events:none; opacity:0.2; cursor:not-allowed; }
/* Rhythmus-Umschaltung (handleRhythmChange) */
.einmalig-date-wrap { display:none; align-items:center; gap:5px; }
.einmalig-date-wrap.rhythm-show { display:flex; }
.day-picker.rhythm-hidden { display:none; }

/* Speichern-Button-Zustände (updateSaveBtn) — ID+Klasse schlägt Inline-Rest + .btn-add:hover */
#nav-btn-save.save-dirty { background:#10b981;        opacity:1;   cursor:pointer; }
#nav-btn-save.save-clean { background:rgb(71,85,105); opacity:0.5; cursor:default; }
#nav-btn-save.save-done  { background:#22c55e;        opacity:1; }

/* Import-Checkbox-Widget (_toggleImportChk) */
.imp-check-row { display:flex; align-items:center; gap:12px; padding:9px 8px; cursor:pointer; border-radius:8px; border:1.5px solid transparent; transition:background .1s, border-color .1s; }
.imp-check-row:not(.checked):hover { background:rgba(255,255,255,.05); }
.imp-check-row.checked { border-color:var(--primary, #2563eb); background:rgba(37,99,235,.08); }
._imp-box { position:relative; width:20px; height:20px; flex-shrink:0; border-radius:5px; border:1.5px solid rgba(255,255,255,.25); background:rgba(255,255,255,.06); display:flex; align-items:center; justify-content:center; transition:all .15s; }
.imp-check-row.checked ._imp-box { background:var(--primary, #2563eb); border-color:var(--primary, #2563eb); }
.imp-check-input { position:absolute; opacity:0; width:100%; height:100%; cursor:pointer; margin:0; }
.imp-check-row.checked .imp-checkmark { display:block; }

/* Kundenzugang-Button aktiv-Zustand (loadKundenzugangStatus) */
/* !important nur auf border-color, um das Inline border-bottom des Buttons zu schlagen */
#btn-kundenzugang.kz-active { color:#10b981; border-color:#10b981 !important; }

/* ===== main.js: Plan-Badge + Progress-Bars (renderPlanBadge) ===== */
.plan-status-row { display:flex; align-items:center; gap:8px; }
.plan-status-name { font-size:0.78rem; font-weight:800; }
.plan-status-sub { font-size:0.72rem; color:#64748b; }
.plan-label { font-size:0.65rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin-bottom:10px; }
.plan-bar-group { margin-bottom:8px; }
.plan-bar-group-last { margin-bottom:12px; }
.plan-bar-head { display:flex; justify-content:space-between; font-size:0.75rem; margin-bottom:4px; }
.plan-bar-head-label { color:var(--text-secondary); }
.plan-bar-head-val { font-weight:700; }
.plan-bar-track { background:rgba(255,255,255,0.08); border-radius:999px; height:5px; overflow:hidden; }
.plan-bar-fill { height:100%; border-radius:999px; transition:width .4s ease; }
.plan-upgrade-btn { width:100%; padding:7px; background:rgba(245,158,11,0.1); border:1px solid rgba(245,158,11,0.4); color:#f59e0b; border-radius:7px; font-size:0.72rem; font-weight:700; cursor:pointer; font-family:inherit; text-transform:uppercase; letter-spacing:.04em; }

/* ===== main.js: geteilter Modal-Overlay ===== */
.mj-overlay { position:fixed; inset:0; display:flex; align-items:center; justify-content:center; z-index:9999; padding:16px; }

/* ===== main.js: Upgrade-Modal (openUpgradeModal) ===== */
.upgrade-overlay { background:rgba(15,23,42,.7); backdrop-filter:blur(6px); }
.upgrade-box { background:var(--surface,#1e293b); border:1.5px solid var(--border,rgba(255,255,255,.1)); border-radius:20px; padding:clamp(14px,4vw,28px); color:var(--text-primary,#f8fafc); max-width:820px; width:100%; box-shadow:0 32px 80px rgba(0,0,0,.5); max-height:92vh; overflow-y:auto; }
.upgrade-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; }
.upgrade-title { margin:0; font-size:1.2rem; }
.upgrade-sub { margin:4px 0 0; font-size:0.82rem; color:var(--text-muted,#94a3b8); }
.upgrade-close { background:transparent; border:none; color:var(--text-muted,#94a3b8); font-size:1.4rem; cursor:pointer; line-height:1; padding:4px 8px; }
.upgrade-msg { background:rgba(239,68,68,.12); color:#f87171; border:1px solid rgba(239,68,68,.3); border-radius:8px; padding:10px 14px; font-size:0.85rem; margin-bottom:16px; font-weight:600; }
.upgrade-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(175px,1fr)); gap:12px; align-items:start; }
.upgrade-foot { margin:14px 0 0; font-size:0.72rem; color:var(--text-muted,#64748b); text-align:center; }

/* ===== main.js: Toasts ===== */
.mj-toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); color:white; padding:10px 22px; border-radius:10px; font-weight:700; font-size:0.88rem; z-index:9999; box-shadow:0 4px 20px rgba(0,0,0,.3); pointer-events:none; }
.mj-toast-link { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:#3b82f6; color:white; padding:12px 22px; border-radius:10px; font-weight:600; font-size:0.9rem; z-index:9999; box-shadow:0 4px 16px rgba(0,0,0,.3); cursor:pointer; }
/* ===== main.js: Badges ===== */
.accepted-badge { display:inline-flex; align-items:center; gap:5px; margin-left:10px; padding:3px 10px; background:rgba(16,185,129,.15); border:1.5px solid #10b981; border-radius:999px; font-size:0.72rem; font-weight:700; color:#10b981; vertical-align:middle; white-space:nowrap; }
.version-badge { margin-bottom:8px; }

/* ===== main.js: Bestätigungs-Modal (_confirmShortenToSingleDay) ===== */
.confirm-overlay { background:rgba(0,0,0,.55); z-index:10000; }
.confirm-box { background:var(--surface); border-radius:14px; max-width:440px; width:100%; padding:24px; box-shadow:0 20px 60px rgba(0,0,0,.4); }
.confirm-title { font-size:1.05rem; font-weight:700; margin-bottom:10px; color:var(--text-primary); }
.confirm-text { font-size:0.88rem; color:var(--text-muted); line-height:1.5; margin-bottom:18px; }
.confirm-list { margin:10px 0 0 18px; padding:0; }
.confirm-actions { display:flex; gap:10px; justify-content:flex-end; }
.confirm-cancel { padding:8px 16px; border-radius:8px; border:1.5px solid var(--border); background:none; color:var(--text-primary); font-weight:600; cursor:pointer; }
.confirm-ok { padding:8px 16px; border-radius:8px; border:none; background:#f59e0b; color:#fff; font-weight:700; cursor:pointer; }

/* ===== main.js: geteilte Overlay-Variante (2FA) ===== */
.mj-overlay-blur { background:rgba(0,0,0,.65); backdrop-filter:blur(5px); }
/* ===== main.js: 2FA-Modals (open2FAModal / _2faActivate / open2FADisableModal) ===== */
.tfa-box { background:var(--surface,#1e293b); border:1.5px solid var(--border); border-radius:18px; padding:28px; width:100%; box-shadow:0 24px 60px rgba(0,0,0,.5); max-width:400px; }
.tfa-box-narrow { max-width:380px; }
.tfa-box-scroll { max-height:92vh; overflow-y:auto; }
.tfa-head { text-align:center; margin-bottom:20px; }
.tfa-icon { font-size:2rem; }
.tfa-icon-mb { margin-bottom:8px; }
.tfa-title { margin:8px 0 4px; color:var(--text-primary); }
.tfa-title-setup { margin:0 0 6px; font-size:1.1rem; color:var(--text-primary); }
.tfa-sub { color:var(--text-muted); font-size:0.82rem; margin:0; }
.tfa-loading { font-size:0.82rem; color:var(--text-muted); text-align:center; margin:0 0 14px; }
.tfa-actions { display:flex; gap:8px; margin-top:16px; }
.tfa-actions-sm { display:flex; gap:8px; margin-top:12px; }
.tfa-btn-cancel { flex:1; padding:11px; background:transparent; color:var(--text-muted); border:1px solid var(--border); border-radius:9px; font-weight:600; cursor:pointer; font-family:inherit; }
.tfa-btn-cancel-auto { padding:11px 16px; background:transparent; color:var(--text-muted); border:1px solid var(--border); border-radius:9px; font-weight:600; cursor:pointer; font-family:inherit; }
.tfa-btn-primary { flex:1; padding:11px; background:var(--primary); color:white; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; }
.tfa-btn-danger { flex:1; padding:11px; background:#ef4444; color:white; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; }
.tfa-btn-done { width:100%; padding:12px; background:var(--primary); color:white; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; }
.tfa-qr-wrap { text-align:center; margin-bottom:16px; }
.tfa-qr-img { border-radius:10px; border:3px solid white; display:block; margin:0 auto 12px; }
.tfa-qr-hint { font-size:0.75rem; color:var(--text-muted); margin:0 0 4px; }
.tfa-secret { font-size:0.82rem; color:var(--text-primary); background:rgba(255,255,255,.08); padding:6px 12px; border-radius:6px; letter-spacing:2px; display:inline-block; }
.tfa-label { display:block; font-size:0.8rem; font-weight:600; color:var(--text-muted); margin-bottom:6px; }
.tfa-otp-input { width:100%; padding:12px; font-size:1.1rem; letter-spacing:6px; text-align:center; border:1.5px solid var(--border); border-radius:9px; background:var(--surface-2,rgba(255,255,255,.05)); color:var(--text-primary); font-family:monospace; box-sizing:border-box; }
.tfa-pw-input { width:100%; padding:11px; border:1.5px solid var(--border); border-radius:8px; background:var(--surface-2,rgba(255,255,255,.05)); color:var(--text-primary); font-family:inherit; font-size:0.88rem; box-sizing:border-box; margin-bottom:12px; }
.tfa-err { color:#ef4444; font-size:0.8rem; min-height:18px; margin-top:6px; text-align:center; }
.tfa-load-err { color:#ef4444; text-align:center; }
.tfa-backup-box { background:rgba(0,0,0,.3); border-radius:10px; padding:14px; margin-bottom:16px; }
.tfa-backup-label { font-size:0.72rem; font-weight:700; text-transform:uppercase; color:var(--text-muted); margin:0 0 10px; }
.tfa-backup-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.tfa-backup-code { background:rgba(255,255,255,.08); padding:6px 10px; border-radius:6px; font-size:0.88rem; text-align:center; letter-spacing:2px; }
.tfa-backup-warn { font-size:0.72rem; color:#f59e0b; margin:10px 0 0; }

/* ===== main.js: Angebot-erstellt-Modal (sendAngebot) ===== */
.angebot-overlay { background:rgba(0,0,0,.55); padding:0; }
.angebot-box { background:#1e293b; border-radius:16px; padding:32px; color:#f8fafc; max-width:480px; width:90%; box-shadow:0 20px 60px rgba(0,0,0,.3); }
.angebot-title { margin:0 0 8px; }
.angebot-sub { color:#94a3b8; margin:0 0 16px; font-size:0.9rem; }
.angebot-link { background:#0f172a; color:#94a3b8; border:1px solid rgba(255,255,255,.1); border-radius:8px; padding:12px; font-family:monospace; font-size:0.78rem; word-break:break-all; margin-bottom:16px; user-select:all; }
.angebot-btn-row { display:flex; gap:8px; margin-bottom:8px; }
.angebot-copy-btn { flex:1; padding:11px 10px; background:#2563eb; color:white; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.85rem; }
.angebot-wa-btn { flex:1; padding:11px 10px; background:#25d366; color:white; border-radius:9px; font-weight:700; cursor:pointer; text-decoration:none; display:flex; align-items:center; justify-content:center; gap:7px; font-size:0.85rem; }
.angebot-close-btn { width:100%; padding:10px; background:transparent; color:#64748b; border:1px solid rgba(255,255,255,.1); border-radius:9px; font-weight:600; cursor:pointer; font-family:inherit; }
/* ===== main.js: Nachtrag-Button-Wrapper (_updateNachtragBtn) ===== */
.nachtrag-wrapper { margin:0 0 12px; display:flex; align-items:center; gap:10px; }
.nachtrag-lock-note { padding:8px 14px; background:rgba(245,158,11,.1); border:1px solid #f59e0b; border-radius:9px; font-size:0.8rem; color:#f59e0b; font-weight:600; }
.nachtrag-add-btn { padding:8px 14px; background:#f59e0b; color:white; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.82rem; }
/* ===== main.js: Archiviert-Banner (applyArchivedLock) — Farben dynamisch inline ===== */
.archived-banner { border:1.5px solid currentColor; border-radius:10px; padding:10px 16px; margin-bottom:14px; font-size:0.85rem; font-weight:600; display:flex; align-items:center; gap:8px; }

/* ===== main.js: diverse (Planung-Kbd, CTA-Button, Dashboard-Toolbar) ===== */
.planung-kbd { background:rgba(255,255,255,.25); border-radius:999px; padding:1px 7px; font-size:0.8rem; }
.btn-add-cta { font-size:1rem; padding:14px 28px; }
.dash-filter-arrow { opacity:.5; font-size:.75rem; }
.project-search-input { padding:8px 14px; border:1px solid var(--border); border-radius:8px; font-size:0.9rem; width:200px; }
.project-sort-select { padding:8px 12px; border:1px solid var(--border); border-radius:8px; font-size:0.9rem; }
/* ===== main.js: Dashboard "Karte anlegen" (_dashAddCard) ===== */
.dash-add-card { display:flex; align-items:center; justify-content:center; text-align:center; min-height:118px; border:2px dashed var(--border); background:transparent; cursor:pointer; transition:border-color .15s; }
.dash-add-card:hover { border-color:var(--primary); }
.dash-add-card--tpl:hover { border-color:#10b981; }
.dash-add-label { color:var(--text-muted); font-weight:700; font-size:0.95rem; }
/* ===== main.js: 2FA-Status-Text ===== */
.tfa-active-text { color:#10b981; }

/* ===== main.js: Projektkarten-Badges (filterProjects) ===== */
.card-badge { display:inline-flex; align-items:center; gap:4px; font-size:0.72rem; font-weight:700; border-radius:5px; padding:2px 7px; }
.card-badge--changes { color:#f59e0b; background:rgba(245,158,11,.15); border:1.5px solid rgba(245,158,11,.5); animation:pulse-yellow 2s ease-in-out infinite; }
.card-badge--accepted { color:#10b981; background:rgba(16,185,129,.12); border:1px solid rgba(16,185,129,.35); }
.card-badge--sent { color:#3b82f6; background:rgba(59,130,246,.12); border:1px solid rgba(59,130,246,.35); }
.card-badge--inquiry { color:white; background:#ef4444; }
.card-badge--nachtrag { color:#a855f7; background:rgba(168,85,247,.13); border:1.5px solid rgba(168,85,247,.45); }
.card-badge--offer { color:#10b981; background:rgba(16,185,129,.12); border:1px solid rgba(16,185,129,.3); }
.card-badge--requested { color:#8b5cf6; background:rgba(139,92,246,.12); border:1px solid rgba(139,92,246,.3); }
.badge-offer-sm { font-size:0.68rem; color:#10b981; font-weight:600; }
/* ===== main.js: Projektkarten-Struktur (filterProjects) ===== */
.empty-state-full { grid-column:1/-1; }
/* Leerer Zustand bombenfest mittig: zentriert ALLE Inhalte (Icon, Überschrift, Text, Button, Tipp)
   horizontal, egal welcher Element-Typ. text-align:center/padding kommen aus style.css. */
.empty-state { display:flex; flex-direction:column; align-items:center; }
.no-projects-msg { grid-column:1/-1; text-align:center; color:var(--text-muted); padding:40px; }
.card-archive-btn { border:none; background:none; cursor:pointer; font-size:1rem; opacity:0.6; padding:2px 4px; }
.card-archive-btn:hover { opacity:1; }
.card-actions { display:flex; gap:4px; align-items:center; }
.card-customer { font-size:0.72rem; color:var(--text-muted); margin-bottom:2px; display:flex; align-items:center; gap:4px; }
.card-customer-icon { opacity:.6; }
.card-meta-row { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px; }
.card-nachtrag-row { margin-bottom:4px; }
/* ===== main.js: Bottom-Sheet Titel (openTabBottomSheet) ===== */
.dash-sheet-title { font-size:0.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--text-muted); margin-bottom:10px; padding-left:4px; }

/* ===== admin.js: zentrale Modal-/Dialog-Bausteine (ehem. STYLES-Objekt) ===== */
.adm-modal-overlay { position:fixed; inset:0; background:rgba(15,23,42,.4); z-index:9999; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(3px); }
.adm-modal-box { background:#1e293b; border-radius:16px; padding:28px; color:#f8fafc; width:90%; max-width:440px; box-shadow:0 20px 60px rgba(0,0,0,.2); }
.adm-input { width:100%; padding:10px; border:1.5px solid #e2e8f0; border-radius:8px; margin-bottom:12px; font-family:inherit; font-size:0.9rem; box-sizing:border-box; }
.adm-input--last { margin-bottom:20px; }
.adm-input--area { resize:none; }
/* Hinweis direkt unter dem Adressfeld im Auftraggeber-Modal — klein, dezent, dicht am Feld */
.adm-addr-hint { margin:-13px 2px 16px; font-size:0.72rem; color:#94a3b8; line-height:1.45; }
.adm-addr-hint b { color:#cbd5e1; font-weight:700; }
.adm-btn-cancel { flex:1; padding:10px; background:#f1f5f9; color:#333; border:1px solid #e2e8f0; border-radius:8px; cursor:pointer; font-weight:600; font-family:inherit; }
.adm-btn-save { flex:1; padding:10px; background:#1d4ed8; color:white; border:none; border-radius:8px; cursor:pointer; font-weight:600; font-family:inherit; }
.adm-btn-icon { border:none; background:none; cursor:pointer; font-size:1rem; }
.adm-btn-icon--secondary { color:var(--text-secondary); }
.adm-btn-icon--danger { color:var(--danger); }
.adm-abs-btn { cursor:pointer; color:#8b5cf6; font-size:0.78rem; padding:4px 8px; border:1px solid rgba(139,92,246,.4); border-radius:6px; background:rgba(139,92,246,.1); }

/* ===== admin.js: Controls-Zeile, Toasts, Hint ===== */
.admin-controls { display:flex; align-items:center; gap:8px; padding:0 0 12px; flex-wrap:wrap; }
.adm-toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); border-radius:10px; z-index:9999; }
.adm-toast--purple { background:#8b5cf6; color:white; padding:10px 22px; font-weight:700; }
.adm-toast--green { background:#10b981; color:white; padding:12px 24px; font-weight:600; font-size:0.9rem; box-shadow:0 4px 16px rgba(0,0,0,.3); }
.adm-toast--orange { background:#f59e0b; color:#1e293b; padding:12px 20px; font-weight:600; font-size:0.85rem; max-width:380px; text-align:center; box-shadow:0 4px 16px rgba(0,0,0,.3); }
.adm-hint { font-size:0.74rem; color:#f59e0b; margin-top:4px; }

/* ===== admin.js: Abwesenheits-Modal (openAbsenceModal) ===== */
.adm-abs-overlay { position:fixed; inset:0; background:rgba(15,23,42,.7); backdrop-filter:blur(4px); z-index:9999; display:flex; align-items:center; justify-content:center; padding:16px; }
.adm-abs-box { background:var(--surface,#1e293b); border:1.5px solid var(--border,rgba(255,255,255,.1)); border-radius:16px; padding:24px; max-width:420px; width:100%; max-height:90vh; overflow-y:auto; box-shadow:0 24px 60px rgba(0,0,0,.4); }
.adm-abs-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.adm-abs-h3 { margin:0; font-size:1rem; }
.adm-abs-name { margin:4px 0 0; font-size:0.8rem; color:var(--text-muted); }
.adm-abs-close { background:transparent; border:none; color:var(--text-muted); font-size:1.4rem; cursor:pointer; }
.adm-abs-range { display:flex; gap:8px; align-items:flex-end; margin-bottom:14px; flex-wrap:wrap; }
.adm-abs-label { font-size:0.72rem; color:var(--text-muted); display:block; margin-bottom:4px; }
.adm-abs-date { padding:7px 10px; border:1.5px solid var(--border); border-radius:8px; background:var(--surface-2,rgba(255,255,255,.05)); color:var(--text-primary); font-family:inherit; font-size:0.82rem; }
.adm-abs-monthnav { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.adm-abs-monthbtn { background:transparent; border:1px solid var(--border); border-radius:6px; padding:4px 10px; color:var(--text-primary); cursor:pointer; }
.adm-abs-monthlabel { font-size:0.88rem; font-weight:700; }
.adm-abs-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.adm-abs-dow { text-align:center; font-size:0.65rem; font-weight:700; color:var(--text-muted); padding:4px; }
.adm-abs-day { text-align:center; padding:6px 2px; border-radius:7px; cursor:pointer; font-size:0.82rem; transition:all .1s; }
.adm-abs-day--conflict { background:#7c3aed; color:white; border:2px solid #ef4444; font-weight:700; }
.adm-abs-day--absent { background:#8b5cf6; color:white; border:1.5px solid #7c3aed; font-weight:700; }
.adm-abs-day--scheduled { background:rgba(251,146,60,.25); color:#fb923c; border:2px solid #fb923c; font-weight:700; }
.adm-abs-day--today { background:rgba(59,130,246,.12); color:#60a5fa; border:1.5px solid rgba(59,130,246,.4); font-weight:400; }
.adm-abs-day--free { background:rgba(255,255,255,.04); color:var(--text-primary); border:1px solid transparent; font-weight:400; }
.adm-abs-dot { font-size:0.55rem; line-height:1; margin-top:1px; }
.adm-abs-dot--warn { color:#fca5a5; }
.adm-abs-legend { display:flex; gap:10px; flex-wrap:wrap; margin-top:8px; font-size:0.7rem; color:var(--text-muted); }
.adm-abs-swatch { display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:3px; }
.adm-abs-swatch--absent { background:#8b5cf6; }
.adm-abs-swatch--scheduled { background:rgba(251,146,60,.3); border:2px solid #fb923c; }
.adm-abs-swatch--conflict { background:#ef4444; }
.adm-abs-sched-box { margin-top:12px; padding:10px 12px; background:rgba(251,146,60,.08); border:1px solid rgba(251,146,60,.25); border-radius:9px; }
.adm-abs-sched-title { font-size:0.72rem; font-weight:700; color:#fb923c; margin-bottom:6px; }
.adm-abs-sched-chips { display:flex; flex-wrap:wrap; gap:4px; }
.adm-abs-chip { font-size:0.7rem; padding:2px 7px; border-radius:4px; font-weight:600; }
.adm-abs-chip--abs { background:rgba(239,68,68,.2); color:#fca5a5; border:1px solid rgba(239,68,68,.4); }
.adm-abs-chip--plan { background:rgba(251,146,60,.15); color:#fb923c; border:1px solid rgba(251,146,60,.3); }
.adm-abs-more { font-size:0.7rem; color:var(--text-muted); }
.adm-abs-empty { margin-top:10px; font-size:0.72rem; color:var(--text-muted); padding:8px; background:rgba(255,255,255,.03); border-radius:8px; }
.adm-abs-tag { display:inline-flex; align-items:center; gap:4px; background:rgba(139,92,246,.15); border:1px solid rgba(139,92,246,.4); border-radius:6px; padding:2px 8px; font-size:0.72rem; color:#a78bfa; margin:2px; }
.adm-abs-tag-x { cursor:pointer; color:#ef4444; font-weight:700; font-size:0.8rem; }
.adm-abs-tags { margin:12px 0 0; min-height:28px; display:flex; flex-wrap:wrap; gap:3px; }
.adm-abs-notags { font-size:0.78rem; color:var(--text-muted); }
.adm-abs-actions { display:flex; gap:8px; margin-top:16px; }
.adm-abs-save { flex:1; padding:11px; background:#8b5cf6; color:white; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; }
.adm-abs-cancel { padding:11px 16px; background:transparent; color:var(--text-muted); border:1.5px solid var(--border); border-radius:9px; font-weight:600; cursor:pointer; font-family:inherit; }

/* ===== admin.js: Such-/Sortier-Controls (Personal/Fuhrpark/Kunden) ===== */
.adm-search-wrap { position:relative; flex:1; min-width:180px; max-width:340px; }
.adm-search-icon { position:absolute; left:10px; top:50%; transform:translateY(-50%); color:var(--text-muted); font-size:0.9rem; pointer-events:none; }
.adm-search-input { width:100%; padding:7px 12px 7px 32px; border:1.5px solid var(--border); border-radius:8px; background:var(--surface-2,rgba(255,255,255,.05)); color:var(--text-primary); font-family:inherit; font-size:0.85rem; box-sizing:border-box; }
.adm-sort-group { display:flex; gap:4px; flex-shrink:0; }
.adm-sort-btn { padding:6px 12px; border-radius:7px; font-size:0.8rem; font-weight:700; cursor:pointer; font-family:inherit; border:1.5px solid var(--border); transition:all .15s; background:transparent; color:var(--text-muted); }
.adm-sort-btn.active { background:var(--primary,#2563eb); color:white; border-color:var(--primary,#2563eb); }
.adm-count { font-size:0.8rem; color:var(--text-muted); white-space:nowrap; margin-left:auto; }
.adm-pager { display:flex; align-items:center; gap:6px; flex-shrink:0; }
.adm-pager-label { font-size:0.8rem; color:var(--text-muted); }

/* ===== admin.js: Views/Tabellen (Personal/Fuhrpark/Kunden) ===== */
.adm-empty-row { text-align:center; color:#94a3b8; padding:30px; }
.adm-switch-sm { transform:scale(.85); }
.adm-td-actions { display:flex; gap:6px; }
.adm-td-sm { font-size:0.8rem; }
.adm-access-active { font-size:0.7rem; color:#10b981; display:block; margin-top:2px; }
.adm-abs-count { font-size:0.72rem; }
.adm-td-projects { max-width:240px; }
.adm-proj-wrap { display:flex; flex-wrap:wrap; gap:4px; align-items:center; }
.adm-proj-badge { display:inline-flex; align-items:center; gap:4px; padding:2px 8px; border-radius:999px; font-size:0.72rem; font-weight:600; }
.adm-proj-badge--granted { background:#10b98122; color:#10b981; border:1px solid #10b981; }
.adm-proj-badge--none { background:#f1f5f9; color:#94a3b8; border:1px solid #e2e8f0; }
.adm-no-lvs { color:#94a3b8; font-size:0.78rem; }
.adm-access-count { font-size:0.7rem; color:#10b981; margin-top:4px; }

/* "Zugang / LVs": Button statt Inline-Badges → Zeilenhöhe bleibt kompakt */
.adm-lvs-btn { display:inline-flex; align-items:center; gap:7px; padding:5px 12px; border-radius:999px; background:#0ea5e91a; color:#38bdf8; border:1px solid #0ea5e955; font-size:0.76rem; font-weight:700; cursor:pointer; font-family:inherit; transition:background .15s, border-color .15s; }
.adm-lvs-btn:hover { background:#0ea5e92e; border-color:#0ea5e9; }
.adm-lvs-btn-badge { display:inline-flex; align-items:center; gap:3px; font-weight:700; color:#10b981; }

/* LV-Liste im Modal (dunkles Theme wie .adm-modal-box) */
.adm-lvs-box { max-width:520px; }
.adm-lvs-count { display:inline-block; min-width:22px; text-align:center; padding:1px 7px; border-radius:999px; background:#0ea5e92e; color:#38bdf8; font-size:0.8rem; font-weight:700; margin-left:6px; vertical-align:middle; }
.adm-lvs-list { display:flex; flex-direction:column; gap:8px; max-height:55vh; overflow-y:auto; margin-bottom:18px; padding-right:4px; }
.adm-lv-row { display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:10px; background:#0f172a; border:1px solid #334155; }
.adm-lv-row-icon { font-size:1rem; flex-shrink:0; }
.adm-lv-row-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.adm-lv-row-name { font-weight:600; color:#f8fafc; font-size:0.9rem; word-break:break-word; }
.adm-lv-row-id { font-size:0.68rem; color:#64748b; }
.adm-lv-status { flex-shrink:0; padding:3px 9px; border-radius:999px; font-size:0.7rem; font-weight:700; white-space:nowrap; }
.adm-lv-status--granted { background:#10b98122; color:#10b981; border:1px solid #10b98155; }
.adm-lv-status--none { background:#64748b22; color:#94a3b8; border:1px solid #64748b55; }
.adm-lv-empty { color:#94a3b8; font-size:0.85rem; text-align:center; padding:20px; }

/* ===== admin.js: Dialog-Felder + Kunden-Dropdown ===== */
.adm-dialog-title { margin:0 0 20px; }
.adm-dialog-row { display:flex; gap:10px; }
.adm-field-label { font-size:0.75rem; color:#64748b; font-weight:600; display:block; margin:-4px 0 6px 2px; }
.adm-status-row { display:flex; align-items:center; gap:10px; margin-bottom:20px; }
.adm-status-label { font-size:0.85rem; font-weight:600; color:#475569; }
.adm-dd-empty { padding:10px 14px; color:#94a3b8; font-size:0.85rem; }
.adm-dd-item { padding:10px 14px; cursor:pointer; font-size:0.85rem; border-bottom:1px solid var(--border); transition:background .1s; }
.adm-dd-name { font-weight:600; }
.adm-dd-contact { font-size:0.75rem; color:#64748b; }
.adm-dd-address { font-size:0.72rem; color:#94a3b8; }

/* ===== index.html: iOS-Install-Hinweis Overlay (PWA) ===== */
.ios-install-overlay { position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:99999; display:flex; align-items:flex-end; justify-content:center; padding:16px; }
.ios-install-card  { background:#1e293b; border-radius:16px; padding:24px; max-width:400px; width:100%; border:1px solid rgba(255,255,255,.1); text-align:center; }
.ios-install-icon  { font-size:2rem; margin-bottom:8px; }
.ios-install-title { margin:0 0 12px; font-size:1rem; color:#f8fafc; }
.ios-install-steps { text-align:left; color:#94a3b8; font-size:0.85rem; line-height:1.8; padding-left:20px; margin:0 0 16px; }
.ios-install-steps b    { color:#f8fafc; }
.ios-install-steps span { font-size:1rem; }
.ios-install-note  { font-size:0.75rem; color:#64748b; margin:0 0 16px; }
.ios-install-btn   { width:100%; padding:11px; background:#2563eb; color:white; border:none; border-radius:8px; font-weight:700; cursor:pointer; font-family:inherit; }

/* ===== index.html: Navigationsleiste ===== */
.nav-left-grow { flex:1; gap:10px; justify-content:flex-start; }
.nav-menu-toggle { cursor:pointer; color:var(--text-secondary); }
.nav-brand { display:flex; align-items:center; gap:10px; cursor:pointer; flex-shrink:0; }
.nav-logo { width:32px; height:32px; background:#1e293b; clip-path:polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%); border:2px solid #3b82f6; flex-shrink:0; }
.nav-logo-letter { color:white; font-weight:900; font-size:16px; }
.nav-brand-text { display:flex; flex-direction:column; line-height:1.1; }
.nav-brand-name { color:white; font-weight:800; font-size:15px; text-transform:uppercase; }
.nav-brand-sub { color:#3b82f6; font-size:11px; letter-spacing:1.5px; text-transform:uppercase; }
#nav-project-info { flex-direction:column; position:absolute; left:50%; transform:translateX(-50%); max-width:40vw; }
#nav-project-name { font-size:14px; font-weight:800; }
.nav-project-total { font-size:11px; color:#94a3b8; }
/* Desktop + LV-Editor: Logo linksbündig neben dem Menü-Icon. Sonst überschreibt .flex-between
   (steht später in dieser Datei) das justify-content:flex-start von .nav-left-grow → Logo würde
   nach rechts/Mitte rutschen und mit der mittig stehenden Gesamtsumme (#nav-project-info) überlappen.
   Höhere Spezifität als .flex-between, nur ab 769px (auf Mobile ist die Summe ausgeblendet). */
@media (min-width: 769px) {
    body.lv-editor-active .nav-left-grow { justify-content: flex-start; }
}
.nav-right { flex:1; display:flex; justify-content:flex-end; align-items:center; gap:6px; }
#nav-btn-new { padding:6px 11px; flex-shrink:0; }
.nav-plus { font-size:1.2rem; line-height:1; }
/* Header-"Neues LV"-Button: nur Plus-Icon zeigen, Erklärung übernimmt der Hover-Tooltip */
#nav-btn-new .nav-new-label { display:none; }

/* Wiederverwendbares Hover-Tooltip für Icon-Buttons im Header (z. B. "+ Neues LV") */
.nav-tooltip { position:relative; }
.nav-tooltip::after {
    content: attr(data-tooltip);
    position:absolute; top:calc(100% + 8px); right:0;
    background:var(--surface-2,#0f172a); color:var(--text-primary,#f8fafc);
    border:1px solid var(--border,rgba(255,255,255,.12));
    padding:5px 9px; border-radius:7px;
    font-size:0.72rem; font-weight:600; white-space:nowrap;
    box-shadow:0 6px 18px rgba(0,0,0,.35);
    opacity:0; transform:translateY(-4px); pointer-events:none;
    transition:opacity .15s ease, transform .15s ease; z-index:1200;
}
.nav-tooltip:hover::after,
.nav-tooltip:focus-visible::after { opacity:1; transform:translateY(0); }
#nav-editor-actions { align-items:center; gap:6px; }
#aktionen-wrapper { position:relative; }
#aktionen-btn { padding:7px 12px; display:flex; gap:6px; font-size:0.83rem; }
.nav-caret { font-size:0.7rem; opacity:.7; }
#aktionen-btn-mobile { padding:7px 11px; font-size:1.1rem; }
#aktionen-menu { position:absolute; top:calc(100% + 6px); right:0; background:var(--surface); border:1.5px solid var(--border); border-radius:12px; box-shadow:var(--shadow-sm); min-width:190px; z-index:500; }
.aktion-item-bb { border-bottom:1px solid var(--border); }
.aktion-item-nolink { border-bottom:1px solid var(--border); cursor:default; }
.hidden-input { display:none; }
#btn-inquiries-toolbar { align-items:center; gap:5px; background:rgba(239,68,68,.12); border:1.5px solid rgba(239,68,68,.35); color:#ef4444; border-radius:8px; padding:6px 11px; font-size:0.85rem; font-weight:700; cursor:pointer; transition:all .2s; font-family:inherit; }
#btn-inquiries-toolbar:hover { background:rgba(239,68,68,.22); }
#nav-btn-save { padding:7px 12px; }

/* ===== index.html: Profil-Formular (#profile-view) ===== */
#profile-view { max-width:640px; margin:0 auto; padding:24px 16px 60px; }
.prof-h2 { margin:0 0 24px; font-size:1.3rem; }
.prof-card { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:24px; margin-bottom:16px; }
.prof-card-flush { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:24px; }
.prof-section-title { margin:0 0 18px; font-size:0.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--text-muted); }
.prof-subtitle { font-size:0.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin:0 0 12px; }
.prof-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.prof-grid--mb { margin-bottom:12px; }
.prof-grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; align-items:end; }
.prof-col-full { grid-column:1/-1; }
.prof-label { font-size:0.75rem; font-weight:600; color:var(--text-muted); display:block; margin-bottom:5px; }
.prof-label-78 { font-size:0.78rem; font-weight:600; color:var(--text-muted); display:block; margin-bottom:5px; }
.prof-label-email { font-size:0.78rem; font-weight:600; color:var(--text-muted); display:block; margin-bottom:6px; }
.prof-optional { opacity:.6; font-weight:400; }
.prof-input { width:100%; padding:10px 12px; border:1.5px solid var(--border); border-radius:8px; background:var(--surface-2,rgba(255,255,255,.05)); color:var(--text-primary); font-family:inherit; font-size:0.88rem; box-sizing:border-box; }
.prof-input-flex { flex:1; padding:10px 12px; border:1.5px solid var(--border); border-radius:8px; background:var(--surface-2,rgba(255,255,255,.05)); color:var(--text-primary); font-family:inherit; font-size:0.88rem; }
.prof-flex-row { display:flex; gap:8px; }
.prof-toggle-label { display:flex; align-items:center; gap:12px; cursor:pointer; padding:12px 14px; border:1.5px solid var(--border); border-radius:8px; background:var(--surface-2,rgba(255,255,255,.05)); user-select:none; }
.prof-toggle-box { position:relative; width:40px; height:22px; flex-shrink:0; }
.prof-toggle-input { position:absolute; opacity:0; width:0; height:0; }
.prof-toggle-track { position:absolute; inset:0; border-radius:999px; background:rgba(255,255,255,.15); transition:background .2s; }
.prof-toggle-knob { position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:white; box-shadow:0 1px 4px rgba(0,0,0,.4); transition:transform .2s; }
.prof-toggle-title { font-size:0.88rem; font-weight:600; color:var(--text-primary); }
.prof-toggle-desc { font-size:0.77rem; color:var(--text-muted); margin-top:2px; }
.prof-bank-section { grid-column:1/-1; border-top:1px solid var(--border); padding-top:14px; margin-top:4px; }
.prof-save-btn { width:100%; padding:12px; background:var(--primary); color:white; border:none; border-radius:10px; font-weight:700; font-size:0.9rem; cursor:pointer; font-family:inherit; margin-bottom:24px; }
.prof-2fa-section { border-top:1px solid var(--border); padding-top:20px; margin-bottom:24px; }
#twofa-status-block { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px; border:1.5px solid var(--border); border-radius:10px; background:var(--surface-2,rgba(255,255,255,.04)); }
#twofa-status-text { font-weight:700; font-size:0.88rem; color:var(--text-primary); }
.prof-hint-sm { font-size:0.75rem; color:var(--text-muted); margin-top:3px; }
#twofa-btn { padding:9px 16px; background:var(--primary); color:white; border:none; border-radius:8px; font-weight:700; font-size:0.82rem; cursor:pointer; font-family:inherit; white-space:nowrap; }
.prof-subsection { margin-bottom:20px; padding-bottom:20px; border-bottom:1px solid var(--border); }
.prof-btn-outline { padding:10px 16px; background:transparent; color:var(--primary); border:1.5px solid var(--primary); border-radius:8px; font-weight:700; font-size:0.85rem; cursor:pointer; font-family:inherit; white-space:nowrap; }
#profile-pending-email { margin-top:8px; font-size:0.78rem; color:#f59e0b; }
.prof-pw-section { border-top:1px solid var(--border); padding-top:20px; grid-column:1/-1; }
.prof-btn-submit { margin-top:12px; padding:10px 20px; background:var(--primary); color:white; border:none; border-radius:8px; font-weight:700; font-size:0.85rem; cursor:pointer; font-family:inherit; }


/* ============================================================
   Aus index.html ausgelagert (Inline-<style> entfernt)
   – Utilities, Nav-Bar, LV-Sticky-Bar, Responsive,
     Angebots-/Vorschau-Sperren
   ============================================================ */
/* Responsive */
@media (max-width: 640px) { .desktop-only { display: none !important; } }
@media (min-width: 641px) { .mobile-only  { display: none !important; } }

/* Admin Cards */
.admin-card-list { display: grid; gap: 10px; }
@media (min-width: 768px) { .admin-card-list { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1200px) { .admin-card-list { grid-template-columns: 1fr 1fr 1fr; } }

/* --- NEUE UTILITY KLASSEN ZUR CODE-KÜRZUNG --- */
.flex-between { display: flex; justify-content: space-between; align-items: center; }
.flex-center { display: flex; justify-content: center; align-items: center; }
.view-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; flex-wrap: wrap; gap: 10px; }
.view-header h2 { margin: 0; }
.table-responsive { overflow-x: auto; }
.nav-bar { display: flex; align-items: center; padding: 0 16px; height: 58px; position: sticky; top: 0; z-index: 1100; background: var(--surface); border-bottom: 1px solid var(--border); box-shadow: var(--shadow-sm); }
.nav-btn { background: transparent; color: var(--text-secondary); border: 1.5px solid var(--border); border-radius: 8px; font-weight: 600; cursor: pointer; font-family: inherit; transition: all .15s; }
.nav-btn:hover { background: var(--surface-2); }
.nav-btn-primary:hover { border-color: var(--primary); color: var(--primary); background: transparent; }
.aktion-item { width: 100%; padding: 11px 16px; background: none; border: none; text-align: left; cursor: pointer; font-size: 0.88rem; font-family: inherit; color: var(--text-primary); display: flex; align-items: center; gap: 10px; }
.aktion-item:hover { background: var(--surface-2); }

/* Social Links & Footer */
.social-link { color: #94a3b8; text-decoration: none; transition: color 0.2s; }
.social-link:hover.fb { color: #1877F2; }
.social-link:hover.ig { color: #E1306C; }
.social-link:hover.tt { color: #000000; }
.social-link:hover.xi { color: #026466; }
.social-link:hover.li { color: #0A66C2; }
.footer-link { color: inherit; text-decoration: none; }
.footer-link:hover { text-decoration: underline; }




/* ═══════════════════════════════════════════
   LV STICKY BAR + RESPONSIVE
   ═══════════════════════════════════════════ */

/* Sticky Bottom Bar — immer unsichtbar außer im LV */
#lv-sticky-bar {
    display: none;
    position: fixed; bottom: 0; left: 0; right: 0;
    background: rgba(10,18,35,0.98);
    border-top: 1px solid var(--border);
    backdrop-filter: blur(16px);
    padding: 10px 16px 12px;
    z-index: 900;
    align-items: center;
    gap: 12px;
    box-shadow: 0 -4px 24px rgba(0,0,0,0.5);
}
#lv-sticky-bar .sb-title {
    flex: 1; min-width: 0;
    font-size: 0.88rem; font-weight: 700; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#lv-sticky-bar .sb-total {
    font-size: 0.88rem; font-weight: 700; color: var(--primary);
    white-space: nowrap; flex-shrink: 0;
}

/* ── Tablet: 769px – 1100px ─────────────────────
   Tabelle scrollt horizontal, Header kompakter    */
/* LV-Editor: Toolbar + Kunden-Suche (ersetzt fragile Attribut-Selektor-Hacks) */
#lv-planning-row { display: flex; gap: 15px; align-items: center; }
.lv-customer-search { position: relative; width: 320px; }

@media (min-width: 769px) and (max-width: 1100px) {
    .bereich { overflow-x: auto; }
    .aufgaben-tabelle { min-width: 860px; }

    /* Toolbar: 2 Reihen */
    #lv-planning-row {
        flex-wrap: wrap !important; gap: 8px !important;
    }
}

/* ── Mobile: max 768px ──────────────────────────── */
@media (max-width: 768px) {
    #nav-project-info { display: none !important; }
    #lv-sticky-bar.lv-active { display: flex !important; }
    #lv-root { padding-bottom: 72px; }

    /* LV Header: alles untereinander */
    #lv-editor-view > header {
        flex-direction: column !important;
        align-items: flex-start;
        gap: 10px;
        margin-bottom: 12px;
    }
    #lv-editor-view > header > div:first-child { width: 100%; }
    #edit-project-title { font-size: 1.2rem !important; }

    /* Kunden-Suche */
    .lv-customer-search { width: 100% !important; }
    #customer-search-input, #service-location-input { width: 100% !important; }

    /* Toolbar-Zeile: Basis/Planung Toggle + Datum/Zeit/Auto als scrollbare Zeile */
    #lv-planning-row {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 8px !important;
        align-items: center;
    }
    /* Datum-Inputs etwas schmaler */
    #lv-editor-view input[type="date"] { width: 130px !important; min-width: 0; }
    #lv-editor-view input[type="time"] { width: 80px !important; min-width: 0; }
    /* Ressourcen Button */
    #btn-planung-uebertragen,
    button[onclick*="openBulkAssignModal"] {
        font-size: 0.75rem !important;
        padding: 6px 10px !important;
    }

    /* Bereich: horizontal scrollbar */
    .bereich { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .aufgaben-tabelle {
        min-width: 700px;
        table-layout: auto;
    }

    /* Bereich hinzufügen: volle Breite */
    #lv-editor-view button[onclick*="addBereich"] { width: 100% !important; }
}

@keyframes prioGlow {
    0%,100% { box-shadow: 0 0 0 0 rgba(190,18,60,0.5); }
    50%      { box-shadow: 0 0 0 6px rgba(190,18,60,0); }
}

/* Oeffentliches Angebot aktiv: Ressourcen-Icons (Mitarbeiter/Fahrzeuge) deaktivieren */
body.public-offer-active .action-icon[onclick*="openSidebar"] {
    pointer-events: none !important;
    opacity: 0.3 !important;
    cursor: not-allowed;
}
body.public-offer-active .val-rhythm,
body.public-offer-active .day-picker,
body.public-offer-active .einmalig-date-wrap,
body.public-offer-active .task-time,
body.public-offer-active .task-time-end,
body.public-offer-active .val-qty {
    pointer-events: none !important;
    opacity: 0.3 !important;
    cursor: not-allowed;
}

/* Öffentliches Angebot: Leistungsort-Feld + Hinweis ausblenden (kein fester Ort bei generischem Angebot) */
body.public-offer-active #lv-location-row,
body.public-offer-active .lv-location-hint { display: none !important; }

/* Einzeltermin-Modus (kein Projekt-Enddatum): Zeitraum-Feld aus, Positions-Datum an Projektstart gekoppelt */
body.single-date-mode #zeitraum-wrap { display: none !important; }
body:not(.single-date-mode) #btn-add-zeitraum { display: none !important; }

/* Waehrend der Anfrage-Vorschau: gesperrte Felder wieder voll lesbar (Werte bleiben gesperrt) */
body.public-offer-active.inquiry-preview-active .val-rhythm,
body.public-offer-active.inquiry-preview-active .day-picker,
body.public-offer-active.inquiry-preview-active .einmalig-date-wrap,
body.public-offer-active.inquiry-preview-active .task-time,
body.public-offer-active.inquiry-preview-active .task-time-end,
body.public-offer-active.inquiry-preview-active .val-qty {
    opacity: 1 !important;
}

/* Anfrage-Vorschau ist reine Ansicht: alle Positionsfelder + Aktionen sperren (kein versehentliches Speichern der Kundenwerte ins Template) */
body.inquiry-preview-active .beschreibung,
body.inquiry-preview-active .val-qty,
body.inquiry-preview-active .val-unit,
body.inquiry-preview-active .val-price,
body.inquiry-preview-active .val-rhythm,
body.inquiry-preview-active .day-picker,
body.inquiry-preview-active .einmalig-date-wrap,
body.inquiry-preview-active .task-time,
body.inquiry-preview-active .task-time-end,
body.inquiry-preview-active .delete-btn,
body.inquiry-preview-active .drag-handle,
body.inquiry-preview-active .action-icon,
body.inquiry-preview-active .comment-icon {
    pointer-events: none !important;
}

/* Header-Bulk-Icons (⚡ Uhrzeit + ⚡ Ressourcen) in der Anfrage-Vorschau ebenfalls sperren — reine Ansicht. */
body.inquiry-preview-active .lvh-bulk-icon {
    pointer-events: none !important;
    opacity: 0.3 !important;
    cursor: not-allowed !important;
}

/* Bereits in den Kalender uebertragene Position: Ressourcen-Icons gesperrt (Aenderung nur im Kalender) */
.aufgabe.lv-transferred .action-icon[onclick*="openSidebar"] {
    pointer-events: none !important;
    opacity: 0.45 !important;
    cursor: not-allowed;
}

/* Vom Auftraggeber abgewaehlte (durchgestrichene) Position: vollstaendig gesperrt —
   Ressourcen-Icons (Personal/Fahrzeug) UND Kommentar-Icon nur lesbar. !important ueberstimmt
   jedes Inline-Reaktivieren (z.B. _applyTaskLock). dataset.customerUnchecked wird in
   lv-editor-angebot.js gesetzt (abgewaehlte Original- UND Wunschpositionen). */
.aufgabe[data-customer-unchecked="1"] .action-icon[onclick*="openSidebar"],
.aufgabe[data-customer-unchecked="1"] .comment-icon {
    pointer-events: none !important;
    opacity: 0.4 !important;
    cursor: not-allowed !important;
}

/* Gesperrter Bereich (nach Angebots-Annahme): KEINE neuen/bearbeiteten Kommentare —
   Kommentar-Icon fuer ALLE Positionen im Bereich deaktiviert (Task-, Kundenanpassungs-
   und durchgestrichene Zeilen einheitlich). Klasse lv-locked setzt _angebotApplyLockState. */
.bereich.lv-locked .comment-icon {
    pointer-events: none !important;
    opacity: 0.3 !important;
    cursor: not-allowed !important;
}


/* ── LV-Editor-Header: aus index.html ausgelagerte Inline-Styles (statische Praesentation) ──
   Sichtbarkeit/display JS-getoggelter Elemente (Panels, Dropdown, #zeitraum-wrap,
   #lv-time-group, Badges, #grand-total, #lv-customer-row) bleibt bewusst inline. */
.lv-edit-header                       { align-items:flex-start; margin-bottom:20px; }
#lv-editor-view .lv-btn-back          { background:#64748b; margin-bottom:10px; }
#customer-search-input, #service-location-input { width:100%; padding:8px 12px; border:1.5px solid var(--border); border-radius:var(--radius-md); }
#lv-editor-view .lv-plan-line         { gap:6px; font-size:0.8rem; font-weight:600; }
#lv-editor-view .lv-plan-label        { color:var(--text-muted); }
#p-start-date, #p-end-date            { padding:5px; width:130px; }
#p-start-time, #p-end-time            { padding:5px; width:90px; }
#btn-add-zeitraum                     { background:none; border:1.5px dashed var(--border); color:var(--primary); border-radius:8px; padding:4px 10px; font-size:0.78rem; font-weight:600; cursor:pointer; white-space:nowrap; }
#btn-remove-zeitraum                  { background:none; border:none; color:var(--text-muted); font-size:1.1rem; cursor:pointer; line-height:1; padding:2px 4px; }
#btn-planung-uebertragen              { background:#7c3aed; }
#lv-editor-view .lv-add-bereich-wrap  { margin-top:20px; padding-bottom:50px; }
#lv-editor-view .lv-btn-bereich       { padding:10px 25px; }
#lv-editor-view .kbd-hint             { background:rgba(255,255,255,0.2); padding:2px 4px; border-radius:4px; font-size:0.7em; }
#lv-editor-view .kbd-ml               { margin-left:8px; }


/* ── Projektkarten-Status-Badge: Farbe per Status-Klasse statt Inline (analog .status-badge-agenda) ── */
.status-badge.s-entwurf    { background:#64748b22; color:#64748b; }
.status-badge.s-wartend    { background:#f59e0b22; color:#f59e0b; }
.status-badge.s-inarbeit   { background:#3b82f622; color:#3b82f6; }
.status-badge.s-erledigt   { background:#10b98122; color:#10b981; }
.status-badge.s-angenommen { background:#8b5cf622; color:#8b5cf6; }
.status-badge.s-angefragt  { background:#8b5cf622; color:#8b5cf6; }
.status-badge.s-archiviert { background:#94a3b822; color:#94a3b8; }
.status-badge.s-default    { background:#94a3b822; color:#94a3b8; }

/* ── sidebar.js · openSidebarFromTask (Einsatz-Detail) ── */
.sidebar-btn-inactive { opacity:0.4; cursor:not-allowed; filter:grayscale(60%); background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.15); }
.lv-jump          { cursor:pointer; font-size:1rem; opacity:0.5; margin-left:8px; transition:opacity .15s; }
.absent-badge     { font-size:0.6rem; color:#fb923c; margin-left:3px; }
.txt-xs-muted     { font-size:0.65rem; color:var(--text-muted); }
.c-primary        { color:var(--text-primary); }
.flex-1           { flex:1; }
.mb8              { margin-bottom:8px; }
.mb10             { margin-bottom:10px; }
.mb16             { margin-bottom:16px; }
.mb50             { margin-bottom:50px; }
.btn-violet-full  { width:100%; background:#7c3aed; }
.btn-slate-full   { width:100%; background:#64748b; }
.sb-section-label { font-size:0.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin-bottom:8px; }
.sb-pill-row      { display:flex; gap:8px; margin-bottom:12px; }
.sb-timestamps    { font-size:0.78rem; color:var(--text-muted); display:flex; gap:16px; }
.sb-notes         { width:100%; min-width:100%; height:80px; border:1px solid var(--border); border-radius:8px; padding:10px; }
.sb-counter       { font-size:0.7rem; color:var(--text-muted); text-align:right; margin-top:2px; }
.sb-file-row      { display:flex; gap:8px; align-items:center; margin-bottom:8px; }
.sb-file-input    { flex:1; font-size:0.8rem; }
.sb-caption       { width:100%; margin-bottom:8px; padding:6px; border:1px solid var(--border); border-radius:6px; }
.sb-img-counter   { font-size:0.72rem; color:var(--text-muted); margin-bottom:4px; }
.sb-print-btn     { width:100%; margin-top:12px; margin-bottom:4px; background:transparent; color:var(--text-secondary); border:1.5px solid var(--border); border-radius:8px; padding:9px; cursor:pointer; font-family:inherit; font-size:0.82rem; font-weight:600; }
.rs-col           { display:flex; flex-direction:column; gap:10px; }
.rs-row           { display:flex; gap:8px; }
.rs-label         { font-size:0.72rem; color:var(--text-muted); font-weight:600; }
.rs-input         { width:100%; padding:7px 10px; border:1.5px solid var(--border); border-radius:8px; font-family:inherit; font-size:0.85rem; margin-top:4px; }
.rs-disabled-msg  { color:var(--text-muted); font-size:0.82rem; padding:8px; text-align:center; opacity:0.6; }

/* ── sidebar.js · openSidebar (Admin-Detail: Operativ/Personal/Fahrzeuge/Info) ── */
.op-status-box   { padding:15px; border-radius:10px; margin-bottom:20px; text-align:center; }
.op-status-btns  { display:flex; justify-content:space-around; margin-top:10px; }
.op-dot          { border:none; padding:10px; border-radius:50%; width:40px; height:40px; cursor:pointer; }
.op-dot--none    { background:#cbd5e1; }
.op-dot--orange  { background:var(--warning); }
.op-dot--green   { background:var(--success); }
.op-time-start   { font-size:0.85rem; margin:10px 0 5px 0; }
.op-time-end     { font-size:0.85rem; margin:5px 0; }
.sb-btn-dim      { opacity:0.4; cursor:not-allowed; filter:grayscale(60%); }
.sb-inactive-tag { font-size:0.65rem; }
.conflict-badge  { font-size:0.62rem; color:#fb923c; margin-left:4px; background:rgba(251,146,60,.12); padding:1px 5px; border-radius:4px; }
.absent-info     { margin-top:10px; font-size:0.72rem; color:#94a3b8; padding:8px; background:rgba(251,146,60,.06); border:1px solid rgba(251,146,60,.2); border-radius:8px; }
.lv-notes-area   { width:100%; height:120px; border:1px solid var(--border); border-radius:8px; padding:10px; }
.btn-full-mt     { width:100%; margin-top:15px; }
.btn-full-mt10   { width:100%; margin-top:10px; }
.mb15            { margin-bottom:15px; }
.mt0             { margin-top:0; }
.mt10            { margin-top:10px; }

/* ── sidebar.js · restliche Funktionen (Prio-Chips, Konflikt-Check, Lock-Hinweis, Ressourcen-Icons, Foto-Liste) ── */
.locked-tag      { margin-left:auto; font-size:0.7rem; opacity:0.7; }
.locked-tag-sm   { font-size:0.75rem; opacity:0.7; }
.prio-chip-row   { display:flex; gap:6px; flex-wrap:wrap; }
.conflict-warn   { background:#fef2f2; border:1px solid #fca5a5; border-radius:8px; padding:10px; font-size:0.8rem; color:#dc2626; margin-bottom:6px; }
.conflict-meta   { font-size:0.72rem; color:#64748b; margin-left:12px; }
.conflict-note   { margin-top:8px; font-size:0.75rem; color:#64748b; font-style:italic; }
.mt6             { margin-top:6px; }
.lock-hint-title { font-size:1.1rem; margin-bottom:6px; }
.lock-hint-body  { color:#94a3b8; line-height:1.5; }
.staff-avatar    { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:50%; background:var(--primary); color:white; font-size:0.6rem; font-weight:800; margin-right:-4px; border:2px solid var(--surface); }
.staff-more      { font-size:0.7rem; color:var(--text-muted); margin-left:8px; }
.icon-sup        { background:var(--primary); color:white; border-radius:50%; padding:1px 4px; font-size:0.6rem; }
.img-limit-msg   { color:#ef4444; font-weight:700; }
.exe-img-card    { margin-bottom:10px; border:1px solid var(--border); border-radius:8px; overflow:hidden; position:relative; }
.exe-img         { width:100%; max-height:200px; object-fit:cover; }
.exe-img-cap-row { padding:6px 8px; display:flex; justify-content:space-between; align-items:center; }
.exe-img-cap     { font-size:0.8rem; color:#64748b; }
.exe-img-del     { border:none; background:none; cursor:pointer; color:var(--danger); font-size:0.85rem; padding:2px 6px; border-radius:4px; }
.exe-img-timer   { font-size:0.7rem; color:#f59e0b; padding:0 8px 6px; text-align:right; }
.exe-img-empty   { color:var(--text-muted); font-size:0.82rem; padding:8px 0; }

/* ════════ lv-editor-angebot.js ════════ */
/* ── Status-Banner / Nachtrag ── */
.warn-emoji        { font-size:1.2rem; animation:pulse-yellow 1.8s ease-in-out infinite; }
.fshrink0          { flex-shrink:0; }
.ico-12            { font-size:1.2rem; }
.strong-block      { display:block; margin-bottom:2px; }
.txt-78m           { font-size:0.78rem; color:var(--text-muted); }
.row-ac10          { display:flex; align-items:center; gap:10px; }
.banner-title-blue  { font-weight:700; font-size:0.9rem; color:#60a5fa; }
.banner-title-amber { font-weight:700; font-size:0.9rem; color:#f59e0b; }
.btn-nachtrag-approve { flex-shrink:0; padding:9px 18px; background:#f59e0b; color:#1a1a1a; border:none; border-radius:8px; font-weight:800; cursor:pointer; font-family:inherit; font-size:0.85rem; white-space:nowrap; }
.btn-approve-angebot  { padding:9px 20px; background:#f59e0b; color:#1a1a1a; border:none; border-radius:8px; font-weight:800; cursor:pointer; font-family:inherit; font-size:0.88rem; white-space:nowrap; }
.btn-withdraw-angebot { margin-left:auto; align-self:center; background:transparent; border:none; color:var(--text-muted); font-size:0.78rem; text-decoration:underline; cursor:pointer; padding:4px 6px; white-space:nowrap; font-family:inherit; transition:color .15s; }
.btn-withdraw-angebot:hover { color:#ef4444; }
/* ── Kommentar-Popup ── */
.cmt-box--hist     { margin-bottom:8px; padding:8px 12px; background:rgba(167,139,250,.06); border-radius:8px; border-left:3px solid rgba(167,139,250,.4); }
.cmt-box--cur      { margin-bottom:8px; padding:8px 12px; background:rgba(167,139,250,.12); border-radius:8px; border-left:3px solid #a78bfa; }
.cmt-box--reply    { margin-bottom:8px; padding:8px 12px; background:rgba(37,99,235,.1); border-radius:8px; border-left:3px solid #2563eb; }
.cmt-meta          { font-size:0.68rem; color:var(--text-muted); margin-bottom:3px; }
.cmt-ts            { font-size:0.68rem; color:var(--text-muted); margin-left:6px; }
.cmt-label--violet { font-size:0.68rem; color:#a78bfa; margin-bottom:3px; font-weight:700; }
.cmt-label--blue   { font-size:0.68rem; color:#60a5fa; margin-bottom:3px; font-weight:700; }
.cmt-text-84       { font-size:0.84rem; }
.cmt-text-88       { font-size:0.88rem; }
.cmt-text-88-600   { font-size:0.88rem; font-weight:600; }
.cmt-popup-card    { background:var(--surface); border-radius:14px; padding:24px; max-width:460px; width:100%; border:1px solid var(--border); max-height:85vh; overflow-y:auto; display:flex; flex-direction:column; gap:12px; }
.cmt-popup-title   { font-size:0.75rem; font-weight:700; text-transform:uppercase; color:var(--text-muted); letter-spacing:.06em; }
.cmt-empty         { color:var(--text-muted); font-size:0.82rem; }
.cmt-reply-sec     { border-top:1px solid var(--border); padding-top:12px; }
.cmt-reply-label   { font-size:0.72rem; font-weight:700; color:var(--text-muted); margin-bottom:6px; }
.cmt-reply-input   { width:100%; min-height:72px; background:var(--surface2,rgba(255,255,255,.06)); border:1.5px solid var(--border); border-radius:8px; color:var(--text-primary); padding:8px 10px; font-family:inherit; font-size:0.85rem; resize:vertical; box-sizing:border-box; }
.cmt-btn-row       { display:flex; gap:8px; margin-top:8px; }
.cmt-save-btn      { flex:1; padding:9px; background:var(--primary,#2563eb); color:white; border:none; border-radius:8px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.88rem; }
.cmt-close-btn     { padding:9px 16px; background:transparent; color:var(--text-muted); border:1.5px solid var(--border); border-radius:8px; font-weight:600; cursor:pointer; font-family:inherit; }
.cmt-status        { font-size:0.75rem; color:var(--success,#10b981); margin-top:4px; }
/* ── Override-Zeile (Kundenanpassung) ── */
.td-spacer         { width:20px; padding:0 4px; }
.td-nowrap         { white-space:nowrap; }
.td-c-nowrap       { text-align:center; white-space:nowrap; }
.ov-desc           { font-weight:600; font-size:0.88rem; color:#f59e0b; }
.ov-sub            { font-size:0.68rem; color:rgba(245,158,11,.6); margin-top:2px; }
.ov-einmalig-date  { padding:4px 6px; border:1.5px solid #f59e0b; border-radius:6px; font-size:0.82rem; background:rgba(245,158,11,.1); color:#f59e0b; font-family:inherit; }
.ov-qty            { color:#f59e0b; border-color:#f59e0b; background:rgba(245,158,11,.1); font-weight:700; }
.ov-total          { color:#f59e0b; }
.ov-rhythm         { color:#f59e0b; border-color:rgba(245,158,11,.4); }
.ov-reject-icon    { cursor:pointer; font-size:0.85rem; color:#ef4444; margin-left:4px; opacity:0.85; transition:opacity .15s; }
.time-arrow        { color:var(--text-muted); font-size:0.85rem; margin:0 2px; }
.mx3               { margin:0 3px; }
/* ── Annahme-Hinweis ── */
.notice-sub        { font-weight:400; font-size:0.82rem; }

/* ── lv-editor-angebot.js · JS-erzeugte Container (cssText → Klassen) ── */
.nachtrag-banner     { margin:0 0 16px; padding:12px 16px; background:rgba(245,158,11,.1); border:1.5px solid rgba(245,158,11,.4); border-radius:10px; font-size:0.84rem; color:#f59e0b; display:flex; align-items:center; gap:10px; }
.status-banner-blue  { background:rgba(59,130,246,.08); border:1.5px solid rgba(59,130,246,.35); border-radius:10px; padding:12px 16px; margin-bottom:14px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.status-banner-amber { background:rgba(245,158,11,.12); border:1.5px solid #f59e0b; border-radius:10px; padding:12px 16px; margin-bottom:14px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.ov-lock-badge       { font-size:0.7rem; color:#f59e0b; font-weight:700; margin-right:6px; }
.angebot-lock-hint   { margin:10px 15px; padding:8px 12px; background:rgba(245,158,11,.08); border:1px solid rgba(245,158,11,.3); border-radius:8px; font-size:0.78rem; color:#f59e0b; }
.cmt-popup-overlay   { position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:9999; display:flex; align-items:center; justify-content:center; padding:16px; }
.restore-btn--on     { cursor:pointer; font-size:1rem; color:#10b981; margin-left:6px; font-weight:700; transition:opacity .15s; }
.restore-btn--off    { font-size:1rem; color:#475569; margin-left:6px; opacity:0.35; cursor:not-allowed; }
.accepted-toast      { position:fixed; top:72px; left:50%; transform:translateX(-50%); background:#10b981; color:white; padding:14px 24px; border-radius:12px; font-weight:700; font-size:0.95rem; z-index:9999; box-shadow:0 8px 24px rgba(0,0,0,.3); text-align:center; max-width:480px; }

/* ════════ calendar.js ════════ */
/* ── Tages-Agenda ── */
.agenda-empty        { color:var(--text-muted); padding:20px 0; text-align:center; }
.agenda-filter-select { padding:6px 10px; border:1.5px solid var(--border); border-radius:6px; font-size:0.82rem; font-family:inherit; }
.project-group-header { padding:12px 8px 6px; font-size:0.65rem; font-weight:800; text-transform:uppercase; letter-spacing:.1em; color:var(--text-muted); border-bottom:1px solid var(--border); margin-top:8px; display:flex; align-items:center; gap:6px; }
.pgh-count           { margin-left:auto; font-weight:500; opacity:.5; }

/* Leistungsort/Baustelle-Adresse je Projektgruppe im Tagesplan */
.pgh-address   { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:7px 8px 9px; font-size:0.8rem; border-bottom:1px solid var(--border); }
.pgh-addr-text { color:#cbd5e1; }
.pgh-route     { display:inline-flex; align-items:center; gap:4px; padding:3px 10px; border-radius:999px; background:#0ea5e91a; color:#38bdf8; border:1px solid #0ea5e955; font-size:0.72rem; font-weight:700; text-decoration:none; white-space:nowrap; transition:background .15s; }
.pgh-route:hover { background:#0ea5e92e; }

/* Adresse im Kopf der Aufgaben-Sidebar */
.side-address      { display:flex; flex-direction:column; gap:9px; margin-bottom:16px; padding:11px 13px; border-radius:10px; background:#0f172a; border:1px solid #334155; font-size:0.82rem; color:#cbd5e1; line-height:1.4; }
.side-address-text { color:#f8fafc; font-weight:600; }
.side-address-btn  { display:inline-flex; align-items:center; gap:6px; align-self:flex-start; padding:7px 13px; border-radius:8px; background:#0ea5e91a; color:#38bdf8; border:1px solid #0ea5e955; font-size:0.78rem; font-weight:700; text-decoration:none; white-space:nowrap; transition:background .15s, border-color .15s; }
.side-address-btn:hover { background:#0ea5e92e; border-color:#0ea5e9; }
.absent-badge        { position:absolute; top:-4px; right:-4px; font-size:0.45rem; background:#dc2626; border-radius:50%; width:9px; height:9px; display:flex; align-items:center; justify-content:center; }
.staff-extra         { font-size:0.7rem; color:var(--text-muted); margin-left:8px; }
.rhythm-badge        { font-size:0.68rem; color:#7c3aed; background:rgba(124,58,237,.1); border:1px solid rgba(124,58,237,.25); border-radius:4px; padding:1px 6px; white-space:nowrap; }
.agenda-time--cal    { min-width:48px; font-size:0.75rem; font-weight:700; }
.agenda-col          { flex:1; min-width:0; }
.agenda-bereich      { font-size:0.65rem; color:var(--text-muted); letter-spacing:.04em; text-transform:uppercase; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.agenda-desc         { font-weight:800; font-size:0.95rem; color:var(--text-primary); margin-bottom:5px; line-height:1.2; }
.agenda-meta-row     { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.agenda-item-times   { font-size:0.7rem; color:var(--text-muted); }
.agenda-item-avatars { display:inline-flex; align-items:center; }
.agenda-item-fleet   { font-size:0.7rem; color:var(--text-muted); margin-left:6px; }
.agenda-chevron-btn  { background:transparent; border:1.5px solid var(--border); border-radius:8px; width:32px; height:32px; cursor:pointer; font-size:1rem; color:var(--text-secondary); flex-shrink:0; display:flex; align-items:center; justify-content:center; transition:all .15s; }
.agenda-loading      { color:var(--text-muted); text-align:center; padding:16px; }
/* ── Ausfall-Modal ── */
.ausfall-overlay     { position:fixed; inset:0; background:rgba(15,23,42,.6); z-index:9999; display:flex; align-items:flex-start; justify-content:center; padding-top:60px; backdrop-filter:blur(4px); }
.ausfall-card        { background:var(--surface); border:1.5px solid var(--border); border-radius:16px; width:100%; max-width:680px; max-height:85vh; overflow-y:auto; box-shadow:0 24px 64px rgba(0,0,0,.4); }
.ausfall-head        { padding:20px 24px; border-bottom:1px solid var(--border); display:flex; justify-content:space-between; align-items:center; }
.ausfall-title       { margin:0; font-size:1.05rem; }
.ausfall-close       { background:none; border:none; font-size:1.3rem; cursor:pointer; color:var(--text-muted); }
.ausfall-body        { padding:20px 24px; }
.ausfall-grid3       { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; margin-bottom:20px; }
.ausfall-label       { font-size:0.75rem; font-weight:700; color:var(--text-muted); display:block; margin-bottom:6px; }
.ausfall-input       { width:100%; padding:9px 10px; border:1.5px solid var(--border); border-radius:8px; font-family:inherit; font-size:0.88rem; }
.ausfall-date        { width:100%; padding:9px 10px; border:1.5px solid var(--border); border-radius:8px; font-family:inherit; font-size:0.88rem; box-sizing:border-box; }
.ausfall-load-btn    { width:100%; padding:10px; background:var(--primary); color:white; border:none; border-radius:8px; cursor:pointer; font-weight:700; font-family:inherit; font-size:0.88rem; margin-bottom:20px; }
.ausfall-count       { font-size:0.78rem; font-weight:700; color:var(--text-muted); margin-bottom:10px; text-transform:uppercase; }
.ausfall-quick       { background:rgba(99,102,241,.08); border:1px solid rgba(99,102,241,.3); border-radius:10px; padding:12px 14px; margin-bottom:14px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ausfall-quick-label { font-size:0.8rem; font-weight:700; color:#818cf8; white-space:nowrap; }
.ausfall-all-select  { flex:1; min-width:160px; padding:7px 10px; border:1.5px solid rgba(99,102,241,.4); border-radius:8px; font-family:inherit; font-size:0.82rem; background:var(--surface,#1e293b); color:var(--text-primary); }
.ausfall-shift-row   { display:grid; grid-template-columns:1fr auto; align-items:center; gap:12px; padding:12px 14px; background:var(--surface-2,rgba(255,255,255,.04)); border:1px solid var(--border); border-radius:10px; margin-bottom:8px; }
.ausfall-shift-date  { font-weight:700; font-size:0.88rem; margin-bottom:3px; }
.ausfall-shift-desc  { font-size:0.78rem; color:var(--text-muted); }
.ausfall-replacement { padding:7px 10px; border:1.5px solid var(--border); border-radius:8px; font-family:inherit; font-size:0.82rem; min-width:160px; }
.ausfall-foot        { display:flex; gap:10px; margin-top:16px; }
.ausfall-cancel-btn  { flex:1; padding:11px; background:transparent; border:1.5px solid var(--border); border-radius:8px; cursor:pointer; color:var(--text-muted); font-weight:600; font-family:inherit; }
.ausfall-save-btn    { flex:2; padding:11px; background:#ef4444; color:white; border:none; border-radius:8px; cursor:pointer; font-weight:700; font-family:inherit; }

/* ════════ lv-editor-inquiry.js ════════ */
.inq-loading        { color:var(--text-muted); font-size:0.85rem; padding:8px 0; }
.inq-badge-open     { font-size:0.7rem; padding:2px 7px; background:rgba(239,68,68,.15); color:#ef4444; border:1px solid rgba(239,68,68,.3); border-radius:4px; font-weight:700; }
.inq-badge-ok       { font-size:0.7rem; padding:2px 7px; background:rgba(16,185,129,.12); color:#10b981; border:1px solid rgba(16,185,129,.3); border-radius:4px; font-weight:700; }
.inq-badge-rejected { font-size:0.7rem; padding:2px 7px; background:rgba(239,68,68,.1); color:#ef4444; border:1px solid rgba(239,68,68,.25); border-radius:4px; font-weight:700; }
.inq-hint           { font-size:0.72rem; color:var(--text-muted); margin-left:6px; }
.inq-card           { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:12px 14px; margin-bottom:8px; }
.inq-card-row       { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; flex-wrap:wrap; }
.inq-firm-row       { display:flex; align-items:center; gap:8px; margin-bottom:2px; }
.inq-firm           { font-weight:700; font-size:0.92rem; }
.txt-77m            { font-size:0.77rem; color:var(--text-muted); }
.txt-71m            { font-size:0.71rem; color:var(--text-muted); }
.inq-date-row       { display:flex; align-items:center; margin-top:3px; }
.inq-actions        { display:flex; flex-direction:column; gap:6px; align-items:flex-end; flex-shrink:0; }
.inq-btn-preview    { padding:6px 12px; background:rgba(245,158,11,.15); color:#f59e0b; border:1.5px solid rgba(245,158,11,.4); border-radius:7px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.8rem; white-space:nowrap; }
.inq-btn-pair       { display:flex; gap:5px; }
.inq-btn-accept     { padding:5px 10px; background:#10b981; color:white; border:none; border-radius:6px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.78rem; }
.inq-btn-reject     { padding:5px 8px; background:#ef4444; color:white; border:none; border-radius:6px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.78rem; }
.inq-prev-bar       { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:2px 0; }
.inq-prev-hint      { font-size:0.8rem; color:var(--text-muted); }
.inq-prev-actions   { margin-left:auto; display:flex; gap:6px; }
.inq-prev-accept    { padding:6px 14px; background:#10b981; color:white; border:none; border-radius:7px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.82rem; }
.inq-prev-reject    { padding:6px 10px; background:#ef4444; color:white; border:none; border-radius:7px; font-weight:700; cursor:pointer; font-family:inherit; font-size:0.82rem; }
.inq-prev-back      { padding:6px 12px; background:transparent; border:1.5px solid var(--border); color:var(--text-muted); border-radius:7px; font-weight:600; cursor:pointer; font-family:inherit; font-size:0.82rem; }
.pre-wrap           { white-space:pre-wrap; }
.inq-cs-emoji       { font-size:1rem; margin-right:8px; }
.inq-cs-name        { font-weight:800; flex:1; color:#a78bfa; }
.inq-cs-badge       { color:#a78bfa; font-size:0.7rem; padding:1px 7px; border:1px solid rgba(167,139,250,.4); border-radius:4px; }
.inq-sum-row        { text-align:right; padding:15px; font-weight:bold; }
.inquiry-custom-hint { display:block; font-size:0.66rem; color:#a78bfa; font-weight:700; margin-top:2px; }

/* lv-editor.js */
.drag-handle-lg     { font-size:1.2rem; margin-right:10px; }
.sec-name           { font-weight:800; flex:1; }
.sec-name--white    { color:#ffffff; }
.sec-name--gray     { color:#94a3b8; }
.sec-name--locked   { color:#ffffff; opacity:.8; }
.sec-lock-badge     { font-size:0.7rem; color:#f59e0b; font-weight:700; margin-right:6px; cursor:help; }
.time-input         { padding:4px 6px; width:88px; }
.row-termine        { font-size:0.72rem; color:var(--text-muted); line-height:1.2; }
.row-sum-val        { font-weight:700; }
.c-text             { color:var(--text); }
.beschreibung-cell  { display:block; width:100%; min-height:1.4em; padding:4px 6px; outline:none; cursor:text; }
.is-placeholder     { color:#64748b; }

/* index.html (Reste) */
.sidebar-logo          { font-size:1.5rem; font-weight:800; margin-bottom:30px; padding:0 15px; }
/* Sidebar-Logo enthält jetzt das exakte Header-Logo (Hexagon + Hover-Animation + "Einsatz/Zentrale").
   #main-menu .sidebar-logo schlägt die generische "> div:first-child"-Regel der Sidebar: nur Abstand
   setzen und die geerbte fette Schrift/enge Laufweite neutralisieren, damit der Text 1:1 dem Header gleicht. */
#main-menu .sidebar-logo { padding:2px 12px; margin-bottom:22px; font-weight:400; letter-spacing:normal; }
.plan-progress-area    { padding:0 12px 12px; }
.plan-progress-widget  { background:rgba(255,255,255,0.04); border:1px solid var(--border); border-radius:10px; padding:12px 14px; }
.menu-section          { padding:0 15px 12px; }
.menu-item-pad         { margin:0 0 5px 0; padding-left:10px; }
.menu-item-logout      { color:var(--danger); margin:0; padding-left:10px; }
.sidebar-footer-meta   { padding:12px 15px 10px; gap:10px; font-size:0.65rem; color:#94a3b8; border-top:1px solid var(--border); }
.sidebar-footer-links  { padding:0 15px 15px; gap:12px; font-size:0.8rem; }
.m0                    { margin:0; }
.cal-header-row        { display:flex; justify-content:space-between; align-items:center; margin-top:0; margin-bottom:4px; }
.btn-ausfall           { padding:7px 14px; background:rgba(239,68,68,.12); border:1.5px solid #ef4444; color:#ef4444; border-radius:8px; cursor:pointer; font-weight:700; font-size:0.82rem; font-family:inherit; }
.agenda-toolbar-flex   { display:flex; gap:8px; flex-wrap:wrap; }
.inquiry-panel         { margin-bottom:20px; background:rgba(239,68,68,.06); border:1.5px solid rgba(239,68,68,.3); border-radius:12px; overflow:hidden; }
.inquiry-panel-header  { display:flex; justify-content:space-between; align-items:center; padding:12px 16px; background:rgba(239,68,68,.1); border-bottom:1px solid rgba(239,68,68,.2); }
.inquiry-panel-title   { font-weight:800; font-size:0.9rem; color:#ef4444; }
.inquiry-panel-toggle  { background:transparent; border:none; color:#ef4444; font-size:1.1rem; cursor:pointer; padding:0 4px; }
.inquiry-list-body     { padding:12px 16px; }
.inq-wunschdatum-box   { margin:8px 0 4px; font-size:0.9rem; color:var(--text); }
.inq-kundennotiz-box   { margin:8px 0 4px; padding:10px 12px; font-size:0.88rem; color:var(--text); background:rgba(167,139,250,.08); border:1px solid rgba(167,139,250,.3); border-radius:8px; }
.lv-customer-row       { margin:8px 0 12px; display:flex; align-items:center; gap:10px; }

/* Leistungsort / Baustelle — gleiche Breite/Optik wie das Auftraggeber-Feld (.lv-customer-search) */
.lv-location-row  { margin:0 0 6px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.lv-location-maps { display:inline-flex; align-items:center; gap:5px; padding:7px 13px; border-radius:999px; background:#0ea5e91a; color:#0ea5e9; border:1px solid #0ea5e955; font-size:0.8rem; font-weight:700; text-decoration:none; white-space:nowrap; transition:background .15s, border-color .15s; }
.lv-location-maps:hover { background:#0ea5e92e; border-color:#0ea5e9; }
.lv-location-hint { font-size:0.72rem; color:#94a3b8; margin:0 0 12px; line-height:1.45; }
.lv-location-hint b { color:#cbd5e1; font-weight:700; }
.customer-dropdown-box { position:absolute; top:100%; left:0; right:0; background:var(--surface); border:1.5px solid var(--border); border-radius:var(--radius-md); box-shadow:0 8px 24px rgba(0,0,0,.35); z-index:9999; max-height:220px; overflow-y:auto; margin-top:4px; }
.selected-customer-badge { font-size:0.78rem; background:var(--primary-light); color:var(--primary); padding:4px 10px; border-radius:999px; font-weight:600; align-items:center; }
.selected-customer-badge .cust-badge-x { margin-left:7px; cursor:pointer; font-weight:700; font-size:1rem; line-height:1; opacity:0.6; padding:1px 5px; border-radius:6px; transition:opacity .15s ease, background .15s ease; user-select:none; }
.selected-customer-badge .cust-badge-x:hover { opacity:1; background:rgba(37,99,235,0.18); }
.zeitraum-wrap         { display:inline-flex; align-items:center; gap:6px; }
.sidebar-header-bar    { border-bottom:1px solid var(--border); margin-bottom:20px; padding-bottom:10px; }
.sidebar-close-x       { cursor:pointer; font-size:1.5rem; }
.offscreen             { position:absolute; top:-10000px; left:-10000px; z-index:-999; }

/* ── PUBLIC-OFFER-MODUS: Toolbar-/Header-Sichtbarkeit + Sperr-Buttons ──────────── */
/* Ausgelagert aus lv-editor-inquiry.js (_setPublicOfferUI). Ergaenzt die bestehenden  */
/* body.public-offer-active-Regeln oben. Werte 1:1 aus dem frueheren imperativen Code. */
#public-offer-header-row { display: none; }  /* Default: nur im Angebots-Modus sichtbar */
#btn-inquiries           { display: none; }  /* dito */
body.public-offer-active #btn-menu-public-offer  { display: none; }
body.public-offer-active #public-offer-header-row { display: flex; }
body.public-offer-active #btn-inquiries           { display: flex; }
body.public-offer-active #btn-send-angebot,
body.public-offer-active #btn-kundenzugang,
body.public-offer-active #btn-csv-import          { opacity: 0.4; pointer-events: none; }

/* CSV-Import auch im Status "Angenommen" sperren — exakt wie beim öffentlichen Angebot */
body.angebot-accepted #btn-csv-import             { opacity: 0.4; pointer-events: none; }
/* === Account-Loeschung: Gefahrenzone === */
.prof-card-danger { border-color:#ef4444; background:rgba(239,68,68,.06); }
.prof-section-title-danger { color:#ef4444; }
.prof-danger-text { font-size:0.85rem; color:var(--text-muted); line-height:1.6; margin:0 0 16px; }
.prof-btn-danger { padding:10px 20px; background:#ef4444; color:#fff; border:none; border-radius:8px; font-weight:700; font-size:0.85rem; cursor:pointer; font-family:inherit; }
.prof-btn-danger:hover { background:#dc2626; }
.tfa-btn-danger { flex:1; padding:11px; background:#ef4444; color:#fff; border:none; border-radius:9px; font-weight:700; cursor:pointer; font-family:inherit; }
.tfa-btn-danger:hover { background:#dc2626; }
.tfa-btn-danger:disabled { opacity:.45; cursor:not-allowed; }
.tfa-btn-danger:disabled:hover { background:#ef4444; }

/* ============================================================================
   Angebot-Status-Lock (deklarativ) — additiv zu _applyAngebotLock (angebot.js)
   ----------------------------------------------------------------------------
   <body data-angebot-status> wird von _syncBodyAngebotStatus() (lv-editor.js)
   gespiegelt — aufgerufen in _refreshSectionHeaders und am Ende von
   renderAllSectionsFromDB, also nach jedem _angebotStatus-Wechsel.
   Sperrt die GROBEN, globalen Editor-Elemente fuer JEDEN Status ausser
   'entwurf'. Opacity/Cursor exakt wie in _applyAngebotLock, damit JS- und
   CSS-Sperre optisch identisch sind (beide laufen aktuell parallel).
   Vorteil ggue. reinem JS: Status zurueck auf 'entwurf' entsperrt diese
   Elemente SOFORT per CSS — ohne inverse Entsperr-Funktion.
   Die FEINGRANULAREN Sperren (pro Bereich/Zeile) bleiben bewusst in JS
   (data-locked / .lv-transferred) — sie sind kontextabhaengig, nicht rein
   status-basiert, und duerfen z.B. die planbaren Ressourcen-Icons NICHT treffen.
   ============================================================================ */

/* Projekttitel — spiegelt: contentEditable=false; cursor:default; opacity:0.7 */
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #edit-project-title {
    pointer-events: none;
    cursor: default;
    opacity: 0.7;
}

/* Datum/Zeit + Zeitraum-Buttons — spiegelt: disabled; opacity:0.4; cursor:not-allowed */
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #p-start-date,
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #p-end-date,
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #p-start-time,
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #p-end-time,
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #btn-add-zeitraum,
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #btn-remove-zeitraum {
    pointer-events: none;
    opacity: 0.4;
    cursor: not-allowed;
}

/* Auftraggeber-Suche + Leistungsort — ab erstem Angebotsversand verbindliche Vertragsgrundlage →
   gesperrt. Spiegelt JS (_applyProjectStatusLocks: disabled). Hoehere Opacity als Datum, damit der
   eingetragene Auftraggeber-/Leistungsort-Text lesbar bleibt. */
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #customer-search-input,
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #service-location-input {
    pointer-events: none;
    opacity: 0.55;
    cursor: not-allowed;
}

/* ×-Entfernen im Auftraggeber-Badge sperren (Name bleibt sichtbar, nur nicht mehr entfernbar).
   removeSelectedCustomer prueft zusaetzlich csi.disabled. */
body[data-angebot-status]:not([data-angebot-status="entwurf"]) #selected-customer-badge .cust-badge-x {
    pointer-events: none;
    opacity: 0.35;
    cursor: default;
}
/* ── Nachtrag-Zeitraum-Zeile (eigener Zeitraum pro Nachtrag-Bereich) ──────────── */
.nachtrag-date-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 4px 0 12px;
    padding: 8px 12px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    border-radius: 8px;
    font-size: 0.85rem;
}
.nachtrag-date-label { font-weight: 600; color: #9a3412; white-space: nowrap; }
.nachtrag-date-sep   { color: #9a3412; font-weight: 600; }
.nachtrag-date-input {
    padding: 5px 9px;
    border: 1px solid #fdba74;
    border-radius: 6px;
    background: #fff;
    color: #1f2937;
    font-size: 0.85rem;
    font-family: inherit;
    width: 145px;
}
.nachtrag-date-input:focus {
    outline: none;
    border-color: #f59e0b;
    box-shadow: 0 0 0 2px rgba(245,158,11,.25);
}
.nachtrag-date-input:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    background: #f9fafb;
    color: #9ca3af;
}