/* ============================================================
   MP-Quote-Cloud V2 -- Designsystem 1:1 aus AG-Konfigurator V2
   uebernommen (Tokens, Typografie, Layout-Patterns), Baugruppen-
   Konfigurator-Bausteine (.art-*) sind neu, an .cfg-item angelehnt.
   Flach, scharfkantig (radius 0), Source Sans Pro, Rot #bd1818.
   ============================================================ */

@font-face{font-family:"Source Sans Pro";src:url("assets/fonts/SourceSansPro-Light.ttf") format("truetype");font-weight:300;font-style:normal;font-display:swap;}
@font-face{font-family:"Source Sans Pro";src:url("assets/fonts/SourceSansPro-Regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:"Source Sans Pro";src:url("assets/fonts/SourceSansPro-Semibold.ttf") format("truetype");font-weight:600;font-style:normal;font-display:swap;}
@font-face{font-family:"Source Sans Pro";src:url("assets/fonts/SourceSansPro-Bold.ttf") format("truetype");font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:"Source Sans Pro";src:url("assets/fonts/SourceSansPro-Black.ttf") format("truetype");font-weight:900;font-style:normal;font-display:swap;}

:root{
  --red:#bd1818;
  --red-hover:#a31414;
  --navy:#004875;
  --ink:#3c3c3b;
  --ink-soft:#6b6b6b;
  --ink-faint:#9a9a98;
  --line:#e2e2e2;
  --hair:#ececec;
  --bg:#eceae6;
  --surface:#ffffff;
  --field-bg:#fbfbfa;
  --ok:#1f8a4c;
  --sans:"Source Sans Pro","Helvetica Neue",Arial,sans-serif;
  --shadow:0 1px 2px rgba(0,0,0,.05),0 8px 24px rgba(0,0,0,.05);
}

*{box-sizing:border-box;}
[hidden]{display:none!important;}
html,body{margin:0;height:100%;}
body{
  font-family:var(--sans);color:var(--ink);background:var(--bg);
  -webkit-font-smoothing:antialiased;font-size:14px;line-height:1.45;
  overflow:hidden;
}
button{font-family:inherit;cursor:pointer;}
input,select{font-family:inherit;}

.app{height:100vh;display:flex;flex-direction:column;position:relative;
  width:100%;max-width:1640px;margin:0 auto;background:var(--surface);
  box-shadow:0 0 0 1px rgba(0,0,0,.05),0 12px 48px rgba(0,0,0,.10);}

/* ===================== TOOLBAR ===================== */
.toolbar{
  flex:0 0 auto;height:60px;background:var(--surface);
  border-top:3px solid var(--red);border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 22px;z-index:20;
}
.brand{display:flex;align-items:center;gap:16px;}
.brand-logo{height:26px;width:auto;display:block;}
.brand-sep{width:1px;height:26px;background:var(--line);}
.brand-titles{display:flex;flex-direction:column;justify-content:center;line-height:1.15;}
.brand-app{font-weight:400;font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.12em;}

.toolbar-actions{display:flex;align-items:center;gap:14px;}
.status-pill{
  display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;
  padding:5px 11px;border:1px solid var(--line);background:#fafafa;
  color:var(--ink-soft);white-space:nowrap;
}
.status-pill .status-dot{width:8px;height:8px;border-radius:50%;background:var(--ink-faint);}
.status-pill[data-state="online"]{color:var(--ok);border-color:#cfe7d7;background:#f3faf5;}
.status-pill[data-state="online"] .status-dot{background:var(--ok);}
.status-pill[data-state="error"]{color:var(--red);border-color:#f0cccc;background:#fdf6f6;}
.status-pill[data-state="error"] .status-dot{background:var(--red);}

.btn-ghost.active{border-color:var(--red);color:var(--red);background:#fdf6f6;}

.btn-cart{position:relative;}
.cart-badge{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:16px;height:16px;padding:0 4px;margin-left:7px;
  background:var(--red);color:#fff;font-size:10px;font-weight:700;
  border-radius:9px;line-height:1;
}

/* ===================== WARENKORB-DRAWER (Slide-over von rechts) ===================== */
/* Kein [hidden]-Toggle wie bei den anderen Overlays: display:none koennte nicht
   animiert werden, daher bleibt der Drawer immer im DOM und wird per .open
   (Transform + Sichtbarkeit) ein-/ausgeblendet -- .hidden wird fuer dieses
   Element bewusst nicht mehr von app.js gesetzt. */
.wk-drawer-backdrop{
  position:fixed;inset:0;z-index:8500;background:rgba(0,0,0,.35);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .22s ease,visibility 0s linear .22s;
}
.wk-drawer-backdrop.open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .22s ease;}

.wk-drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:9000;width:420px;max-width:92vw;
  background:var(--surface);box-shadow:-4px 0 24px rgba(0,0,0,.14);
  display:flex;flex-direction:column;min-height:0;
  transform:translateX(100%);visibility:hidden;
  transition:transform .25s ease,visibility 0s linear .25s;
}
.wk-drawer.open{transform:translateX(0);visibility:visible;transition:transform .25s ease;}
.wk-drawer-bar{
  flex:0 0 auto;height:52px;background:var(--surface);border-bottom:3px solid var(--red);
  display:flex;align-items:center;justify-content:space-between;padding:0 22px;
}
.wk-drawer-title{font-weight:700;font-size:14px;color:var(--ink);letter-spacing:.01em;display:flex;align-items:center;gap:10px;}
.wk-drawer-body{flex:1 1 auto;overflow-y:auto;padding:20px 22px;}

/* ===================== TOOLBAR-POPOVER (Speichern & Laden / Werkzeuge) =====
   Anchored Dropdown statt vollbreiter Banner-Leiste -- Position (top/right)
   wird beim Oeffnen per JS relativ zum jeweiligen Toolbar-Button gesetzt
   (positioniertPopover() in app.js), .app ist dafuer der positionierte
   Bezugsrahmen. Sichtbarkeit laeuft ueber .open (wie .wk-drawer) statt
   [hidden], damit Opacity/Transform animiert werden koennen -- beides reine
   Compositor-Eigenschaften, kein Layout-Reflow der restlichen Seite. */
.toolbar-popover{
  position:absolute;z-index:40;top:0;right:0;
  display:flex;flex-direction:column;gap:14px;
  width:280px;padding:16px;
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);
  opacity:0;visibility:hidden;transform:translateY(-6px) scale(.98);
  transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s;
}
.toolbar-popover.open{
  opacity:1;visibility:visible;transform:translateY(0) scale(1);
  transition:opacity .16s ease,transform .16s ease;
}
.popover-section{display:flex;flex-direction:column;gap:8px;}
.popover-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);}
.popover-sep{height:1px;background:var(--hair);margin:0 -16px;}
.popover-btn{width:100%;justify-content:center;}
.toolbar-popover .form-msg{margin:0;}
.toolbar-popover .hint{margin:0;}

