/* TradeHub – CBAM-Tracking (viewCbam) — eigenständige cb-* Klassen im Blaupausen-Stil.
   Bewusst selbsttragend (keine Abhängigkeit von index.html-Klassen), damit das Modul
   im Test-Harness identisch aussieht wie in der App. */

#viewCbam{--cbBlau:#2a87c8;--cbBlauD:#185fa5}

/* WICHTIG: switchViews() zeigt die aktive Ansicht mit display:flex!important an (index.html ~Z. 7284).
   Ohne diese Regeln legen sich alle Bausteine NEBENEINANDER (Peters Fund 14.07., v4.157 live).
   Muster wie #viewOrders (~Z. 1231) + Modul-Views (~Z. 3477): Spalte + eigenes Scrollen. */
#viewCbam{flex-direction:column;width:100%;overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:24px!important}
#viewCbam > *{flex-shrink:0}

/* Kopf */
.cbTop{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.cbKick{font-size:10px;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:#9aa3af;margin-bottom:2px}
.cbH2{font-size:19px;font-weight:700;letter-spacing:-.015em;color:var(--cbBlau)}
.cbHint{font-size:12px;color:#9aa3af;margin-top:3px}
.cbCtl{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.cbSeg{display:inline-flex;background:#eceef0;border:1px solid #e3e6e9;border-radius:10px;padding:3px;gap:2px}
.cbSeg button{border:0;background:transparent;font:inherit;font-size:12.5px;font-weight:650;color:#6b7280;padding:6px 14px;border-radius:8px;cursor:pointer}
.cbSeg button.on{background:#fff;color:#111827;box-shadow:0 1px 2px rgba(17,24,39,.08)}
.cbBtnP{display:inline-flex;align-items:center;gap:7px;border:1px solid #1f78b4;background:linear-gradient(180deg,#3f97d3,#2a87c8);color:#fff;font:inherit;font-size:13px;font-weight:700;padding:9px 15px;border-radius:10px;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(16,24,40,.18)}
.cbBtnP:hover{filter:brightness(1.04)}
.cbBtnS{display:inline-flex;align-items:center;gap:7px;border:1px solid #e3e6e9;background:linear-gradient(180deg,#fff,#f4f5f6);color:#374151;font:inherit;font-size:13px;font-weight:700;padding:9px 15px;border-radius:10px;cursor:pointer;box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(16,24,40,.08)}
.cbBtnS:hover{border-color:#cfd7de;color:#111827}
.cbBtnS svg{color:var(--cbBlauD)}

/* KPI-Kacheln */
.cbKpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:14px}
@media(max-width:1150px){.cbKpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.cbKpis{grid-template-columns:repeat(2,1fr)}}
.cbKpi{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:13px 14px;display:flex;gap:11px;align-items:center;box-shadow:0 1px 2px rgba(17,24,39,.04);min-width:0}
.cbKpi .ic{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:rgba(42,135,200,.1);color:var(--cbBlauD)}
.cbKpi .t{font-size:11px;font-weight:600;color:#6b7280;margin-bottom:2px;white-space:nowrap}
.cbKpi .v{font-size:17px;font-weight:800;letter-spacing:-.01em;white-space:nowrap}
.cbKpi .v small{font-size:11.5px;font-weight:600;color:#9aa3af}
.cbKpi.warn .ic{background:#fef3c7;color:#b45309}
.cbKpi.warn .v{color:#b45309}
.cbPill{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:800;letter-spacing:.02em;padding:5px 11px;border-radius:999px;white-space:nowrap}
.cbPill i{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.cbSt-ok{background:#e8f5ee;color:#067a46;border:1px solid #bfe6d0}.cbSt-ok i{background:#067a46}
.cbSt-watch{background:#fef3c7;color:#b45309;border:1px solid #fde68a}.cbSt-watch i{background:#d97706}
.cbSt-warn{background:#ffedd5;color:#c2410c;border:1px solid #fed7aa}.cbSt-warn i{background:#ea580c}
.cbSt-crit{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca}.cbSt-crit i{background:#dc2626}

/* Karten */
.cbCard{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 10px 30px rgba(16,24,40,.05)}

/* Schwellen-Leiste */
.cbThr{padding:16px 20px 18px;margin-bottom:14px}
.cbThrHd{display:flex;align-items:baseline;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.cbThrTitle{font-size:14px;font-weight:800;letter-spacing:-.01em;color:#2a87c8}
.cbThrSub{font-size:11.5px;color:#9aa3af}
.cbThrVal{margin-left:auto;font-size:13px;font-weight:700;color:#b45309}
.cbBarWrap{position:relative;padding-top:16px}
.cbBar{position:relative;height:14px;background:#eef0f2;border-radius:8px;overflow:hidden;box-shadow:inset 0 1.5px 3px rgba(17,24,39,.06)}
.cbBar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#4caf7d 0%,#e0b23c 60%,#d97706 100%);border-radius:8px;transition:width .6s cubic-bezier(.22,.8,.3,1)}
.cbMark{position:absolute;top:8px;bottom:-4px;width:2px;background:#c8cdd3}
.cbMark b{position:absolute;top:-14px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:700;color:#9aa3af;white-space:nowrap}
.cbMark.m50{background:#e3a3a3}
.cbMark.m50 b{transform:translateX(-92%)}
.cbLegend{display:flex;gap:18px;margin-top:12px;font-size:11px;color:#6b7280;flex-wrap:wrap}
.cbLegend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}

/* Liste */
.cbList{margin-bottom:0}
.cbListHd{display:flex;align-items:center;gap:12px;padding:15px 20px;border-bottom:1px solid #f0f1f3;flex-wrap:wrap}
.cbListTitle{font-size:14px;font-weight:800;color:#2a87c8}
.cbListSub{font-size:11.5px;color:#9aa3af}
.cbSearch{position:relative;margin-left:auto}
.cbSearch svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:#9aa3af;pointer-events:none}
.cbSearch input{width:240px;min-height:38px;padding:7px 12px 7px 34px;font:inherit;font-size:13px;color:#111827;background:#f7f8f9;border:1px solid #e3e6e9;border-radius:10px;box-shadow:inset 0 1.5px 3px rgba(17,24,39,.045)}
.cbSearch input:focus{outline:none;background:#fff;border-color:var(--cbBlau);box-shadow:0 0 0 3px rgba(42,135,200,.14)}
.cbTblWrap{overflow-x:auto}
.cbTbl{width:100%;border-collapse:collapse;font-size:13px;min-width:960px}
.cbTbl thead th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9aa3af;padding:11px 14px;border-bottom:1px solid #f0f1f3;white-space:nowrap}
.cbTbl tbody td{padding:10px 14px;border-bottom:1px solid #f5f6f7;vertical-align:middle;white-space:nowrap;color:#111827}
.cbTbl tbody tr.cbPos:hover{background:#fafbfc}
/* Lieferungs-Blöcke: Luft zwischen den Gruppen + Akzentkante am Kopf, Positionen eingerückt */
.cbTbl tr.cbSpacer td{padding:0;height:14px;border:0;background:transparent}
.cbTbl tr.cbGrp td{background:#f0f4f8;border-top:1px solid #dfe9f2;border-bottom:1px solid #dfe9f2;border-left:3px solid #2a87c8;padding:11px 14px;font-size:12.5px}
.cbTbl tr.cbGrp .gDate{font-weight:800;color:#111827;font-size:13px}
.cbTbl tr.cbGrp .gMrn{font-weight:600;color:#185fa5}
.cbTbl tr.cbGrp .gDoc{color:#9aa3af}
.cbTbl tr.cbGrp .gSum{font-weight:800;float:right;font-variant-numeric:tabular-nums;color:#111827;font-size:13px}
.cbTbl tr.cbGrp.pend td{background:#fffaf0;border-color:#f5e6c4;border-left-color:#f59e0b}
.cbTbl tr.cbGrp.pend .gMrn{color:#b45309}
.cbTbl tr.cbPos td:first-child{padding-left:30px}
.cbTbl tr.cbPos td{border-bottom:1px solid #f8f9fa}
.cbTbl tr.cbPos.last td{border-bottom:0}
.cbKg{font-variant-numeric:tabular-nums;font-weight:650;text-align:right}
.cbKgEdit{margin-left:8px;font-size:11px;color:#9aa3af;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.cbKgEdit:hover{color:var(--cbBlauD)}
.cbBadge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.cbB-alu{background:#eef5fb;color:#185fa5;border:1px solid #dcebf7}
.cbB-stahl{background:#f1f5f9;color:#334155;border:1px solid #e2e8f0}
.cbB-sonst{background:#f0f1f3;color:#6b7280;border:1px solid #e5e7eb}
.cbB-auto{background:#e8f5ee;color:#067a46;border:1px solid #bfe6d0}
.cbB-man{background:#f0f1f3;color:#6b7280;border:1px solid #e5e7eb}
.cbB-miss{background:#fef3c7;color:#b45309;border:1px solid #fde68a}
.cbPiLink{color:#111827;font-weight:600;font-size:12.5px}
.cbTbl tfoot td{padding:12px 14px;font-weight:800;border-top:1px solid #e5e7eb;background:#fafbfc;color:#111827}
.cbEmpty{padding:34px 20px;text-align:center;color:#9aa3af;font-size:13px}
/* Ware unterwegs zaehlt seit 31.07.2026 NICHT auf die 50-t-Schwelle — beide Hinweise sagen das. */
.cbLosHint{font-size:11px;font-weight:700;color:#8a6116;background:#fbe7c4;border:1px solid #f5e6c4;
  border-radius:999px;padding:2px 9px;white-space:nowrap}

/* Lieferungs-Baender INNERHALB der Unterwegs-Ware (Variante C, 31.07.2026): eine Stufe
   eingerueckt und heller als das Sammelband darueber, damit die Schachtelung lesbar bleibt. */
.cbTbl tr.cbEtaGrp td{cursor:pointer;user-select:none;background:#fffdf5;
  border-left-width:3px;border-left-color:#f0c98a;padding-left:30px}
.cbTbl tr.cbEtaGrp:hover td{background:#fffaef}
.cbEtaPfeil{display:inline-block;width:13px;color:#c08a3e;font-size:11px;margin-right:5px;
  transition:transform .22s cubic-bezier(.22,.8,.3,1)}
.cbTbl tr.cbEtaGrp.auf .cbEtaPfeil{transform:rotate(90deg)}

/* ── Weiches Auf- und Zuklappen (Peter, 31.07.2026: „nicht so abrupt") ──────────────
   Eine <tr> laesst sich in der Hoehe nicht animieren. Der Inhalt jeder Zelle steckt
   deshalb in einem .cbSl-Kasten, dessen max-height laeuft — die Zeile folgt ihm. Das
   Zellpolster muss mitlaufen, sonst begaenne die Bewegung bei ~20 px statt bei null. */
.cbSl{min-width:0}
@media (prefers-reduced-motion:no-preference){
  .cbTbl tr.cbAnim > td{animation:cbPadPos .30s cubic-bezier(.22,.8,.3,1) backwards;
    animation-delay:inherit}
  .cbTbl tr.cbAnim .cbSl{overflow:hidden;animation:cbSlAuf .30s cubic-bezier(.22,.8,.3,1) backwards;
    animation-delay:inherit}
  .cbTbl tr.cbAnim.cbGrp > td{animation-name:cbPadGrp}
  /* Zuklappen: kuerzer als das Aufklappen, sonst fuehlt es sich zaeh an */
  .cbTbl tr.cbAus > td{animation:cbPadPosZu .18s cubic-bezier(.4,0,1,1) forwards!important}
  .cbTbl tr.cbAus .cbSl{overflow:hidden;animation:cbSlZu .18s cubic-bezier(.4,0,1,1) forwards!important}
  .cbTbl tr.cbAus.cbGrp > td{animation-name:cbPadGrpZu!important}
}
@keyframes cbSlAuf{ from{max-height:0;opacity:0;transform:translateY(-3px)}
                    to{max-height:56px;opacity:1;transform:none} }
@keyframes cbSlZu { from{max-height:56px;opacity:1} to{max-height:0;opacity:0} }
@keyframes cbPadPos{ from{padding-top:0;padding-bottom:0} to{padding-top:10px;padding-bottom:10px} }
@keyframes cbPadGrp{ from{padding-top:0;padding-bottom:0} to{padding-top:11px;padding-bottom:11px} }
@keyframes cbPadPosZu{ from{padding-top:10px;padding-bottom:10px} to{padding-top:0;padding-bottom:0} }
@keyframes cbPadGrpZu{ from{padding-top:11px;padding-bottom:11px} to{padding-top:0;padding-bottom:0} }
.cbEtaN{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:19px;
  padding:0 6px;border-radius:999px;background:#fbe7c4;color:#8a6116;font-size:10.5px;font-weight:800;
  margin-left:10px;font-variant-numeric:tabular-nums}
.cbEtaOff{color:#b45309;font-weight:700;font-size:11.5px;margin-left:11px}
.cbEtaOk{color:#0d7a49;font-weight:700;font-size:11.5px;margin-left:11px}
.cbEtaHint{color:#9aa3af;font-size:11.5px;margin-left:11px}
/* Positionen unter einem Lieferungs-Band noch eine Stufe weiter einruecken */
.cbTbl tr.cbEtaGrp ~ tr.cbLooseRow td:first-child{padding-left:46px}
.cbSumLos{font-weight:600;color:#9aa3af;font-size:11.5px}
/* Loeschknopf manueller Eintraege. Vorher ein #c3cad3-Kreuzchen auf weiss — praktisch unsichtbar
   (Peter, 31.07.2026: „ich habe hier gar keine Moeglichkeit zu loeschen"). Jetzt ein erkennbarer
   Icon-Knopf mit Rahmen. */
.cbDel{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;
  width:25px;height:25px;padding:0;margin-left:4px;border:1px solid #e5e7eb;background:#fff;
  color:#7d8593;cursor:pointer;border-radius:7px;
  transition:background .12s,color .12s,border-color .12s}
.cbDel:hover{background:#fee2e2;color:#b91c1c;border-color:#fecaca}
.cbDel:focus-visible{outline:2px solid var(--cbBlauD,#2a87c8);outline-offset:1px}

/* Handeintrag, den inzwischen eine Zollanmeldung mit derselben MRN abloest: bleibt sichtbar,
   zaehlt aber nicht mehr mit. Kein opacity auf der Zeile — das wuerde den Loeschknopf gleich
   wieder verblassen lassen. */
.cbB-dop{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.cbDopHint{font-size:11.5px;font-weight:600;color:#a35b06}
.cbTbl tr.cbDop td{color:#9aa1ac}
.cbTbl tr.cbDop .cbKg,.cbTbl tr.cbDop .gSum{text-decoration:line-through}

/* Aufgeklappte Detail-Zeilen der „ohne Zollanmeldung"-Gruppe (Lese-Ansicht, Klick öffnet Fenster) */
.cbTbl tr.cbLooseRow{cursor:pointer}
.cbTbl tr.cbLooseRow:hover td{background:#fffdf5}
.cbTbl tr.cbLooseRow td{border-bottom:1px solid #faf3e3}

/* „Gewichte erfassen"-Knopf in der Zusammenfassungszeile + Kopfleiste im Fenster (Variante C) */
.cbLooseBtn{margin-left:14px;padding:5px 11px;font-size:11.5px;border-color:#f0d693;background:linear-gradient(180deg,#fff,#fef8ec)}
.cbLooseBtn:hover{border-color:#e3c56f}
.cbLooseBar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:13px;padding-bottom:13px;border-bottom:1px solid #f0f1f3;font-size:12px;color:#6b7280}

/* Sammel-Gewicht (Bestellungen ohne Zolldokument) */
.cbTbl tr.cbBulk td{background:#fffdf5;border-bottom:1px solid #f5e6c4;border-left:3px solid #f59e0b;padding:9px 14px;font-size:12px;color:#6b7280;white-space:normal}
.cbBulkLbl{font-weight:700;color:#374151}
.cbBulkHint{color:#9aa3af;font-size:11px;margin-left:8px}
.cbSelOrd{width:15px;height:15px;accent-color:#2a87c8;margin-right:9px;vertical-align:-2px;cursor:pointer}

/* Inline-kg-Eingabe */
.cbKgIn{display:inline-flex;align-items:center}
.cbKgInp{width:120px;min-height:34px;padding:5px 9px;font:inherit;font-size:12.5px;color:#111827;background:#fff;border:1px solid #f0d693;border-radius:8px;box-shadow:inset 0 1px 2px rgba(17,24,39,.05)}
.cbKgInp:focus{outline:none;border-color:var(--cbBlau);box-shadow:0 0 0 3px rgba(42,135,200,.14)}
.cbKgBtn{border:1px solid #1f78b4;background:linear-gradient(180deg,#3f97d3,#2a87c8);color:#fff;font:inherit;font-size:11.5px;font-weight:700;padding:7px 10px;border-radius:8px;cursor:pointer;margin-left:6px;box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}

/* ── Stufe 2 (Variante A): Über-Schwelle-Balken, Prognose, Pflichten-Zeile, Meilensteine ── */
.cbBar .cbFrei{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#4caf7d 0%,#e0b23c 70%,#d97706 100%);border-radius:8px 0 0 8px}
.cbBar .cbPflicht{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(45deg,#dc6b62 0 8px,#c2534f 8px 16px);border-radius:0 8px 8px 0}
.cbMark.mOver{background:#c2534f;width:3px}
.cbMark.mOver b{color:#b91c1c}
.cbLegend .cbStrich{width:10px;height:10px;border-radius:2px;background:repeating-linear-gradient(45deg,#dc6b62 0 3px,#c2534f 3px 6px);display:inline-block;margin-right:5px;vertical-align:-1px}
.cbSt-overBig{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca}.cbSt-overBig i{background:#dc2626}
.cbProg{display:flex;align-items:flex-start;gap:9px;margin-top:12px;padding:9px 13px;border-radius:10px;font-size:12.5px;line-height:1.5}
.cbProg.ok{background:#f0f7f3;border:1px solid #d8ecdf;color:#14532d}
.cbProg.warn{background:#fef3c7;border:1px solid #fde68a;color:#78350f}
.cbProg b{font-weight:800}
.cbProg svg{flex-shrink:0;margin-top:2px}
.cbPflZeile{display:flex;align-items:center;gap:10px;padding:11px 16px;margin-bottom:14px;flex-wrap:wrap}
.cbPflLbl{font-size:12.5px;font-weight:800;color:#2a87c8;margin-right:2px}
.cbChip{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:700;padding:6px 12px;border-radius:999px;border:1px solid #e5e7eb;background:#fafbfc;color:#6b7280}
.cbChip i{width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:9.5px;font-style:normal;font-weight:800;background:#eceef0;color:#6b7280}
.cbChip.done{background:#e8f5ee;border-color:#bfe6d0;color:#067a46}.cbChip.done i{background:#067a46;color:#fff}
.cbChip.due{background:#fee2e2;border-color:#fecaca;color:#b91c1c}.cbChip.due i{background:#dc2626;color:#fff}
.cbChipPfeil{color:#c8cdd3;font-weight:400;font-size:12px}
.cbMsGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:1000px){.cbMsGrid{grid-template-columns:repeat(2,1fr)}}
.cbMs{border:1px solid #e5e7eb;border-radius:13px;padding:13px 14px;background:#fafbfc;cursor:pointer;transition:border-color .15s}
.cbMs:hover{border-color:#cfd7de}
.cbMs .n{display:inline-flex;width:22px;height:22px;border-radius:50%;font-size:11px;font-weight:800;align-items:center;justify-content:center;margin-bottom:8px;background:#eceef0;color:#6b7280}
.cbMs .t{font-size:12.5px;font-weight:750;line-height:1.35;margin-bottom:4px;color:#111827}
.cbMs .d{font-size:11px;color:#6b7280;line-height:1.5}
.cbMs .st{margin-top:9px;display:inline-flex;font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:999px;background:#f0f1f3;color:#6b7280;border:1px solid #e5e7eb}
.cbMs.done{background:#f0f7f3;border-color:#d8ecdf}.cbMs.done .n{background:#067a46;color:#fff}.cbMs.done .st{background:#e8f5ee;color:#067a46;border-color:#bfe6d0}
.cbMs.due .n{background:#fee2e2;color:#b91c1c}.cbMs.due .st{background:#fee2e2;color:#b91c1c;border-color:#fecaca}
.cbMpTbl{width:100%;border-collapse:collapse;font-size:12.5px;min-width:0!important}
.cbMpTbl th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9aa3af;padding:9px 12px;border-bottom:1px solid #f0f1f3;white-space:nowrap}
.cbMpTbl td{padding:9px 12px;border-bottom:1px solid #f5f6f7;font-variant-numeric:tabular-nums;white-space:nowrap;color:#111827}
.cbMpTbl tr.sum td{font-weight:800;border-top:1px solid #e5e7eb;background:#fafbfc}
.cbEmisInp{width:86px;min-height:32px;padding:4px 8px;font:inherit;font-size:12.5px;color:#111827;background:#f7f8f9;border:1px solid #e3e6e9;border-radius:8px;box-shadow:inset 0 1px 2px rgba(17,24,39,.04)}
.cbEmisInp:focus{outline:none;background:#fff;border-color:var(--cbBlau);box-shadow:0 0 0 3px rgba(42,135,200,.14)}

/* Modals */
/* v4.170: zentriert wie die App-Dialoge (.modal align-items:center); lange Inhalte scrollen IM Fenster */
.cbOverlay{position:fixed;inset:0;background:rgba(17,24,39,.44);display:none;align-items:center;justify-content:center;padding:24px 18px;z-index:1200;overflow-y:auto}
.cbOverlay.open{display:flex;animation:cbOvIn .15s ease-out}
/* Öffnungs-Effekt wie die App-Dialoge (dlgPop, index.html ~Z. 1775) */
@keyframes cbOvIn{from{opacity:0}to{opacity:1}}
.cbOverlay.open .cbModal{animation:cbDlgPop .18s ease-out}
@keyframes cbDlgPop{from{transform:translateY(10px) scale(.99);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
.cbModal{width:min(880px,96%);max-height:92vh;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 24px 60px rgba(16,24,40,.28);overflow:auto}
.cbModal.sm{width:min(560px,96%)}
.cbModal.wide{width:min(1240px,96%)}
/* Im „Gewichte erfassen"-Fenster: Produktnamen umbrechen lassen statt quer zu scrollen */
#cbOvLoose .cbTbl tbody td:nth-child(2){white-space:normal;line-height:1.45;min-width:220px}
#cbOvLoose .cbTbl tbody td:first-child{white-space:nowrap}
.cbModalHd{display:flex;align-items:flex-start;gap:16px;padding:16px 22px;border-bottom:1px solid #f0f1f3}
.cbModalKick{font-size:10px;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:#9aa3af;margin-bottom:2px}
.cbModalTitle{font-size:17px;font-weight:700;color:var(--cbBlau)}
.cbModalClose{margin-left:auto;width:40px;height:40px;border:0;background:transparent;border-radius:10px;color:#9aa3af;cursor:pointer;font-size:19px;line-height:1}
.cbModalClose:hover{background:#f0f1f3;color:#374151}
.cbModalBody{padding:20px 22px;background:#f6f7f8}
.cbModalBody .inner{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:18px 20px}
.cbModalBody p{font-size:12.5px;color:#4b5563;line-height:1.65;margin:0 0 10px}
.cbModalBody p b{color:#374151}
.cbAssump{font-size:11px;color:#9aa3af;margin-top:10px;line-height:1.55}
.cbHinweis{background:#f7f8f9;border:1px solid #e3e6e9;border-radius:12px;padding:11px 14px;font-size:12px;color:#4b5563;line-height:1.55;margin-top:12px}
.cbHinweis b{color:#14395d}
.cbChartTitle{font-size:12.5px;font-weight:800;color:#111827;margin:4px 0 10px}
.cbSetRow{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0 4px}
.cbSetRow label{font-size:11px;font-weight:600;color:#4b5563;display:block;margin-bottom:5px}
.cbSetRow input{width:150px;min-height:40px;padding:8px 11px;font:inherit;font-size:14px;color:#111827;background:#f7f8f9;border:1px solid #e3e6e9;border-radius:10px;box-shadow:inset 0 1.5px 3px rgba(17,24,39,.045)}
.cbSetRow input:focus{outline:none;background:#fff;border-color:var(--cbBlau);box-shadow:0 0 0 3px rgba(42,135,200,.14)}
.cbCostTbl{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}
.cbCostTbl th{text-align:left;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9aa3af;padding:7px 10px;border-bottom:1px solid #f0f1f3}
.cbCostTbl td{padding:7px 10px;border-bottom:1px solid #f5f6f7;font-variant-numeric:tabular-nums;white-space:nowrap;color:#111827}
.cbCostTbl tr.now td{background:#eef5fb;font-weight:750}

/* Manuell-erfassen-Formular */
.cbFormGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media(max-width:560px){.cbFormGrid{grid-template-columns:1fr}}
.cbFld{display:flex;flex-direction:column;gap:6px;min-width:0}
.cbFld label{font-size:11.5px;font-weight:600;color:#4b5563}
.cbFld input,.cbFld select{width:100%;min-height:44px;padding:9px 12px;font:inherit;font-size:15px;color:#111827;background:#f7f8f9;border:1px solid #e3e6e9;border-radius:10px;box-shadow:inset 0 1.5px 3px rgba(17,24,39,.045);appearance:none;-webkit-appearance:none}
.cbFld select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' fill='none' stroke='%239aa3af' stroke-width='1.8' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
.cbFld input:focus,.cbFld select:focus{outline:none;background:#fff;border-color:var(--cbBlau);box-shadow:0 0 0 3px rgba(42,135,200,.14)}
.cbFld .help{font-size:11px;color:#9aa3af}
.cbFormFoot{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.cbKnRes{min-height:44px;display:flex;align-items:center;gap:9px;font-size:13px;font-weight:700;border-radius:10px;padding:9px 14px;border:1px dashed #e3e6e9;color:#9aa3af}
.cbKnRes.yes{background:#e8f5ee;border:1px solid #bfe6d0;color:#067a46}
.cbKnRes.part{background:#fef3c7;border:1px solid #fde68a;color:#b45309}
/* „wird nicht gespeichert" war grau — sah aus wie der neutrale Platzhalter, und ein abgelehntes
   Speichern wirkte dadurch, als sei einfach nichts passiert (Peter, 31.07.2026). Jetzt als
   Absage erkennbar, plus kurzes Rütteln, wenn das Speichern tatsächlich verweigert wird. */
.cbKnRes.no{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}
@keyframes cbNeinA{0%,100%{transform:translateX(0)}20%{transform:translateX(-5px)}
  45%{transform:translateX(5px)}70%{transform:translateX(-3px)}88%{transform:translateX(3px)}}
@media (prefers-reduced-motion:no-preference){ .cbKnRes.cbNein{animation:cbNeinA .45s ease} }

/* Badge in der Bestellmaske (neben HS-Code) */
.ordHsCbamBadge{display:none;margin-top:6px}
.ordHsCbamBadge .cbBadge{font-size:11px}
