:root{
  --bg:#f4f6f9; --card:#fff; --ink:#1f2733; --muted:#6b7686; --line:#e3e8ef;
  --brand:#2563eb; --brand-d:#1d4ed8; --ok:#16a34a; --warn:#d97706; --danger:#dc2626;
  --radius:12px; --shadow:0 1px 3px rgba(16,24,40,.07),0 1px 2px rgba(16,24,40,.04);
}
/* Dark-Mode (body.theme-dark; --brand kommt aus dem Inline-Override) */
body.theme-dark{
  --bg:#0f141c; --card:#1a2230; --ink:#e7ecf3; --muted:#9aa7b8; --line:#2b3647;
  --shadow:0 1px 3px rgba(0,0,0,.45);
}
body.theme-dark input,body.theme-dark select,body.theme-dark textarea{background:#0f141c;color:var(--ink);border-color:var(--line)}
body.theme-dark .mainnav a.active,
body.theme-dark .navdrop>summary.active,
body.theme-dark .navdrop-menu a.active,
body.theme-dark .crew-pick-item:has(input:checked),
body.theme-dark .setup-steps span.is-active{background:rgba(255,255,255,.09);color:var(--brand)}
body.theme-dark .navdrop[open]>summary{background:rgba(255,255,255,.06)}
body.theme-dark code,body.theme-dark pre,body.theme-dark .setup-manual,body.theme-dark .tag{background:#0f141c}
body.theme-dark .card-warn{background:#2a2113;border-color:#5a4520}
body.theme-dark .row-done{opacity:.6}
body.theme-dark .btn,body.theme-dark .btn-danger,body.theme-dark .qstep,body.theme-dark input[type=file]{background:#1a2230;color:var(--ink)}
body.theme-dark .btn-primary{background:var(--brand);color:#fff}
body.theme-dark .conflict{background:#1a2230;border-color:#5a4520}
body.theme-dark .set-group td{background:#2a2113;color:#fbbf24}
body.theme-dark .set-group.einzel td,body.theme-dark .packlist .cat-row td{background:#0f141c}
body.theme-dark .progress,body.theme-dark .badge-planung{background:#0f141c}
body.theme-dark .scan-cammsg{background:#2a2113;color:#fbbf24;border-color:#5a4520}
/* Logo im Header */
.brand-logo{height:30px;max-width:190px;object-fit:contain;display:block}
*{box-sizing:border-box}
html{font-size:15px}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.5}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:1.5rem;margin:.2em 0}
h2{font-size:1.15rem;margin:0 0 .6em}

/* ---- Topbar ---- */
.topbar{display:flex;align-items:center;gap:1.2rem;background:var(--card);
  border-bottom:1px solid var(--line);padding:.6rem 1.2rem;position:sticky;top:0;z-index:20}
.brand{font-weight:700;color:var(--ink);font-size:1.05rem;display:flex;align-items:center;gap:.4rem}
.brand:hover{text-decoration:none}
.mainnav{display:flex;gap:.3rem;margin-right:auto}
.mainnav a{color:var(--muted);padding:.4rem .7rem;border-radius:8px;font-weight:500}
.mainnav a:hover{background:var(--bg);text-decoration:none}
.mainnav a.active{color:var(--brand);background:#eef4ff}
/* Nav-Dropdowns (Belege / Stammdaten) via <details> */
.navdrop{position:relative}
.navdrop>summary{list-style:none;cursor:pointer;color:var(--muted);padding:.4rem .7rem;border-radius:8px;font-weight:500;user-select:none}
.navdrop>summary::-webkit-details-marker{display:none}
.navdrop>summary::after{content:"▾";font-size:.7em;margin-left:.35rem;opacity:.65}
.navdrop>summary:hover{background:var(--bg)}
.navdrop>summary.active{color:var(--brand);background:#eef4ff}
.navdrop[open]>summary{background:var(--bg);color:var(--ink)}
.navdrop-menu{position:absolute;top:100%;left:0;z-index:50;min-width:184px;margin-top:.25rem;
  background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);
  padding:.3rem;display:flex;flex-direction:column;gap:.1rem}
.navdrop-menu a{color:var(--ink);padding:.5rem .7rem;border-radius:7px;white-space:nowrap;font-weight:500}
.navdrop-menu a:hover{background:var(--bg);text-decoration:none}
.navdrop-menu a.active{color:var(--brand);background:#eef4ff}
/* Such-/Filterleiste über Listen */
.filterbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.8rem}
.filterbar input,.filterbar select{margin:0;height:38px}
.filterbar .filter-search{flex:1 1 240px;min-width:160px}
.filterbar label{display:flex;align-items:center;gap:.35rem;margin:0;font-size:.85rem;color:var(--muted)}
.filter-count{color:var(--muted);font-size:.85rem;white-space:nowrap;margin-left:auto}
.filter-empty{color:var(--muted);padding:.7rem .2rem}
/* Crew: Mehrfachauswahl per Checkboxen */
.crew-pick{display:flex;flex-wrap:wrap;gap:.4rem;margin:.2rem 0 .4rem}
.crew-pick-item{display:flex;align-items:center;gap:.5rem;padding:.45rem .7rem;border:1px solid var(--line);border-radius:8px;cursor:pointer;background:var(--bg)}
.crew-pick-item:hover{border-color:var(--brand)}
.crew-pick-item input{margin:0;width:auto;height:auto}
.crew-pick-item:has(input:checked){border-color:var(--brand);background:#eef4ff}
/* Kalender-Abo-Block am Projekt */
.cal-box{margin:.2rem 0 .8rem}
.cal-box>summary{cursor:pointer;color:var(--brand);font-weight:500;user-select:none;list-style:none}
.cal-box>summary::-webkit-details-marker{display:none}
.cal-box>summary::before{content:"▸ ";opacity:.7}
.cal-box[open]>summary::before{content:"▾ "}
.cal-box input[readonly]{margin-top:.4rem;font-family:monospace;font-size:.82rem;background:var(--bg)}
/* Web-Installer */
.setup-card{max-width:480px}
.setup-steps{display:flex;gap:.5rem;margin:.3rem 0 1rem}
.setup-steps span{flex:1;text-align:center;padding:.4rem;border-radius:8px;font-size:.85rem;background:var(--bg);color:var(--muted)}
.setup-steps span.is-active{background:#eef4ff;color:var(--brand);font-weight:600}
.setup-steps span.is-done{background:#dcfce7;color:#166534}
.setup-manual{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.7rem;font-size:.78rem;overflow:auto;white-space:pre-wrap;max-height:240px}
.mysql-only label{margin-top:.5rem}
/* 2FA / Konto */
.totp-qr{display:flex;justify-content:center;margin:.8rem 0;padding:.8rem;background:#fff;border-radius:10px;width:fit-content}
.totp-qr img,.totp-qr canvas{display:block}
.totp-secret{font-size:1.05rem;letter-spacing:.05em;background:var(--bg);padding:.3rem .5rem;border-radius:6px;display:inline-block}
.recovery-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.45rem;margin-top:.5rem}
.recovery-list code{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.45rem .6rem;text-align:center;font-size:1rem;letter-spacing:.06em}
.userbox{display:flex;align-items:center;gap:.7rem}
.user-name{color:var(--muted);font-size:.9rem}
.nav-toggle{display:none;background:none;border:0;font-size:1.4rem;cursor:pointer;color:var(--ink)}

/* ---- Layout ---- */
.app-main{max-width:1100px;margin:0 auto;padding:1.5rem 1.2rem 4rem}
.auth-main{max-width:420px;margin:6vh auto;padding:1.2rem}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.2rem;flex-wrap:wrap}

/* ---- Cards ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:1.2rem;margin-bottom:1.2rem}
.card.narrow{max-width:620px}
.card-warn{border-color:#fcd9a8;background:#fffaf2}
.card-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.6rem}
.auth-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:1.6rem}
.auth-title{margin-top:0}
.auth-logo{display:block;max-height:56px;max-width:80%;margin:0 0 1.1rem;object-fit:contain}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;align-items:start}

/* ---- Stat cards ---- */
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.2rem}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:1.1rem 1.2rem;color:var(--ink)}
.stat-card:hover{text-decoration:none;border-color:var(--brand)}
.stat-num{font-size:2rem;font-weight:700;line-height:1}
.stat-label{color:var(--muted);font-size:.9rem;margin-top:.2rem}

/* ---- Forms ---- */
.stack{display:flex;flex-direction:column;gap:.9rem}
label{font-weight:600;font-size:.9rem;display:block}
input,select,textarea{width:100%;padding:.55rem .65rem;border:1px solid var(--line);
  border-radius:8px;font:inherit;background:#fff;margin-top:.25rem}
input:focus,select:focus,textarea:focus{outline:2px solid #bfd4ff;border-color:var(--brand)}
[hidden]{display:none !important}   /* hat Vorrang vor display:flex etc. (z. B. .row), damit hidden-Formulare wirklich verborgen sind */
.row{display:flex;gap:.7rem;align-items:flex-end;flex-wrap:wrap}
.row .grow,.grow{flex:1 1 0;min-width:140px}
.inline{display:inline}
.hidden{display:none}

/* ---- Buttons ---- */
.btn{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line);
  background:#fff;color:var(--ink);padding:.5rem .9rem;border-radius:8px;font:inherit;
  font-weight:600;cursor:pointer;white-space:nowrap}
.btn:hover{text-decoration:none;background:var(--bg)}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-d)}
.btn-danger{background:#fff;border-color:#f3c2c2;color:var(--danger)}
.btn-danger:hover{background:#fef2f2}
.btn-ghost{background:transparent;border-color:transparent;color:var(--muted)}
.btn-ghost:hover{background:var(--bg);color:var(--ink)}
.btn-sm{padding:.3rem .55rem;font-size:.85rem}

/* ---- Tables ---- */
.table{width:100%;border-collapse:collapse}
.table th,.table td{padding:.6rem .5rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
.table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.table .num{text-align:right;white-space:nowrap}
.table tr.clickable{cursor:pointer}
.table tr.clickable:hover td{background:#f9fbff}
.table.compact th,.table.compact td{padding:.4rem .5rem}
.row-danger td{background:#fef3f3}
.row-muted{opacity:.55}

/* ---- Flash ---- */
.flash{padding:.7rem 1rem;border-radius:8px;margin-bottom:1rem;border:1px solid}
.flash-success{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.flash-error{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.flash-info{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}

/* ---- Badges & Tags ---- */
.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600}
.badge-planung{background:#eef2f7;color:#475569}
.badge-bestaetigt{background:#dcfce7;color:#166534}
.badge-laeuft{background:#dbeafe;color:#1e40af}
.badge-abgeschlossen{background:#e5e7eb;color:#374151}
.badge-abgesagt{background:#fee2e2;color:#991b1b}
.badge-extern{background:#fde68a;color:#92400e}
/* Externe Artikel (zubuchen): in der Projektliste gelb hinterlegt */
.pa-row.pa-external td{background:#fef9c3}
body.theme-dark .pa-row.pa-external td{background:#3a3411}
body.theme-dark .badge-extern{background:#5a4a16;color:#fde68a}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tag{display:inline-block;padding:.1rem .5rem;border-radius:6px;font-size:.78rem;background:#eef2f7;color:#475569}
.tag-serial{background:#ede9fe;color:#6d28d9}
.tag-service{background:#fef3c7;color:#92400e}

/* ---- Helpers ---- */
.muted{color:var(--muted)}
.small{font-size:.82rem}
.danger{color:var(--danger)}
.qty-input{width:72px;text-align:right}
.qty-edit{display:inline-flex;gap:.2rem;align-items:center}
.assign-form{align-items:flex-end;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}
.status-select{width:auto;margin:0;padding:.25rem .4rem;font-size:.82rem}

/* ---- Schedule ---- */
.schedule-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}
.schedule-item{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.schedule-item input[type=date]{width:150px;margin:0}
.schedule-item input[type=time]{width:100px;margin:0}
.schedule-item input[type=text]{margin:0}
.schedule-item.new{border-top:1px dashed var(--line);padding-top:.8rem}

/* ---- Packlist ---- */
.packbar{margin-bottom:1rem}
.progress{height:10px;background:#eef2f7;border-radius:999px;overflow:hidden;margin-bottom:.4rem}
.progress-fill{height:100%;background:var(--ok);transition:width .3s}
.packstats{font-size:.9rem;color:var(--muted)}
.filters{margin-bottom:.8rem}
.packlist .check{width:36px;font-size:1.1rem;text-align:center}
.packlist .cat-row td{background:#f8fafc;font-weight:700;font-size:.8rem;text-transform:uppercase;color:var(--muted);letter-spacing:.03em}
.packlist .row-done{opacity:.6}
.packlist .row-done strong{text-decoration:line-through}
code{background:#f1f5f9;padding:.05rem .3rem;border-radius:4px;font-size:.85em}

/* ---- Responsive ---- */
@media (max-width:780px){
  html{font-size:15px}

  /* Topbar / Navigation */
  .topbar{flex-wrap:wrap;gap:.5rem .9rem;padding:.6rem .9rem}
  .nav-toggle{display:block;order:3;margin-left:auto}
  .userbox{order:2}
  .mainnav{display:none;flex-direction:column;width:100%;order:4;margin:.3rem 0 0}
  body.nav-open .mainnav{display:flex}
  .mainnav a{padding:.7rem .6rem}
  /* Dropdowns im Burger-Menü: inline aufklappen statt Overlay */
  .navdrop{width:100%}
  .navdrop>summary{padding:.7rem .6rem}
  .navdrop-menu{position:static;box-shadow:none;border:0;border-radius:0;margin:0;padding:.1rem 0 .3rem .8rem;min-width:0}
  .filter-count{margin-left:0}

  /* Layout */
  .app-main{padding:1rem .8rem 4rem}
  .card{padding:1rem .9rem}
  .grid-2{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:1fr 1fr;gap:.7rem}
  .page-head{gap:.6rem}
  h1{font-size:1.3rem}

  /* Eingaben: 16px gegen iOS-Auto-Zoom; groessere Tap-Ziele */
  input,select,textarea{font-size:16px}
  .btn{padding:.6rem 1rem}

  /* Formularzeilen stapeln */
  .stack .row{flex-direction:column;align-items:stretch}
  .stack .row > *{width:100%}
  form.assign-form{flex-direction:column;align-items:stretch}
  form.assign-form > *{width:100%}
  .qty-input{width:100%}
  .schedule-item{flex-direction:column;align-items:stretch}
  .schedule-item > *{width:100%!important;margin:0}

  /* Normale Tabellen: horizontal scrollbar statt Seiten-Ueberlauf */
  .table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}

  /* Packliste: Karten statt Tabelle (fuers Handy beim Packen) */
  .table.packlist{white-space:normal;overflow:visible}
  .packlist thead{display:none}
  .packlist tbody,.packlist tr,.packlist td{display:block;width:100%}
  .packlist tr.set-group td{display:block;padding:.5rem .6rem}
  .packlist tr.pa-row{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .6rem;
    border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;margin-bottom:.55rem}
  .packlist tr.pa-row td{border:0;padding:0;text-align:left;width:auto}
  .packlist tr.pa-row td:nth-child(1){flex:1 1 100%}                                   /* Artikel */
  .packlist tr.pa-row td:nth-child(2){flex:1 1 100%;color:var(--muted);font-size:.85rem}/* Lagerplatz */
  .packlist tr.pa-row td:nth-child(4){order:1}                                         /* „Alle geladen" links */
  .packlist tr.pa-row td:nth-child(3){order:2}                                         /* +/- rechts daneben */
  .packlist .loaded-input{width:3.6rem;display:inline-block}
  .packlist .load-action{width:auto;margin:0}

  /* Scan-Bottom-Sheet voll breit am Handy */
  .scan-dialog{max-width:none;border-radius:14px 14px 0 0}
}

/* ---- Bilder ---- */
.thumb{width:38px;height:38px;object-fit:cover;border-radius:6px;border:1px solid var(--line);vertical-align:middle;margin-right:.5rem}
.name-cell{vertical-align:middle}   /* kein display:flex auf <td> – sonst verrutscht der Zeilenrahmen (.thumb richtet sich via vertical-align aus) */
.field{display:flex;flex-direction:column;gap:.4rem}
.field-label{font-weight:600;font-size:.9rem}
.checkbox-inline{font-weight:400;font-size:.85rem;display:flex;align-items:center;gap:.4rem}
.checkbox-inline input{width:auto;margin:0}
.img-preview img{max-width:150px;max-height:150px;border-radius:8px;border:1px solid var(--line)}
input[type=file]{padding:.4rem;background:#fff}

/* ---- Gescannte Einzelstücke ---- */
.scanned-codes{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.3rem}
.chip{display:inline-block;background:#ede9fe;color:#6d28d9;border-radius:6px;padding:.05rem .4rem;font-size:.75rem;font-family:ui-monospace,monospace}

/* ---- Scan: kompaktes Bottom-Sheet (Packliste bleibt lesbar + scrollbar) ---- */
.scan-modal{display:none;position:fixed;left:0;right:0;bottom:0;z-index:60}
.scan-modal.open{display:block}
.scan-backdrop{display:none}                       /* kein blockierender Hintergrund mehr */
.scan-dialog{max-width:560px;margin:0 auto;background:var(--card);border:1px solid var(--line);
  border-radius:14px 14px 0 0;box-shadow:0 -8px 30px rgba(0,0,0,.22);padding:.6rem .8rem;max-height:80vh;overflow:auto}
.scan-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem}
.scan-reader{width:100%;max-width:300px;margin:0 auto;border-radius:8px;overflow:hidden;background:#000}
.scan-reader video,.scan-reader canvas,.scan-reader img{width:100%;max-height:300px;object-fit:cover}
.scan-cammsg{display:none;background:#fffaf2;border:1px solid #fcd9a8;color:#92400e;padding:.6rem;border-radius:8px;margin:.5rem 0;font-size:.85rem}
.scan-ready{display:none;margin:.4rem 0;font-size:.85rem;color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:.35rem .6rem;font-family:ui-monospace,monospace}
.scan-ready.show{display:block}
.scan-trigger-row{display:flex;gap:.5rem;align-items:stretch;margin:.5rem 0}
.scan-trigger-row input{margin:0;flex:1}
.scan-trigger{font-size:1.05rem;font-weight:600;padding:.7rem 1.2rem;white-space:nowrap}
/* Scan-Meldungen: fixiert ganz oben am Bildschirm (nicht im Scanbereich), blenden sich selbst aus */
.scan-toasts{position:fixed;top:0;left:0;right:0;z-index:80;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.5rem;pointer-events:none}
.scan-toast{padding:.45rem .8rem;border-radius:6px;font-size:.85rem;border:1px solid;box-shadow:var(--shadow);max-width:92%;opacity:1;transition:opacity .4s ease}
.scan-toast.hide{opacity:0}
.scan-toast.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.scan-toast.err{background:#fef2f2;border-color:#fecaca;color:#991b1b}
body.scan-open{padding-bottom:60vh}               /* ganze Packliste über das Sheet scrollbar */

/* ---- Set-Herkunft-Label ---- */
.set-tag{display:inline-block;background:#fef3e2;color:#b45309;border:1px solid #fcd9a8;border-radius:6px;padding:.02rem .4rem;font-size:.72rem;white-space:nowrap}

/* ---- Lade-Stepper (Packliste) ---- */
.loadctl{display:inline-flex;align-items:center;gap:.4rem}
.loadctl .loaded-input{width:3.6rem;text-align:center;font-size:1.1rem}

/* ---- Crew-Hub (persönliche Einteilung + Push) ---- */
.crew-hub{max-width:620px;margin:0 auto}
.crew-greeting h1{margin:.1rem 0 .4rem}
.push-card h2,.crew-projects-head{margin:.1rem 0 .5rem}
.push-status{margin:.2rem 0 .7rem;font-weight:600}
.push-status.ok{color:#166534}
.push-status.warn{color:#b45309}
body.theme-dark .push-status.ok{color:#4ade80}
body.theme-dark .push-status.warn{color:#fbbf24}
.push-actions{display:flex;flex-wrap:wrap;gap:.5rem}
.push-hint{font-size:.82rem;margin:.7rem 0 0}
.crew-projects-head{margin-top:1.3rem}
.crew-project{display:flex;align-items:center;gap:.8rem;justify-content:space-between}
.crew-project-title{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.crew-project-meta{display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin-top:.35rem;font-size:.88rem}
.crew-project .btn{flex:0 0 auto;white-space:nowrap}

/* ---- Persönlicher Crew-Link (Mitarbeiter-Formular) ---- */
.link-row{display:flex;gap:.5rem;margin:.5rem 0}
.link-row input{flex:1 1 auto}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}
#crew-qr{margin:.6rem 0}
#crew-qr img{border:1px solid var(--line);border-radius:8px}
.qstep{width:2.8rem;height:2.8rem;min-width:2.8rem;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:1.6rem;font-weight:600;line-height:1;cursor:pointer;color:var(--ink);padding:0;display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.qstep:hover{background:var(--bg)}
.qstep:active{background:#e8edf4}

/* ---- Set-Gruppe (Projekt-Zuordnung / Packliste) ---- */
.set-group td{background:#fff7ed;font-weight:700;color:#b45309}
.set-group .btn{font-weight:600}
.set-group.einzel td{background:#f8fafc;color:var(--muted)}
.set-group.group-head td{background:var(--primary,#2563eb);color:#fff;font-size:1.02rem;letter-spacing:.01em}
body.theme-dark .set-group.group-head td{background:#1e3a5f;color:#dbeafe}

/* ---- Engpass / Überbuchung (Dashboard) ---- */
.conflict{border:1px solid #fcd9a8;border-radius:10px;padding:.7rem .9rem;margin-top:.7rem;background:#fff}
.conflict-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.4rem}
.conflict-body{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.conflict-body ul.tight{margin:.2rem 0 0;padding-left:1.1rem}
.conflict-body ul.tight li{margin:.12rem 0}
@media (max-width:780px){ .conflict-body{grid-template-columns:1fr} }

/* ---- Vorschlagsliste ---- */
.suggest-list{margin:.3rem 0 .8rem;padding-left:1.2rem;columns:2;column-gap:1.5rem}
.suggest-list li{margin:.15rem 0}
@media (max-width:780px){ .suggest-list{columns:1} }

/* ---- Angebots-Summen ---- */
.quote-totals{margin-top:1rem;border-top:1px solid var(--line);padding-top:.6rem;max-width:340px;margin-left:auto}
.quote-totals > div{display:flex;justify-content:space-between;gap:1rem;padding:.2rem 0;font-size:.95rem}
.quote-totals .grand{border-top:1px solid var(--line);margin-top:.3rem;padding-top:.4rem;font-size:1.1rem}
.quote-totals .grand strong{color:var(--brand)}

/* ---- Angebots-Editor (Positionen) ---- */
.qedit-table td,.qedit-table th{vertical-align:middle}
/* Feste Spaltenbreiten – sonst zieht die width:100%-Beschreibung allen Platz an sich */
.qedit-table{table-layout:fixed}
.qedit-table th:nth-child(1){width:30px}    /* ⠿ */
.qedit-table th:nth-child(2){width:42px}    /* Pos. */
.qedit-table th:nth-child(4){width:80px}    /* Anzahl */
.qedit-table th:nth-child(5){width:92px}    /* Einheit */
.qedit-table th:nth-child(6){width:96px}    /* Einzel € */
.qedit-table th:nth-child(7){width:76px}    /* Rabatt % */
.qedit-table th:nth-child(8){width:100px}   /* Gesamt € */
.qedit-table th:nth-child(9){width:58px}    /* Pausch. */
.qedit-table th:nth-child(10){width:96px}   /* Aktionen */
.qedit-table td:nth-child(3) form{display:block;width:100%}
.qedit-table td:nth-child(3) input[name=description]{width:100%;min-width:0}
.qedit-table .unit-input{width:80px;text-align:left}
.qedit-table .disc-input{width:64px}
.qedit-table .qedit-total{font-weight:600;white-space:nowrap}
/* WICHTIG: kein display:flex auf dem <td> – das bricht die Tabellenzellen-Höhe (Rahmen verrutscht,
   „height:65px"-Symptom). Stattdessen normale Zelle + inline ausgerichtete Buttons. */
td.qedit-actions{white-space:nowrap;text-align:right;vertical-align:middle}
.qedit-actions .btn{vertical-align:middle;margin-left:.2rem}
.qedit-actions form{margin:0;vertical-align:middle}
.qedit-actions .btn-sm{padding:.3rem .4rem}
.dragcol{width:26px;text-align:center;padding-left:.25rem;padding-right:.1rem}
.drag-handle{cursor:grab;color:var(--muted);font-size:1.05rem;line-height:1;user-select:none;touch-action:none;display:inline-block;padding:.3rem .15rem}
.drag-handle:active{cursor:grabbing}
.qedit-table tr.dragging{opacity:.55;background:var(--bg);box-shadow:0 2px 8px rgba(0,0,0,.12)}
body.qedit-dragging,body.qedit-dragging *{user-select:none}
.qedit-opts{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .9rem;margin-top:.45rem;padding:.5rem .6rem;background:var(--bg);border:1px solid var(--line);border-radius:8px}
.qedit-opts[hidden]{display:none}
.qedit-opts .checkbox-inline{font-size:.82rem;white-space:nowrap;margin:0}
.qedit-info{flex:1 1 100%;min-width:160px}
.qedit-opts-toggle.active{color:var(--brand)}

/* Kunden-Detailseite: Stammdaten-Definitionsliste */
.kv{display:grid;grid-template-columns:max-content 1fr;gap:.45rem 1.4rem;margin:.2rem 0 0}
.kv dt{color:var(--muted);font-size:.9rem;align-self:start}
.kv dd{margin:0}
.prewrap{white-space:pre-line}
/* Kunden-Reporting: einfache Balken (kein matplotlib nötig) */
.repline{display:grid;grid-template-columns:minmax(140px,200px) 1fr max-content;align-items:center;gap:.8rem;margin:.5rem 0}
.replabel{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.repbar{background:var(--bg);border:1px solid var(--line);border-radius:6px;height:14px;overflow:hidden}
.repbar-fill{display:block;height:100%;background:var(--brand);border-radius:6px}
.repval{font-variant-numeric:tabular-nums;text-align:right;min-width:90px;font-weight:600}
@media (max-width:780px){.repline{grid-template-columns:1fr max-content}.repbar{display:none}}
/* Kunden-Notizen + Aufgaben */
.note-card.is-pinned{border-left:3px solid var(--brand)}
.note-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.3rem}
.note-actions{display:flex;gap:.2rem}
.note-card p{margin:0}
.todo-list{list-style:none;margin:0;padding:0}
.todo-item{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;border-bottom:1px solid var(--line)}
.todo-item:last-child{border-bottom:0}
.todo-text{flex:1}
.todo-item.is-done .todo-text{text-decoration:line-through;color:var(--muted)}
.todo-due{font-size:.85rem;color:var(--muted);white-space:nowrap}
.todo-due.overdue{color:#C62828;font-weight:600}

/* Werbebanner (Freemium) – dezent, aber präsent am unteren Rand */
.ad-spacer{height:46px}
.ad-bar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#11151c;color:#e8ebf0;padding:.5rem 1rem;font-size:.85rem;box-shadow:0 -2px 14px rgba(0,0,0,.22)}
.ad-bar a{color:inherit;text-decoration:none}
.ad-main{display:flex;align-items:center;gap:.7rem;flex:1;min-width:0}
.ad-brand{background:var(--brand,#2563eb);color:#fff;font-weight:700;padding:.18rem .55rem;border-radius:5px;white-space:nowrap;font-size:.78rem;letter-spacing:.2px}
.ad-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ad-sub{color:#aab3c2}
.ad-cta{color:#7eb0ff;font-weight:600;white-space:nowrap}
.ad-main:hover .ad-cta{text-decoration:underline}
.ad-remove{color:#9aa3b3;white-space:nowrap;font-size:.78rem;border-left:1px solid #2a3140;padding-left:1rem}
.ad-remove:hover{color:#fff;text-decoration:underline}
@media (max-width:780px){.ad-sub{display:none}.ad-bar{font-size:.8rem;padding:.45rem .6rem;gap:.6rem}.ad-spacer{height:52px}}

/* Spiegelung Projekt <-> Angebot: Zeilen-Aktionen, Textposition, Sperr-Schalter */
/* WICHTIG: kein display:flex auf dem <td> – das nimmt der Zelle das table-cell-Verhalten,
   sie streckt sich dann nicht auf die Zeilenhöhe und der Trennstrich sitzt zu hoch. */
.pa-actions{text-align:right;white-space:nowrap}
.pa-actions form{margin:0}
.pa-text-edit{display:flex;align-items:center;gap:.45rem;width:100%;margin:0}
.pa-text .pa-text-input{font-style:italic}
.mirror-toggle{opacity:.7}
.mirror-toggle:hover{opacity:1}

.qedit-textrow td{background:var(--bg)}
.qedit-textrow .textrow-input{font-weight:600}

/* Artikel im Editor hinzufügen (Phase 5) */
.qedit-add{display:flex;flex-direction:column;gap:.5rem;margin-top:.8rem}
.qadd{border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.qadd>summary{cursor:pointer;padding:.6rem .8rem;font-weight:600;user-select:none;list-style:none}
.qadd>summary::-webkit-details-marker{display:none}
.qadd[open]>summary{border-bottom:1px solid var(--line)}
.qadd-form{padding:.7rem .8rem;margin:0}
.qadd-form.row{align-items:flex-end}
.qadd-proj{align-self:center;white-space:nowrap}

/* Positionsbild + Bildanhang (Phase 6) */
.qedit-desc-line{display:flex;align-items:center;gap:.4rem}
.qedit-thumb{width:34px;height:34px;object-fit:cover;border-radius:6px;border:1px solid var(--line);flex:0 0 auto}
.qedit-imgform{margin-top:.4rem}
.qedit-imgform input[type=file]{flex:1 1 auto;min-width:0}
.qattach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.8rem;margin:.4rem 0 .8rem}
.qattach{border:1px solid var(--line);border-radius:10px;padding:.5rem;display:flex;flex-direction:column;gap:.4rem;background:var(--bg)}
.qattach img{width:100%;height:110px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.qattach-cap{display:flex;gap:.3rem;align-items:center;margin:0}
.qattach-del{color:var(--danger)}

/* Gruppen/Bühnen am Projekt (Multi-Row, Phase 7) */
.grp-input{width:190px}
.grp-cell .grp-edit{display:flex;gap:.2rem;align-items:center}
.grp-input-sm{width:100px}

/* Artikel: Verfügbarkeitsabfrage */
.avail-form{align-items:flex-end;gap:.6rem;margin-bottom:.6rem;flex-wrap:wrap}
.avail-form label{display:inline-flex;align-items:center;gap:.4rem;margin:0;font-size:.9rem;color:var(--muted)}
.avail-form input[type=date]{margin:0}

/* Projekt: Tabs + Menü + Aktionen unten */
.tabs{display:flex;gap:.2rem;border-bottom:1px solid var(--line);margin:.4rem 0 1.1rem;flex-wrap:wrap}
.tabs .tab{background:none;border:0;border-bottom:2px solid transparent;padding:.55rem .9rem;font:inherit;font-size:1rem;font-weight:600;color:var(--muted);cursor:pointer;margin-bottom:-1px}
.tabs .tab:hover{color:var(--ink)}
.tabs .tab.is-active{color:var(--ink);border-bottom-color:var(--brand)}
.proj-menu>summary{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line);background:#fff;color:var(--ink);padding:.5rem .9rem;border-radius:8px;font-weight:600}
.proj-menu>summary::after{content:""}
.proj-menu>summary:hover{background:var(--bg)}
.proj-menu .navdrop-menu{left:auto;right:0;min-width:230px}
.navdrop-act{display:block;width:100%;text-align:left;background:none;border:0;padding:.5rem .7rem;border-radius:7px;font:inherit;font-weight:500;color:var(--ink);cursor:pointer}
.navdrop-act:hover{background:var(--bg)}
.proj-danger{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.6rem;flex-wrap:wrap}
.pa-set-head td{background:var(--bg);font-weight:600}
/* Angebots-Editor: Set-Kopf hervorheben + Bestandteile einrücken */
.qedit-setrow>td{background:var(--bg)}
.qedit-setpart>td:nth-child(3){padding-left:1.4rem;border-left:2px solid var(--line)}
.qedit-setpart .qedit-total .muted{font-style:italic}
.pa-case>td{background:#fbfdff}
.case-contents{margin-top:.3rem}
body.theme-dark .proj-menu>summary{background:var(--card)}
body.theme-dark .pa-case>td{background:#141c28}

/* Collys (Pack-Kisten) */
.colly{border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;margin:.5rem 0;background:var(--bg)}
.colly-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}
.colly-actions{display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}
.colly-items{list-style:none;margin:.4rem 0;padding:0;display:flex;flex-direction:column;gap:.15rem}
.colly-items li{display:flex;align-items:center;gap:.4rem}
.colly-add-form{margin-top:.3rem}
.scan-colly-bar{background:#fff3cd;color:#664d03;border:1px solid #ffe69c;border-radius:8px;padding:.4rem .6rem;margin-bottom:.5rem;font-size:.9rem}
body.theme-dark .scan-colly-bar{background:#2a2113;color:#fbbf24;border-color:#5a4520}
body.theme-dark .colly{background:var(--card)}
/* Colly-Label (druckbar) */
.colly-label{max-width:420px;border:2px solid #000;border-radius:8px;padding:1rem;margin:1rem 0}
.colly-label-title{font-size:1.6rem;font-weight:700}
.colly-label-proj{color:var(--muted);margin:.1rem 0 .5rem}
.colly-label-note{font-style:italic;margin-bottom:.4rem}
.colly-label-table{width:100%;border-collapse:collapse;margin-top:.5rem}
.colly-label-table th,.colly-label-table td{text-align:left;padding:.25rem .3rem;border-bottom:1px solid var(--line)}
.colly-label-foot{margin-top:.6rem;font-size:.85rem;color:var(--muted)}

/* Crew-Vorschläge (Skill + frei) */
.crew-suggest{margin:.2rem 0 .8rem;border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;background:var(--bg)}
.crew-suggest-skill{margin:.3rem 0}
.crew-suggest-head{margin-bottom:.25rem}
.crew-suggest-list{display:flex;flex-wrap:wrap;gap:.4rem}
.crew-suggest-item{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--line);border-radius:8px;padding:.25rem .5rem;margin:0;background:var(--card)}
.crew-suggest-item.busy{opacity:.7}
.crew-suggest-name{white-space:nowrap}

/* Zeilen-Aktionsmenü (Hamburger ⋮) in der Projekt-Artikeltabelle */
.rowmenu{position:relative;display:inline-block}
.rowmenu>summary{list-style:none;cursor:pointer;padding:.1rem .5rem;border-radius:6px;font-size:1.25rem;line-height:1;color:var(--muted)}
.rowmenu>summary::-webkit-details-marker{display:none}
.rowmenu>summary:hover,.rowmenu[open]>summary{background:var(--bg);color:var(--ink)}
.rowmenu-panel{position:absolute;right:0;top:calc(100% + 2px);z-index:30;min-width:210px;background:var(--card);
  border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 28px rgba(0,0,0,.16);padding:.3rem;text-align:left}
/* Geschlossenes Menü: absolut positioniertes Panel wird vom <details>-Default NICHT versteckt → explizit ausblenden */
.rowmenu:not([open])>.rowmenu-panel{display:none}
.rowmenu-item{display:block;width:100%;text-align:left;background:none;border:0;padding:.45rem .6rem;border-radius:6px;
  font:inherit;color:var(--ink);cursor:pointer;white-space:nowrap}
.rowmenu-item:hover{background:var(--bg)}
.rowmenu-danger{color:#991b1b}
body.theme-dark .rowmenu-danger{color:#fca5a5}
.rowmenu-sub{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:.25rem 0;padding:.2rem 0}
.rowmenu-label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:.15rem .6rem}
.rowmenu-empty{display:block;padding:.15rem .6rem}

/* Sortierbare Tabellenköpfe (<th data-sort>) */
th.th-sort{cursor:pointer;user-select:none;white-space:nowrap}
th.th-sort:hover{color:var(--ink)}
th.th-sort::after{content:"\2195";opacity:.3;margin-left:.3rem;font-size:.85em;font-weight:400}
th.th-sort.sort-asc::after{content:"\2191";opacity:.9}
th.th-sort.sort-desc::after{content:"\2193";opacity:.9}

/* Skill-Bedarf nach Menge (benötigt/zugewiesen/fehlt) */
.skill-coverage{display:flex;flex-wrap:wrap;gap:.4rem;margin:.2rem 0 .6rem}
.skill-need{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line);border-radius:8px;padding:.2rem .55rem;background:var(--card)}
.skill-need.short{border-color:#fecaca;background:#fef2f2}
.skill-need.ok{border-color:#bbf7d0;background:#f0fdf4}

/* Artikel-Tab: Sub-Tabs pro Gruppe + Eingabe-auf-Klick */
.pa-add-actions{gap:.4rem;margin:.2rem 0 .6rem}
.subtabs{display:flex;gap:.2rem;flex-wrap:wrap;margin:.6rem 0 .2rem;border-bottom:1px solid var(--line)}
.subtab{background:none;border:0;border-bottom:2px solid transparent;padding:.4rem .7rem;font:inherit;font-size:.92rem;font-weight:600;color:var(--muted);cursor:pointer;margin-bottom:-1px}
.subtab:hover{color:var(--ink)}
.subtab.is-active{color:var(--ink);border-bottom-color:var(--brand)}
.subtab .cnt{color:var(--muted);font-weight:400;font-size:.82rem}

/* Projekt-Zuordnungen: sortierbare Gruppen (Drag & Drop) */
.pa-sticky{position:sticky;top:var(--topbar-h,52px);z-index:6;background:var(--card);
  margin:-.2rem -1.2rem .5rem;padding:.55rem 1.2rem;border-bottom:1px solid var(--line)}
.pa-subhead{font-size:.95rem;margin:1rem 0 .3rem;color:var(--muted)}
.pa-arrange td,.pa-arrange th{vertical-align:middle}
.pa-group-head td{background:var(--bg);font-weight:600}
.pa-grp-mark{margin-right:.3rem}
.pa-grp-rename{display:inline-flex;gap:.25rem;align-items:center}
.pa-grp-name{width:200px;font-weight:600}
.pa-arrange tr.dragging{opacity:.55;background:var(--bg)}

/* Autocomplete / Typeahead */
.ac-wrap{position:relative;display:block}
.ac-list{position:absolute;left:0;right:0;top:100%;z-index:50;background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);max-height:280px;overflow:auto;margin-top:2px}
.ac-item{display:flex;justify-content:space-between;gap:.6rem;align-items:baseline;padding:.45rem .6rem;cursor:pointer}
.ac-item:hover,.ac-item.active{background:var(--bg)}
.ac-name{font-weight:600}
.ac-sub{color:var(--muted);font-size:.8rem;white-space:nowrap}

/* Kommissionier-Übersicht */
.picklist-set{border:1px solid var(--line);border-radius:10px;margin:.5rem 0;overflow:hidden}
.picklist-set-head{background:var(--bg);padding:.5rem .7rem;font-weight:600}
.picklist-set .table{margin:0}

/* ---- Print (Packliste) ---- */
@media print{
  .topbar,.no-print,.btn{display:none!important}
  .app-main{padding:0}
  .card{box-shadow:none;border:0}
  body{background:#fff}
}