.search-field{position:relative;}
.search-field input{padding-right:34px;}
.search-field-btn{
  position:absolute;top:50%;right:3px;transform:translateY(-50%);
  width:26px;height:26px;border:none;background:transparent;
  color:var(--ink-faint);font-size:13px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:color .15s ease;
}
.search-field-btn:hover{color:var(--red);}

/* Vergleichsmodus: Konfiguration-A/B-Auswahl + eigenstaendiger Entfernen-
   Button daneben (statt nur einer Text-Zeile darunter -- direktes visuelles
   Feedback + Moeglichkeit, die Auswahl ohne Reload wieder zu loeschen). */
.vgl-slot{display:flex;align-items:stretch;gap:6px;}
.vgl-slot .popover-btn{flex:1 1 auto;}
.vgl-slot label.loaded{border-color:#cfe7d7;background:#f2f8f4;color:var(--ok);}
.vgl-clear-btn{
  flex:0 0 auto;width:32px;border:1px solid var(--line);background:#fff;
  color:var(--ink-faint);cursor:pointer;font-size:12px;transition:all .15s ease;
}
.vgl-clear-btn:hover{border-color:var(--red);color:var(--red);}
.vgl-clear-btn[hidden]{display:none!important;}
.hint{font-size:11px;color:var(--ink-faint);margin:0;}
.hint.error{color:var(--red);}

/* ===================== WORKSPACE (Form links / Konfigurator rechts) ===================== */
.workspace{flex:1 1 auto;display:flex;min-height:0;}

.form-col{
  flex:0 0 380px;background:var(--surface);border-right:1px solid var(--line);
  display:flex;flex-direction:column;min-height:0;
}
.form-col .form-body{flex:1 1 auto;overflow-y:auto;padding:22px 24px 8px;}

/* Sticky Action-Bar (analog AG-Konfigurator): eigenes Flex-Geschwister von
   .form-body, dadurch automatisch ausserhalb von dessen Scroll-Bereich --
   kein position:sticky/fixed noetig. */
.action-bar{
  flex:0 0 auto;border-top:1px solid var(--line);background:var(--surface);
  padding:14px 24px;display:flex;flex-direction:column;gap:8px;
}
.action-bar .form-msg{margin:0;}

.card{border:none;margin:0 0 22px;padding:0;}
.card-head{
  display:flex;align-items:center;gap:10px;width:100%;
  font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.08em;
  color:var(--ink);padding:0 0 12px;margin:0 0 14px;
  border-bottom:1px solid var(--hair);
}
.card-head .idx{
  font-weight:700;font-size:11px;color:var(--red);
  border:1px solid var(--red);padding:2px 6px;letter-spacing:.05em;
}

.field{margin:0 0 14px;display:flex;flex-direction:column;}
.field:last-child{margin-bottom:0;}
.field label{font-size:12px;font-weight:600;color:var(--ink-soft);margin:0 0 5px;letter-spacing:.01em;}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:8px;}

input[type="text"],input[type="number"],input[type="date"],input[type="password"],select{
  width:100%;min-width:0;border:1px solid var(--line);background:var(--field-bg);
  color:var(--ink);font-size:14px;padding:9px 11px;border-radius:0;
  transition:border-color .15s ease,background .15s ease;outline:none;
}
input::placeholder{color:var(--ink-faint);}
input:focus,select:focus{border-color:var(--red);background:#fff;
  box-shadow:inset 0 0 0 1px var(--red);}
select{appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%236b6b6b' stroke-width='1.4' fill='none' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;background-position:right 11px center;padding-right:30px;cursor:pointer;}

/* Natives Browser-Chrome konsequent entfernen -- passt zum eigenen
   Pfeil-Icon beim <select> oben: kein Feld soll anders aussehen als die
   anderen, nur weil der Browser dafuer eine eigene Optik mitbringt. */
input[type="date"]{cursor:pointer;}
input[type="date"]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6;}
input[type="date"]::-webkit-calendar-picker-indicator:hover{opacity:1;}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
input[type="number"]{-moz-appearance:textfield;}

.btn-ghost{
  border:1px solid var(--line);background:#fff;color:var(--ink-soft);
  font-size:12px;font-weight:600;padding:6px 12px;border-radius:0;
  text-decoration:none;display:inline-flex;align-items:center;transition:all .15s ease;white-space:nowrap;
}
/* <button> bekommt cursor:pointer schon global (s. "button{cursor:pointer}"
   oben), <label>-als-Button (Datei-Upload-Trigger) nicht automatisch. */
label.btn-ghost{cursor:pointer;}
.btn-ghost:hover{border-color:var(--red);color:var(--red);}
/* Ersetzt den blauen Browser-Standard-Fokusring (nur echte <button>-Elemente
   bekommen ihn automatisch, <label>-als-Button nicht) durch den roten Akzent
   der App -- sonst wirken gleich gestylte Buttons/Labels je nach Fokus-
   Zustand inkonsistent. */
.btn-ghost:focus-visible{outline:none;border-color:var(--red);box-shadow:0 0 0 2px rgba(189,24,24,.15);}
.btn-logout{border-color:#e2e2e2;color:var(--ink-faint);}
.btn-logout:hover{border-color:var(--navy);color:var(--navy);}

/* ===================== KONFIGURATOR (rechts) ===================== */
.config-col{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;background:var(--bg);}

.sticky-top{flex:0 0 auto;background:var(--surface);border-bottom:1px solid var(--line);z-index:5;}

/* Preis-Header */
.price-header{display:flex;align-items:stretch;gap:0;padding:14px 22px;flex-wrap:wrap;gap:14px;}
.price-tile{border-left:4px solid var(--line);padding:2px 16px;display:flex;flex-direction:column;gap:2px;}
.price-tile.model{border-left:none;padding-left:0;flex:1 1 200px;min-width:160px;}
.price-tile .price-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);}
.price-tile .price-value{font-size:1.35rem;font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums;}
.price-tile.model .price-value{font-size:1.05rem;font-weight:700;color:var(--red);}
.price-tile.rabatt{border-left-color:var(--ok);}
.price-tile.rabatt .price-value{color:var(--ok);font-size:1.1rem;}
.price-tile.netto{border-left-color:var(--navy);border-left-width:6px;}
.price-tile.optionen{border-left-color:var(--red);}
.price-tile.optionen .price-value{color:var(--ink-soft);font-size:1.1rem;}

/* Suche + Ansicht-Optionen */
.toolstrip{display:flex;align-items:center;gap:10px;padding:0 22px 14px;flex-wrap:wrap;}
.toolstrip input[type="text"]{flex:1 1 260px;}
.toolstrip label.chk-inline{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-soft);white-space:nowrap;cursor:pointer;}
.toolstrip label.chk-inline input{margin:0;}

/* Dot-Navigation "Kompakte Chips": nur Pflicht-Baugruppen, gleichmaessig ueber
   die Breite verteilt (flex:1 1 0 statt absoluter left:%-Platzierung). Kein
   Label links, kein Zaehler rechts -- der Status liest sich aus den Chips:
   gruen = konfiguriert, amber = noch offen, navy gefuellt = aktuelle Scroll-
   Position (Dock-Effekt ueber leichte Skalierung). Rechts "WEITERE" + Chevron
   als Hinweis auf den optionalen Katalog-Rest (rein visuell, kein Klickziel).
   Sitzt in der Toolstrip-Zone, daher kein eigener grauer Streifen mehr. */
.bg-dotnav{display:flex;align-items:center;gap:8px;padding:0 22px 14px;background:var(--surface);}
.bg-dotnav[hidden]{display:none!important;}
.bg-dotnav-track{display:flex;align-items:center;gap:5px;flex:1 1 auto;min-width:0;}

.bg-dot-item{
  flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;gap:5px;
  height:26px;padding:0 6px;border:1px solid #f0d9a8;background:#fdf7ea;color:#a15c00;
  cursor:pointer;
  transition:transform .28s cubic-bezier(.34,1.4,.6,1),background .2s ease,color .2s ease,border-color .2s ease;
}
.bg-dot{width:6px;height:6px;border-radius:50%;background:#d9a400;flex:0 0 auto;transition:background .2s ease;}
.bg-dot-label{font-size:9.5px;font-weight:700;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

.bg-dot-item.aktiv{border-color:#cfe7d7;background:#f2f8f4;color:var(--ok);}
.bg-dot-item.aktiv .bg-dot{background:var(--ok);}
.bg-dot-item:hover{border-color:var(--red);}
.bg-dot-item.current{border-color:var(--navy);background:var(--navy);color:#fff;transform:scale(1.06);}
.bg-dot-item.current .bg-dot{background:#fff;}

.bg-dotnav-more{flex:0 0 auto;display:flex;align-items:center;gap:7px;padding-left:8px;border-left:1px dashed #dcd7d0;transition:border-color .2s ease;}
.bg-dotnav-more span{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#b3b0aa;transition:color .2s ease;}
.bg-dotnav-more svg{display:block;}
.bg-dotnav-more svg path{transition:stroke .2s ease;}
/* Aktiv, sobald ueber den letzten Pflicht-Schritt hinaus gescrollt wurde --
   sonst bliebe der letzte Chip (ZBHS) dauerhaft als "current" haengen. */
.bg-dotnav-more.active{border-left-color:var(--navy);}
.bg-dotnav-more.active span{color:var(--navy);}
.bg-dotnav-more.active svg path{stroke:var(--navy);}

.baugruppen-list{flex:1 1 auto;overflow-y:auto;padding:16px 22px 32px;}
.baugruppen-list::-webkit-scrollbar{width:10px;}
.baugruppen-list::-webkit-scrollbar-thumb{background:#d2d0cc;border:3px solid transparent;background-clip:content-box;}

.empty-hint{color:var(--ink-faint);font-size:13px;padding:24px 4px;text-align:center;}

/* -- Baugruppe (Gruppe) ------------------------------------------------- */
.bg-group{margin-bottom:14px;background:#fff;border:1px solid var(--line);}
.bg-group-h{
  display:flex;align-items:center;gap:9px;cursor:pointer;user-select:none;
  padding:10px 14px;background:#fafafa;border-bottom:1px solid var(--hair);
  font-size:12px;font-weight:700;letter-spacing:.03em;color:var(--ink);
}
.bg-group.active .bg-group-h{background:#fbf2f2;box-shadow:inset 3px 0 0 var(--red);}
.bg-group.active .bg-group-h .bg-name{color:var(--red);}
.bg-group-arrow{font-size:9px;flex:0 0 auto;transition:transform .15s ease;color:var(--ink-faint);}
.bg-group.collapsed .bg-group-arrow{transform:rotate(-90deg);}
/* Weiches Auf-/Zuklappen ohne JS-Hoehenmessung: .bg-items ist Grid-Container
   mit einer Zeile (1fr <-> 0fr animiert), .bg-items-inner das einzige
   Grid-Item mit overflow:hidden, das den Inhalt beim Zuklappen abschneidet. */
.bg-items{display:grid;grid-template-rows:1fr;transition:grid-template-rows .2s ease;}
.bg-group.collapsed .bg-items{grid-template-rows:0fr;}
.bg-items-inner{overflow:hidden;}
.bg-code{color:var(--ink-faint);font-weight:600;}
.bg-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bg-flag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ok);}
.bg-count{font-size:10.5px;color:var(--ink-faint);font-weight:600;}

/* -- Artikel-Zeile ------------------------------------------------------- */
.art-row{
  display:grid;grid-template-columns:26px 26px 60px 1fr;align-items:center;
  gap:12px;padding:9px 14px;border-bottom:1px solid var(--hair);transition:background .12s ease;
}
.art-row:last-child{border-bottom:none;}
.art-row:hover{background:#fafafa;}
.art-row.checked{background:#f3faf5;}
.art-row.no-preis{opacity:.55;}

.art-check{position:relative;display:flex;justify-content:center;cursor:pointer;}
.art-check input{position:absolute;opacity:0;width:20px;height:20px;margin:0;cursor:pointer;}
.art-check .box{width:18px;height:18px;border:1.5px solid #bdbdbd;background:#fff;display:block;position:relative;}
.art-check input:checked + .box{background:var(--ok);border-color:var(--ok);}
.art-check.opt input:checked + .box{background:var(--red);border-color:var(--red);}
.art-check input:checked + .box::after{content:"";position:absolute;left:5px;top:1px;
  width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);}
.art-check input:disabled + .box{opacity:.4;background:#f0f0f0;}

.art-qty input{width:60px;border:1px solid var(--line);background:#fff;font-size:12.5px;
  padding:5px 6px;border-radius:0;outline:none;text-align:right;font-variant-numeric:tabular-nums;}
.art-qty input:focus{border-color:var(--red);}
.art-qty input:disabled{opacity:.4;background:#f0f0f0;}

.art-info{display:flex;align-items:center;gap:9px;min-width:0;flex-wrap:wrap;}
.art-code{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;color:var(--ink-soft);flex:0 0 auto;}
.art-row.checked .art-code{color:var(--ok);}
.art-row.no-preis .art-code{color:var(--ink-faint);}
.art-hist{font-size:10px;color:#d9a400;vertical-align:super;cursor:default;}
.art-opt-tag{font-size:10px;font-weight:700;color:var(--red);}
.art-typ{font-weight:600;font-size:12.5px;color:var(--ink);flex:0 0 auto;}
.art-row.checked .art-typ{color:var(--ok);}
.art-beschr{font-size:12px;color:var(--ink-faint);flex:1 1 160px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.art-preis{font-size:12.5px;font-weight:700;color:var(--ink);text-align:right;flex:0 0 auto;margin-left:auto;font-variant-numeric:tabular-nums;}
.art-row.no-preis .art-preis{color:var(--ink-faint);}

@media (max-width:1080px){
  .form-col{flex-basis:320px;}
}

/* ===================== KUNDE / AKTION / WARENKORB ===================== */
.btn-primary{
  width:100%;border:2px solid var(--red);background:var(--red);color:#fff;
  font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.06em;
  padding:10px 14px;border-radius:0;transition:all .18s ease;
}
.btn-primary:hover{background:var(--red-hover);border-color:var(--red-hover);}
.btn-primary:disabled{opacity:.45;cursor:not-allowed;}

.card-aside{margin-left:auto;font-weight:600;font-size:11px;color:var(--ink-faint);text-transform:none;letter-spacing:0;}

.wk-item{display:flex;align-items:flex-start;gap:8px;padding:9px 0;border-bottom:1px solid var(--hair);}
.wk-item:last-child{border-bottom:none;}
.wk-item-main{flex:1 1 auto;min-width:0;}
.wk-item-name{font-weight:700;font-size:12.5px;color:var(--ink);}
.wk-item-preis{font-size:11.5px;color:var(--ink-soft);}
.wk-item-notiz{font-size:11px;color:var(--ink-faint);font-style:italic;}
.wk-item-btns{flex:0 0 auto;display:flex;gap:4px;}
.wk-icon-btn{width:24px;height:24px;border:1px solid var(--line);background:#fff;color:var(--ink-soft);
  font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .14s ease;}
.wk-icon-btn:hover{border-color:var(--red);color:var(--red);}
.wk-empty{font-size:12px;color:var(--ink-faint);padding:6px 0;}

.fp-item{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--hair);font-size:12px;}
.fp-item-main{flex:1 1 auto;min-width:0;}
.fp-item-name{font-weight:600;color:var(--ink);}
.fp-item-preis{color:var(--ink-soft);font-size:11px;}

.fp-add-labels{display:grid;grid-template-columns:1fr 56px 84px;gap:6px;margin-top:10px;}
.fp-add-labels span{font-size:11px;font-weight:600;color:var(--ink-soft);}
.fp-add-row{display:grid;grid-template-columns:1fr 56px 84px;gap:6px;margin:4px 0 8px;}
.fp-add-row input{font-size:12px;padding:6px 8px;}

/* Generischer Trenner fuer Inline-Style-<hr>-Reste -- gleiche Optik, aber
   als wiederverwendbare Klasse statt wiederholtem style="border:none;...". */
.hr-sep{border:none;border-top:1px solid var(--hair);margin:14px 0;}

.wk-summen{margin-top:10px;border-top:1px solid var(--hair);padding-top:8px;}
.wk-summen-row{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-soft);padding:2px 0;}
.wk-summen-row.total{font-weight:900;font-size:14px;color:var(--red);border-top:2px solid var(--red);margin-top:4px;padding-top:6px;}

.export-btns{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.export-btns .btn-ghost{justify-content:center;}

.bridge-json-box{margin-top:8px;background:#f7f6f4;border:1px solid var(--line);padding:8px;
  font-family:ui-monospace,Consolas,monospace;font-size:10.5px;max-height:180px;overflow:auto;white-space:pre-wrap;}

.form-msg{font-size:11.5px;margin:6px 0 0;min-height:14px;}
.form-msg.error{color:var(--red);font-weight:600;}
.form-msg.ok{color:var(--ok);font-weight:600;}

.verlauf-item{
  display:block;width:100%;text-align:left;border:1px solid var(--line);background:#fff;
  padding:8px 10px;margin-bottom:6px;cursor:pointer;transition:all .14s ease;
}
.verlauf-item:hover{border-color:var(--red);}
.verlauf-item .v-name{font-weight:700;font-size:12px;color:var(--ink);}
.verlauf-item .v-meta{font-size:10.5px;color:var(--ink-faint);}

/* ===================== DB-VERWALTUNG (Admin) ===================== */
.admin-warn{font-size:11px;color:#a15c00;background:#fff8ec;border:1px solid #f0d9a8;
  padding:6px 8px;margin:0 0 8px;}

.db-login-card{
  max-width:340px;margin:48px auto 0;padding:24px;
  border:1px solid var(--line);background:var(--surface);
  display:flex;flex-direction:column;gap:10px;
}
#dbLoginBox input[type="password"]{width:100%;}

.db-toolbar{display:flex;justify-content:flex-end;margin-bottom:16px;}

.db-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start;}
.db-card{border:1px solid var(--line);background:var(--surface);}
.db-card-head{
  margin:0;padding:11px 16px;font-size:12px;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:var(--ink);
  background:#fafafa;border-bottom:1px solid var(--hair);
}
.db-card-body{padding:16px;display:flex;flex-direction:column;gap:10px;}
.db-card-body .form-msg{margin:0;}
.db-card-body .field{margin:0;}
.db-info-note{font-size:11px;color:var(--navy);background:#eef4f8;border:1px solid #cddce6;padding:7px 9px;margin:0;line-height:1.4;}

@media (max-width:900px){.db-grid{grid-template-columns:1fr;}}

.import-log{margin-top:10px;border:1px solid var(--line);background:#fafafa;padding:8px 10px;
  font-size:11px;max-height:220px;overflow:auto;}
.import-log .il-summary{font-weight:700;color:var(--ink);margin-bottom:6px;}
.import-log .il-line{padding:1px 0;font-family:ui-monospace,Consolas,monospace;}
.import-log .il-ok{color:var(--ok);}
.import-log .il-warn{color:#a15c00;}
.import-log .il-error{color:var(--red);}
.import-log .il-skip{color:var(--ink-faint);}
.import-log-actions{display:flex;gap:8px;margin-top:8px;}
.import-log-actions .btn-ghost{flex:1 1 auto;justify-content:center;}

.qmap-mapping-row{display:flex;justify-content:space-between;align-items:center;
  font-size:11px;padding:4px 0;border-bottom:1px solid var(--hair);}

/* ===================== WERKZEUGE-OVERLAY ===================== */
.tools-overlay{
  position:fixed;inset:0;z-index:9000;display:flex;flex-direction:column;background:var(--bg);
  opacity:0;visibility:hidden;transition:opacity .18s ease,visibility 0s linear .18s;
}
.tools-overlay.open{opacity:1;visibility:visible;transition:opacity .18s ease;}
.tools-overlay-bar{flex:0 0 auto;height:52px;background:var(--surface);border-bottom:3px solid var(--red);
  display:flex;align-items:center;justify-content:space-between;padding:0 20px;gap:16px;}
.tools-overlay-title{font-weight:700;font-size:14px;color:var(--ink);letter-spacing:.01em;}
.tools-overlay-body{flex:1 1 auto;overflow-y:auto;padding:24px 32px;}
#dbOverlay .tools-overlay-body{max-width:960px;margin:0 auto;width:100%;}

.hist-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.hist-table th{background:var(--navy);color:#fff;padding:8px 10px;text-align:left;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;}
.hist-table td{padding:7px 10px;border-bottom:1px solid var(--hair);}
.hist-table tr:nth-child(even) td{background:#fafafa;}
.hist-veraenderung.auf{color:var(--red);font-weight:700;}
.hist-veraenderung.ab{color:var(--ok);font-weight:700;}
.hist-marker{font-size:11.5px;color:var(--ink-soft);margin:0 0 10px;}

.vgl-cols{display:grid;grid-template-columns:1fr 2px 1fr;gap:20px;max-width:900px;margin:0 auto 20px;}
.vgl-col h3{margin:0 0 8px;font-size:16px;color:var(--ink);}
.vgl-col p{margin:2px 0;font-size:13px;}
.vgl-sep{background:var(--line);}
.vgl-diff{max-width:900px;margin:0 auto 24px;text-align:center;padding:14px 20px;border:2px solid var(--line);background:#fff;font-size:14px;}
.vgl-artikel-table{width:100%;border-collapse:collapse;font-size:11.5px;max-width:1100px;margin:0 auto;}
.vgl-artikel-table th{background:var(--navy);color:#fff;padding:6px 8px;text-align:left;font-size:10px;text-transform:uppercase;}
.vgl-artikel-table td{padding:5px 8px;border-bottom:1px solid var(--hair);}
.vgl-row-nurA{background:#fef2f2;}
.vgl-row-nurB{background:#f0fdf4;}
.vgl-row-menge{background:#fffbeb;}
.vgl-row-preis{background:#fff7ed;}
.vgl-legende{font-size:11px;color:var(--ink-faint);margin-top:10px;text-align:center;}
.vgl-export-btn{display:block;margin:16px auto;}
