/* Veloce Plattform — Dual-Theme Stylesheet.
   Light  = "INK & VOLT"        (Papier + Ink-Rahmen, Gelb als Akzent)
   Dark   = "Nachtschicht-Cockpit" (Anthrazit + Aqua-Glow)
   Alles token-basiert; Komponenten lesen NUR Tokens -> Theme-Wechsel per data-theme.
   Self-contained, kein CDN. Schrift: Geist (self-hosted woff2). */

@font-face{ font-family:"Geist"; src:url("/static/vendor/fonts/GeistVariable.woff2") format("woff2");
  font-weight:100 900; font-style:normal; font-display:swap; }
@font-face{ font-family:"Geist Mono"; src:url("/static/vendor/fonts/GeistMonoVariable.woff2") format("woff2");
  font-weight:100 900; font-style:normal; font-display:swap; }

/* ============================ THEME-TOKENS ============================ */
:root, :root[data-theme="light"]{
  --bg:#F4F3EE; --bg-2:#ECEBE3; --card:#FFFFFF; --surface-2:#F2F1EA; --overlay:#FFFFFF;
  --ink:#1A1917; --ink-2:#514E48; --muted:#8A867C;
  --line:#E6E3DA; --line-strong:#D2CEC1; --frame:#211F1B;
  --border-w:1.5px;
  --primary:#1A1917; --primary-2:#2C2925; --on-primary:#FBFAF5;
  --accent:#E8E22A; --accent-soft:#FBF6C9; --accent-ink:#4A4700;
  --link:#1A1917;
  --nav-active-fg:#1A1917; --nav-active-ic-bg:#E8E22A; --nav-active-ic-fg:#1A1917;
  --focus:rgba(232,226,42,.55);
  --ok:#157F4B; --ok-bg:#E4F1E8; --warn:#B6740E; --warn-bg:#F7EEDB; --bad:#C63A2E; --bad-bg:#F8E4E1;
  --radius:9px; --radius-sm:6px; --radius-pill:7px;
  --shadow-sm:0 1px 0 rgba(26,25,23,.03); --shadow-md:0 2px 8px rgba(26,25,23,.06);
  --shadow-lg:5px 5px 0 var(--frame); --card-hover:3px 3px 0 var(--frame);
  --header-bg:#FFFFFF; --header-border:var(--frame); --brand-ink:#1A1917;
  --logo-plate:#1A1917; --logo-pad:4px 8px; --logo-filter:none;
  --ruler:#ECEAE0; --grid-line:#EFEDE4;
  --body-bg:
    radial-gradient(900px 380px at 92% -10%, rgba(232,226,42,.07), transparent 60%),
    linear-gradient(180deg,#F6F5F0,#EDECE4);
  --font:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-mono:"Geist Mono",ui-monospace,"Cascadia Mono","Segoe UI Mono",Consolas,monospace;
  --nav-w:212px;
}
:root[data-theme="dark"]{
  --bg:#0B0F14; --bg-2:#0E141B; --card:#141A22; --surface-2:#1A212B; --overlay:#1B222C;
  --ink:#EAEFF5; --ink-2:#AEB9C6; --muted:#7A8794;
  --line:rgba(255,255,255,.08); --line-strong:rgba(255,255,255,.16); --frame:rgba(255,255,255,.12);
  --border-w:1px;
  --primary:#37E5D9; --primary-2:#12A99F; --on-primary:#04211F;
  --accent:#37E5D9; --accent-soft:rgba(55,229,217,.12); --accent-ink:#04211F;
  --link:#5CF0E6;
  --nav-active-fg:#5CF0E6; --nav-active-ic-bg:rgba(55,229,217,.18); --nav-active-ic-fg:#5CF0E6;
  --focus:rgba(55,229,217,.5);
  --ok:#3DDC84; --ok-bg:rgba(61,220,132,.14); --warn:#F5B942; --warn-bg:rgba(245,185,66,.15); --bad:#FF6B6B; --bad-bg:rgba(255,107,107,.15);
  --radius:14px; --radius-sm:10px; --radius-pill:999px;
  --shadow-sm:inset 0 1px 0 rgba(255,255,255,.05); --shadow-md:0 8px 26px rgba(0,0,0,.4);
  --shadow-lg:0 0 30px -8px rgba(55,229,217,.4); --card-hover:0 0 24px -10px rgba(55,229,217,.5);
  --header-bg:#0E141B; --header-border:var(--line-strong); --brand-ink:#EAEFF5;
  --logo-plate:transparent; --logo-pad:0; --logo-filter:drop-shadow(0 0 10px rgba(232,226,42,.42));
  --ruler:rgba(255,255,255,.06); --grid-line:rgba(255,255,255,.05);
  --body-bg:
    radial-gradient(1100px 460px at 88% -10%, rgba(55,229,217,.10), transparent 60%),
    radial-gradient(900px 420px at -6% 4%, rgba(169,123,255,.10), transparent 58%),
    linear-gradient(180deg,#0B0F14,#0E141B);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0B0F14; --bg-2:#0E141B; --card:#141A22; --surface-2:#1A212B; --overlay:#1B222C;
    --ink:#EAEFF5; --ink-2:#AEB9C6; --muted:#7A8794;
    --line:rgba(255,255,255,.08); --line-strong:rgba(255,255,255,.16); --frame:rgba(255,255,255,.12);
    --border-w:1px;
    --primary:#37E5D9; --primary-2:#12A99F; --on-primary:#04211F;
    --accent:#37E5D9; --accent-soft:rgba(55,229,217,.12); --accent-ink:#04211F;
    --link:#5CF0E6;
    --nav-active-fg:#5CF0E6; --nav-active-ic-bg:rgba(55,229,217,.18); --nav-active-ic-fg:#5CF0E6;
    --focus:rgba(55,229,217,.5);
    --ok:#3DDC84; --ok-bg:rgba(61,220,132,.14); --warn:#F5B942; --warn-bg:rgba(245,185,66,.15); --bad:#FF6B6B; --bad-bg:rgba(255,107,107,.15);
    --radius:14px; --radius-sm:10px; --radius-pill:999px;
    --shadow-sm:inset 0 1px 0 rgba(255,255,255,.05); --shadow-md:0 8px 26px rgba(0,0,0,.4);
    --shadow-lg:0 0 30px -8px rgba(55,229,217,.4); --card-hover:0 0 24px -10px rgba(55,229,217,.5);
    --header-bg:#0E141B; --header-border:var(--line-strong); --brand-ink:#EAEFF5;
    --logo-plate:transparent; --logo-pad:0; --logo-filter:drop-shadow(0 0 10px rgba(232,226,42,.42));
    --ruler:rgba(255,255,255,.06); --grid-line:rgba(255,255,255,.05);
    --body-bg:
      radial-gradient(1100px 460px at 88% -10%, rgba(55,229,217,.10), transparent 60%),
      radial-gradient(900px 420px at -6% 4%, rgba(169,123,255,.10), transparent 58%),
      linear-gradient(180deg,#0B0F14,#0E141B);
  }
}

/* ============================ BASE ============================ */
*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; font-family:var(--font); color:var(--ink);
  background:var(--body-bg); background-attachment:fixed;
  min-height:100vh; line-height:1.45; font-size:14px; -webkit-font-smoothing:antialiased;
}
a{ color:var(--link); }
:focus-visible{ outline:none; box-shadow:0 0 0 3px var(--focus); border-radius:6px; }

/* ============================ HEADER ============================ */
header{
  position:sticky; top:0; z-index:30; display:flex; align-items:center; gap:12px;
  padding:9px 20px; background:var(--header-bg);
  border-bottom:var(--border-w) solid var(--header-border);
}
header .logo{ height:22px; width:auto; display:block; background:var(--logo-plate);
  padding:var(--logo-pad); border-radius:5px; filter:var(--logo-filter); }
header .brand{ color:var(--brand-ink); font-size:14px; font-weight:800; letter-spacing:.3px;
  display:flex; align-items:center; gap:9px; }
header .brand::before{ content:""; width:1px; height:15px; background:var(--line-strong); display:inline-block; }
header .live{ margin-left:auto; display:inline-flex; align-items:center; gap:6px;
  color:var(--muted); font-size:10.5px; font-weight:700; letter-spacing:.4px; }
header .live .dot{ width:7px; height:7px; border-radius:50%; background:var(--accent);
  box-shadow:0 0 8px var(--accent); animation:pulse 2.4s infinite; }
@keyframes pulse{ 0%{box-shadow:0 0 0 0 var(--focus);} 70%{box-shadow:0 0 0 6px transparent;} 100%{box-shadow:0 0 0 0 transparent;} }

.theme-toggle{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:30px;
  border:var(--border-w) solid var(--line-strong); background:var(--card); color:var(--ink);
  border-radius:var(--radius-sm); cursor:pointer; padding:0; }
.theme-toggle:hover{ border-color:var(--primary); }
.theme-toggle .ic-svg{ width:16px; height:16px; }
.theme-toggle .i-sun{ display:none; } .theme-toggle .i-moon{ display:block; }
:root[data-theme="dark"] .theme-toggle .i-sun{ display:block; }
:root[data-theme="dark"] .theme-toggle .i-moon{ display:none; }
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .theme-toggle .i-sun{ display:block; }
  :root:not([data-theme="light"]) .theme-toggle .i-moon{ display:none; }
}

/* ============================ SHELL / TOP-NAV ============================ */
.shell{ display:block; }
.topnav{ display:flex; align-items:center; justify-content:flex-start; gap:1px; flex:1 1 auto; min-width:0;
  overflow-x:auto; scrollbar-width:none; }
.topnav::-webkit-scrollbar{ display:none; }
.topnav a{ display:inline-flex; align-items:center; gap:6px; padding:6px 9px; border-radius:var(--radius-sm);
  text-decoration:none; color:var(--ink-2); font-size:12.5px; font-weight:600; white-space:nowrap;
  transition:background .14s ease, color .14s ease; }
.topnav a .ic{ display:inline-flex; align-items:center; justify-content:center; color:var(--ink-2); }
.topnav a .ic svg{ width:15px; height:15px; }
.topnav a:hover{ background:var(--accent-soft); color:var(--ink); }
.topnav a.active{ background:var(--accent-soft); color:var(--nav-active-fg); font-weight:800; }
.topnav a.active .ic{ color:var(--accent); }
header .ps-navlink{ display:inline-flex; align-items:center; gap:6px; padding:6px 9px;
  border-radius:var(--radius-sm); font-size:12.5px; font-weight:600; color:var(--ink-2); text-decoration:none; white-space:nowrap; }
header .ps-navlink:hover{ background:var(--surface-2); color:var(--ink); }
header .ps-navlink.active{ background:var(--accent-soft); color:var(--nav-active-fg); }
header .ps-navdot{ width:8px; height:8px; border-radius:50%; background:var(--ok); display:inline-block; flex:0 0 auto; }
header .live{ margin-left:10px; flex:0 0 auto; }

/* Hamburger — nur mobil sichtbar */
.nav-toggle{ display:none; flex:0 0 auto; width:38px; height:34px; padding:0;
  border:var(--border-w) solid var(--line-strong); border-radius:var(--radius-sm);
  background:var(--card); color:var(--ink); cursor:pointer; align-items:center; justify-content:center; }
.nav-toggle:hover{ border-color:var(--primary); }
.nav-toggle-box{ position:relative; width:18px; height:12px; }
.nav-toggle-bar, .nav-toggle-bar::before, .nav-toggle-bar::after{ position:absolute; left:0; width:18px; height:2px;
  border-radius:2px; background:currentColor; transition:transform .18s ease, opacity .18s ease; }
.nav-toggle-bar{ top:5px; }
.nav-toggle-bar::before{ content:""; top:-5px; } .nav-toggle-bar::after{ content:""; top:5px; }
header.nav-open .nav-toggle-bar{ background:transparent; }
header.nav-open .nav-toggle-bar::before{ transform:translateY(5px) rotate(45deg); }
header.nav-open .nav-toggle-bar::after{ transform:translateY(-5px) rotate(-45deg); }

main{ min-width:0; max-width:none; margin:0; padding:16px 24px 28px; }
@media (max-width:1180px){ header .brand{ display:none; } }

/* ── Mobil / schmal: Nav als aufklappbares Drawer ──────────────────────── */
@media (max-width:1360px){
  header{ flex-wrap:wrap; gap:10px; padding:9px 16px; }
  header .live{ display:none; }
  .theme-toggle{ order:5; margin-left:auto; }
  .usermenu{ order:6; margin-left:0; }
  .nav-toggle{ display:inline-flex; order:7; }
  .topnav{ order:10; flex:1 0 100%; flex-direction:column; align-items:stretch; gap:2px;
    overflow-x:visible; overflow-y:auto; max-height:0; padding:0;
    border-top:0 solid var(--header-border); transition:max-height .22s ease; }
  header.nav-open .topnav{ max-height:calc(100vh - 60px); padding:6px 0 8px; border-top-width:var(--border-w); margin-top:4px; }
  .topnav a{ width:100%; padding:12px 12px; font-size:15px; border-radius:var(--radius-sm); }
  .topnav a .ic svg{ width:18px; height:18px; }
  header .ps-navlink.topnav-status{ margin-left:0; padding:12px 12px; font-size:15px;
    border-top:var(--border-w) solid var(--line); margin-top:4px; border-radius:0 0 var(--radius-sm) var(--radius-sm); }
}
@media (max-width:520px){
  header{ padding:8px 12px; }
  main{ padding:12px 12px 24px; }
}

/* ============================ PAGE HEAD ============================ */
.page-head{ display:flex; align-items:baseline; gap:12px; margin:2px 0 16px; flex-wrap:wrap; }
.page-head h1{ margin:0; font-size:20px; font-weight:800; color:var(--ink); letter-spacing:-.02em; }
.page-head .sub{ color:var(--muted); font-size:12.5px; }
.page-head .spacer{ flex:1 1 auto; }

/* ============================ CARDS / GENERIC ============================ */
.card{ background:var(--card); border:var(--border-w) solid var(--line-strong); border-radius:var(--radius);
  box-shadow:var(--shadow-sm); }
.card.in{ padding:12px 14px; }
.card h2{ margin:0 0 10px; font-size:12px; font-weight:800; color:var(--link);
  display:flex; align-items:center; gap:8px; letter-spacing:.2px; }
.card h2 .ico{ width:22px; height:22px; border-radius:var(--radius-sm); flex:0 0 auto;
  display:inline-flex; align-items:center; justify-content:center; background:var(--primary); color:var(--on-primary); }
.ico .ic-svg{ width:13px; height:13px; display:block; }
.ic .ic-svg{ width:15px; height:15px; display:block; }
.meta{ color:var(--muted); font-size:12.5px; }
.muted-note{ color:var(--muted); font-size:11.5px; margin-top:8px; }
.stale{ color:var(--warn); font-weight:700; }

/* Buttons */
button{ background:var(--primary); color:var(--on-primary); border:0; border-radius:var(--radius-sm);
  padding:8px 14px; font-size:12.5px; font-weight:700; font-family:inherit; letter-spacing:.2px;
  cursor:pointer; white-space:nowrap; transition:transform .1s ease, box-shadow .16s ease, filter .16s ease; }
button:hover{ filter:brightness(1.06); box-shadow:var(--card-hover); }
button:active{ transform:translate(1px,1px); box-shadow:none; }
button.ghost{ background:transparent; color:var(--ink); border:var(--border-w) solid var(--line-strong); box-shadow:none; }
button.ghost:hover{ background:var(--surface-2); box-shadow:none; filter:none; }
.btn-new{ display:inline-flex; align-items:center; gap:6px; background:var(--accent); color:var(--accent-ink); }
.btn-new .ic-svg{ width:15px; height:15px; }

/* Forms */
label{ display:block; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.4px;
  color:var(--muted); margin:0 0 3px; }
input, select{ width:100%; padding:7px 10px; border:var(--border-w) solid var(--line-strong);
  border-radius:var(--radius-sm); font-size:13px; font-family:inherit; color:var(--ink);
  background:var(--card); transition:border-color .16s ease, box-shadow .16s ease; appearance:none; }
input::placeholder{ color:var(--muted); }
/* Checkboxen/Radios: eigene, gerundete Optik; AKTIV = grün mit weißem Haken. Plattformweit. */
input[type="checkbox"], input[type="radio"]{
  appearance:none; -webkit-appearance:none; width:18px; height:18px; min-width:18px; padding:0;
  border:1.5px solid var(--line-strong); border-radius:6px; background:var(--card); cursor:pointer;
  position:relative; flex:0 0 auto; box-shadow:none; vertical-align:middle;
  transition:background .14s ease, border-color .14s ease; }
input[type="radio"]{ border-radius:50%; }
input[type="checkbox"]:hover, input[type="radio"]:hover{ border-color:var(--ok); }
input[type="checkbox"]:checked, input[type="radio"]:checked{ background:var(--ok); border-color:var(--ok); }
input[type="checkbox"]:checked::after{ content:""; position:absolute; left:5px; top:1.5px;
  width:5px; height:9px; border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg); }
input[type="radio"]:checked::after{ content:""; position:absolute; left:5px; top:5px; width:6px; height:6px;
  border-radius:50%; background:#fff; }
input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible{ outline:none; box-shadow:0 0 0 3px var(--focus); }
/* Browser-Autofill: Theme-Farben erzwingen (sonst weißer Text + gelber Hintergrund
   beim Übernehmen vorausgewählter Adressen) */
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus,
select:-webkit-autofill, select:-webkit-autofill:hover, select:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--ink); caret-color:var(--ink);
  -webkit-box-shadow:0 0 0 1000px var(--card) inset; box-shadow:0 0 0 1000px var(--card) inset;
  transition:background-color 9999s ease-in-out 0s; }
input:hover, select:hover{ border-color:var(--primary); }
input:focus-visible, select:focus-visible{ outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--focus); }
select{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238A867C' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 9px center; padding-right:28px; cursor:pointer; }
form.compact{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:8px; }
.fld{ flex:1 1 auto; min-width:0; } .fld.grow{ flex:2 1 120px; }
.chk{ display:inline-flex; align-items:center; gap:5px; font-size:12px; color:var(--ink-2); font-weight:600; }
.chk input{ width:auto; }

/* Badges / Pills / Chips */
.badge{ display:inline-flex; align-items:center; gap:5px; padding:4px 11px; border-radius:var(--radius-pill);
  font-weight:700; font-size:12.5px; }
.b-ok{ background:var(--ok-bg); color:var(--ok); }
.b-bad{ background:var(--bad-bg); color:var(--bad); }
.card.notfound{ padding:16px; }
.pill{ display:inline-block; padding:2px 9px; border-radius:var(--radius-pill); font-size:10.5px; font-weight:700;
  background:var(--surface-2); color:var(--ink-2); }
.pill.ok{ background:var(--ok-bg); color:var(--ok); } .pill.soft{ background:var(--ok-bg); color:var(--ok); }
.pill.warn{ background:var(--warn-bg); color:var(--warn); }
.pill.bad, .pill.hard{ background:var(--bad-bg); color:var(--bad); }
.chip{ display:inline-flex; align-items:center; gap:5px; padding:4px 10px; border-radius:var(--radius-pill);
  font-size:11px; font-weight:700; letter-spacing:.3px; }
.chip::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
.c-NORMAL{ background:var(--ok-bg); color:var(--ok); }
.c-STRAINED{ background:var(--warn-bg); color:var(--warn); }
.c-CRITICAL{ background:var(--bad-bg); color:var(--bad); }

/* ============================ DISPOSITION ============================ */
.inputbar{ display:grid; grid-template-columns:1fr 2fr; gap:12px; margin-bottom:12px; }
@media (max-width:820px){ .inputbar{ grid-template-columns:1fr; } }
.result{ overflow:hidden; box-shadow:var(--shadow-md); animation:rise .3s ease; }
@keyframes rise{ from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:translateY(0);} }
.r-head{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:10px 16px;
  background:var(--primary); }
.r-head .badge, .r-head .chip{ background:rgba(255,255,255,.16); color:#fff; }
.r-head .ref{ margin-left:auto; color:rgba(255,255,255,.8); font-size:11.5px; font-weight:600; }
.r-body{ padding:14px 16px; }
.r-cols{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:760px){ .r-cols{ grid-template-columns:1fr; } }
.window-wrap{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; flex-wrap:wrap;
  padding:10px 13px; margin-bottom:10px; background:var(--accent-soft); border-left:4px solid var(--accent);
  border-radius:var(--radius-sm); }
.window-wrap .lbl{ font-size:10px; text-transform:uppercase; letter-spacing:.6px; font-weight:700; color:var(--muted); }
.window{ font-size:26px; line-height:1; font-weight:800; color:var(--ink); letter-spacing:-.5px; font-family:var(--font-mono); }
.window .u{ font-size:13px; font-weight:600; color:var(--muted); margin-left:2px; }
.routeline{ display:flex; align-items:center; flex-wrap:wrap; gap:6px 8px; font-size:12.5px; color:var(--ink-2); margin-bottom:8px; }
.routeline .node{ font-weight:800; color:var(--link); }
.routeline .arrow{ color:var(--accent); font-weight:800; } .routeline .sep{ color:var(--line-strong); }
.routeline .tag{ background:var(--surface-2); border:1px solid var(--line); border-radius:6px; padding:1px 8px; font-size:11px; font-weight:600; }
.stat-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.stat{ background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-sm); padding:7px 10px; }
.stat .k{ font-size:9.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); font-weight:700; }
.stat .v{ font-size:16px; font-weight:800; color:var(--ink); margin-top:1px; font-family:var(--font-mono); }
.conf-block{ margin-top:10px; }
.conf-top{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:5px; }
.conf-top .lbl{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:700; color:var(--muted); }
.conf-top .pct{ font-size:14px; font-weight:800; color:var(--link); font-family:var(--font-mono); }
.confbar{ height:8px; background:var(--surface-2); border-radius:999px; overflow:hidden; }
.conffill{ height:100%; background:linear-gradient(90deg,var(--primary),var(--accent)); border-radius:999px; transition:width .55s ease; }
.upg{ background:var(--accent-soft); border:1px solid var(--line); border-left:4px solid var(--accent);
  border-radius:var(--radius-sm); padding:9px 12px; margin-top:10px; font-size:12.5px; display:flex; gap:8px; align-items:flex-start; }
.upg b{ color:var(--link); }
.bestdrv{ display:flex; gap:9px; align-items:flex-start; margin-top:10px; padding:10px 12px;
  background:var(--ok-bg); border:1px solid var(--line); border-left:4px solid var(--ok); border-radius:var(--radius-sm); font-size:12.5px; }
.bestdrv .bd-ic{ font-size:16px; line-height:1.1; }
.bestdrv .bd-lbl{ display:block; font-size:9.5px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--muted); }
.bestdrv .bd-name{ font-size:14px; color:var(--ink); text-transform:capitalize; }
.bestdrv .bd-detour{ display:inline-block; margin-left:7px; padding:1px 7px; border-radius:var(--radius-pill);
  background:var(--ok); color:var(--on-primary); font-size:10.5px; font-weight:700; }
.bestdrv .meta{ display:block; margin-top:2px; }
.sec-title{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--muted); margin:0 0 6px; }
.block{ margin-bottom:12px; } .block:last-child{ margin-bottom:0; }
ul.explain{ margin:0; padding:0; list-style:none; font-size:12.5px; color:var(--ink-2); }
ul.explain li{ position:relative; padding:4px 0 4px 18px; border-bottom:1px dashed var(--line); }
ul.explain li:last-child{ border-bottom:0; }
ul.explain li::before{ content:""; position:absolute; left:3px; top:9px; width:6px; height:6px; border-radius:50%;
  background:var(--accent); }

/* Tables */
table{ width:100%; border-collapse:separate; border-spacing:0; font-size:12px; overflow:hidden;
  border-radius:var(--radius-sm); border:1px solid var(--line); }
th{ text-align:left; padding:6px 10px; font-size:9.5px; text-transform:uppercase; letter-spacing:.4px;
  color:var(--muted); background:var(--surface-2); font-weight:800; }
td{ text-align:left; padding:6px 10px; border-top:1px solid var(--line); }
tbody tr:hover td{ background:var(--accent-soft); }

/* ============================ DASHBOARD ============================ */
.tiles{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:14px; }
@media (max-width:980px){ .tiles{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .tiles{ grid-template-columns:1fr; } }
.tile{ padding:14px 15px; position:relative; overflow:hidden; }
.tile .k{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); font-weight:800; }
.tile .v{ font-size:32px; line-height:1.04; font-weight:800; color:var(--ink); margin-top:5px;
  letter-spacing:-.02em; font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
.tile .v.warn{ color:var(--warn); } .tile .v.bad{ color:var(--bad); }
.tile .foot{ font-size:11px; color:var(--muted); margin-top:3px; }
.tile.accent::before{ content:""; position:absolute; inset:0 0 auto 0; height:4px; background:var(--accent); }
.tile.accent.warn::before{ background:var(--warn); } .tile.accent.bad::before{ background:var(--bad); }
.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
@media (max-width:900px){ .grid2{ grid-template-columns:1fr; } }
.heat{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; padding:4px 0; }
.heat .cl{ display:flex; flex-direction:column; gap:1px; padding:9px 11px; border-radius:var(--radius-sm);
  border:1px solid var(--line); border-left:4px solid var(--line-strong); }
.heat a.cl{ text-decoration:none; }
.heat .cl.clickable{ cursor:pointer; transition:box-shadow .1s; }
.heat .cl.clickable:hover{ box-shadow:var(--card-hover); }
.heat .cl .cl-name{ font-size:12.5px; font-weight:800; color:var(--ink); display:flex; align-items:center; }
.heat .cl .cl-sw{ display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:6px; flex:0 0 auto; box-shadow:0 0 0 1px rgba(0,0,0,.15); }
.heat .cl .cl-bez{ font-size:10.5px; color:var(--muted); font-weight:600; }
.ck-zonlink{ margin-left:auto; font-size:12px; font-weight:600; text-decoration:none; color:var(--accent); }
.ck-sec-h{ display:flex; align-items:center; gap:9px; font-size:16px; font-weight:800; margin:20px 0 10px; }
.ck-sec-h .ic-svg{ width:18px; height:18px; color:var(--ink-2); }
.ck-zonelist{ margin-top:12px; padding:12px 14px; }
.ck-zl-head{ display:flex; align-items:center; gap:10px; font-size:13.5px; margin-bottom:8px; }
.ck-zl-full{ margin-left:auto; font-size:12px; font-weight:600; text-decoration:none; color:var(--accent); }
.ck-zl-x{ border:0; background:none; font-size:20px; line-height:1; color:var(--muted); cursor:pointer; padding:0 4px; }
.ck-zl-x:hover{ color:var(--ink); }
.ck-zonelist .db-row{ cursor:pointer; }
.heat .cl .cl-nums{ font-size:11px; margin-top:3px; color:var(--ink-2); }
.heat .cl .cl-nums b{ font-size:13px; font-family:var(--font-mono); }
.heat .cl.s-NORMAL{ background:var(--ok-bg); border-left-color:var(--ok); }
.heat .cl.s-STRAINED{ background:var(--warn-bg); border-left-color:var(--warn); }
.heat .cl.s-CRITICAL{ background:var(--bad-bg); border-left-color:var(--bad); }

/* ============================ TOOLBAR / KW-NAV / FILTER ============================ */
.toolbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.spacer{ flex:1 1 auto; }
.kwnav{ display:inline-flex; align-items:center; border:var(--border-w) solid var(--line-strong);
  border-radius:var(--radius-sm); overflow:hidden; background:var(--card); }
.kwnav .kwbtn{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:32px;
  color:var(--link); text-decoration:none; background:var(--card); }
.kwnav .kwbtn:hover{ background:var(--accent-soft); }
.kwnav .kwbtn.disabled{ color:var(--muted); opacity:.4; pointer-events:none; }
.kwnav .kwbtn .ic-svg{ width:16px; height:16px; }
.kwnav .kwlabel{ padding:0 12px; font-size:13px; font-weight:800; color:var(--ink);
  border-left:1px solid var(--line); border-right:1px solid var(--line); height:32px;
  display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.kwnav .kwlabel b{ color:var(--muted); font-weight:600; font-size:11px; }
.filterbar{ display:inline-flex; align-items:center; gap:8px; flex-wrap:wrap; }
.filterbar input, .filterbar select{ padding:6px 9px; font-size:12.5px; width:auto; }
.tabs{ display:inline-flex; gap:2px; background:var(--surface-2); border-radius:var(--radius-sm); padding:3px; }
.tabs a{ padding:6px 13px; border-radius:calc(var(--radius-sm) - 2px); text-decoration:none; color:var(--ink-2); font-size:12.5px; font-weight:700; }
.tabs a.active{ background:var(--card); color:var(--link); box-shadow:var(--shadow-sm); }

/* ============================ PLANUNGS-RASTER ============================ */
.gridwrap{ overflow:auto; max-height:calc(100vh - 210px); padding:0; }
table.roster{ border:0; border-radius:0; font-size:12px; }
.roster thead th{ position:sticky; top:0; z-index:2; background:var(--surface-2); white-space:nowrap; padding:7px 8px; }
.roster .th-date{ display:block; font-size:8.5px; color:var(--muted); font-weight:600; }
.roster .c-drv{ position:sticky; left:0; z-index:1; background:var(--card); min-width:150px; }
.roster thead .c-drv{ z-index:3; background:var(--surface-2); }
.roster .c-plz{ position:sticky; left:150px; z-index:1; background:var(--card); color:var(--muted); }
.roster thead .c-plz{ z-index:3; background:var(--surface-2); }
.roster tbody tr:hover .c-drv, .roster tbody tr:hover .c-plz{ background:var(--surface-2); }
.roster .drv{ font-weight:700; }
.roster .blockrow td{ position:sticky; left:0; background:var(--surface-2); font-weight:800; color:var(--link);
  text-transform:uppercase; letter-spacing:.5px; font-size:10px; padding:5px 8px; }
.bl-count{ background:var(--primary); color:var(--on-primary); border-radius:999px; padding:0 7px; font-size:10px; margin-left:6px; }
.rcell{ padding:2px; }
.c-sum{ text-align:center; font-weight:800; color:var(--link); white-space:nowrap; font-family:var(--font-mono); }
.sum-h{ display:block; font-size:9px; color:var(--muted); font-weight:600; }
.sumrow td{ background:var(--surface-2); font-weight:800; border-top:2px solid var(--line-strong); }
.daytot{ text-align:center; color:var(--link); font-family:var(--font-mono); }
.chip-cell{ width:100%; min-height:30px; padding:5px 7px; border:1px solid var(--line); border-left:3px solid transparent;
  border-radius:var(--radius-sm); background:var(--card); cursor:pointer; font-family:inherit; font-size:11.5px;
  font-weight:700; color:var(--ink); text-align:left; display:flex; align-items:center; gap:4px; position:relative;
  transition:box-shadow .12s ease; }
.chip-cell:hover{ box-shadow:var(--card-hover); }
.chip-cell.k-WORK{ background:var(--card); }
/* Kräftige, klar unterscheidbare Statusfarben (Voll­flächen, weiße Schrift). */
.chip-cell.k-FREI{ background:#64748b; color:#fff; border-left-color:#3f4a5a; font-weight:700; }
.chip-cell.k-URLAUB{ background:#12a150; color:#fff; border-left-color:#0b7a3b; }
.chip-cell.k-KRANK{ background:#e11d2e; color:#fff; border-left-color:#a81421; }
.chip-cell.k-UNKNOWN{ background:#f59e0b; color:#3a2600; border-left-color:#b97505; font-weight:800; }
.chip-cell.k-EMPTY{ color:var(--muted); font-weight:400; justify-content:center; border-style:dashed; }
.chip-cell.nr{ box-shadow:inset 0 0 0 2px #f59e0b; }
.cc-time{ font-variant-numeric:tabular-nums; font-family:var(--font-mono); }
.cc-add{ font-size:15px; line-height:1; }
.cc-flag{ position:absolute; top:-5px; right:-4px; width:14px; height:14px; border-radius:50%;
  background:var(--accent); color:var(--accent-ink); font-size:10px; font-weight:800; display:flex; align-items:center; justify-content:center; }
.vt-dot{ display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:6px; vertical-align:1px; flex:0 0 auto; }
.legend{ display:flex; gap:12px; flex-wrap:wrap; font-size:11px; color:var(--muted); margin-top:10px; }
.legend .sw{ display:inline-block; width:11px; height:11px; border-radius:3px; margin-right:4px; vertical-align:-1px; }
.nr-sw{ background:var(--card); box-shadow:inset 0 0 0 2px #f59e0b; }

/* ============================ POPOVER / MODAL ============================ */
#dp-popover:empty{ display:none; }
.modal-backdrop{ position:fixed; inset:0; z-index:100; background:rgba(8,12,16,.5);
  display:flex; align-items:center; justify-content:center; padding:16px; }
.modal-card{ background:var(--overlay); border:var(--border-w) solid var(--line-strong); border-radius:var(--radius);
  box-shadow:var(--shadow-md); width:340px; max-width:100%; padding:14px 16px; animation:rise .18s ease; }
.modal-head{ display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.modal-head .meta{ margin-left:auto; }
.modal-x{ background:none; color:var(--muted); font-size:20px; line-height:1; padding:0 4px; box-shadow:none; }
.modal-x:hover{ background:none; color:var(--bad); box-shadow:none; filter:none; }
.modal-foot{ display:flex; justify-content:flex-end; gap:8px; margin-top:14px; }
.preset-row{ display:flex; flex-wrap:wrap; gap:5px; margin-bottom:8px; }
.preset-row button{ padding:5px 9px; font-size:11.5px; }
.time-row{ display:flex; gap:10px; } .time-row > div{ flex:1; }
.note-warn{ background:var(--warn-bg); border:1px solid var(--line); border-radius:var(--radius-sm); padding:8px 10px;
  font-size:12px; color:var(--warn); margin-bottom:10px; }
.modal-card label{ margin-top:6px; }
/* Audit-Protokoll (/admin/log) */
.lg-table{ width:100%; }
.lg-table td{ vertical-align:top; padding-top:8px; padding-bottom:8px; }
.lg-ts{ white-space:nowrap; color:var(--muted); font-size:12px; }
.lg-user b{ font-weight:700; } .lg-role{ display:block; font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; }
.lg-cat{ display:inline-block; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.04em;
  padding:2px 8px; border-radius:var(--radius-pill); background:var(--surface-2); color:var(--ink-2); white-space:nowrap; }
.lg-cat-dienstplan{ background:var(--accent-soft); color:var(--ink); }
.lg-cat-auftrag{ background:var(--ok-bg); color:var(--ok); }
.lg-cat-benutzer{ background:var(--warn-bg); color:var(--warn); }
.lg-cat-feedback{ background:color-mix(in srgb, #8a5cc0 20%, transparent); color:#8a5cc0; }
.lg-cat-system{ background:var(--surface-2); color:var(--muted); }
.lg-sum{ line-height:1.45; }
.lg-ip{ display:inline-block; margin-left:8px; font-size:10.5px; color:var(--muted); }
.lg-row{ border-left:3px solid transparent; }
.lg-row.lg-c-dienstplan{ border-left-color:var(--accent); }
.lg-row.lg-c-auftrag{ border-left-color:var(--ok); }
.lg-row.lg-c-benutzer{ border-left-color:var(--warn); }
.lg-row.lg-c-feedback{ border-left-color:#8a5cc0; }
.btn-danger{ background:var(--bad); color:#fff; border-color:var(--bad); }
.btn-danger:hover{ filter:brightness(1.07); }
/* Plattform-Toast — ersetzt browser-alert() bei Erfolg/Fehler */
.dp-toast{ position:fixed; left:50%; bottom:26px; transform:translate(-50%,16px); z-index:1300;
  background:var(--overlay); color:var(--ink); border:var(--border-w) solid var(--line-strong);
  border-left:4px solid var(--ok); border-radius:var(--radius-sm); padding:10px 16px; font-size:13px; font-weight:600;
  box-shadow:0 6px 24px rgba(0,0,0,.28); opacity:0; transition:opacity .25s, transform .25s; max-width:80vw; }
.dp-toast.show{ opacity:1; transform:translate(-50%,0); }
.dp-toast.bad{ border-left-color:var(--bad); }

/* ============================ RESSOURCEN-TIMELINE ============================ */
.tl{ border:var(--border-w) solid var(--line-strong); border-radius:var(--radius); overflow:auto;
  background:var(--card); box-shadow:var(--shadow-sm); max-height:calc(100vh - 230px); }
.tl-headrow, .tl-row{ display:flex; align-items:stretch; }
.tl-name-h, .tl-name{ flex:0 0 176px; width:176px; position:sticky; left:0; z-index:2; padding:6px 9px;
  font-size:12px; font-weight:700; background:var(--card); border-right:1px solid var(--line-strong);
  display:flex; align-items:center; gap:4px; color:var(--ink); }
.tl-nm-txt{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tl-name .pill{ flex:0 0 auto; }
.tl-name .rg-activate{ flex:0 0 auto; padding:1px 6px; font-size:11px; line-height:1.3; }
.tl-row-inactive .tl-name .tl-nm-txt{ color:var(--muted); }
/* Σ-Spalte (Diensttage + Stunden je Fahrer) — rechts, nicht sticky */
.tl-sum-h, .tl-sum{ flex:0 0 58px; width:58px; display:flex; align-items:center; justify-content:center;
  gap:4px; font-size:11px; font-weight:800; border-left:1px solid var(--line-strong); color:var(--ink-2); }
.tl-sum-h{ background:var(--surface-2); }
.tl-sum-h2{ color:var(--muted); font-weight:600; }
/* leere, klickbare Zelle: dezentes „+“ beim Überfahren */
.tl-day{ cursor:pointer; }
.tl-add{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:15px; color:var(--muted); opacity:0; transition:opacity .12s; pointer-events:none; }
.tl-day:hover .tl-add{ opacity:.5; }
/* Tages-Totals-Zeile („Im Dienst“) */
.tl-row.tl-tot{ border-top:2px solid var(--line-strong); background:var(--surface-2); }
.tl-row.tl-tot .tl-name{ background:var(--surface-2); font-weight:800; }
.tl-tot-cell{ height:26px; display:flex; align-items:center; justify-content:center; cursor:default;
  font-size:12px; font-weight:800; color:var(--ink); background-image:none; }
.tl-headrow{ position:sticky; top:0; z-index:3; background:var(--surface-2); border-bottom:1px solid var(--line-strong); }
.tl-name-h{ background:var(--surface-2); }
.tl-day-h{ flex:1 1 0; min-width:120px; border-left:1px solid var(--line); padding:4px 0 0; }
.tl-day-title{ font-size:11px; font-weight:800; text-align:center; color:var(--link); }
.tl-day-title span{ color:var(--muted); font-weight:600; font-size:9px; }
.tl-ruler{ position:relative; height:12px; margin-top:2px; }
.tl-ruler span{ position:absolute; transform:translateX(-50%); font-size:8px; color:var(--muted); }
.tl-group{ position:sticky; left:0; background:var(--surface-2); font-weight:800; color:var(--link);
  text-transform:uppercase; letter-spacing:.5px; font-size:10px; padding:4px 9px; }
.tl-row{ border-bottom:1px solid var(--line); }
.tl-day{ flex:1 1 0; min-width:120px; position:relative; height:30px; border-left:1px solid var(--line);
  background-image:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/16 - 1px),var(--grid-line) calc(100%/16 - 1px),var(--grid-line) calc(100%/16)); }
.tl-bar{ position:absolute; top:4px; height:22px; border-radius:6px; color:#fff; font-size:10.5px; font-weight:700;
  display:flex; align-items:center; justify-content:center; overflow:hidden; cursor:grab; touch-action:none;
  box-shadow:0 1px 3px rgba(0,0,0,.25); white-space:nowrap; }
.tl-bar:active{ cursor:grabbing; }
.tlb-lbl{ padding:0 4px; pointer-events:none; font-family:var(--font-mono); }
.tlb-h{ position:absolute; top:0; height:100%; width:7px; cursor:ew-resize; } .tlb-l{ left:0; } .tlb-r{ right:0; }
/* Pause = schraffierter Ausschnitt auf dem Schichtbalken (nur Marker) */
.tlb-pause{ position:absolute; top:0; bottom:0; z-index:1; pointer-events:none;
  background:repeating-linear-gradient(45deg, rgba(0,0,0,.32) 0 2px, rgba(255,255,255,.16) 2px 5px);
  box-shadow:inset 1px 0 0 rgba(255,255,255,.55), inset -1px 0 0 rgba(255,255,255,.55); }
/* Pausen-Block im Bearbeiten-Dialog */
.ce-breaks{ margin-top:10px; padding-top:10px; border-top:1px solid var(--line); }
.ce-breaks > label{ display:block; margin-bottom:6px; }
.ce-break-list{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.ce-break-chip{ display:inline-flex; align-items:center; gap:4px; background:var(--surface-2);
  border:1px solid var(--line); border-radius:999px; padding:2px 4px 2px 9px; font-size:12px; }
.ce-break-x{ border:0; background:transparent; color:var(--bad); cursor:pointer; font-size:15px; line-height:1; padding:0 3px; }
.ce-break-add{ display:flex; align-items:center; gap:6px; }
.ce-break-add input{ width:56px; text-align:center; }
.ce-break-sep{ color:var(--muted); }
.ce-break-inline{ margin-top:8px; }
.tl-abs{ position:absolute; inset:4px 3px; border-radius:6px; font-size:10px; font-weight:700;
  display:flex; align-items:center; justify-content:center; background:var(--ok-bg); color:var(--ok); }
.tl-abs.k-KRANK{ background:var(--bad-bg); color:var(--bad); }
.tl-free{ position:absolute; inset:4px 3px; display:flex; align-items:center; justify-content:center; font-size:10px; color:var(--muted); }
.tl-nr{ position:absolute; top:2px; right:3px; width:13px; height:13px; border-radius:50%; background:var(--accent);
  color:var(--accent-ink); font-size:9px; font-weight:800; display:flex; align-items:center; justify-content:center; z-index:2; }
.tl-cov-title{ position:sticky; left:0; padding:6px 9px; font-size:11px; font-weight:800; color:var(--link);
  background:var(--surface-2); border-top:2px solid var(--line-strong); }
.tl-row.cov{ border-bottom:1px solid var(--line); } .tl-row.cov .tl-name{ background:var(--surface-2); font-size:11.5px; }
.cov-day{ display:flex; height:24px; align-items:stretch; }
.cov-slot{ flex:1 1 0; display:flex; align-items:center; justify-content:center; font-size:9px; font-weight:700;
  color:var(--muted); border-left:1px solid var(--grid-line); font-family:var(--font-mono); }
.cov-slot.under{ background:var(--bad-bg); color:var(--bad); }

/* ============================ HEUTE-BOARD ============================ */
.drv-list{ list-style:none; margin:0; padding:0; }
.drv-list li{ display:flex; align-items:center; gap:8px; padding:6px 4px; border-bottom:1px dashed var(--line); font-size:13px; }
.drv-list li:last-child{ border-bottom:0; }
.drv-list li.later{ opacity:.72; }
.drv-list .dl-name{ font-weight:700; }
.drv-list .dl-time{ color:var(--link); font-variant-numeric:tabular-nums; font-family:var(--font-mono); font-weight:700; margin-left:auto; }
.drv-list li .pill{ margin-left:6px; }

/* ============================ FLOTTE ============================ */
.fleetgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:10px; }
.drvcard{ padding:10px 12px; border-left:4px solid var(--accent); }
.drvcard.idle{ border-left-color:var(--line-strong); opacity:.8; }
.drvcard .top{ display:flex; align-items:center; gap:8px; }
.drvcard .top .id{ font-weight:800; color:var(--ink); text-transform:capitalize; }
.drvcard .top .vt{ margin-left:auto; font-size:10px; font-weight:700; color:var(--on-primary); background:var(--primary); padding:2px 7px; border-radius:var(--radius-pill); }
.drvcard .line{ font-size:11.5px; color:var(--ink-2); margin-top:5px; }
.drvcard .prog{ height:6px; background:var(--surface-2); border-radius:999px; overflow:hidden; margin-top:7px; }
.drvcard .prog > i{ display:block; height:100%; background:linear-gradient(90deg,var(--primary),var(--accent)); }
#map{ height:440px; border-radius:var(--radius); border:var(--border-w) solid var(--line-strong); margin-top:12px; }

/* ============================ FLOTTE: STOPP-DETAIL ============================ */
/* Status-Punkt (Timeline) — erledigt=grün, aktuell=orange, offen=grau */
.st-dot{ --dot:var(--muted); width:10px; height:10px; border-radius:50%; background:var(--dot);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--dot) 22%, transparent); flex:0 0 auto; }
.st--done .st-dot, .st-dot.st--done{ --dot:var(--ok); }
.st--current .st-dot, .st-dot.st--current{ --dot:var(--warn); }
.st--upcoming .st-dot, .st-dot.st--upcoming{ --dot:var(--muted); }
.mono{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; }

/* Timeline (Popup + Übersicht teilen dieselbe Komponente) */
.timeline{ list-style:none; margin:0; padding:0; position:relative; }
.timeline::before{ content:""; position:absolute; left:14px; top:8px; bottom:8px; width:2px; background:var(--line); }
.tl-item{ position:relative; display:grid; grid-template-columns:20px 50px 1fr; gap:10px;
  align-items:start; padding:8px 0; }
.tl-item .st-dot{ margin-top:3px; z-index:1; }
.tl-item time{ font-size:.82rem; color:var(--ink-2); font-family:var(--font-mono); }
.tl-main{ min-width:0; }
.tl-line1{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.tl-addr{ color:var(--ink-2); font-size:.82rem; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.st--done .tl-addr, .st--done .tl-line1{ opacity:.55; }
.st--done time{ text-decoration:line-through; color:var(--muted); }
.st--current{ background:color-mix(in srgb, var(--warn) 12%, transparent); border-left:3px solid var(--warn);
  border-radius:var(--radius-sm); margin-left:-8px; padding-left:12px; padding-right:8px; }
.st--current time{ color:var(--warn); font-weight:700; }
.st--upcoming .tl-addr{ color:var(--muted); }
.kind{ font-size:.7rem; padding:1px 7px; border-radius:var(--radius-pill); line-height:1.5;
  border:1px solid var(--line-strong); color:var(--ink-2); }
.kind--ab{ background:var(--accent-soft); border-color:transparent; color:var(--ink); }

/* Auftrag als kompakte, farbcodierte Box (Popup + Übersicht teilen sie) */
.stopgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:8px; }
.stopbox{ border:1px solid var(--line); border-left:4px solid var(--muted); border-radius:var(--radius-sm);
  background:var(--surface-2); padding:7px 9px; font-size:11.5px; overflow:hidden; min-width:0; }
.stopbox .sb-top{ display:flex; justify-content:space-between; align-items:baseline; gap:6px; }
.stopbox .sb-eta{ font-weight:800; color:var(--ink); font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
.stopbox .sb-ref{ color:var(--muted); font-family:var(--font-mono); font-size:9.5px; white-space:nowrap; }
.stopbox .sb-mid{ margin-top:3px; font-weight:700; color:var(--ink-2); display:flex; gap:6px; align-items:center; }
.stopbox .sb-kind{ font-size:9px; text-transform:uppercase; letter-spacing:.4px; padding:1px 5px; border-radius:4px;
  background:var(--card); border:1px solid var(--line); }
.stopbox .sb-addr{ color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:2px; }
.stopbox .sb-fix{ margin-top:2px; font-size:11px; font-weight:700; color:var(--warn); }
.stopbox .sb-fix.over{ color:var(--bad); }
.stopbox.s-done{ background:var(--ok-bg); border-left-color:var(--ok); }
.stopbox.s-done .sb-eta{ text-decoration:line-through; color:var(--muted); }
.stopbox.s-done .sb-mid, .stopbox.s-done .sb-addr{ opacity:.7; }
.stopbox.s-current{ background:var(--warn-bg); border-left-color:var(--warn); box-shadow:inset 0 0 0 1px var(--warn); }
.stopbox.s-current .sb-eta{ color:var(--warn); }
.stopbox.s-upcoming{ background:var(--surface-2); border-left-color:var(--muted); }
.stopbox.s-late{ background:var(--bad-bg); border-left-color:var(--bad); }
.stopbox.s-late .sb-eta{ color:var(--bad); }
.tile.clickable{ cursor:pointer; }
.tile.clickable:hover{ box-shadow:var(--card-hover); }
.tile.clickable .foot{ color:var(--link); font-weight:700; }

/* Fahrer-Tagestimeline (Swimlane, kompakt — ganze Tour in einem View) */
.dtl{ padding:8px 18px 4px; border-bottom:1px solid var(--line); }
.dtl-kpis{ display:flex; flex-wrap:wrap; gap:5px; margin-bottom:7px; }
.dtl-chip{ display:inline-flex; align-items:center; gap:5px; padding:2px 7px; border:1px solid var(--line);
  border-radius:var(--radius-sm); background:var(--surface-2); font-size:10.5px; color:var(--ink-2); }
.dtl-chip b{ font:700 11px/1 var(--font-mono); color:var(--ink); font-variant-numeric:tabular-nums; }
.dtl-chip.is-warn{ border-color:var(--warn); color:var(--warn); } .dtl-chip.is-warn b{ color:var(--warn); }
.dtl-scroll{ overflow:hidden; }
.dtl-track{ position:relative; width:100%; }
.dtl-axis{ position:relative; height:14px; }
.dtl-tick{ position:absolute; top:0; transform:translateX(-50%); }
.dtl-tick::before{ content:""; position:absolute; left:50%; top:14px; width:1px; height:26px; background:var(--line); }
.dtl-tick span{ font:9px/1 var(--font-mono); color:var(--muted); }
.dtl-band{ position:relative; height:24px; margin-top:1px; }
.seg{ position:absolute; box-sizing:border-box; }
.seg-drive{ top:50%; height:3px; transform:translateY(-50%); background:var(--line-strong); border-radius:99px; z-index:1; }
.seg-dwell{ top:3px; height:18px; min-width:2px; z-index:2; border-radius:4px;
  display:flex; align-items:center; justify-content:center; overflow:hidden; border:1px solid rgba(0,0,0,.12); cursor:default; }
.seg-dwell .lbl{ font:700 8.5px/1 var(--font-mono); color:#fff; text-shadow:0 1px 1px rgba(0,0,0,.35); padding:0 3px; white-space:nowrap; }
.seg-dwell.state-done{ background:var(--ok); }
.seg-dwell.state-current{ background:var(--warn); }
.seg-dwell.state-upcoming{ background:var(--surface-2); }
.seg-dwell.state-upcoming .lbl{ color:var(--ink-2); text-shadow:none; }
.seg-dwell.is-long{ outline:2px solid var(--bad); outline-offset:-1px;
  background-image:repeating-linear-gradient(45deg, rgba(255,255,255,.28) 0 4px, transparent 4px 8px); }
.seg-dwell.is-long::after{ content:"⚠"; position:absolute; top:-4px; right:0; font-size:9px; }
.seg-gap{ top:6px; height:12px; min-width:2px; z-index:2; border:1px dashed var(--line-strong); border-radius:4px;
  background:repeating-linear-gradient(45deg, var(--surface-2) 0 5px, transparent 5px 10px);
  display:flex; align-items:center; justify-content:center; }
.seg-gap .lbl{ font:8.5px/1 var(--font-mono); color:var(--muted); padding:0 3px; white-space:nowrap; }
.seg.is-planned{ opacity:.5; }
.seg-dwell.is-planned{ border-style:dashed; }
.dtl-now{ position:absolute; top:0; bottom:0; width:0; z-index:5; }
.dtl-now::before{ content:""; position:absolute; top:11px; bottom:4px; width:2px; background:var(--accent); }
.dtl-now-lbl{ position:absolute; top:-1px; left:3px; padding:0 4px; font:700 8.5px/1.5 var(--font-mono);
  color:var(--on-primary); background:var(--accent); border-radius:3px; white-space:nowrap; }
.dtl-note{ font-size:10px; color:var(--muted); margin-top:3px; }
.dtl-tip{ position:fixed; z-index:200; max-width:260px; pointer-events:none; padding:8px 10px;
  border:1px solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink);
  box-shadow:var(--shadow-md); font-size:12px; }
.dtl-tip .t-h{ font-weight:700; margin-bottom:3px; }
.dtl-tip .t-r{ color:var(--ink-2); }
.dtl-tip .t-r b{ font-family:var(--font-mono); color:var(--ink); }

/* Fahrer-Detail-Modal (breit, Boxen wrappen) */
.drv-modal{ width:min(1000px,96vw); max-height:88vh; display:flex; flex-direction:column; padding:0; }
.drv-modal .modal-head{ padding:14px 18px 10px; margin:0; align-items:flex-start; }
.drv-title{ font-size:1.15rem; font-weight:800; color:var(--ink); text-transform:capitalize; }
.drv-sub{ color:var(--muted); font-size:.82rem; margin-top:2px; }
.drv-progress{ padding:10px 18px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.drv-progress-row{ display:flex; justify-content:space-between; font-size:.82rem; margin-bottom:6px; }
.bar{ height:8px; border-radius:999px; background:var(--surface-2); overflow:hidden; }
.bar-fill{ display:block; height:100%; width:var(--p,0%); background:var(--ok); border-radius:999px; }
.drv-body{ overflow-y:auto; padding:10px 18px 18px; }
.drvcard{ cursor:pointer; }
.drvcard:hover{ box-shadow:var(--card-hover); }

/* "Alle Fahrer"-Übersicht */
.allview{ margin-top:14px; }
.allview-bar{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
.allview-tools{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.btn-ghost{ background:transparent; border:var(--border-w) solid var(--line-strong); color:var(--ink-2);
  border-radius:var(--radius-sm); padding:5px 11px; cursor:pointer; font:inherit; font-size:12px; font-weight:700; }
.btn-ghost:hover{ border-color:var(--primary); color:var(--ink); }
.allgrid{ display:grid; gap:12px; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); align-items:start; }
.drvcard-x{ background:var(--card); border:var(--border-w) solid var(--line-strong); border-radius:var(--radius);
  overflow:hidden; display:flex; flex-direction:column; }
.dx-head{ display:grid; align-items:center; gap:10px; grid-template-columns:1fr auto 60px auto;
  padding:11px 13px; border-bottom:1px solid var(--line); }
.dx-name{ font-weight:800; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-transform:capitalize; }
.dx-name .muted{ text-transform:none; font-weight:600; }
.dx-stat{ font-size:.8rem; display:flex; gap:7px; font-family:var(--font-mono); }
.c-ok{ color:var(--ok); } .c-warn{ color:var(--warn); }
.dx-bar{ height:6px; border-radius:999px; background:var(--surface-2); overflow:hidden; }
.dx-bar i{ display:block; height:100%; width:var(--p); background:var(--ok); }
.dx-eta{ color:var(--warn); font-weight:700; font-size:.8rem; font-family:var(--font-mono); }
.drvcard-x .stopgrid{ grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:6px; padding:10px 12px; max-height:340px; overflow-y:auto; }
.drvcard-x.idle{ opacity:.72; }

/* Karte: Legende, Chips, Popup-Theming */
.mapwrap{ position:relative; margin-top:12px; }
.map-legend{ position:absolute; right:12px; bottom:12px; z-index:500; display:flex; gap:14px;
  padding:7px 12px; font-size:.8rem; }
.lg{ width:11px; height:11px; border-radius:50%; display:inline-block; margin-right:5px; vertical-align:-1px; }
.lg--ok{ background:var(--ok); } .lg--warn{ background:var(--warn); } .lg--muted{ background:var(--muted); }
.lg--route{ background:var(--ink-2); border-radius:2px; height:4px; }
.map-chips{ position:absolute; right:12px; top:12px; z-index:500; display:flex; flex-wrap:wrap;
  justify-content:flex-end; gap:6px; max-width:62%; }
.map-chips .pill{ cursor:pointer; user-select:none; opacity:.6; text-transform:capitalize; }
.map-chips .pill[aria-pressed="true"]{ opacity:1; box-shadow:var(--shadow-md); }
.map-chips .pill .chip-sw{ display:inline-block; width:9px; height:9px; border-radius:2px; margin-right:5px; vertical-align:0; }
.leaflet-popup-content-wrapper, .leaflet-popup-tip{ background:var(--card); color:var(--ink); box-shadow:var(--shadow-md); }
.leaflet-popup-content{ font-family:var(--font); margin:10px 12px; }
.lp-ref{ font-family:var(--font-mono); font-weight:700; text-transform:capitalize; }
.lp-meta{ color:var(--muted); font-size:.8rem; margin-top:2px; }

/* ============================ BUCHUNG (VeloceClassic-Maske) ============================ */
.badge .dot-ok{ width:7px; height:7px; border-radius:50%; background:var(--ok); display:inline-block; }
.hide{ display:none !important; }
/* hidden-Attribut muss display:flex/grid der Komponenten schlagen */
[hidden]{ display:none !important; }
.bkf-h .ic-svg{ width:18px; height:18px; }

/* --- Grundgerüst --- */
.bkf{ display:flex; flex-direction:column; gap:12px; }
.bkf-cols{ display:grid; grid-template-columns:1fr 1fr; gap:12px; align-items:start; }
@media (max-width:900px){ .bkf-cols{ grid-template-columns:1fr; } }
.bkf-h{ margin:0 0 12px; font-size:14px; font-weight:800; color:var(--ink); display:flex; align-items:center; gap:9px; }
.bkf-num{ width:22px; height:22px; flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center;
  border-radius:var(--radius-sm); background:var(--accent); color:var(--accent-ink); font-size:12px; font-weight:800; }
.bkf-hint{ margin-left:auto; font-size:11.5px; font-weight:600; color:var(--muted); }
.bkf-hint.need{ color:var(--bad); }
.bkf-label{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); font-weight:800; margin-bottom:6px; }

/* --- Felder --- */
.bkf-fields{ display:flex; flex-direction:column; gap:9px; }
.bkf-full{ width:100%; }
.bkf-row{ display:grid; gap:9px; }
.bkf-row.r-8-4{ grid-template-columns:2fr 1fr; }
.bkf-row.r-3{ grid-template-columns:1fr 1fr 1fr; }
.bkf-row.r-2{ grid-template-columns:1fr 1fr; }
.bkf-row.r-date{ grid-template-columns:1fr; }
@media (max-width:520px){ .bkf-row.r-8-4, .bkf-row.r-3, .bkf-row.r-2{ grid-template-columns:1fr; } }
.bkf-addr-tools{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:11px;
  padding-top:11px; border-top:1px solid var(--line); }
.bkf-addr-tools .btn-ghost{ font-size:12px; padding:6px 11px; }
.bkf-addr-tools .chk{ font-size:12.5px; }
/* Absenderadressen-Picker (nur eingeloggter Kunde) */
.bkf-saddr{ margin-bottom:11px; padding-bottom:11px; border-bottom:1px solid var(--line); }
.bkf-saddr-row{ display:flex; align-items:center; gap:8px; }
.bkf-saddr-row select{ flex:1 1 auto; min-width:0; }
.bkf-saddr-star{ white-space:nowrap; font-size:12px; padding:6px 11px; }
.bkf-saddr-tools{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:8px; }
.bkf-saddr-tools .btn-ghost{ font-size:12px; padding:6px 11px; }
.bkf-saddr-tools .chk{ font-size:12.5px; }
.bkf-saddr-msg{ font-size:12px; }
.bkf-saddr-msg.ok{ color:var(--ok,#1a7f37); }
.bkf-saddr-msg.warn{ color:var(--warn,#b04a12); }
.btn-ghost .ic-svg{ width:14px; height:14px; vertical-align:-2px; }

/* --- Auftraggeber --- */
.bkf-client-row{ display:flex; align-items:center; gap:13px; }
.bkf-sec-badge{ width:36px; height:36px; flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center;
  border-radius:var(--radius-sm); background:var(--surface-2); color:var(--link); border:1px solid var(--line); }
.bkf-sec-badge .ic-svg{ width:19px; height:19px; }
.bkf-client-body{ flex:1 1 auto; min-width:0; }
.bkf-client-picked{ display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px; }
.bkf-client-picked b{ font-size:15px; color:var(--ink); }
.bkf-client-row .btn-new{ flex:0 0 auto; }
.bkf-prefill{ margin-top:11px; padding-top:11px; border-top:1px solid var(--line); font-size:12.5px; }

/* --- Sendungstyp --- */
.bkf-parcels{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; }
.bkf-pgroup{ border:1px solid var(--line); border-radius:var(--radius-sm); padding:9px; background:var(--surface-2); }
.bkf-pgroup-h{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); font-weight:800;
  margin-bottom:8px; display:flex; align-items:center; justify-content:center; gap:7px; }
.bkf-pgroup-ic{ width:24px; height:24px; object-fit:contain; opacity:.9; }
:root[data-theme="dark"] .bkf-pgroup-ic{ filter:invert(1) brightness(1.5); opacity:.85; }
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .bkf-pgroup-ic{ filter:invert(1) brightness(1.5); opacity:.85; } }
.bkf-pgroup-items{ display:flex; flex-direction:column; gap:7px; }
.bkf-parcel{ display:flex; flex-direction:column; gap:2px; padding:9px 10px; text-align:left; cursor:pointer;
  border:var(--border-w) solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); }
.bkf-parcel:hover{ border-color:var(--primary); }
.bkf-parcel.sel{ border-color:var(--accent); box-shadow:0 0 0 2px var(--accent) inset; background:var(--accent-soft); }
.bkf-parcel-name{ font-weight:800; font-size:13px; }
.bkf-parcel-spec{ font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; }
.bkf-desc-row{ margin-top:12px; display:flex; flex-direction:column; gap:6px; }

/* --- Zeitoption --- */
.bkf-services{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; }
.bkf-service{ display:flex; flex-direction:column; gap:3px; padding:11px 12px; text-align:left; cursor:pointer;
  border:var(--border-w) solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); }
.bkf-service:hover{ border-color:var(--primary); }
.bkf-service.sel{ border-color:var(--accent); box-shadow:0 0 0 2px var(--accent) inset; background:var(--accent-soft); }
.bkf-service-name{ font-weight:800; font-size:14px; }
.bkf-service-detail{ display:none; flex-direction:column; gap:2px; margin-top:5px; }
#services.ready .bkf-service-detail{ display:flex; }
.bkf-svc-line{ font-size:11.5px; color:var(--muted); }
.bkf-svc-line.is-direct{ color:var(--warn); font-weight:800; letter-spacing:.2px; }
.bkf-svc-price{ font-size:12.5px; font-weight:800; color:var(--ink); margin-top:4px; }
.bkf-price-val{ color:var(--muted); font-weight:700; }
.bkf-service-wish{ border-style:dashed; }
.bkf-times{ display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:12px; margin-top:14px;
  padding-top:14px; border-top:1px solid var(--line); }
.bkf-time-h{ font-size:12px; font-weight:800; color:var(--ink); margin-bottom:7px; }
.bkf-time{ display:flex; flex-direction:column; gap:7px; }

/* --- Optionen + Buchen --- */
.bkf-opt-toggle{ display:block; width:100%; text-align:left; margin-bottom:9px; }
.bkf-opt-toggle.open{ border-color:var(--accent); }
.bkf-opt{ display:flex; flex-direction:column; gap:9px; margin-bottom:12px; }
.bkf-confirm{ display:flex; flex-direction:column; gap:11px; justify-content:center; }
.bkf-book{ justify-content:center; padding:12px; font-size:15px; }
.chk-terms.alert, .terms-select.alert{ color:var(--bad); }
.chk-terms.alert input{ outline:2px solid var(--bad); }

/* --- Auftraggeber-Picker (Modal + Fragment) --- */
.bkf-modal{ max-width:640px; width:94%; }
.bk-search{ position:relative; display:flex; align-items:center; margin:4px 0 12px; }
.bk-search .bk-search-ic{ position:absolute; left:11px; display:inline-flex; color:var(--muted); pointer-events:none; }
.bk-search .bk-search-ic .ic-svg{ width:16px; height:16px; }
.bk-search input[type="search"]{ padding-left:34px; }
.bk-load{ position:absolute; right:12px; font-size:11px; color:var(--muted); opacity:0; transition:opacity .15s; }
.bk-load.htmx-request, .htmx-request .bk-load{ opacity:1; }
.bk-picker-scroll{ max-height:52vh; overflow-y:auto; }
.bk-picker-list{ display:flex; flex-direction:column; gap:6px; }
.bk-pick{ display:flex; align-items:center; gap:11px; width:100%; text-align:left; cursor:pointer;
  padding:9px 11px; border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); }
.bk-pick:hover{ border-color:var(--primary); background:var(--surface-2); }
.bk-pick-num{ flex:0 0 auto; color:var(--link); font-weight:700; min-width:60px; }
.bk-pick-main{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; }
.bk-pick-main b{ color:var(--ink); }
.bk-pick-main .muted{ font-size:11.5px; }
.bk-pick.is-locked{ opacity:.6; }
.bk-mc{ display:inline-block; margin-left:6px; font-size:10.5px; color:var(--muted);
  background:var(--surface-2); border:1px solid var(--line); padding:0 5px; border-radius:4px; }
.bk-empty{ padding:22px 12px; text-align:center; color:var(--muted); border:1px dashed var(--line-strong); border-radius:var(--radius-sm); }

/* --- Zusammenfassung --- */
.bkf-sum-client{ margin-bottom:12px; }
.bkf-sum-stops{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; margin-bottom:12px; }
.bkf-sum-addr{ border:1px solid var(--line); border-radius:var(--radius-sm); padding:9px 11px; background:var(--surface-2); }
.bkf-sum-t{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); font-weight:800; margin-bottom:4px; }
.bkf-sum-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.bkf-sum-chip{ display:inline-flex; flex-direction:column; padding:5px 11px; border-radius:var(--radius-sm);
  background:var(--surface-2); border:1px solid var(--line); }
.bkf-sum-chip .k{ font-size:9.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); font-weight:800; }
.bkf-sum-chip .v{ font-size:13px; font-weight:700; color:var(--ink); }
.bkf-summary-tools{ margin-top:14px; }

/* ---- Buchungsmaske: kompaktes Ein-Seiten-Layout ---- */
.bkf{ gap:10px; }
.bkf input:not([type="checkbox"]):not([type="radio"]), .bkf select{ padding:7px 9px; font-size:13px; }
.bkf .card{ padding:12px 13px; }
.bkf-fields{ gap:7px; }
.bkf-row{ gap:7px; }
.bkf .bkf-h{ margin:0 0 9px; font-size:13px; }
/* Reihe: Auftraggeber (Breite = Absender+Empfänger) | E-Mail (Breite = Sendungstyp).
   Exakt dieselbe 3-Spalten-Aufteilung + Gap wie die Reihe darunter -> spaltenbündig. */
.bkf-cols-top{ grid-template-columns:1fr 1fr 1fr; align-items:stretch; }
.bkf-cols-top .bkf-client{ grid-column:1 / span 2; }
.bkf-cols-top .bkf-mail{ grid-column:3; }
.bkf-mail{ display:flex; flex-direction:column; gap:6px; justify-content:center; }
.bkf-mail .bkf-label{ margin-bottom:0; }
@media (max-width:1080px){
  .bkf-cols-top{ grid-template-columns:1fr 1fr; }
  .bkf-cols-top .bkf-client{ grid-column:1 / span 1; }
  .bkf-cols-top .bkf-mail{ grid-column:2; }
}
@media (max-width:720px){
  .bkf-cols-top{ grid-template-columns:1fr; }
  .bkf-cols-top .bkf-client, .bkf-cols-top .bkf-mail{ grid-column:auto; }
}
/* Reihe: Absender | Empfänger | Sendungstyp (drei gleich große Boxen);
   Adresse 3/4 fließen als weitere gleich große Boxen in dieselbe Reihe. */
.bkf-cols3{ grid-template-columns:1fr 1fr 1fr; align-items:stretch; }
@media (max-width:1080px){ .bkf-cols3{ grid-template-columns:1fr 1fr; } }
@media (max-width:720px){ .bkf-cols3{ grid-template-columns:1fr; } }
/* Adressfelder im schmalen 1/3-Feld nicht quetschen (Container-Query) */
.bkf-addr{ container-type:inline-size; }
@container (max-width:360px){
  .bkf-addr .bkf-row.r-3{ grid-template-columns:1fr 1fr; }   /* PLZ|Ort; Land bricht um */
}
/* Sendungstyp: 6 Typen als 2er-Paare (3 Reihen × 2), je Kachel Name + volle Maße.
   Damit ist die Box so hoch wie Absender/Empfänger (Reihe stretch füllt Restraum). */
.bkf-parcel-card{ display:flex; flex-direction:column; min-height:0; }
.bkf-parcel-card .bkf-parcels{ flex:1 1 auto; min-height:0; overflow-y:auto; grid-template-columns:1fr 1fr; gap:6px; align-content:start; }
.bkf-parcel-card .bkf-parcel{ display:flex; flex-direction:column; gap:2px; padding:7px 9px; min-width:0; }
.bkf-parcel-card .bkf-parcel-name{ font-size:12px; font-weight:800; line-height:1.15; }
.bkf-parcel-card .bkf-parcel-spec{ font-size:10px; color:var(--muted); line-height:1.2; font-variant-numeric:tabular-nums; }
.bkf-parcel-card .bkf-desc-row{ margin-top:8px; flex:0 0 auto; }
/* Untere Reihe: Optionen (Kostenstelle/Barauslagen) und „Auftrag buchen" gleich groß */
.bkf-cols-bottom{ align-items:stretch; }
/* Wunschzeit → erkannte Zeitoption */
.bkf-wunsch-info{ margin-top:10px; padding:9px 12px; border-radius:var(--radius-sm); font-size:13px;
  border:1px solid var(--line); border-left:3px solid var(--accent); background:var(--accent-soft); color:var(--ink); }
.bkf-wunsch-info.ok{ border-left-color:var(--ok); }
.bkf-wunsch-info.warn{ border-left-color:var(--warn); }
.bkf-wunsch-info b{ color:var(--ink); }
/* Wunschzeit: native Datum-/Uhrzeit-Picker mit Mini-Label */
.bkf-tl{ display:flex; flex-direction:column; gap:3px; font-size:10px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); font-weight:700; }
.bkf-tl input{ width:100%; }

/* ============================ DISPO-BOARD ============================ */
.db-toolbar{ display:flex; flex-wrap:wrap; align-items:center; gap:14px 18px; margin-bottom:12px; }
.db-toggles{ display:flex; flex-wrap:wrap; gap:14px; }
.db-toggles .chk{ font-size:12.5px; }
.db-prods{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.db-prods-lbl{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); font-weight:800; margin-right:2px; }
.db-prod{ padding:3px 10px; border-radius:var(--radius-pill); border:1px solid var(--line-strong);
  background:var(--card); color:var(--ink-2); font-size:11.5px; font-weight:700; cursor:pointer; }
.db-prod:hover{ border-color:var(--primary); }
.db-prod.on{ background:var(--accent); color:var(--accent-ink); border-color:var(--accent); }

.db-wrap{ padding:0 !important; overflow:hidden; }
.db-scroll{ overflow-x:auto; max-height:calc(100vh - 230px); overflow-y:auto; }
.db-table{ width:100%; border-collapse:collapse; font-size:12.5px; }
.db-table thead th{ position:sticky; top:0; z-index:2; text-align:left; background:var(--surface-2);
  color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800;
  padding:9px 12px; border-bottom:var(--border-w) solid var(--line-strong); white-space:nowrap; }
.db-table th.c, .db-table td.c{ text-align:center; }
.db-table tbody td{ padding:8px 12px; border-bottom:1px solid var(--line); vertical-align:top; }
.db-table tr.sr-grp td{ background:var(--surface-2); font-size:11px; font-weight:800; color:var(--ink-2);
  text-transform:uppercase; letter-spacing:.4px; padding:6px 12px; border-bottom:2px solid var(--line-strong); }
.db-table tr.sr-grp td .mono{ text-transform:none; letter-spacing:0; }
.db-table tbody tr:hover{ background:var(--surface-2); }
.db-empty{ padding:26px 12px !important; text-align:center; color:var(--muted); }
.db-ref{ color:var(--link); font-weight:700; }
.db-pkg{ margin-left:6px; font-size:10px; font-weight:700; color:var(--muted); }
.db-prod-tag{ display:inline-block; padding:2px 8px; border-radius:var(--radius-sm); background:var(--surface-2);
  border:1px solid var(--line); font-weight:700; font-size:11px; white-space:nowrap; }
.db-prio{ display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; padding:0 5px;
  border-radius:var(--radius-sm); font-weight:800; font-size:11px; font-variant-numeric:tabular-nums; }
.db-prio.phi{ background:var(--bad-bg); color:var(--bad); } .db-prio.pmid{ background:var(--surface-2); color:var(--ink-2); }
.db-prio.plo{ background:var(--surface-2); color:var(--muted); }
.db-addr{ display:flex; flex-direction:column; line-height:1.3; }
.db-addr b{ color:var(--ink); font-weight:700; }
.db-addr .muted{ font-size:11px; }
.db-time{ display:block; margin-top:3px; font-size:11px; color:var(--muted); }
.db-drv{ font-weight:700; color:var(--ink); text-transform:capitalize; }
.db-kunde{ font-size:11.5px; white-space:nowrap; }
/* Status-Pill je Ton */
.db-st{ display:inline-block; padding:2px 9px; border-radius:var(--radius-pill); font-size:10.5px; font-weight:800; white-space:nowrap; }
.st-open{ background:var(--accent-soft); color:var(--accent-ink); }
.st-assigned{ background:var(--warn-bg); color:var(--warn); }
.st-reserved{ background:var(--ok-bg); color:var(--ok); }
.st-planned{ background:var(--surface-2); color:var(--ink-2); border:1px solid var(--line-strong); }
.st-ops{ background:var(--surface-2); color:var(--muted); border:1px dashed var(--line-strong); }
.st-alert{ background:var(--bad-bg); color:var(--bad); }
.st-done{ background:var(--ok-bg); color:var(--ok); }
/* Suche: Filterleiste + Ergebnisspalten */
.sr-search{ margin-bottom:10px; }
.sr-filters{ display:flex; flex-wrap:wrap; gap:16px; }
.sr-f{ font-size:11px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); font-weight:800;
  display:flex; align-items:center; gap:8px; }
.sr-f select{ width:auto; text-transform:none; letter-spacing:0; font-weight:600; color:var(--ink); }
.sr-date{ color:var(--muted); font-size:11.5px; white-space:nowrap; }
.sr-ref{ font-weight:700; color:var(--ink); }
.sr-kunde{ font-size:12px; white-space:nowrap; }
.sr-route{ font-size:12px; }
:root[data-theme="dark"] .st-open{ background:var(--accent-soft); color:var(--accent); }
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .st-open{ background:var(--accent-soft); color:var(--accent); } }

/* ============================ AUFTRAGS-DETAIL ============================ */
.db-row{ cursor:pointer; }
.od-back{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.od-back .spacer{ flex:1 1 auto; }
.od-actions{ display:flex; gap:10px; margin-bottom:14px; }
.od-actions .btn-new .ic-svg{ width:15px; height:15px; vertical-align:-2px; }
/* „An Fahrer vergeben"-Dialog */
.asg-rec{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:10px 12px; margin-bottom:10px;
  background:var(--ok-bg); border:1px solid var(--ok); border-radius:var(--radius-sm); }
.asg-rec-lbl{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--ok); }
.asg-rec b{ color:var(--ink); }
.asg-rec-meta{ font-size:12px; color:var(--ink-2); font-variant-numeric:tabular-nums; }
.asg-rec-hint{ margin-left:auto; font-size:11px; color:var(--muted); }
.asg-search{ margin-bottom:10px; }
.asg-search input{ width:100%; box-sizing:border-box; padding:7px 11px; font:inherit; font-size:13px;
  border:1px solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); }
.asg-search input:focus{ outline:none; border-color:var(--primary); }
.asg-results .bk-empty, .asg-results .muted-note{ padding:10px 2px; }
.asg-list{ display:flex; flex-direction:column; gap:6px; max-height:52vh; overflow-y:auto; }
.asg-drv{ display:grid; grid-template-columns:1fr auto; align-items:center; gap:2px 12px; width:100%; text-align:left;
  padding:9px 12px; border:1px solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); cursor:pointer; }
.asg-drv:hover{ border-color:var(--primary); background:var(--surface-2); }
.asg-drv-name{ font-weight:800; }
.asg-drv-meta{ grid-column:1; font-size:11.5px; color:var(--muted); }
.asg-drv-pick{ grid-column:2; grid-row:1 / span 2; align-self:center; font-size:11.5px; color:var(--link); font-weight:700; white-space:nowrap; }
.asg-drv{ border-left-width:4px; }
.asg-drv.t-recommended{ border-left-color:var(--ok); }
.asg-drv.t-suggested{ border-left-color:var(--warn); }
.asg-drv.t-active{ border-left-color:var(--line-strong); }
.asg-drv-badge{ display:inline-block; font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; padding:1px 6px; border-radius:6px; margin-right:7px; vertical-align:1px; }
.asg-drv.t-recommended .asg-drv-badge{ background:var(--ok-bg); color:var(--ok); }
.asg-drv.t-suggested .asg-drv-badge{ background:var(--warn-bg); color:var(--warn); }
.asg-drv.t-active .asg-drv-badge{ background:var(--surface-2); color:var(--muted); }
.asg-legend{ display:flex; gap:14px; margin-top:9px; font-size:10.5px; }
.asg-lg{ text-transform:uppercase; letter-spacing:.04em; font-weight:700; }
.asg-lg.t-recommended{ color:var(--ok); } .asg-lg.t-suggested{ color:var(--warn); } .asg-lg.t-active{ color:var(--muted); }
.asg-confirm{ padding:8px 4px; }
.asg-confirm-q{ font-size:15px; margin-bottom:14px; }
.asg-confirm-actions{ display:flex; gap:10px; align-items:center; }
.asg-confirm-actions .btn-new[disabled]{ opacity:.5; cursor:not-allowed; }
.asg-note{ margin-top:14px; font-size:12px; color:var(--warn); background:var(--warn-bg); padding:9px 11px; border-radius:var(--radius-sm); }
.od-back .btn-ghost{ font-size:12.5px; padding:5px 11px; }
.od-back .ic-svg{ width:14px; height:14px; vertical-align:-2px; }
.od-notfound{ text-align:center; }
.od-ref{ font-size:22px !important; letter-spacing:0 !important; }
.od-status{ font-size:12px; padding:4px 12px; }
.od-sub{ margin:-8px 0 14px; }
.od-copy{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; padding:0;
  border:1px solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--muted); cursor:pointer; }
.od-copy:hover{ border-color:var(--primary); color:var(--ink); }
.od-copy.ok{ border-color:var(--ok); color:var(--ok); }
.od-copy.fail{ border-color:var(--bad); color:var(--bad); }
.od-copy.sm{ width:20px; height:20px; vertical-align:-4px; }
.od-copy .ic-svg{ width:13px; height:13px; }

/* Warnband */
.od-warnband{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.od-warn{ padding:6px 12px; border-radius:var(--radius-sm); font-size:12.5px; font-weight:700; border:1px solid transparent; }
.od-warn.w-bad{ background:var(--bad-bg); color:var(--bad); border-color:var(--bad); }
.od-warn.w-warn{ background:var(--warn-bg); color:var(--warn); border-color:var(--warn); }

/* Top-Boxen */
.od-top{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; align-items:start; }
@media (max-width:820px){ .od-top{ grid-template-columns:1fr; } }
.od-kv{ display:grid; grid-template-columns:110px 1fr; gap:8px; padding:5px 0; font-size:13px; border-bottom:1px solid var(--line); }
.od-kv:last-of-type{ border-bottom:none; }
.od-kv .k{ color:var(--muted); font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; padding-top:2px; }
.od-kv .v{ color:var(--ink); font-weight:600; }
.od-prog{ height:7px; border-radius:999px; background:var(--surface-2); overflow:hidden; margin:8px 0; }
.od-prog i{ display:block; height:100%; width:var(--p); background:var(--ok); }
.od-eta{ margin-top:12px; justify-content:center; }
.od-eta .ic-svg{ width:15px; height:15px; }

/* Route / Stopp-Timeline */
.od-route{ display:flex; flex-direction:column; }
.od-stop{ display:grid; grid-template-columns:26px 1fr; gap:12px; }
.od-stop-rail{ display:flex; flex-direction:column; align-items:center; }
.od-dot{ width:14px; height:14px; border-radius:50%; margin-top:4px; flex:0 0 auto; background:var(--muted);
  box-shadow:0 0 0 3px var(--surface-2); z-index:1; }
.od-stop-rail::after{ content:""; flex:1 1 auto; width:2px; background:var(--line-strong); margin:3px 0; }
.od-stop:last-child .od-stop-rail::after{ display:none; }
.od-stop.s-done .od-dot{ background:var(--ok); }
.od-stop.s-current .od-dot{ background:var(--warn); box-shadow:0 0 0 4px var(--warn-bg); }
.od-stop.s-upcoming .od-dot{ background:var(--muted); }
.od-stop-body{ padding:2px 0 16px; min-width:0; }
.od-stop.s-current .od-stop-body{ background:var(--warn-bg); border-radius:var(--radius-sm); padding:8px 12px 12px; margin-bottom:6px; }
.od-stop-head{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:3px; }
.od-role{ font-size:10.5px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--muted); }
.od-win{ margin-left:auto; font-size:12px; color:var(--ink-2); font-weight:700; }
.od-stop-name b{ color:var(--ink); }
.od-stop-name{ font-size:12.5px; color:var(--ink-2); margin-top:1px; }
.od-stop-addr{ font-size:12.5px; color:var(--ink-2); margin-top:1px; }
.od-stop-addr-strong{ font-weight:800; color:var(--ink); font-size:13.5px; }
.od-map{ margin-left:8px; font-size:11.5px; white-space:nowrap; }
.od-map .ic-svg{ width:12px; height:12px; vertical-align:-2px; }
.od-stop-contact{ font-size:11.5px; margin-top:2px; }
.od-stop-comment{ font-size:12px; color:var(--ink-2); margin-top:4px; padding:5px 9px; background:var(--surface-2);
  border-left:3px solid var(--line-strong); border-radius:0 var(--radius-sm) var(--radius-sm) 0; }
.od-stop-times{ display:flex; flex-wrap:wrap; gap:12px; margin-top:5px; font-size:11.5px; color:var(--muted); }
.od-stop-times .c-ok{ color:var(--ok); }

/* Positionen / Kolli */
.od-items{ display:flex; flex-direction:column; }
.od-item{ display:grid; grid-template-columns:56px 1fr auto; gap:12px; align-items:center;
  padding:7px 0; border-bottom:1px solid var(--line); font-size:13px; }
.od-item:last-child{ border-bottom:none; }
.od-item-cnt{ color:var(--link); font-weight:700; text-align:right; }
.od-item-desc{ color:var(--ink); }
.od-item-wt{ color:var(--muted); font-size:12px; }
.od-item-sum{ border-top:var(--border-w) solid var(--line-strong); border-bottom:none; margin-top:2px; }
.od-item-sum .od-item-desc{ color:var(--ink); }

/* Verlauf / Timeline */
.od-hist{ display:flex; flex-direction:column; max-height:420px; overflow-y:auto; }
.od-ev{ display:grid; grid-template-columns:20px 1fr; gap:11px; }
.od-ev-rail{ display:flex; flex-direction:column; align-items:center; }
.od-ev-dot{ width:11px; height:11px; border-radius:50%; margin-top:5px; flex:0 0 auto;
  box-shadow:0 0 0 2px var(--surface-2); z-index:1; }
.od-ev-dot.st-open{ background:var(--accent); } .od-ev-dot.st-assigned{ background:var(--warn); }
.od-ev-dot.st-reserved{ background:var(--ok); } .od-ev-dot.st-planned{ background:var(--ink-2); }
.od-ev-dot.st-ops{ background:var(--muted); } .od-ev-dot.st-alert{ background:var(--bad); } .od-ev-dot.st-done{ background:var(--ok); }
.od-ev-rail::after{ content:""; flex:1 1 auto; width:2px; background:var(--line); margin:3px 0; }
.od-ev:last-child .od-ev-rail::after{ display:none; }
.od-ev-body{ padding:2px 0 12px; min-width:0; }
.od-ev.is-change .od-ev-body{ font-weight:600; }
.od-ev-top{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.od-ev-when{ font-size:11.5px; color:var(--muted); min-width:82px; }
.od-ev-meta{ font-size:11.5px; margin-top:2px; }

/* Änderungs-Event im Verlauf */
.od-dot-change{ background:var(--link) !important; }
.od-ev-tag{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--accent-ink);
  background:var(--accent-soft); padding:1px 8px; border-radius:var(--radius-pill); }
:root[data-theme="dark"] .od-ev-tag{ color:var(--accent); }
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .od-ev-tag{ color:var(--accent); } }
.od-changes{ display:flex; flex-wrap:wrap; gap:6px; margin-top:5px; }
.od-chg-topic{ font-size:11.5px; font-weight:600; color:var(--ink-2); background:var(--surface-2);
  border:1px solid var(--line); border-radius:var(--radius-pill); padding:2px 10px; }

/* Kommentar-Thread */
.od-comment{ padding:9px 0; border-bottom:1px solid var(--line); }
.od-comment:last-child{ border-bottom:none; }
.od-comment-head{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:3px; }
.od-comment-who{ font-weight:800; color:var(--ink); }
.od-comment-scope{ font-size:11px; color:var(--muted); }
.od-comment-when{ margin-left:auto; font-size:11.5px; color:var(--muted); }
.od-comment-text{ font-size:13px; color:var(--ink-2); white-space:pre-wrap; }
.od-comment.is-internal{ background:var(--surface-2); border-radius:var(--radius-sm); padding:9px 11px; margin:2px 0; border-bottom:none; }

/* Kommentare (Felder) */
.od-cmt{ font-size:13px; padding:7px 0; border-bottom:1px solid var(--line); }
.od-cmt:last-child{ border-bottom:none; }
.od-cmt-lbl{ display:inline-block; min-width:70px; font-size:10.5px; text-transform:uppercase; letter-spacing:.4px; font-weight:800; color:var(--muted); }
.od-foot{ margin-top:14px; }

/* ---- Order-Detail: Aktionsleiste + status-gefilterte EAS-Hinweise ---- */
.od-actbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:14px; }
.od-hints{ display:flex; gap:7px; flex-wrap:wrap; }
.od-hint{ position:relative; font-size:12px; color:var(--ink-2); background:var(--card);
  border:1px solid var(--line); border-radius:7px; padding:3px 10px; }
.od-hint::after{ content:"EAS"; position:absolute; top:-7px; right:-6px; font-size:8px; font-weight:800;
  background:var(--muted); color:var(--card); padding:1px 4px; border-radius:6px; letter-spacing:.04em; }
.od-hints-note{ font-size:11.5px; color:var(--muted); margin-left:auto; }
.od-auskunft{ display:flex; align-items:center; gap:9px; background:var(--accent-soft); border:1px solid var(--line);
  border-left:3px solid var(--accent); border-radius:var(--radius-sm); padding:9px 13px; margin-bottom:12px; font-size:13.5px; }
.od-auskunft .ic-svg{ width:16px; height:16px; color:var(--accent); flex:0 0 auto; }
.od-auskunft-txt{ flex:1; font-weight:550; }

/* ---- Order-Detail: Zwei Zonen (Substanz links · Aktivitäts-Spalte rechts) ---- */
.od2{ display:grid; grid-template-columns:minmax(0,1fr) 380px; gap:14px; align-items:start; }
.od2-main{ min-width:0; }
.od2-rail{ position:sticky; top:58px; }
.od2-railcard{ padding:0; overflow:hidden; }
.od2-railcard > h2{ padding:13px 15px 0; margin:0; }
.od-rail-filters{ display:flex; gap:6px; flex-wrap:wrap; padding:11px 15px; }
.od-fchip{ font-size:12px; padding:3px 11px; border-radius:20px; border:1px solid var(--line-strong);
  background:var(--card); color:var(--ink-2); cursor:pointer; user-select:none; }
.od-fchip.on{ background:var(--accent); color:var(--accent-ink); border-color:transparent; font-weight:700; }
.od-stream{ max-height:calc(100vh - 150px); overflow-y:auto; border-top:1px solid var(--line); padding:4px 0; }
.od2-railcard .od-ev{ padding:9px 15px; }
.od-ev-tag{ font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);
  border:1px solid var(--line); border-radius:5px; padding:1px 6px; }
.od-ev-comment .od-dot-comment{ background:var(--accent); }
.od-ev-comment.is-internal{ background:var(--surface-2); }
.od-ev-comment-text{ font-size:12.5px; color:var(--ink-2); margin-top:3px; white-space:pre-wrap; }
.od-noteform{ padding:10px 15px; border-bottom:1px solid var(--line); display:flex; flex-direction:column; gap:6px; }
.od-note-text{ width:100%; resize:vertical; font:inherit; font-size:12.5px; padding:6px 8px; border:1px solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); }
.od-note-row{ display:flex; gap:8px; align-items:center; }
.od-note-author{ flex:0 0 110px; font:inherit; font-size:12px; padding:5px 8px; border:1px solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); }
.od-note-save{ margin-left:auto; }
.od-dot-note{ background:var(--accent); }
.od-ev-note .od-ev-tag{ color:var(--accent); border-color:var(--accent); }
.od-rail-foot{ border-top:1px solid var(--line); padding:10px 15px; }

/* ---- Order-Detail: Fahrer-Kurzinfo + Stopp-Details inline ---- */
.od-inforow{ margin-top:9px; padding-top:9px; border-top:1px dashed var(--line); font-size:12.5px; color:var(--ink-2); }
.od-inforow-lbl{ display:block; font-size:10px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); margin-bottom:2px; }
.od-stop-more{ margin-top:6px; font-size:12px; color:var(--accent); background:none; border:0; cursor:pointer; padding:0; font-family:inherit; }
.od-stop-details{ margin-top:6px; padding:8px 10px; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-sm); }
.od-dot-komm{ background:var(--warn); }
.od-ev-komm .od-ev-tag{ color:var(--warn); border-color:var(--warn); }
.od-extlink{ font-size:12.5px; }
.od-rel-foot{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.od-rel{ font-size:12px; text-decoration:none; color:var(--accent); border:1px solid var(--line);
  border-radius:7px; padding:2px 9px; background:var(--card); }
.od-rel:hover{ border-color:var(--accent); }
@media (max-width:960px){ .od2{ grid-template-columns:1fr; } .od2-rail{ position:static; } .od-stream{ max-height:none; } }

/* ============================ COCKPIT (Dashboard) ============================ */
/* EIN responsives KPI-Grid — Gruppen lösen sich via display:contents auf, damit eine
   ausgeblendete Gruppe (0 Alarme) das Layout NICHT mehr zerschießt; Kacheln gleich groß. */
.ck-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(158px,1fr)); gap:10px; margin-bottom:14px; align-items:stretch; }
.ck-alert, .ck-flow{ display:contents; }
.ck-sep{ display:none; }
a.tile{ text-decoration:none; color:inherit; display:block; }
.ck-delta{ position:absolute; top:12px; right:13px; font-size:12px; font-weight:800; }
.ck-delta.up{ color:var(--bad); } .ck-delta.down{ color:var(--ok); }
.tile.pulse{ animation:ck-pulse 1.8s ease-out infinite; }
@keyframes ck-pulse{ 0%{ box-shadow:0 0 0 0 rgba(214,64,50,.45); } 70%{ box-shadow:0 0 0 9px rgba(214,64,50,0); } 100%{ box-shadow:0 0 0 0 rgba(214,64,50,0); } }

.ck-main{ display:grid; grid-template-columns:2fr 1fr; gap:12px; margin-bottom:12px; align-items:start; }
@media (max-width:900px){ .ck-main{ grid-template-columns:1fr; } }
.ck-ampel{ display:flex; align-items:center; gap:12px; padding:4px 0 2px; }
.ck-break{ margin-top:12px; border-top:1px solid var(--line); padding-top:11px; }
.ck-break-lbl{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); font-weight:800; margin-bottom:8px; }
.ck-break-row{ display:flex; flex-wrap:wrap; gap:7px; }
.ck-break-row .db-st{ font-size:11px; }
.ck-search{ display:flex; align-items:center; gap:10px; position:relative; }
.ck-search .bk-search-ic{ display:inline-flex; color:var(--muted); }
.ck-search .bk-search-ic .ic-svg{ width:16px; height:16px; }
.ck-search input{ flex:1 1 auto; }
#ampel-head{ font-size:10.5px; }
.stopbox.clickable{ cursor:pointer; }
.stopbox.clickable:hover{ box-shadow:var(--card-hover); }

/* ============================ PROJEKT-STATUS ============================ */
/* Nav-Link unten in der Seitenleiste */
.ps-navlink{ display:flex; align-items:center; gap:9px; margin:0 10px 4px; padding:8px 10px;
  border-radius:var(--radius-sm); color:var(--ink-2); font-size:12.5px; font-weight:700;
  text-decoration:none; border:1px solid var(--line); }
.ps-navlink:hover{ border-color:var(--primary); color:var(--ink); }
.ps-navlink.active{ background:var(--accent-soft); color:var(--nav-active-fg); border-color:transparent; }
.ps-navdot{ width:8px; height:8px; border-radius:50%; background:var(--ok); box-shadow:0 0 7px var(--ok); flex:0 0 auto; }

/* Status-Seite */
.ps-intro{ color:var(--ink-2); font-size:14px; max-width:70ch; margin:0 0 16px; }
.ps-tally{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:14px; }
@media (max-width:720px){ .ps-tally{ grid-template-columns:repeat(2,1fr); } }
.ps-tally .v.ok{ color:var(--ok); } .ps-tally .v.warn{ color:var(--warn); } .ps-tally .v.muted{ color:var(--muted); }
.ps-legend{ display:flex; flex-wrap:wrap; gap:8px 16px; margin:0 0 22px; font-size:12.5px; color:var(--ink-2); }
.ps-legend span{ display:inline-flex; align-items:center; gap:7px; }
.ps-pill{ display:inline-block; padding:2px 9px; border-radius:var(--radius-pill); font-size:10.5px; font-weight:800; white-space:nowrap; }
.ps-live{ background:var(--ok-bg); color:var(--ok); }
.ps-part{ background:var(--warn-bg); color:var(--warn); }
.ps-open{ background:var(--accent-soft); color:var(--accent-ink); }
:root[data-theme="dark"] .ps-open{ color:var(--accent); }
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .ps-open{ color:var(--accent); } }
.ps-eas{ background:var(--surface-2); color:var(--muted); border:1px solid var(--line-strong); }
.ps-sec{ margin:0 0 20px; }
.ps-mod{ display:flex; align-items:baseline; gap:12px; margin:0 0 8px; }
.ps-mod h2{ font-size:16px; font-weight:800; margin:0; color:var(--ink); }
.ps-src{ font-size:11px; color:var(--muted); }
.ps-table{ width:100%; border-collapse:collapse; font-size:13px; min-width:560px; }
.ps-table thead th{ text-align:left; font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted);
  font-weight:800; padding:9px 13px; border-bottom:var(--border-w) solid var(--line-strong); background:var(--surface-2); white-space:nowrap; }
.ps-table td{ padding:9px 13px; border-bottom:1px solid var(--line); vertical-align:top; }
.ps-table tr:last-child td{ border-bottom:none; }
.ps-fn{ font-weight:600; color:var(--ink); width:34%; }
.ps-st{ width:120px; white-space:nowrap; }
.ps-note{ color:var(--ink-2); font-size:12px; }
.ps-plus thead th{ background:var(--accent); color:var(--accent-ink); }
.ps-foot{ margin-top:18px; }

/* ============================ REPORTS ============================ */
.rp-intro{ color:var(--ink-2); font-size:13px; max-width:none; margin:0 0 18px; line-height:1.5; }
.rp-grouphead{ font-size:10.5px; text-transform:uppercase; letter-spacing:.7px; font-weight:800;
  color:var(--muted); margin:18px 0 9px; }
.rp-gallery{ display:grid; grid-template-columns:repeat(auto-fill,minmax(258px,1fr)); gap:14px; }
.rp-tile{ display:flex; flex-direction:column; gap:8px; padding:15px 16px 12px; text-decoration:none;
  color:var(--ink); transition:box-shadow .16s ease, transform .16s ease, border-color .16s ease; }
.rp-tile:hover{ box-shadow:var(--card-hover); transform:translateY(-2px); border-color:var(--accent); }
.rp-tile-top{ display:flex; align-items:center; gap:9px; }
.rp-tile-ic{ width:30px; height:30px; border-radius:var(--radius-sm); background:var(--accent-soft);
  color:var(--accent); display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.rp-tile-ic svg{ width:17px; height:17px; }
.rp-tile-ttl{ font-size:14.5px; font-weight:800; letter-spacing:-.01em; }
.rp-tile-live{ margin-left:auto; font-size:9px; font-weight:800; letter-spacing:.5px; text-transform:uppercase;
  color:var(--ok); background:var(--ok-bg); padding:2px 7px; border-radius:999px; }
.rp-tile-sub{ font-size:11.5px; color:var(--muted); line-height:1.4; min-height:2.6em; }
.rp-tile-preview{ display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; min-height:38px;
  border-top:1px solid var(--line); padding-top:10px; }
.rp-tile-val{ font-size:26px; font-weight:800; font-family:var(--font-mono); line-height:1; letter-spacing:-1px;
  font-variant-numeric:tabular-nums; color:var(--ink); }
.rp-tile-val.v-ok{ color:var(--ok); } .rp-tile-val.v-warn{ color:var(--warn); } .rp-tile-val.v-bad{ color:var(--bad); }
.rp-tile-vsub{ font-size:11px; color:var(--muted); margin-bottom:2px; }
.rp-tile-spark{ margin-left:auto; width:120px; height:32px; }
.rp-tile-mini{ margin-left:auto; display:flex; flex-direction:column; gap:3px; width:90px; }
.rp-mini-row{ height:6px; background:var(--surface-2); border-radius:3px; overflow:hidden; display:block; }
.rp-mini-row i{ display:block; height:100%; background:var(--accent); border-radius:3px; }
.rp-tile-empty{ font-size:12px; color:var(--muted); font-style:italic; }
.rp-tile-foot{ font-size:10.5px; color:var(--muted); display:flex; align-items:center; gap:6px; margin-top:2px; }
.rp-tile-go{ margin-left:auto; color:var(--accent); font-weight:700; }
.rp-foot{ margin-top:20px; }

/* detail */
.rp-crumb{ color:var(--muted); text-decoration:none; } .rp-crumb:hover{ color:var(--accent); }
.rp-crumb-sep{ color:var(--line-strong); margin:0 2px; }
.rp-head-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.rp-ranges{ display:inline-flex; border:var(--border-w) solid var(--line-strong); border-radius:var(--radius-sm);
  overflow:hidden; }
.rp-range{ padding:6px 12px; font-size:12px; font-weight:700; text-decoration:none; color:var(--ink-2);
  background:var(--card); border-left:1px solid var(--line); }
.rp-range:first-child{ border-left:none; }
.rp-range:hover{ background:var(--surface-2); }
.rp-range.active{ background:var(--accent); color:var(--accent-ink); }
.rp-print{ display:inline-flex; align-items:center; gap:6px; }
.rp-print svg{ width:15px; height:15px; }
.rp-standbar{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:11.5px; color:var(--muted);
  background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-sm);
  padding:7px 12px; margin:0 0 16px; }
.rp-standbar b{ color:var(--ink-2); }
.rp-dot{ color:var(--line-strong); }
.rp-livetag{ color:var(--ok); }
.rp-kpirow{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; margin:0 0 16px; }
.rp-kpi{ background:var(--card); border:var(--border-w) solid var(--line-strong); border-radius:var(--radius);
  padding:13px 15px; display:flex; flex-direction:column; gap:4px; }
.rp-kpi-l{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--muted); }
.rp-kpi-v{ font-size:30px; font-weight:800; font-family:var(--font-mono); line-height:1; letter-spacing:-1.2px;
  color:var(--ink); font-variant-numeric:tabular-nums; }
.rp-kpi-v.v-ok{ color:var(--ok); } .rp-kpi-v.v-warn{ color:var(--warn); } .rp-kpi-v.v-bad{ color:var(--bad); }
.rp-kpi-u{ font-size:15px; font-weight:700; color:var(--muted); margin-left:2px; font-family:var(--font); }
.rp-kpi-s{ height:34px; margin:2px 0; }
.rp-spark{ width:100%; height:100%; display:block; }
.rp-kpi-sub{ font-size:11px; color:var(--muted); }
.rp-block{ margin:0 0 16px; }
.rp-block-h{ font-size:14px; font-weight:800; margin:0 0 12px; color:var(--ink); }
.rp-cap{ font-size:11px; color:var(--muted); margin:12px 0 0; line-height:1.5; max-width:80ch; }
.rp-chartwrap{ width:100%; overflow-x:auto; }
.rp-line{ width:100%; height:auto; max-width:100%; display:block; }
.rp-axis{ font-size:10px; fill:var(--muted); font-family:var(--font-mono); }
.rp-endlbl{ font-size:11px; font-weight:800; fill:var(--ink); font-family:var(--font-mono); }
.rp-stack{ display:flex; flex-direction:column; gap:12px; }
.rp-stackbar{ display:flex; width:100%; height:26px; border-radius:6px; overflow:hidden; background:var(--surface-2);
  gap:2px; }
.rp-seg{ display:block; height:100%; min-width:1px; }
.rp-legend{ display:flex; flex-wrap:wrap; gap:6px 16px; font-size:11.5px; color:var(--ink-2); }
.rp-lg{ display:inline-flex; align-items:center; gap:6px; }
.rp-lg i{ width:11px; height:11px; border-radius:3px; display:inline-block; flex:0 0 auto; }
.rp-lg b{ color:var(--ink); font-family:var(--font-mono); }
.rp-lg-n{ color:var(--muted); }
.rp-bars{ display:flex; flex-direction:column; gap:11px; }
.rp-bar{ display:flex; flex-direction:column; gap:3px; }
.rp-bar-top{ display:flex; align-items:baseline; gap:10px; font-size:12.5px; }
.rp-bar-lbl{ font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  max-width:62%; }
.rp-bar-val{ margin-left:auto; font-family:var(--font-mono); font-weight:800; color:var(--ink);
  font-variant-numeric:tabular-nums; white-space:nowrap; }
.rp-bar-share{ font-weight:600; color:var(--muted); font-size:11px; }
.rp-bar-track{ position:relative; height:9px; background:var(--surface-2); border-radius:5px; overflow:hidden; }
.rp-bar-fill{ position:absolute; left:0; top:0; height:100%; border-radius:5px; }
.rp-bar-done{ z-index:1; }
.rp-bar-sub{ font-size:10.5px; color:var(--muted); }
.rp-tablewrap{ width:100%; overflow-x:auto; }
.rp-table{ width:100%; border-collapse:collapse; font-size:12.5px; min-width:420px; }
.rp-table thead th{ text-align:right; font-size:10px; text-transform:uppercase; letter-spacing:.4px;
  color:var(--muted); font-weight:800; padding:7px 12px; border-bottom:var(--border-w) solid var(--line-strong);
  background:var(--surface-2); white-space:nowrap; }
.rp-table thead th:first-child{ text-align:left; }
.rp-table td{ padding:6px 12px; border-bottom:1px solid var(--line); text-align:right;
  font-family:var(--font-mono); font-variant-numeric:tabular-nums; color:var(--ink-2); }
.rp-table td:first-child{ text-align:left; font-family:var(--font); color:var(--ink); }
.rp-table tr:last-child td{ border-bottom:none; }
.rp-err{ padding:16px; color:var(--bad); font-size:13px; }
.rp-empty{ padding:26px; text-align:center; color:var(--muted); font-size:13px; }
/* heatmap */
.rp-heatwrap{ width:100%; overflow-x:auto; }
.rp-heat{ display:grid; gap:2px; min-width:420px; align-items:stretch; }
.rp-heat-corner{ }
.rp-heat-hh{ font-size:9px; color:var(--muted); text-align:center; font-family:var(--font-mono);
  padding-bottom:2px; }
.rp-heat-wd{ font-size:10.5px; color:var(--ink-2); font-weight:700; display:flex; align-items:center;
  padding-right:6px; }
.rp-heat-c{ height:20px; border-radius:2px; background:var(--accent);
  opacity:calc(0.05 + var(--o,0) * 0.95); }
.rp-heat-scale{ display:flex; align-items:center; gap:6px; font-size:10.5px; color:var(--muted); margin-top:9px; }
.rp-heat-ramp{ width:80px; height:9px; border-radius:5px;
  background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 8%, transparent), var(--accent)); }
.rp-heavy{ font-size:9px; font-weight:800; letter-spacing:.4px; text-transform:uppercase;
  color:var(--warn); background:var(--warn-bg); padding:2px 7px; border-radius:999px; }
.rp-tile-top .rp-heavy{ margin-left:auto; }
.rp-tile-top .rp-tile-live + .rp-heavy{ margin-left:6px; }
.rp-bar-link{ color:var(--ink); text-decoration:none; border-bottom:1px dotted var(--line-strong); }
.rp-bar-link:hover{ color:var(--accent); border-bottom-color:var(--accent); }
/* Fahrer-Profil */
.fp-stops{ display:flex; flex-direction:column; gap:6px; }
.fp-stop{ display:flex; align-items:center; gap:10px; font-size:12.5px; padding:6px 11px;
  border-radius:var(--radius-sm); background:var(--surface-2); border:1px solid var(--line); }
.fp-dot{ width:8px; height:8px; border-radius:50%; background:var(--muted); flex:0 0 auto; }
.fp-stop.s-done .fp-dot{ background:var(--ok); }
.fp-stop.s-current .fp-dot{ background:var(--warn); }
.fp-stop.s-upcoming .fp-dot{ background:var(--muted); }
.fp-eta{ color:var(--ink-2); min-width:44px; }
.fp-kind{ font-weight:700; min-width:82px; color:var(--ink); }
.fp-addr{ color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.od-sig{ margin-left:6px; }
/* ---- Fahrer-Detail: chronologischer Tages-Ablauf (nummeriert, mit Auftrag) ---- */
.fp-tour{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.fp-tour .fp-stop{ display:grid;
  grid-template-columns:24px 24px 48px 70px 104px 44px minmax(0,1.5fr) minmax(0,1fr) auto auto;
  align-items:center; gap:9px; font-size:12.5px; padding:6px 11px; border-radius:var(--radius-sm);
  background:var(--surface-2); border:1px solid var(--line); }
.fp-prio{ text-align:center; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums; }
.fp-prio-none{ color:var(--muted); font-weight:400; }
.fp-win{ color:var(--ink-2); font-variant-numeric:tabular-nums; }
.fp-plz{ color:var(--ink-2); font-variant-numeric:tabular-nums; }
.fp-firm{ color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fp-seq{ width:22px; height:22px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:800; background:var(--card); border:1px solid var(--line-strong); color:var(--ink); }
.fp-stop.s-done .fp-seq{ background:var(--ok); color:#fff; border-color:transparent; }
.fp-stop.s-current .fp-seq{ background:var(--warn); color:#fff; border-color:transparent; }
.fp-time{ color:var(--ink-2); }
.fp-kind.k-0{ color:var(--ok); } .fp-kind.k-1{ color:var(--accent); }
.fp-ref{ font-family:var(--font-mono); font-size:11.5px; color:var(--accent); text-decoration:none; white-space:nowrap; }
.fp-ref:hover{ text-decoration:underline; } .fp-ref-none{ color:var(--muted); }
.fp-badge{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; padding:2px 7px;
  border-radius:999px; white-space:nowrap; }
.fp-badge.done{ background:var(--ok-bg,rgba(74,140,58,.14)); color:var(--ok); }
.fp-badge.cur{ background:var(--warn-bg); color:var(--warn); }
.fp-badge.open{ background:var(--surface-2); color:var(--muted); border:1px solid var(--line); }
.fp-stop.s-done{ opacity:.85; }
@media(max-width:640px){ .fp-tour .fp-stop{ grid-template-columns:20px 44px minmax(0,1fr) auto; }
  .fp-tour .fp-prio,.fp-tour .fp-win,.fp-tour .fp-kind,.fp-tour .fp-plz,.fp-tour .fp-firm,.fp-tour .fp-ref{ display:none; } }
.drv-profile-link{ margin-left:auto; margin-right:8px; font-size:12px; white-space:nowrap; text-decoration:none; }

/* ============================ LEITSTAND / Dispo-Wand ============================ */
.ls-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin:0 0 16px; }
.ls-stats .stat{ padding:10px 13px; }
.ls-stats .k{ font-size:9.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); font-weight:700; }
.ls-stats .v{ font-size:24px; font-weight:800; font-family:var(--font-mono); color:var(--ink); line-height:1.1; }
.ls-of{ font-size:13px; color:var(--muted); font-weight:600; margin-left:3px; }
.ls-stat-warn .v{ color:var(--warn); } .ls-stat-bad .v{ color:var(--bad); } .ls-stat-ok .v{ color:var(--ok); }
.ls-queues{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:0 0 18px; }
.ls-queues--single{ grid-template-columns:1fr; }
@media (max-width:760px){ .ls-queues{ grid-template-columns:1fr; } }
.ls-queue{ padding:13px 15px; }
.ls-queue-h{ font-size:13px; font-weight:800; margin:0 0 10px; display:flex; align-items:center; gap:8px; color:var(--ink); }
.ls-queue-h .ls-muted{ font-weight:500; color:var(--muted); font-size:11px; }
.ls-queue-sub{ font-size:11.5px; color:var(--ink-2); margin:-4px 0 10px; }
.ls-queue-sub-inline{ font-size:11px; color:var(--ink-2); font-weight:500; margin-left:4px; }
/* Unzugeordnet als volle-Breite Einzeiler-Tabelle */
.ls-uqt{ display:flex; flex-direction:column; gap:1px; overflow-x:auto; max-height:60vh; }
.ls-uqt-head, .ls-uqt-row{ display:grid;
  grid-template-columns:96px 132px 56px minmax(120px,1.2fr) 108px 104px 120px 92px minmax(140px,1.4fr);
  gap:10px; align-items:center; min-width:940px; }
.ls-uqt-head{ font-size:10px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); font-weight:800;
  padding:5px 8px; border-bottom:var(--border-w) solid var(--line-strong); position:sticky; top:0; background:var(--card); z-index:1; }
.ls-uqt-row{ padding:7px 8px; border-bottom:1px solid var(--line); font-size:12px; cursor:pointer; }
.ls-uqt-row:hover{ background:var(--surface-2); }
.ls-uqt-row.is-overdue{ background:var(--bad-bg); }
.ls-uqt-row.is-overdue:hover{ background:color-mix(in srgb, var(--bad-bg) 80%, var(--ink) 6%); }
.ls-uqt-ref{ font-weight:700; text-decoration:none; color:var(--link); font-size:12.5px; }
.ls-uqt-kd{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ls-uqt-rec .al-empf-pick b{ color:var(--ok); }
.ls-uqt-st .al-st{ font-size:11px; }
.ls-count{ font-family:var(--font-mono); font-size:12px; font-weight:800; padding:1px 9px; border-radius:999px;
  background:var(--surface-2); color:var(--ink-2); }
.ls-count.ls-warn{ background:var(--warn-bg); color:var(--warn); }
.ls-count.ls-bad{ background:var(--bad-bg); color:var(--bad); }
.ls-empty{ font-size:12px; color:var(--muted); font-style:italic; padding:4px 0; }
.ls-orders{ display:flex; flex-direction:column; gap:5px; max-height:280px; overflow-y:auto; }
.ls-order{ display:flex; align-items:center; gap:9px; padding:6px 10px; border-radius:var(--radius-sm);
  background:var(--surface-2); border:1px solid var(--line); text-decoration:none; color:var(--ink);
  border-left:3px solid var(--line-strong); transition:box-shadow .14s ease, border-color .14s ease; }
.ls-order:hover{ box-shadow:var(--card-hover); border-left-color:var(--accent); }
.ls-order.s-late{ border-left-color:var(--bad); } .ls-order.s-upcoming{ border-left-color:var(--warn); }
.ls-ord-ref{ font-size:12px; font-weight:700; }
.ls-ord-where{ font-size:12px; color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
.ls-ord-eta{ font-size:11.5px; color:var(--muted); margin-left:auto; }
.ls-wall-h{ font-size:11px; text-transform:uppercase; letter-spacing:.6px; font-weight:800; color:var(--muted); margin:0 0 10px; }
.ls-wall{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:3px; align-items:start; }
.fl-lanes{ margin-left:-16px; margin-right:-16px; }   /* Rand links/rechts auf Minimum (Ops-Wunsch) */
.fl-roster-h{ margin-top:10px; }
/* Fahrzeug-Kategorie-Gruppen (Radfahrer / E-Cargo+Lastenrad / PKW·Caddy·Bus / Ladebordwand) */
.ls-catgroup{ margin:0 0 12px; }
.ls-catgroup:last-child{ margin-bottom:0; }
.ls-cat-head{ display:flex; align-items:baseline; gap:10px; margin:0 0 5px; padding:0 0 3px 8px;
  border-bottom:1px solid var(--line); border-left:3px solid var(--accent); }
.ls-cat-name{ font-size:13px; font-weight:800; color:var(--ink); letter-spacing:.2px; }
.ls-cat-meta{ font-size:11px; color:var(--muted); margin-left:auto; font-variant-numeric:tabular-nums; white-space:nowrap; }
.ls-catgroup[data-cat="rad"] .ls-cat-head{ border-left-color:#2f9e44; }
.ls-catgroup[data-cat="ecargo"] .ls-cat-head{ border-left-color:#1c7ed6; }
.ls-catgroup[data-cat="auto"] .ls-cat-head{ border-left-color:#f08c00; }
.ls-catgroup[data-cat="lbw"] .ls-cat-head{ border-left-color:#e8590c; }
.ls-catgroup[data-cat="sonst"] .ls-cat-head{ border-left-color:var(--muted); }
.ls-roster{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 18px; }
.ls-rd{ display:flex; align-items:center; gap:8px; padding:5px 11px; border:1px solid var(--line); border-left:3px solid var(--ok);
  border-radius:var(--radius-sm); background:var(--surface-2); font-size:12px; }
.ls-rd.is-later{ border-left-color:var(--warn); }
.ls-rd-name{ font-weight:700; color:var(--ink); }
.ls-rd-when{ color:var(--ink-2); }
.ls-rd-plz{ color:var(--muted); font-family:var(--font-mono); font-size:11px; }

/* ============================ ZONEN-KATASTER ============================ */
.zn-intro{ max-width:900px; margin:0 0 16px; }
.zn-tier-h{ font-size:11px; text-transform:uppercase; letter-spacing:.6px; font-weight:800; color:var(--muted); margin:20px 0 10px; }
.zn-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }
.zn-card{ display:block; text-decoration:none; color:inherit; background:var(--card); border:1px solid var(--line);
  border-left:6px solid var(--zc); border-radius:var(--radius); padding:12px 14px; box-shadow:var(--shadow); transition:box-shadow .12s; }
.zn-card:hover{ box-shadow:var(--card-hover); }
.zn-card.s-STRAINED{ outline:2px solid var(--warn); outline-offset:-1px; }
.zn-card.s-CRITICAL{ outline:2px solid var(--bad); outline-offset:-1px; }
.zn-card-h{ display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.zn-sw{ width:13px; height:13px; border-radius:4px; flex:0 0 auto; box-shadow:0 0 0 1px rgba(0,0,0,.15); }
.zn-sw.sm{ width:10px; height:10px; display:inline-block; margin-right:6px; vertical-align:-1px; }
.zn-name{ font-weight:800; font-size:14px; flex:1; }
.zn-amp{ font-size:10px; }
.zn-kpi{ font-size:13px; color:var(--ink-2); margin-bottom:8px; }
.zn-kpi b{ color:var(--ink); }
.zn-bez{ display:flex; flex-direction:column; gap:3px; }
.zn-b{ font-size:12px; color:var(--ink-2); }
.zn-b b{ color:var(--ink); font-family:var(--font-mono); }
.zn-plz{ color:var(--muted); font-size:11px; }
.zn-tablewrap{ padding:0; overflow-x:auto; margin-top:2px; }
.zn-table{ width:100%; border-collapse:collapse; font-size:13px; min-width:640px; }
.zn-table th{ text-align:left; font-size:10px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted);
  font-weight:800; padding:9px 12px; border-bottom:var(--border-w) solid var(--line-strong); background:var(--surface-2); }
.zn-table td{ padding:8px 12px; border-bottom:1px solid var(--line); vertical-align:middle; }
.zn-table tr:last-child td{ border-bottom:none; }
.zn-td-bez{ color:var(--ink-2); }
.zn-legend{ display:flex; flex-wrap:wrap; gap:14px; align-items:center; margin:16px 0 0; font-size:12px; color:var(--ink-2); }
.zn-lg-t{ font-weight:700; color:var(--muted); }

/* Zonen-Landkarte: echte Bezirks-SVG, nach Cluster eingefärbt */
.zn-mapwrap{ padding:16px; margin-bottom:16px; }
.zn-svg{ display:block; width:100%; max-width:900px; height:auto; margin:0 auto; }
.zn-bz{ stroke:var(--card); stroke-width:1.1; stroke-linejoin:round; cursor:pointer; transition:opacity .1s; }
.zn-bz:hover{ opacity:.8; }
.zn-bz.s-STRAINED{ stroke:var(--warn); stroke-width:2.4; }
.zn-bz.s-CRITICAL{ stroke:var(--bad); stroke-width:2.8; }
.zn-lbl{ font-family:var(--font-mono); font-size:12px; font-weight:700; fill:#fff; text-anchor:middle;
  dominant-baseline:middle; pointer-events:none; paint-order:stroke; stroke:rgba(0,0,0,.5); stroke-width:2.4px; }
.zn-bub{ fill:rgba(15,20,32,.74); stroke-width:2.5; cursor:pointer; transition:fill .1s; }
.zn-bub:hover{ fill:rgba(15,20,32,.9); }
.zn-bub-t{ fill:#fff; font-family:var(--font-mono); font-weight:800; font-size:15px; text-anchor:middle;
  dominant-baseline:central; pointer-events:none; }
.zn-maplegend{ display:flex; flex-wrap:wrap; gap:6px 14px; justify-content:center; margin:14px auto 0; max-width:900px; }
.zn-lg-item{ display:inline-flex; align-items:center; font-size:12px; text-decoration:none; color:var(--ink-2); }
.zn-lg-item:hover{ color:var(--ink); }
.zn-map-note{ max-width:900px; margin:12px auto 0; font-size:11px; color:var(--muted); text-align:center; }
/* Kompakt-Variante (Cockpit): kleinere Karte, alles ohne Scrollen sichtbar */
.zn-mapwrap.zn-compact{ padding:12px; margin-bottom:0; }
.zn-compact .zn-svg{ max-width:520px; }
.zn-compact .zn-maplegend{ margin-top:8px; gap:5px 12px; font-size:11.5px; }
.zn-compact .zn-map-note{ margin-top:8px; }
.ls-empty-wall{ padding:24px; text-align:center; color:var(--muted); }
.ls-lane{ padding:5px 7px; display:flex; flex-direction:column; gap:3px; }
a.ls-lane{ text-decoration:none; color:inherit; cursor:pointer; transition:box-shadow .1s; }
a.ls-lane:hover{ box-shadow:inset 0 0 0 1px var(--accent); }
.ls-lane-login{ font-size:10.5px; color:var(--ok); font-family:var(--font-mono); font-weight:700; margin-left:6px; }
.ls-win{ color:var(--muted); font-size:10px; }
.ls-lane.is-idle{ opacity:.55; }
.ls-lane-head{ display:flex; align-items:baseline; gap:8px; text-decoration:none; }
.ls-lane-name{ font-size:13px; font-weight:800; color:var(--ink); }
.ls-lane-head:hover .ls-lane-name{ color:var(--accent); }
.ls-lane-cluster{ font-size:10.5px; color:var(--muted); margin-left:auto; white-space:nowrap; }
.ls-lane-sub{ font-size:10.5px; color:var(--ink-2); }
.ls-lane-sub b{ color:var(--ink); font-family:var(--font-mono); }
.ls-lane-prog{ height:5px; background:var(--surface-2); border-radius:3px; overflow:hidden; }
.ls-lane-prog i{ display:block; height:100%; width:var(--p,0); background:var(--ok); border-radius:3px; }
.ls-stops{ display:flex; flex-direction:column; gap:2px; max-height:150px; overflow-y:auto; }  /* auf ~7 Adressen genormt */
.ls-stops-end{ flex:0 0 auto; height:150px; }  /* Scroll-Puffer: aktueller Stopp kann immer nach ganz oben */
.ls-stop{ display:flex; align-items:center; gap:4px; font-size:12px; padding:2px 5px; overflow:hidden;
  border-radius:5px; background:var(--surface-2); }
.ls-stop.s-done{ opacity:.6; } .ls-stop.s-done .ls-dot{ background:var(--ok); }
.ls-stop.s-current{ background:var(--warn-bg); } .ls-stop.s-current .ls-dot{ background:var(--warn); }
.ls-stop.s-upcoming .ls-dot{ background:var(--muted); }
a.ls-stop{ text-decoration:none; color:inherit; cursor:pointer; transition:box-shadow .1s, background .1s; }
a.ls-stop:hover{ box-shadow:inset 0 0 0 1px var(--line-strong); }
a.ls-stop.s-done:hover{ opacity:.85; }
.ls-dot{ width:7px; height:7px; border-radius:50%; background:var(--muted); flex:0 0 auto; }
/* Stopp-Zeile (Sparky-Reihenfolge): Prio → A/Z → PLZ → Straße → Soll-Fenster → ETA */
.ls-prio-n{ flex:0 0 auto; min-width:8px; text-align:center; font-weight:400; color:var(--muted);
  font-size:10.5px; font-variant-numeric:tabular-nums; }   /* unauffällig, wenig Platz (Sparky) */
.ls-prio-x{ }  /* leerer Platzhalter — hält die Prio-Spalte bündig */
.ls-kind{ font-weight:800; color:var(--ink); min-width:11px; text-align:center; flex:0 0 auto; }
.ls-k-A{ color:var(--link); }    /* Abholung */
.ls-k-Z{ color:var(--ok); }      /* Zustellung */
.ls-plz{ flex:0 0 auto; min-width:13px; color:var(--ink-2); }
/* Straße kollabiert NICHT mehr (flex-shrink 0) — sie muss immer sichtbar sein, max. 6 Zeichen */
.ls-street{ flex:0 0 auto; min-width:0; max-width:6.5em; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ls-win{ flex:0 0 auto; display:inline-flex; gap:3px; align-items:baseline; font-size:11px; }
.ls-win-ab{ color:var(--muted); }             /* „ab" schattiert */
.ls-win-bis{ color:var(--ink); font-weight:800; }  /* „bis" fett */
.ls-eta{ flex:0 0 auto; min-width:0; color:var(--ink-2); font-size:11px; }  /* direkt nach der Adresse (Sparky) */
/* --- EAS-Ampel je Stopp (Farbsemantik aus FleetDeliveryScheduleForegroundConverter) --- */
.ls-stop{ border-left:3px solid transparent; }
.ls-stop.a-unaccepted{ border-left-color:#d9534f; background:color-mix(in srgb,#d9534f 9%,transparent); }
.ls-stop.a-unaccepted .ls-dot{ background:#d9534f; }
.ls-stop.a-accepted{ border-left-color:#4a9e5c; } .ls-stop.a-accepted .ls-dot{ background:#4a9e5c; }
.ls-stop.a-picking{ border-left-color:#b9bb1f; background:color-mix(in srgb,#d6d822 12%,transparent); }
.ls-stop.a-picking .ls-dot{ background:#b9bb1f; }
.ls-stop.a-reserved{ border-left-color:#d63384; } .ls-stop.a-reserved .ls-dot{ background:#d63384; }
.ls-stop.a-done{ border-left-color:transparent; }
.ls-stop.is-overdue .ls-eta{ color:var(--bad); font-weight:800; }
.ls-prio{ font-size:9.5px; font-weight:800; color:#fff; background:var(--bad); border-radius:4px; padding:0 4px; line-height:1.5; }
/* Ampel-Legende — eigener Block über die volle Breite (eindeutige Klasse .ls-lg,
   NICHT .lg — kollidiert sonst mit dem 11px-Swatch aus dem Zonen-Kataster) */
.ls-legend{ display:flex; flex-wrap:wrap; gap:8px 20px; width:100%;
  margin:2px 0 12px; padding:8px 12px; box-sizing:border-box;
  background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-sm);
  text-transform:none; letter-spacing:0; }
.ls-legend .ls-lg{ display:inline-flex; align-items:center; gap:6px;
  font-size:11px; font-weight:600; color:var(--muted); white-space:nowrap; }
.ls-legend .ls-lg::before{ content:""; display:inline-block; flex:0 0 auto; width:10px; height:10px;
  border-radius:2px; background:var(--muted); }
.ls-legend .ls-lg.a-unaccepted::before{ background:#d9534f; }
.ls-legend .ls-lg.a-accepted::before{ background:#4a9e5c; }
.ls-legend .ls-lg.a-picking::before{ background:#b9bb1f; }
.ls-legend .ls-lg.a-reserved::before{ background:#d63384; }
.ls-legend .ls-lg.a-done::before{ background:var(--line-strong); }
.ls-legend .ls-lg.lg-over::before{ background:var(--bad); }
/* --- Leitstand-Filterleiste (EAS-Toggles: Zeitraum/Zeitfenster/Prio-7/Produkte) --- */
.ls-filters{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; margin:0 0 14px;
  padding:9px 12px; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-sm); }
.lsf-seg{ display:inline-flex; align-items:center; gap:6px; }
.lsf-lbl{ font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); }
.ls-filters select{ font:inherit; font-size:12.5px; padding:4px 8px; background:var(--card); color:var(--ink);
  border:1px solid var(--line-strong); border-radius:var(--radius-sm); cursor:pointer; }
.lsf-chk{ display:inline-flex; align-items:center; gap:6px; font-size:12.5px; color:var(--ink); cursor:pointer; }
.lsf-sep{ width:1px; align-self:stretch; background:var(--line); margin:0 2px; }
.lsf-prod{ display:inline-flex; align-items:center; gap:5px; font-size:12px; cursor:pointer;
  padding:3px 9px; border-radius:var(--radius-pill); border:1px solid var(--line-strong);
  background:var(--card); color:var(--muted); }
.lsf-prod.on{ border-color:var(--accent); color:var(--ink); background:var(--accent-soft); }
.lsf-prod input{ margin:0; }
/* Unzugeordnet-Liste (reich, mit Vergabe-Vorschau) */
.ls-queue-all{ margin-left:auto; font-size:11px; font-weight:600; color:var(--link); text-decoration:none; }
.ls-queue-all:hover{ color:var(--accent); }
.ls-uq{ display:flex; flex-direction:column; gap:6px; max-height:340px; overflow-y:auto; }
.ls-uq-row{ flex:0 0 auto; display:flex; align-items:stretch; gap:6px; background:var(--surface-2); border:1px solid var(--line);
  border-left:3px solid var(--line-strong); border-radius:var(--radius-sm); overflow:hidden; }
.ls-uq-row.is-overdue{ border-left-color:var(--bad); background:var(--bad-bg); }
.ls-uq-main{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; padding:7px 10px; text-decoration:none; color:var(--ink); }
.ls-uq-main:hover{ background:var(--accent-soft); }
.ls-uq-top{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.ls-uq-ref{ font-weight:700; font-size:12.5px; }
.ls-uq-prod{ font-size:11px; color:var(--muted); margin-left:auto; }
.ls-uq-route{ font-size:12px; color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ls-uq-dates{ font-size:11px; color:var(--muted); }
.ls-uq-dates b{ color:var(--ink); font-family:var(--font-mono); }
.ls-uq-rec{ flex:0 0 auto; align-self:stretch; display:flex; flex-direction:column; justify-content:center;
  align-items:center; text-align:center; min-width:118px; padding:6px 10px; border-left:1px solid var(--line); }
.ls-uq-rec-lbl{ font-size:8.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); font-weight:800; }
.ls-uq-rec-drv{ font-size:12.5px; color:var(--ok); line-height:1.2; }
.ls-uq-rec-h{ font-size:9.5px; color:var(--muted); }
.ls-uq-assign{ flex:0 0 auto; align-self:center; margin-right:8px; font-size:12px; padding:6px 11px;
  display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.ls-uq-assign svg{ width:14px; height:14px; }

/* ============================ FLOTTE (kartenzentriert) ============================ */
.fm-head{ flex-wrap:wrap; gap:8px 14px; }
.fm-kpi{ font-size:12.5px; color:var(--ink-2); white-space:nowrap; }
.fm-kpi b{ font-family:var(--font-mono); font-weight:800; color:var(--ink); font-size:14px; }
.fm-legend-btn{ font-size:12px; padding:5px 11px; }
.fm-legend{ display:flex; flex-wrap:wrap; gap:8px 18px; padding:10px 14px; margin:0 0 10px; font-size:11.5px; color:var(--ink-2); }
.fm-legend span{ display:inline-flex; align-items:center; gap:6px; }
.fm-lg{ display:inline-block; flex:0 0 auto; }
.fm-lg-done, .fm-lg-current, .fm-lg-open, .fm-lg-live{ width:12px; height:12px; border-radius:50%; border:2px solid var(--card); }
.fm-lg-done{ background:var(--ok); } .fm-lg-current{ background:var(--warn); } .fm-lg-open{ background:var(--muted); }
.fm-lg-live{ background:var(--accent); border-radius:2px; transform:rotate(45deg); }
.fm-lg-solid{ width:22px; height:0; border-top:4px solid var(--ink-2); }
.fm-lg-dash{ width:22px; height:0; border-top:3px dashed var(--ink-2); }
.fm-lg-gps{ width:22px; height:0; border-top:2px dashed var(--ink-2); }
.fm-lg-solid{ border-top-width:5px; }

.fm-body{ display:flex; height:74vh; min-height:480px; border:var(--border-w) solid var(--line-strong);
  border-radius:var(--radius); overflow:hidden; background:var(--card); }
/* Eigenständige Karten-Seite: Karte ist Hauptinhalt -> mehr Höhe */
.fm-body-full{ height:calc(100vh - 172px); min-height:520px; margin-top:12px; }
.fm-rail{ width:288px; flex:0 0 288px; display:flex; flex-direction:column; border-right:var(--border-w) solid var(--line);
  background:var(--bg-2); transition:flex-basis .24s ease, width .24s ease; }
.fm-rail.collapsed{ width:0; flex-basis:0; overflow:hidden; border-right:0; }
.fm-rail-search{ padding:10px; border-bottom:1px solid var(--line); }
.fm-rail-search input{ width:100%; }
.fm-list{ flex:1; overflow-y:auto; padding:6px; }
.fm-drv{ display:flex; align-items:center; gap:9px; padding:8px 9px; border-radius:var(--radius-sm);
  cursor:pointer; border-left:3px solid transparent; }
.fm-drv:hover{ background:var(--surface-2); }
.fm-drv.active{ background:var(--accent-soft); border-left-color:var(--accent); }
.fm-drv.idle{ opacity:.5; }
.fm-dot{ width:11px; height:11px; border-radius:50%; flex:0 0 auto; border:2px solid var(--card); box-shadow:0 0 0 1px var(--line-strong); }
.fm-drv-main{ display:flex; flex-direction:column; min-width:0; flex:1; }
.fm-drv-name{ font-size:13px; font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fm-drv-meta{ font-size:10.5px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fm-drv-open{ font-family:var(--font-mono); font-weight:800; font-size:12px; color:var(--warn);
  background:var(--warn-bg); border-radius:999px; padding:1px 8px; }
.fm-drv-idle{ font-size:10px; color:var(--muted); }
.fm-rail-grp{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--muted);
  padding:10px 9px 4px; margin-top:6px; border-top:1px solid var(--line); }
.fm-drv-roster{ cursor:default; }
.fm-drv-roster:hover{ background:none; }
.fm-dot-roster{ background:var(--ok); box-shadow:0 0 0 1px var(--line-strong); }
.fm-drv-roster.is-later .fm-dot-roster, .fm-dot-roster.later{ background:var(--warn); }

.fm-map-wrap{ position:relative; flex:1; min-width:0; }
#map{ position:absolute; inset:0; width:100%; height:100%; background:var(--bg-2); }
.fm-rail-toggle{ position:absolute; top:10px; left:10px; z-index:600; width:26px; height:26px; padding:0;
  border-radius:6px; background:var(--card); color:var(--ink); border:var(--border-w) solid var(--line-strong);
  box-shadow:var(--shadow-sm); font-size:15px; line-height:1; }
.fm-empty{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:600;
  background:var(--card); border:var(--border-w) solid var(--line-strong); border-radius:var(--radius);
  padding:14px 20px; font-size:13px; color:var(--muted); box-shadow:var(--shadow-md); }
.fm-panel{ position:absolute; right:12px; bottom:12px; z-index:600; width:300px; max-width:calc(100% - 24px);
  max-height:calc(100% - 24px); overflow-y:auto; padding:13px 14px; box-shadow:var(--shadow-lg); }
.fm-p-head{ display:flex; align-items:center; gap:8px; }
.fm-p-name{ font-size:15px; font-weight:800; color:var(--ink); text-decoration:none; }
.fm-p-name:hover{ color:var(--accent); }
.fm-p-x{ margin-left:auto; background:transparent; border:none; color:var(--muted); font-size:20px; line-height:1; padding:0 2px; box-shadow:none; }
.fm-p-x:hover{ color:var(--ink); box-shadow:none; filter:none; }
.fm-p-sub{ font-size:12px; color:var(--ink-2); margin:5px 0 7px; }
.fm-p-prog{ height:6px; background:var(--surface-2); border-radius:3px; overflow:hidden; margin-bottom:10px; }
.fm-p-prog i{ display:block; height:100%; border-radius:3px; }
.fm-p-next{ background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-sm); padding:8px 10px; margin-bottom:9px; }
.fm-p-lbl{ display:block; font-size:9.5px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--muted); margin-bottom:2px; }
.fm-p-next a, .fm-p-next span{ font-size:12px; color:var(--ink); text-decoration:none; }
.fm-p-next a:hover{ color:var(--accent); }
.fm-p-gps{ font-size:12px; margin-bottom:10px; } .fm-p-gps.is-off{ color:var(--muted); }
.fm-p-links{ display:flex; flex-direction:column; gap:4px; border-top:1px solid var(--line); padding-top:9px; }
.fm-p-links a{ font-size:12px; color:var(--link); text-decoration:none; font-weight:600; }
.fm-p-links a:hover{ color:var(--accent); }

/* Leaflet divIcons (theme-fähig über Tokens) */
.fm-pin{ background:none; border:none; }
.fm-pin-i{ position:relative; width:24px; height:24px; border-radius:50%; display:flex; align-items:center;
  justify-content:center; border:2px solid var(--card); box-shadow:0 1px 3px rgba(0,0,0,.45);
  font-size:11px; font-weight:800; color:#fff; }
.fm-pin-i.s-done{ background:var(--ok); } .fm-pin-i.s-current{ background:var(--warn); } .fm-pin-i.s-upcoming{ background:var(--muted); }
.fm-pin-i.is-current{ width:30px; height:30px; font-size:12px; z-index:5; animation:fmpulse 1.9s ease-out infinite; }
/* Mehrere Aufträge auf derselben Adresse -> ein Pill-Pin mit allen Stopp-Nummern (z.B. „1·2·5"),
   sonst würden sich die Pins exakt überdecken und Stopps sähen aus wie „verschwunden". */
.fm-pin-i.is-multi{ width:auto; min-width:24px; height:24px; padding:0 6px; border-radius:12px; }
.fm-pin-i.is-multi.is-current{ height:26px; padding:0 7px; }
.fm-seq{ line-height:1; white-space:nowrap; }
.fm-gl{ position:absolute; top:-7px; right:-6px; font-size:8px; background:var(--card); color:var(--ink-2);
  width:12px; height:12px; border-radius:50%; display:flex; align-items:center; justify-content:center; border:1px solid var(--line-strong); }
.fm-live-i{ display:block; width:14px; height:14px; border-radius:3px; transform:rotate(45deg); border:2px solid var(--card); box-shadow:0 1px 4px rgba(0,0,0,.5); }
/* Fahrzeugtyp-Marker (Standard-Kartenansicht) — Icon zeigt Rad/Auto/Van/LKW je Fahrer */
.fm-vehwrap{ background:none; border:none; }
.fm-veh{ width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  border:2px solid #fff; box-shadow:0 1px 5px rgba(0,0,0,.45); }
.fm-veh svg{ width:17px; height:17px; fill:none; stroke:#fff; stroke-width:1.7; stroke-linejoin:round; stroke-linecap:round; }
.fm-vehwrap.dim .fm-veh{ opacity:.32; transform:scale(.78); box-shadow:none; }
.fm-veh-live{ width:34px; height:34px; box-shadow:0 0 0 3px rgba(255,255,255,.55), 0 1px 6px rgba(0,0,0,.5); }
.fm-veh-live svg{ width:19px; height:19px; }
@keyframes fmpulse{ 0%{ box-shadow:0 0 0 0 rgba(182,116,14,.5); } 70%{ box-shadow:0 0 0 10px rgba(182,116,14,0); } 100%{ box-shadow:0 0 0 0 rgba(182,116,14,0); } }
.lp-h{ font-size:12px; font-weight:700; display:flex; align-items:center; gap:6px; }
.lp-st{ width:9px; height:9px; border-radius:50%; display:inline-block; }
.lp-st.s-done{ background:var(--ok); } .lp-st.s-current{ background:var(--warn); } .lp-st.s-upcoming{ background:var(--muted); }
.lp-nm{ font-weight:700; margin-top:3px; } .lp-meta{ font-size:11px; color:var(--muted); }
.lp-link{ display:inline-block; margin-top:5px; font-size:11.5px; font-weight:700; color:var(--link); text-decoration:none; }
.lp-row{ font-size:11px; line-height:1.4; padding:5px 0; border-top:1px solid var(--line); }
.lp-row:first-of-type{ border-top:none; padding-top:6px; }
.lp-row .lp-st{ margin-right:4px; vertical-align:middle; }
.lp-sub{ color:var(--muted); }
/* Dezent entsättigte Basemap — leicht farbig (nicht grau), damit die farbigen Fahrer-Routen
   klar hervortreten. Light = leicht entsättigt+aufgehellt; Dark = invertiert + entsättigt. */
.leaflet-tile-pane{ filter:saturate(.45) brightness(1.04); }
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .leaflet-tile-pane{
  filter:invert(1) hue-rotate(180deg) saturate(.5) brightness(.95) contrast(.92); } }
:root[data-theme="dark"] .leaflet-tile-pane{ filter:invert(1) hue-rotate(180deg) saturate(.5) brightness(.95) contrast(.92); }
:root[data-theme="light"] .leaflet-tile-pane{ filter:saturate(.45) brightness(1.04); }
@media (max-width:820px){ .fm-rail{ position:absolute; z-index:650; height:100%; box-shadow:var(--shadow-lg); }
  .fm-body{ position:relative; height:78vh; } .fm-panel{ width:calc(100% - 24px); } }

/* ============================ AUFTRAGSLISTEN (Unzugeordnet / Offen) ============================ */
.al-filters{ display:flex; flex-wrap:wrap; gap:9px 14px; align-items:flex-end; padding:12px 14px; margin:0 0 12px; }
.al-f{ display:flex; flex-direction:column; gap:3px; }
.al-f label{ font-size:9.5px; text-transform:uppercase; letter-spacing:.4px; font-weight:700; color:var(--muted); }
.al-f select, .al-f input{ min-width:118px; }
.al-f-grow{ flex:1; min-width:190px; } .al-f-grow input{ width:100%; }
.al-tablewrap{ padding:0; overflow-x:auto; }
.al-table{ width:100%; border-collapse:collapse; font-size:12.5px; min-width:820px; }
.al-table thead th{ text-align:left; font-size:10px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted);
  font-weight:800; padding:9px 12px; border-bottom:var(--border-w) solid var(--line-strong); background:var(--surface-2);
  white-space:nowrap; position:sticky; top:0; z-index:1; }
.al-table td{ padding:8px 12px; border-bottom:1px solid var(--line); vertical-align:middle; }
.al-table tr:last-child td{ border-bottom:none; }
.al-th{ cursor:pointer; user-select:none; }
.al-th:hover{ color:var(--ink-2); }
.al-th::after{ content:"⇅"; margin-left:5px; font-size:9px; opacity:.35; }
.al-th.sorted-asc::after{ content:"▲"; opacity:.9; color:var(--accent); }
.al-th.sorted-desc::after{ content:"▼"; opacity:.9; color:var(--accent); }
.al-row{ cursor:pointer; } .al-row:hover{ background:var(--accent-soft); }
.al-prio{ font-family:var(--font-mono); font-weight:800; text-align:center; color:var(--ink-2); width:44px; }
.al-prio-high{ color:var(--bad); }
.al-ref{ font-weight:700; white-space:nowrap; }
.al-st{ font-size:11px; padding:2px 8px; border-radius:999px; background:var(--surface-2); color:var(--ink-2); white-space:nowrap; }
/* Status-Töne (EAS-nah): offen/zugeordnet/vorgemerkt/geplant/reserviert/OPS */
.al-st.t-open{ background:var(--surface-2); color:var(--ink-2); }
.al-st.t-assigned{ background:var(--accent-soft); color:var(--accent-ink); }
.al-st.t-reserved{ background:color-mix(in srgb,#d63384 16%,transparent); color:#d63384; }
.al-st.t-planned{ background:color-mix(in srgb,#4363d8 16%,transparent); color:#4363d8; }
.al-st.t-ops{ background:color-mix(in srgb,#8a6d3b 18%,transparent); color:#a07c34; }
.al-route{ font-size:12px; color:var(--ink-2); min-width:220px; }
.al-route .al-arr{ color:var(--accent); margin:0 5px; font-weight:800; }
.al-plan{ white-space:nowrap; font-family:var(--font-mono); }
.al-plan.al-late{ color:var(--bad); font-weight:700; }
.al-overdue{ background:var(--bad-bg); }
.al-overdue:hover{ background:var(--bad-bg); }
.al-overdue .al-prio{ color:var(--bad); }
.al-empty{ text-align:center; color:var(--muted); padding:26px; font-size:13px; }
.al-fahrer-cell{ white-space:nowrap; }
.al-drv{ font-size:11.5px; color:var(--ink-2); margin-right:6px; }
.al-fahrer{ font-size:11px; padding:4px 9px; background:var(--card); color:var(--ink); font-weight:600;
  border:var(--border-w) solid var(--line-strong); border-radius:var(--radius-sm); box-shadow:none; }
.al-fahrer:hover{ border-color:var(--accent); background:var(--accent-soft); box-shadow:none; filter:none; }
.al-empf{ font-size:12px; line-height:1.25; }
.al-empf b{ color:var(--ok); font-weight:700; }
.al-empf-h{ display:block; font-size:10px; color:var(--muted); }
.al-empf-pick{ background:none; border:0; padding:0; margin:0; text-align:left; cursor:pointer; font:inherit; color:inherit; display:block; }
.al-empf-pick:hover b{ text-decoration:underline; }

/* Auftragsannahme — Fahrer-Empfehlung mit Alternativen */
.bestdrv.has-alts{ cursor:pointer; }
.bestdrv.has-alts:hover{ box-shadow:var(--card-hover); }
.bestdrv .bd-chev{ margin-left:auto; color:var(--muted); transition:transform .18s ease; align-self:center; }
.bestdrv.open .bd-chev{ transform:rotate(180deg); }
.bd-hint{ font-weight:600; color:var(--muted); font-size:10px; }
.bd-alts{ margin:6px 0 0; padding:10px 12px; background:var(--surface-2); border:1px solid var(--line);
  border-radius:var(--radius-sm); display:flex; flex-direction:column; gap:5px; }
.bd-alts-h{ font-size:10px; text-transform:uppercase; letter-spacing:.4px; font-weight:800; color:var(--muted); }
.bd-alt{ display:flex; align-items:center; gap:12px; font-size:12.5px; color:var(--ink-2); }
.bd-alt b{ color:var(--ink); min-width:130px; }
.bd-alts-note{ font-size:10.5px; color:var(--muted); font-style:italic; margin-top:2px; }

/* ============================ AUFTRAGSANNAHME (EAS-Maske) ============================ */
.aa-head{ align-items:center; }
.aa-newtag{ font-size:12px; font-weight:700; color:var(--accent-ink); background:var(--accent); padding:2px 10px; border-radius:999px; margin-left:8px; vertical-align:middle; }
.aa-lookup{ display:flex; gap:6px; align-items:center; }
.aa-lookup input{ width:220px; }
.aa-tabs{ display:flex; gap:2px; margin:0 0 14px; border-bottom:var(--border-w) solid var(--line-strong); }
.aa-tab{ font-size:12.5px; font-weight:700; padding:7px 14px; color:var(--muted); border:1px solid transparent; border-bottom:none;
  border-radius:6px 6px 0 0; }
.aa-tab.active{ color:var(--ink); background:var(--card); border-color:var(--line-strong); margin-bottom:-1px; }
.aa-tab.is-off{ opacity:.5; }
.aa-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:0 0 14px; }
.aa-sec{ padding:14px 16px; }
.aa-sec:first-child{ grid-column:1 / -1; }
.aa-sec-h{ display:flex; align-items:center; gap:8px; font-size:14px; font-weight:800; color:var(--ink); margin:0 0 12px; }
.aa-sec-h .ico{ width:26px; height:26px; border-radius:var(--radius-sm); background:var(--accent-soft); color:var(--accent);
  display:inline-flex; align-items:center; justify-content:center; }
.aa-sec-h .ico svg{ width:15px; height:15px; }
.aa-kdrow, .aa-row2, .aa-row-addr, .aa-row-meta, .aa-when{ display:flex; flex-wrap:wrap; gap:10px 12px; margin-bottom:10px; }
.aa-f{ display:flex; flex-direction:column; gap:3px; flex:1 1 128px; min-width:0; }
.aa-f label{ font-size:9.5px; text-transform:uppercase; letter-spacing:.4px; font-weight:700; color:var(--muted); }
.aa-f.grow{ flex:2 1 165px; }
.aa-f-s{ flex:0 0 74px; }
.aa-f-kd{ position:relative; flex:0 0 200px; }
.aa-req label{ color:var(--warn); }
.aa-picker{ position:absolute; top:100%; left:0; right:auto; width:520px; max-width:82vw; z-index:60; margin-top:4px;
  max-height:320px; overflow-y:auto; background:var(--card); border:var(--border-w) solid var(--line-strong);
  border-radius:var(--radius-sm); box-shadow:var(--shadow-lg); }
.aa-picker .bk-pick-main .muted{ white-space:normal; }
.aa-picker .bk-pick{ align-items:flex-start; }
.aa-svc{ display:flex; flex-wrap:wrap; gap:6px 12px; padding-top:4px; }
.aa-copy-ag{ margin-left:auto; font-size:11px; font-weight:700; color:var(--link); background:transparent; border:none; box-shadow:none; padding:0; }
.aa-copy-ag:hover{ color:var(--accent); box-shadow:none; filter:none; }
.aa-prod-h{ margin:4px 0 10px; }
.aa-req-note{ font-size:11px; font-weight:600; color:var(--muted); margin-left:6px; }
.aa-prodgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(100px,1fr)); gap:6px; margin:0 0 12px; }
.aa-prod{ display:flex; flex-direction:column; gap:1px; align-items:stretch; padding:8px 10px; text-align:left;
  min-width:0; background:var(--card); border:var(--border-w) solid var(--line-strong); border-radius:var(--radius-sm);
  border-top:3px solid var(--line-strong); cursor:pointer; box-shadow:none; }
.aa-prod > span{ width:100%; overflow-wrap:anywhere; white-space:normal; line-height:1.2; }
.aa-prod:hover{ background:var(--surface-2); box-shadow:none; filter:none; }
.aa-prod.sel{ border-color:var(--accent); border-top-color:var(--accent); background:var(--accent-soft); box-shadow:0 0 0 2px var(--accent) inset; }
.aa-prod.g-pac{ border-top-color:var(--accent); } .aa-prod.g-cargo{ border-top-color:var(--ok); }
.aa-prod.g-veh{ border-top-color:var(--ink-2); } .aa-prod.g-km{ border-top-color:var(--muted); } .aa-prod.g-ver{ border-top-color:var(--warn); }
.aa-prod-n{ font-size:12px; font-weight:800; color:var(--ink); line-height:1.15; }
.aa-prod-c{ font-size:10.5px; font-weight:700; color:var(--accent); }
.aa-prod-w{ font-size:11px; color:var(--ink-2); } .aa-prod-d{ font-size:10px; color:var(--muted); }
.aa-prod-p{ font-size:10px; color:var(--warn); font-weight:700; }
.aa-actions{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 14px; }
.aa-check{ display:inline-flex; align-items:center; gap:7px; }
.aa-check svg{ width:16px; height:16px; }
.aa-hint{ font-size:12px; color:var(--warn); font-weight:600; }
.aa-preview-tag{ font-size:11.5px; color:var(--muted); font-style:italic; }
.nw-lbl{ display:block; font-size:11px; font-weight:600; color:var(--ink-2); margin-bottom:5px; }
.dp-hint{ display:flex; align-items:flex-start; gap:10px; padding:10px 14px; margin:0 0 12px;
  background:var(--accent-soft); border:1px solid var(--line); border-left:3px solid var(--accent);
  border-radius:var(--radius-sm); font-size:12.5px; line-height:1.5; color:var(--ink-2); }
.dp-hint b{ color:var(--ink); }
.dp-hint-i{ flex:0 0 auto; width:18px; height:18px; margin-top:1px; border-radius:50%;
  background:var(--accent); color:var(--accent-ink); display:inline-flex; align-items:center;
  justify-content:center; font-weight:800; font-size:11px; font-style:italic; font-family:var(--font-mono); }
.rg-inactive{ opacity:.62; }
.rg-activate{ font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:999px; cursor:pointer;
  background:var(--ok-bg); color:var(--ok); border:1px solid var(--ok); box-shadow:none; }
.rg-activate:hover{ background:var(--ok); color:#fff; box-shadow:none; filter:none; }
.rg-activate:disabled{ opacity:.6; }
/* dynamische Adressen */
.aa-addr-sec{ margin:0 0 14px; }
.aa-addr-count{ font-size:12px; font-weight:600; color:var(--muted); margin-left:6px; }
.aa-addr-add{ font-size:12px; padding:5px 11px; }
.aa-addr-list{ display:flex; flex-direction:column; gap:10px; }
.aa-addr{ border:1px solid var(--line); border-left:3px solid var(--line-strong); border-radius:var(--radius-sm);
  padding:10px 12px; background:var(--surface-2); }
.aa-addr[data-kind="pickup"]{ border-left-color:var(--accent); }
.aa-addr[data-kind="deliver"]{ border-left-color:var(--ok); }
.aa-addr-head{ display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.aa-addr-badge{ font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; padding:2px 9px; border-radius:999px; }
.aa-addr-badge.k-p{ background:var(--accent-soft); color:var(--ink); }
.aa-addr-badge.k-d{ background:var(--ok-bg); color:var(--ok); }
.aa-addr-badge b{ font-family:var(--font-mono); }
.aa-addr-ag{ font-size:11px; font-weight:700; color:var(--link); background:transparent; border:none; box-shadow:none; padding:0 4px; cursor:pointer; }
.aa-addr-ag:hover{ color:var(--accent); box-shadow:none; filter:none; }
.aa-ic-btn{ width:26px; height:26px; padding:0; font-size:13px; line-height:1; background:var(--card); color:var(--ink-2);
  border:1px solid var(--line-strong); border-radius:var(--radius-sm); box-shadow:none; cursor:pointer; }
.aa-ic-btn:hover{ border-color:var(--accent); color:var(--ink); box-shadow:none; filter:none; }
.aa-result:empty{ display:none; }
.aa-result{ margin:0 0 12px; }
.aa-foot{ margin-top:4px; }
@media (max-width:820px){ .aa-grid{ grid-template-columns:1fr; } .aa-f-kd{ flex-basis:100%; } }
/* Annahme: zweispaltig — Formular links, Fahrer-Vorschau als klebriges Rechts-Panel,
   damit Erfassung UND Fahrer-Empfehlung ohne Scrollen gleichzeitig sichtbar sind. */
.aa-layout{ display:flex; gap:16px; align-items:flex-start; }
.aa-main{ flex:1 1 auto; min-width:0; }
.aa-side{ flex:0 0 360px; position:sticky; top:12px; align-self:flex-start;
  max-height:calc(100vh - 84px); overflow:auto; display:flex; flex-direction:column; gap:12px; }
.aa-side .aa-actions{ margin:0; flex-wrap:wrap; gap:8px; }
.aa-side .aa-result{ margin:0; }
.aa-side .aa-foot{ margin:0; }
@media (max-width:1100px){
  .aa-layout{ flex-direction:column; }
  .aa-side{ position:static; flex-basis:auto; width:100%; max-height:none; overflow:visible; }
}

/* ============================ MOTION ============================ */
@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

/* ============================ PRINT (Auftrag drucken/PDF) ============================ */
@media print{
  /* helle Tokens erzwingen — egal welches Theme aktiv ist */
  :root, :root[data-theme="dark"], :root[data-theme="light"]{
    --bg:#fff; --bg-2:#fff; --card:#fff; --surface-2:#f5f5f3; --overlay:#fff;
    --ink:#111; --ink-2:#333; --muted:#666; --line:#ddd; --line-strong:#bbb; --frame:#bbb;
    --accent:#E8E22A; --accent-ink:#4a4700; --link:#111;
    --ok:#157F4B; --ok-bg:#e8f2ec; --warn:#9a6200; --warn-bg:#f6eed9; --bad:#b0362b; --bad-bg:#f7e3e0;
    --body-bg:#fff; --shadow-sm:none; --shadow-md:none; --card-hover:none;
  }
  header, nav.side, .od-back, #note, .od-foot, .theme-toggle, .modal-backdrop,
  .rp-head-actions, .rp-tile-go{ display:none !important; }
  .shell{ display:block !important; }
  main{ padding:0 !important; }
  body{ background:#fff !important; color:#111 !important; }
  .card, .card.in, .rp-kpi, .rp-block{ box-shadow:none !important; border:1px solid #ccc !important; break-inside:avoid; margin-bottom:10px; }
  .rp-kpirow, .rp-gallery{ break-inside:avoid; }
  .rp-line, .rp-stackbar, .rp-bar-track{ forced-color-adjust:none; }
  .od-hist, .drv-body, .bk-picker-scroll{ max-height:none !important; overflow:visible !important; }
  a{ text-decoration:none; color:#111; }
  @page{ margin:14mm; }
}

/* ============================================================
   Auth: Login-Seite, Benutzer-Menü (Header), Benutzerverwaltung
   Durchgängig über Design-Tokens -> hell/dunkel automatisch.
   ============================================================ */

/* --- Login-/Landing-Seite: Split „Der Punkt bewegt sich" (standalone) --- */
.login-body{ min-height:100vh; margin:0; display:flex; color:var(--ink);
  font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif; }

/* Bühne (links) — immer dunkel: Nacht-Wien */
.login-stage{ position:relative; flex:1 1 56%; overflow:hidden;
  background:radial-gradient(120% 120% at 15% 20%, #141924, #0B0E13 70%); }
.login-map{ position:absolute; inset:0; width:100%; height:100%; }
.lm-net path{ fill:none; stroke:#232a35; stroke-width:2; }
.lm-nodes circle{ fill:#323a47; }
.lm-trail{ fill:none; stroke:rgba(232,226,42,.22); stroke-width:7; stroke-linecap:round;
  stroke-dasharray:170 3600; stroke-dashoffset:3770;
  animation:lm-flow var(--dur,7s) linear infinite; animation-delay:var(--delay,0s); }
.lm-pulse{ fill:none; stroke:#E8E22A; stroke-width:3.2; stroke-linecap:round;
  stroke-dasharray:60 3600; stroke-dashoffset:3660;
  filter:drop-shadow(0 0 5px rgba(232,226,42,.65));
  animation:lm-flow var(--dur,7s) linear infinite; animation-delay:var(--delay,0s); }
@keyframes lm-flow{ to{ stroke-dashoffset:0; } }
/* Kometkopf: weiches Licht an der Puls-Spitze */
.lm-head{ filter:drop-shadow(0 0 9px rgba(232,226,42,.55)); }
.lm-core{ fill:#F4EF6A; filter:drop-shadow(0 0 5px rgba(232,226,42,.95)); }
.lm-halo{ fill:#E8E22A; opacity:.16; }
/* Grätzel-Knoten glimmen kurz auf, wenn Licht vorbeizieht */
.lm-gn{ fill:#E8E22A; opacity:.1; transform-box:fill-box; transform-origin:center;
  filter:drop-shadow(0 0 5px rgba(232,226,42,.75));
  animation:lm-node 7s ease-in-out infinite; animation-delay:var(--d,0s); }
@keyframes lm-node{
  0%{ opacity:.1; transform:scale(1); }
  4%{ opacity:1; transform:scale(2); }
  20%{ opacity:.1; transform:scale(1); }
  100%{ opacity:.1; transform:scale(1); }
}

.login-stage-foot{ position:absolute; z-index:2;
  left:clamp(28px,5vw,64px); bottom:clamp(26px,6vh,56px); }
.login-wordmark{ margin:0; line-height:0; }
.login-wordmark svg{ display:block; height:clamp(38px,5.6vw,66px); width:auto;
  filter:drop-shadow(0 0 18px rgba(232,226,42,.28)); }
.login-clock{ margin-top:12px; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:#828d9b; }

/* Panel (rechts) — theme-aware Formular */
.login-panel{ flex:0 0 clamp(380px,44%,560px); display:flex; align-items:center; justify-content:center;
  padding:40px 34px; background:linear-gradient(180deg, var(--bg), var(--bg-2)); }
.login-card{ width:100%; max-width:360px; display:flex; flex-direction:column; gap:15px; }
.login-h{ margin:0 0 6px; font-size:26px; font-weight:800; letter-spacing:-.03em; }

@media (max-width:900px){
  .login-body{ flex-direction:column; }
  .login-stage{ flex:none; height:min(36vh,300px); }
  .login-panel{ flex:1 1 auto; width:100%; max-width:none; padding:32px 22px 40px; }
  .login-wordmark svg{ height:clamp(30px,9vw,48px); }
}
@media (prefers-reduced-motion: reduce){
  .lm-pulse{ animation:none; stroke-dashoffset:140; }
  .lm-trail{ display:none; }
  .lm-gn{ animation:none; opacity:.3; }
  /* Kometköpfe (SMIL) werden per pauseAnimations() im Skript eingefroren */
}
.login-field{ display:flex; flex-direction:column; gap:5px; }
.login-field > span{ font-size:12px; font-weight:700; color:var(--muted); }
.login-field input{ width:100%; box-sizing:border-box; padding:11px 13px; font-size:15px;
  background:var(--surface-2); color:var(--ink); border:1px solid var(--line-strong);
  border-radius:var(--radius-sm); outline:none; transition:border-color .12s, box-shadow .12s; }
.login-field input:focus{ border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.login-btn{ margin-top:6px; padding:12px 16px; font-size:15px; font-weight:800; cursor:pointer;
  background:var(--accent); color:var(--accent-ink); border:1px solid transparent;
  border-radius:var(--radius-sm); transition:filter .12s, transform .02s; }
.login-btn:hover{ filter:brightness(1.05); }
.login-btn:active{ transform:translateY(1px); }
.login-err{ padding:10px 12px; font-size:13px; font-weight:600; border-radius:var(--radius-sm);
  background:var(--bad-bg); color:var(--bad); border:1px solid color-mix(in srgb, var(--bad) 30%, transparent); }
.login-foot{ margin-top:8px; text-align:center; font-size:11.5px; color:var(--muted); }

/* --- Benutzer-Menü im Header --- */
.usermenu{ position:relative; margin-left:6px; }
.user-chip{ display:flex; align-items:center; gap:8px; padding:5px 10px 5px 5px; cursor:pointer;
  background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-pill); color:var(--ink); }
.user-chip:hover{ border-color:var(--line-strong); }
.user-av{ width:26px; height:26px; border-radius:50%; display:grid; place-items:center;
  background:var(--accent); color:var(--accent-ink); font-weight:800; font-size:12px; }
.user-nm{ font-size:13px; font-weight:700; max-width:130px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.user-rl{ font-size:10px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--muted); }
.user-pop{ position:absolute; right:0; top:calc(100% + 8px); min-width:200px; z-index:60;
  background:var(--overlay); border:1px solid var(--line-strong); border-radius:var(--radius-sm);
  box-shadow:0 16px 40px -18px rgba(0,0,0,.5); overflow:hidden; }
.user-pop-h{ display:flex; flex-direction:column; gap:2px; padding:12px 14px; border-bottom:1px solid var(--line); }
.user-pop-h span{ font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.user-pop-form{ margin:0; }
.user-pop-a{ display:flex; align-items:center; gap:9px; padding:11px 14px; color:var(--ink);
  text-decoration:none; font-size:14px; font-weight:600;
  width:100%; box-sizing:border-box; border:0; background:none; cursor:pointer;
  font-family:inherit; text-align:left; }
.user-pop-a:hover{ background:var(--surface-2); }
.user-pop-a .ic-svg{ width:16px; height:16px; }
@media (max-width:760px){ .user-nm, .user-rl{ display:none; } }

/* --- Benutzerverwaltung --- */
.au-flash{ padding:10px 14px; border-radius:var(--radius-sm); font-size:13.5px; font-weight:600; margin:0 0 14px; }
.au-flash.ok{ background:var(--ok-bg); color:var(--ok); }
.au-flash.bad{ background:var(--bad-bg); color:var(--bad); }
.au-h{ display:flex; align-items:center; gap:8px; margin:0 0 14px; font-size:15px; font-weight:800; }
.au-h .ic-svg{ width:17px; height:17px; color:var(--muted); }
.au-new{ margin-bottom:16px; }
.au-form{ display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
.au-form label{ display:flex; flex-direction:column; gap:5px; flex:1 1 160px; }
.au-form label > span{ font-size:12px; font-weight:700; color:var(--muted); }
.au-form input, .au-form select{ padding:9px 11px; font-size:14px; background:var(--surface-2);
  color:var(--ink); border:1px solid var(--line-strong); border-radius:var(--radius-sm); outline:none; }
.au-form input:focus, .au-form select:focus{ border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.au-form .btn-new{ flex:0 0 auto; padding:10px 18px; }
.au-hint{ margin-top:12px; font-size:12px; color:var(--muted); }
.au-table-wrap{ overflow-x:auto; }
.au-table{ width:100%; border-collapse:collapse; font-size:14px; }
.au-table th{ text-align:left; padding:8px 10px; font-size:11.5px; font-weight:700; letter-spacing:.03em;
  text-transform:uppercase; color:var(--muted); border-bottom:1px solid var(--line-strong); }
.au-table td{ padding:10px; border-bottom:1px solid var(--line); vertical-align:middle; }
.au-table tr.is-off{ opacity:.55; }
.au-u{ display:flex; align-items:center; gap:10px; }
.au-av{ width:30px; height:30px; border-radius:50%; display:grid; place-items:center; flex:0 0 auto;
  background:var(--accent-soft); color:var(--accent-ink); font-weight:800; font-size:13px; }
.au-u > span{ display:flex; flex-direction:column; line-height:1.25; }
.au-un{ font-size:11.5px; color:var(--muted); }
.au-last{ font-size:12.5px; color:var(--muted); white-space:nowrap; }
.au-inline{ display:inline-flex; align-items:center; gap:5px; margin:0; }
.au-actions{ white-space:nowrap; }
.au-actions .au-inline{ margin-right:6px; }
.au-pw input{ width:130px; padding:6px 9px; font-size:12.5px; background:var(--surface-2);
  color:var(--ink); border:1px solid var(--line-strong); border-radius:var(--radius-sm); }
.au-inline select{ padding:6px 9px; font-size:13px; background:var(--surface-2); color:var(--ink);
  border:1px solid var(--line-strong); border-radius:var(--radius-sm); }
.au-actions .btn-ghost{ padding:6px 10px; font-size:12.5px; }
.au-actions .btn-ghost .ic-svg{ width:15px; height:15px; }
.au-del{ color:var(--bad); }

/* ============================================================
   Disposition-Grid (EAS-Format: 20 Spalten + Master-Detail unten)
   ============================================================ */
.dg-head{ margin-bottom:10px; }
.dg-toolbar{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; padding:8px 12px; margin:0 0 10px;
  background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-sm); }
.dg-btn{ display:inline-flex; align-items:center; gap:6px; padding:5px 11px; font-size:12.5px; font-weight:600;
  background:var(--card); color:var(--ink); border:1px solid var(--line-strong); border-radius:var(--radius-sm); cursor:pointer; }
.dg-btn:disabled{ opacity:.5; cursor:not-allowed; }
.dg-btn .ic-svg{ width:15px; height:15px; }
.dg-sep{ width:1px; align-self:stretch; min-height:22px; background:var(--line-strong); }
.dg-chk{ display:inline-flex; align-items:center; gap:6px; font-size:12.5px; color:var(--ink); cursor:pointer; white-space:nowrap; }
.dg-prods{ display:inline-flex; flex-wrap:wrap; gap:6px; }
.dg-prod{ padding:3px 9px; font-size:12px; border-radius:var(--radius-pill); border:1px solid var(--line-strong);
  background:var(--card); color:var(--muted); cursor:pointer; }
.dg-prod.on{ border-color:var(--accent); background:var(--accent-soft); color:var(--ink); }
.dg-search{ display:inline-flex; align-items:center; gap:6px; padding:3px 9px; background:var(--card);
  border:1px solid var(--line-strong); border-radius:var(--radius-sm); color:var(--muted); }
.dg-search .ic-svg{ width:14px; height:14px; }
.dg-search input{ border:0; background:none; outline:none; font:inherit; font-size:12.5px; color:var(--ink); width:200px; }

.dg-split{ display:flex; flex-direction:row; align-items:stretch; gap:10px; }
.dg-scroll{ flex:1 1 auto; min-width:0; overflow:auto; max-height:calc(100vh - 208px); border:1px solid var(--line);
  border-radius:var(--radius-sm); background:var(--card); }

/* Tabelle nur so breit wie ihre (engen) Spalten — NICHT auf 100% gestreckt. So entstehen
   keine Zwischenräume durch Streckung, und alles passt ohne horizontale Scrollleiste (die
   leere Fläche liegt rechts hinter der letzten Spalte statt zwischen den Spalten). */
.dg-table{ border-collapse:separate; border-spacing:0; table-layout:fixed; width:max-content; font-size:11px; }
.dg-table col.c-rec{ width:120px; }
.dg-rec{ display:inline-flex; align-items:center; gap:5px; max-width:100%; border:1px solid var(--line-strong);
  background:var(--surface-2); color:var(--ink); border-radius:var(--radius-sm); padding:2px 7px; cursor:pointer;
  font:inherit; font-size:11.5px; font-weight:700; white-space:nowrap; overflow:hidden; }
.dg-rec:hover{ border-color:var(--ok); background:var(--card); }
.dg-rec[disabled]{ opacity:.6; cursor:default; }
.dg-rec-go{ font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; color:var(--ok); opacity:0; flex:0 0 auto; }
.dg-rec:hover .dg-rec-go{ opacity:1; }
.dg-rec-done{ color:var(--ok); font-weight:700; font-size:11.5px; }
.dg-rec-cell{ overflow:hidden; }
.dg-table col.c-prod{ width:46px; } .dg-table col.c-la{ width:38px; } .dg-table col.c-t{ width:50px; }
.dg-table col.c-p{ width:22px; } .dg-table col.c-b{ width:38px; } .dg-table col.c-str{ width:146px; }
.dg-table col.c-anz{ width:32px; } .dg-table col.c-drv{ width:104px; } .dg-table col.c-st{ width:90px; }
.dg-table col.c-letzte{ width:78px; } .dg-table col.c-zf{ width:44px; }
.dg-table thead th{ position:sticky; top:0; z-index:3; background:var(--card); text-align:left;
  font-size:9.5px; font-weight:800; letter-spacing:.1px; text-transform:uppercase; color:var(--muted);
  padding:3px 4px; border-bottom:1.5px solid var(--line-strong); white-space:nowrap; }
.dg-table th.c, .dg-table td.c{ text-align:center; } .dg-table th.r, .dg-table td.r{ text-align:right; }
.dg-table tbody td{ height:20px; padding:0 4px; border-bottom:1px solid var(--line); white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; color:var(--ink); line-height:1.15; }
.dg-table .mono{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
.dg-str{ overflow:hidden; text-overflow:ellipsis; }
.dg-table .g-pick, .dg-table .g-deliv, .dg-table .g-addr, .dg-table .g-dispo{ border-left:1.5px solid var(--line-strong); }
.dg-table td.g-deliv, .dg-table th.g-deliv{ background:color-mix(in srgb, var(--surface-2) 45%, transparent); }
/* Abhol-Block (Ab-Dat · Ab-Von · Ab-Bis) als zusammenhängender Block: dezent getönt,
   Linie links = Frozen-Kante hinter LA (fz2), Linie rechts = g-deliv-Linie von Zu-Da.
   pk-l setzt die linke Linie zusätzlich direkt am Block (falls ohne Frozen-Nachbar sichtbar). */
.dg-table td.pk, .dg-table th.pk{ background:color-mix(in srgb, var(--accent-soft) 34%, transparent); }
.dg-table td.pk-l, .dg-table th.pk-l{ border-left:1.5px solid var(--line-strong); }
.dg-table td.pk-r, .dg-table th.pk-r{ border-right:1.5px solid var(--line-strong); }
.dg-row{ cursor:pointer; }
.dg-row:hover{ background:var(--surface-2); }
.dg-row.is-overdue{ box-shadow:inset 3px 0 0 var(--bad); }
.dg-row.is-active{ background:var(--accent-soft); box-shadow:inset 3px 0 0 var(--accent); }
.dg-prod-tag{ font-weight:700; font-size:11.5px; }
.dg-la{ color:var(--muted); font-family:var(--font-mono); }
.dg-p{ font-family:var(--font-mono); }
.dg-p-hi{ color:var(--bad); } .dg-p-b{ font-weight:800; }
.dg-over{ color:var(--bad); font-weight:700; }
.dg-dash{ color:var(--muted); }
.dg-drv{ overflow:hidden; text-overflow:ellipsis; }
.dg-zf.ok{ color:var(--ok); font-weight:700; font-size:11px; }
.dg-empty{ text-align:center; color:var(--muted); padding:24px; }
.dg-split.hide-a34 th.c-a34, .dg-split.hide-a34 td.c-a34{ display:none; }

/* ── Kondensiertes Auftrags-Detailpanel (rechts angedockt) ─────────────── */
.dg-detail{ flex:0 0 380px; align-self:flex-start; position:sticky; top:8px;
  max-height:calc(100vh - 208px); overflow:auto; border:1px solid var(--line-strong);
  border-radius:var(--radius-sm); background:var(--card); }
.dp-loading, .dp-empty{ padding:24px; text-align:center; color:var(--muted); font-size:12.5px; }
.dp{ display:flex; flex-direction:column; }
.dp-head{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; padding:9px 12px;
  border-bottom:1px solid var(--line); background:var(--surface-2); position:sticky; top:0; z-index:2; }
.dp-prio{ font-family:var(--font-mono); font-weight:800; font-size:11px; color:var(--muted); }
.dp-prio.hi{ color:var(--bad); }
.dp-prod{ font-weight:800; font-size:12px; }
.dp-tf{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; color:var(--accent-ink,var(--muted)); }
.dp-ref{ margin-left:2px; font-size:11.5px; color:var(--muted); }
.dp-orig{ margin-left:auto; color:var(--muted); display:inline-flex; } .dp-orig .ic-svg{ width:15px; height:15px; }
.dp-x{ background:none; border:0; font-size:20px; line-height:1; color:var(--muted); cursor:pointer; padding:0 2px; }
.dp-auskunft{ display:flex; align-items:flex-start; gap:8px; padding:9px 12px; border-bottom:1px solid var(--line);
  font-size:12.5px; color:var(--ink); background:var(--accent-soft); }
.dp-auskunft span{ flex:1; }
.dp-copy{ flex:0 0 auto; background:none; border:0; color:var(--muted); cursor:pointer; padding:1px; }
.dp-copy .ic-svg{ width:14px; height:14px; } .dp-copy.copied{ color:var(--ok); }
.dp-stops{ padding:8px 12px; border-bottom:1px solid var(--line); display:flex; flex-direction:column; gap:8px; }
.dp-stop{ display:flex; gap:8px; }
.dp-stop.done{ opacity:.55; }
.dp-stop-ic{ flex:0 0 auto; font-size:11px; color:var(--muted); width:12px; text-align:center; padding-top:1px; }
.dp-stop-body{ min-width:0; flex:1; }
.dp-stop-top{ display:flex; align-items:baseline; gap:8px; justify-content:space-between; }
.dp-stop-top b{ font-size:12.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dp-win{ font-size:11.5px; color:var(--muted); flex:0 0 auto; } .dp-win.late{ color:var(--bad); font-weight:700; }
.dp-stop-sub{ font-size:11px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dp-facts{ padding:8px 12px; border-bottom:1px solid var(--line); display:grid; grid-template-columns:1fr; gap:5px; }
.dp-f{ display:flex; gap:8px; font-size:12px; }
.dp-f .k{ flex:0 0 72px; color:var(--muted); } .dp-f .v{ flex:1; color:var(--ink); }
.dp-warns{ padding:8px 12px; border-bottom:1px solid var(--line); display:flex; flex-wrap:wrap; gap:6px; }
.dp-sec{ padding:8px 12px; border-bottom:1px solid var(--line); }
.dp-sec-h{ font-size:10px; font-weight:800; letter-spacing:.3px; text-transform:uppercase; color:var(--muted); margin-bottom:6px; }
.dp-ev{ display:flex; gap:8px; font-size:11.5px; padding:2px 0; }
.dp-ev-when{ flex:0 0 auto; color:var(--muted); }
.dp-ev-txt{ min-width:0; color:var(--ink); }
.dp-more{ display:inline-block; margin-top:4px; font-size:11.5px; color:var(--accent-ink,var(--muted)); }
.dp-actions{ padding:9px 12px; display:flex; flex-wrap:wrap; gap:6px; }
.dp-act{ display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:600;
  padding:5px 9px; border:1px solid var(--line-strong); border-radius:var(--radius-sm);
  background:var(--surface-2); color:var(--ink); cursor:pointer; text-decoration:none; }
.dp-act:hover{ background:var(--card); } .dp-act .ic-svg{ width:14px; height:14px; }

@media (max-width:1100px){
  .dg-split{ flex-direction:column; }
  .dg-detail{ flex:none; position:static; max-height:none; width:100%; }
}
@media (max-width:1000px){ .dg-search input{ width:120px; } }
/* Eingefrorene linke Spalten (Prod·LA·Ab-Dat) — Orientierung beim Seitwärts-Scrollen */
.dg-table td.dg-fz, .dg-table th.dg-fz{ position:sticky; background:var(--card); }
.dg-table td.dg-fz{ z-index:2; }
.dg-table thead th.dg-fz{ z-index:5; }
/* Eingefroren sind jetzt nur Prod + LA; die Trennkante/Schatten sitzt hinter LA (fz2),
   Ab-Dat scrollt mit dem Abhol-Block mit. */
.dg-fz1{ left:0; } .dg-fz2{ left:46px; border-right:1.5px solid var(--line-strong); }
.dg-table tbody td.dg-fz2{ box-shadow:2px 0 5px -2px rgba(0,0,0,.18); }
.dg-row:hover td.dg-fz{ background:var(--surface-2); }
.dg-row.is-active td.dg-fz{ background:var(--accent-soft); }
.dg-row.is-overdue td.dg-fz1{ box-shadow:inset 3px 0 0 var(--bad); }
.dg-row.is-active td.dg-fz1{ box-shadow:inset 3px 0 0 var(--accent); }

/* ============================ FEEDBACK-WIDGET (an die IT) ============================ */
/* z-index über Leaflet-Karte (~1000) + Flotten-Overlays (600) — sonst auf /flotte verdeckt */
#fbRoot{ position:fixed; right:20px; bottom:20px; z-index:1200; }
#fbFab{ display:inline-flex; align-items:center; gap:8px; padding:11px 16px; border:0; cursor:pointer;
  border-radius:999px; background:var(--accent); color:#101010; font:inherit; font-weight:800; font-size:13px;
  box-shadow:var(--shadow-lg, 0 8px 24px rgba(0,0,0,.25)); }
#fbFab:hover{ filter:brightness(1.05); }
#fbFab svg{ flex:0 0 auto; }
#fbRoot.open #fbFab{ display:none; }
#fbPanel{ position:fixed; right:20px; bottom:20px; width:min(380px, calc(100vw - 32px));
  display:flex; flex-direction:column; overflow:hidden;
  background:var(--card); border:1px solid var(--line-strong); border-radius:14px;
  box-shadow:var(--shadow-lg, 0 12px 40px rgba(0,0,0,.35)); }
.fbw-head{ display:flex; align-items:center; gap:8px; padding:12px 14px; background:var(--surface-2);
  border-bottom:1px solid var(--line); }
.fbw-title{ font-weight:800; font-size:14px; }
#fbClose{ margin-left:auto; background:none; border:0; font-size:22px; line-height:1; color:var(--muted); cursor:pointer; padding:0 4px; }
.fbw-intro{ padding:12px 14px 4px; font-size:12px; color:var(--muted); line-height:1.5; }
.fbw-form{ display:flex; flex-direction:column; gap:10px; padding:10px 14px 14px; }
.fbw-lbl{ display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:var(--ink-2); }
.fbw-form select, .fbw-form textarea{ border:1px solid var(--line-strong); border-radius:8px; padding:8px 10px;
  font:inherit; font-size:13px; background:var(--card); color:var(--ink); outline:none; width:100%; }
.fbw-form textarea{ resize:vertical; min-height:96px; line-height:1.5; }
.fbw-form select:focus, .fbw-form textarea:focus{ border-color:var(--primary); }
.fbw-foot{ display:flex; align-items:center; gap:8px; }
.fbw-ctx{ flex:1; font-size:10.5px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fbw-send{ flex:0 0 auto; border:0; border-radius:8px; background:var(--accent); color:#101010; cursor:pointer;
  font:inherit; font-weight:800; font-size:13px; padding:9px 18px; }
.fbw-send:hover{ filter:brightness(1.05); } .fbw-send:disabled{ opacity:.6; cursor:default; }
.fbw-done{ padding:26px 20px; text-align:center; color:var(--ink); font-size:14px; }
.fbw-done-ic{ font-size:34px; margin-bottom:8px; }
.fbw-again{ margin-top:14px; border:1px solid var(--line-strong); background:var(--surface-2); color:var(--ink-2);
  border-radius:8px; padding:7px 14px; font:inherit; font-size:12px; font-weight:600; cursor:pointer; }
.fbw-again:hover{ border-color:var(--primary); color:var(--ink); }
@media print{ #fbRoot{ display:none !important; } }

/* ---- Admin-Feedback-Inbox ---- */
.fb-filters{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
.fb-chip{ border:1px solid var(--line-strong); background:var(--surface-2); color:var(--ink-2);
  border-radius:999px; padding:6px 13px; font-size:12.5px; font-weight:600; text-decoration:none; }
.fb-chip:hover{ border-color:var(--primary); color:var(--ink); }
.fb-chip.on{ background:var(--accent-soft); color:var(--nav-active-fg); border-color:transparent; }
.fb-empty{ text-align:center; color:var(--muted); padding:24px; }
.fb-list{ display:flex; flex-direction:column; gap:10px; }
.fb-item{ padding:12px 14px; border-left:3px solid var(--line-strong); }
.fb-item.fb-s-neu{ border-left-color:var(--accent); }
.fb-item.fb-s-in_arbeit{ border-left-color:var(--warn); }
.fb-item.fb-s-erledigt{ border-left-color:var(--ok); }
.fb-item.fb-s-abgelehnt{ border-left-color:var(--muted); opacity:.75; }
.fb-item-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:12px; color:var(--muted); }
.fb-badge{ font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; padding:2px 8px; border-radius:999px; }
.fb-b-neu{ background:var(--accent-soft); color:var(--nav-active-fg); }
.fb-b-in_arbeit{ background:color-mix(in srgb, var(--warn) 22%, transparent); color:var(--warn); }
.fb-b-erledigt{ background:color-mix(in srgb, var(--ok) 20%, transparent); color:var(--ok); }
.fb-b-abgelehnt{ background:var(--surface-2); color:var(--muted); }
.fb-who b{ color:var(--ink); }
.fb-page{ color:var(--muted); text-decoration:none; } .fb-page:hover{ color:var(--primary); }
.fb-cat{ background:var(--surface-2); border-radius:6px; padding:1px 7px; font-weight:600; }
.fb-done-at{ color:var(--ok); font-weight:700; }
.fb-msg{ margin:8px 0; font-size:13.5px; color:var(--ink); line-height:1.55; white-space:pre-wrap; }
.fb-note{ font-size:12px; color:var(--ink-2); background:var(--surface-2); border-radius:8px; padding:7px 10px; margin-bottom:8px; }
.fb-actions{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.fb-actions select{ border:1px solid var(--line-strong); border-radius:8px; padding:6px 9px; font:inherit; font-size:12.5px; background:var(--card); color:var(--ink); }
.fb-actions input{ flex:1; min-width:160px; border:1px solid var(--line-strong); border-radius:8px; padding:6px 10px; font:inherit; font-size:12.5px; background:var(--card); color:var(--ink); }

/* Flotte = Leitstand-Merge: KPI-Kacheln über, Fahrer-Spuren unter der Karte */
.fl-kpis{ margin-bottom:12px; }
.fl-lanes{ margin-top:6px; }
.fl-head-slim{ margin:0 0 8px; }
.ck-crit{ color:var(--bad) !important; }

/* ---- Disposition: Fahrer-Empfehlung im Detailpanel (1-Klick-Vergabe) ---- */
.dp-reco .dp-sec-h{ margin-bottom:6px; }
.dp-drv{ display:flex; align-items:center; gap:8px; width:100%; text-align:left; cursor:pointer;
  border:1px solid var(--line-strong); background:var(--surface-2); color:var(--ink);
  border-radius:var(--radius-sm); padding:7px 10px; margin-bottom:5px; font:inherit; font-size:12.5px; }
.dp-drv:hover{ border-color:var(--primary); background:var(--card); }
.dp-drv:disabled{ opacity:.5; cursor:default; }
.dp-drv.tier-recommended{ border-left:3px solid var(--ok); }
.dp-drv.tier-suggested{ border-left:3px solid var(--warn); }
.dp-drv.tier-active{ border-left:3px solid var(--line-strong); }
.dp-drv-nm{ font-weight:700; flex:0 0 auto; }
.dp-drv-meta{ color:var(--muted); font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
.dp-drv-go{ flex:0 0 auto; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.3px;
  color:var(--accent-ink,var(--primary)); opacity:0; transition:opacity .12s; }
.dp-drv:hover .dp-drv-go{ opacity:1; }
.dp-reco-note{ font-size:10.5px; color:var(--muted); margin-top:4px; line-height:1.4; }
.dp-reco-done{ padding:10px 4px; font-size:13px; color:var(--ok); font-weight:600; }

/* ---- Disposition: Mehrfachauswahl + Bulk-Leiste ---- */
.dg-btn.on{ background:var(--accent-soft); color:var(--nav-active-fg); border-color:transparent; }
.dg-btn.primary{ background:var(--accent); color:#101010; border-color:transparent; font-weight:800; }
.dg-btn.primary:disabled{ opacity:.5; cursor:default; }
.dg-bulk{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 10px; padding:9px 12px;
  background:var(--accent-soft); border:1px solid var(--line-strong); border-radius:var(--radius-sm); }
.dg-bulk-n b{ font-size:15px; } .dg-bulk-arrow{ color:var(--muted); font-size:12px; }
.dg-bulk select{ border:1px solid var(--line-strong); border-radius:8px; padding:6px 10px; font:inherit; font-size:12.5px; background:var(--card); color:var(--ink); min-width:180px; }
.dg-bulk-msg{ font-size:12.5px; font-weight:700; color:var(--ok); }
.dg-split.multi .dg-row{ cursor:pointer; }
.dg-split.multi .dg-row td.dg-fz1{ position:relative; }
.dg-row.is-sel{ background:var(--accent-soft) !important; }
.dg-row.is-sel td.dg-fz{ background:var(--accent-soft) !important; }
.dg-row.is-sel td.dg-fz1{ box-shadow:inset 3px 0 0 var(--accent); }
.dg-split.multi .dg-row td.dg-fz1::after{ content:"○"; position:absolute; right:2px; top:50%; transform:translateY(-50%); color:var(--muted); font-size:11px; }
.dg-split.multi .dg-row.is-sel td.dg-fz1::after{ content:"●"; color:var(--accent); }

/* ===== Dispo-Grid SCHLANK (2026-08, Ops-Feedback Sparky): wenige Spalten, randlos,
   Zebra, größer, kein Horizontalscroll, verschiebbare Spalten. Überschreibt die dichten
   Regeln oben (späterer Selektor gleicher Spezifität gewinnt). ===== */
.dg-scroll{ border:0; background:transparent; max-height:calc(100vh - 188px); overflow-y:auto; overflow-x:hidden; }
.dg-table{ table-layout:fixed; width:100%; border-collapse:collapse; font-size:13px; }
.dg-table thead th{ position:sticky; top:0; z-index:3; background:var(--card); text-align:left;
  font-size:11px; font-weight:800; letter-spacing:.2px; text-transform:none; color:var(--muted);
  padding:7px 10px; border-bottom:2px solid var(--line-strong); white-space:nowrap;
  cursor:grab; user-select:none; }
.dg-table thead th.drag-over{ box-shadow:inset 2px 0 0 var(--accent); }
.dg-table thead th.dragging{ opacity:.45; }
.dg-table tbody td{ padding:8px 10px; border:0; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; color:var(--ink); line-height:1.3; height:auto; }
.dg-table tbody tr:nth-child(even){ background:color-mix(in srgb, var(--surface-2) 40%, transparent); }
.dg-row{ cursor:pointer; }
.dg-row:hover{ background:var(--surface-2) !important; }
.dg-row.is-active{ background:var(--accent-soft) !important; box-shadow:inset 3px 0 0 var(--accent); }
.dg-row.is-overdue{ box-shadow:inset 3px 0 0 var(--bad); }
.dg-route .arw{ color:var(--muted); padding:0 3px; }
.dg-over{ color:var(--bad); font-weight:800; }
.dg-prio{ display:inline-block; min-width:20px; text-align:center; padding:1px 5px; border-radius:5px;
  font-size:12px; font-weight:800; color:#fff; font-variant-numeric:tabular-nums; }
.dg-prio.p1{ background:#d92d20; } .dg-prio.p2{ background:#e8590c; }
.dg-prio.p6{ background:#3a3a3a; } .dg-prio.p7{ background:#7048e8; } .dg-prio.pn{ background:#9aa0a6; }
/* Spalten-Menü (ein-/ausblenden) */
.dg-colmenu-wrap{ position:relative; }
.dg-colmenu{ position:absolute; right:0; top:calc(100% + 6px); z-index:30; background:var(--card);
  border:1px solid var(--line-strong); border-radius:8px; box-shadow:var(--shadow-md); padding:8px; min-width:190px; }
.dg-colmenu label{ display:flex; align-items:center; gap:8px; padding:5px 8px; font-size:12.5px;
  text-transform:none; letter-spacing:0; font-weight:600; color:var(--ink); cursor:pointer; border-radius:6px; margin:0; }
.dg-colmenu label:hover{ background:var(--surface-2); }
.dg-colmenu .foot{ border-top:1px solid var(--line); margin-top:6px; padding-top:6px; text-align:right; }
.dg-colmenu .foot a{ font-size:11.5px; color:var(--accent); cursor:pointer; }
.dg-colhint{ font-size:11px; color:var(--muted); }
/* Detail-Panel: Sendungsbeschreibung + Kontakt/Telefon/Hinweis je Stopp */
.dp-sendung{ display:flex; gap:8px; padding:6px 0 2px; font-size:12.5px; }
.dp-sendung .k{ color:var(--muted); font-weight:700; text-transform:uppercase; font-size:10px; letter-spacing:.4px; flex:0 0 54px; padding-top:2px; }
.dp-sendung .v{ color:var(--ink); }
.dp-stop-contact{ font-size:12px; color:var(--ink-2); margin-top:2px; }
.dp-stop-contact a{ color:var(--accent); text-decoration:none; font-weight:700; }
.dp-stop-note{ font-size:12px; color:var(--warn); background:var(--warn-bg); border-radius:5px; padding:2px 7px; margin-top:3px; display:inline-block; }
/* Kunden-Self-Service (Registrierung / Passwort-Reset) */
.ks-sub{ font-size:13px; color:var(--muted); margin:-4px 0 14px; line-height:1.5; }
.ks-links{ margin-top:14px; font-size:13px; text-align:center; }
.ks-links a{ color:var(--accent); text-decoration:none; }
.ks-links a:hover{ text-decoration:underline; }
.ks-row{ display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }
.ks-row.ks-3{ grid-template-columns:110px 1fr 1fr; }
.ks-narrow{ max-width:120px; }
.ks-check{ display:flex; gap:8px; align-items:flex-start; font-size:12.5px; color:var(--ink-2);
  font-weight:500; text-transform:none; letter-spacing:0; margin:10px 0 0; cursor:pointer; }
.ks-check input{ width:auto; margin-top:2px; flex:0 0 auto; }
.ks-check a{ color:var(--accent); }
.ks-ok{ border:1px solid var(--ok); color:var(--ok); background:transparent; border-radius:8px;
  padding:12px 14px; font-size:13.5px; line-height:1.5; }
.ks-mailbody{ white-space:pre-wrap; color:var(--ink-2); font-size:11.5px; margin-top:4px; max-width:680px; }
.login-foot-links{ margin-top:16px; display:flex; gap:16px; justify-content:center; font-size:12.5px; }
.login-foot-links a{ color:var(--muted); text-decoration:none; }
.login-foot-links a:hover{ color:var(--accent); text-decoration:underline; }
@media(max-width:560px){ .ks-row, .ks-row.ks-3{ grid-template-columns:1fr; } }
/* Standalone Self-Service-Seiten: zentriert (nicht das Split-Login-Layout) */
.login-body.ks-standalone{ justify-content:center; align-items:flex-start; overflow-y:auto;
  padding:34px 16px 60px; background:linear-gradient(180deg, var(--bg), var(--bg-2)); }
.ks-standalone .login-panel{ flex:1 1 auto; width:100%; max-width:660px; background:transparent;
  padding:0; align-items:flex-start; }
.ks-standalone .login-card{ max-width:660px; }
.ks-section{ border-top:1px solid var(--line); margin-top:18px; padding-top:14px; }
.ks-section-h{ font-size:13px; font-weight:800; color:var(--ink); margin:0 0 8px; text-transform:none; letter-spacing:0; }
.ks-fields[hidden]{ display:none; }
.ks-req-3{ grid-template-columns:1fr 1fr 1fr; }
@media(max-width:560px){ .ks-req-3{ grid-template-columns:1fr; } }

/* ---- Cockpit: kompakte Flottenlage-Leiste (1–2 Zeilen) + dichtere Kacheln ---- */
.ck-fleetbar{ display:flex; align-items:center; gap:8px 14px; flex-wrap:wrap; padding:9px 14px; margin-bottom:12px; }
.ck-fleetbar .ico{ display:inline-flex; color:var(--muted); } .ck-fleetbar .ico svg{ width:16px; height:16px; }
.ck-fb-h{ font-size:13px; font-weight:800; }
.ck-fb-sep{ width:1px; height:18px; background:var(--line-strong); flex:0 0 auto; }
.ck-fb-stat{ font-size:12.5px; color:var(--ink-2); } .ck-fb-stat b{ font-family:var(--font-mono); color:var(--ink); font-size:14px; }
.ck-fleetbar .ck-break{ display:flex; align-items:center; gap:8px; margin:0; padding:0; border:0; }
.ck-fleetbar .ck-break-lbl{ font-size:11px; color:var(--muted); margin:0; }
.ck-fleetbar .ck-break-row{ display:flex; gap:6px; flex-wrap:wrap; }
/* Kacheln etwas kompakter, damit KPIs + Leiste + Zonenkarte zusammen auf einen Screen gehen */
.ck-kpis .tile{ padding:9px 12px; }
.ck-kpis .tile .v{ font-size:22px; line-height:1.1; }
.ck-kpis .tile .foot{ font-size:10px; margin-top:2px; }
.ck-sec-h{ margin-top:6px; }

/* ---- Auftragsannahme schlanker (Standard-Auftrag auf einen Screen) ---- */
.aa-sec{ padding:11px 14px; }
.aa-sec-h{ font-size:13px; margin-bottom:8px; }
.aa-kdrow, .aa-row2, .aa-row-addr, .aa-row-meta, .aa-when{ gap:7px 10px; margin-bottom:7px; }
.aa-f{ gap:2px; }
.aa-f label{ font-size:9px; }
.aa-f input, .aa-f select{ padding:6px 9px; font-size:12.5px; }
.aa-grid{ gap:12px; margin-bottom:12px; }
.aa-addr{ padding:9px 12px; }
.aa-addr-list{ gap:8px; }
.aa-addr-head{ margin-bottom:6px; }
.aa-when{ margin-bottom:0; }

/* Vorabcheck: sichtbarer Hinweis, wenn keine Fahrer-Empfehlung berechnet wurde */
.bestdrv.bd-none{ opacity:.85; }
.bestdrv.bd-none .bd-lbl{ color:var(--muted); }

/* Empfehlungs-Report: Segment-Tabellen */
.rp-seg-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:12px; margin:0 0 14px; }
.rp-seg{ padding:12px 14px; }
.rp-seg-h{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; color:var(--muted); margin-bottom:8px; }
.rp-seg-t{ width:100%; border-collapse:collapse; font-size:12.5px; }
.rp-seg-t th{ text-align:left; font-size:10px; text-transform:uppercase; letter-spacing:.3px; color:var(--muted); padding:4px 6px; border-bottom:1px solid var(--line); }
.rp-seg-t td{ padding:5px 6px; border-bottom:1px solid var(--line); }
.rp-seg-t th.c, .rp-seg-t td.c{ text-align:center; }

/* Feedback-Button auf /flotte nach links (sonst überlappt er die Fahrer-Detailkarte) */
body[data-nav="flotte"] #fbRoot{ left:20px; right:auto; }
body[data-nav="flotte"] #fbPanel{ left:20px; right:auto; }

/* Vorabcheck: Richtpreis-Block */
.r-price{ margin:10px 0 4px; padding:10px 12px; border:1px solid var(--line-strong); border-radius:var(--radius-sm); background:var(--accent-soft); }
/* Offizielle OLB-Richtzeit (Abholung/Zustellung bis) */
.r-richtzeit{ margin:6px 0 4px; padding:9px 12px; border:1px solid var(--line); border-left:3px solid var(--ok); border-radius:var(--radius-sm); display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 12px; }
.r-richtzeit .rz-lbl{ font-size:10px; text-transform:uppercase; letter-spacing:.5px; font-weight:800; color:var(--muted); }
.r-richtzeit .rz-val{ font-size:14px; color:var(--ink); }
.r-richtzeit .rz-val b{ font-family:var(--font-mono); }
.r-richtzeit .rz-sep{ margin:0 8px; color:var(--muted); }
.r-richtzeit .rz-note{ font-size:11px; color:var(--muted); margin-left:auto; }
.r-richtzeit.rz-nextday{ border-left-color:var(--warn); }
.r-richtzeit.rz-nextday .rz-note{ color:var(--warn); }
.rp-top{ display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.rp-euro{ font-size:22px; font-weight:800; font-family:var(--font-mono); color:var(--ink); }
.rp-net{ font-size:11px; font-weight:600; color:var(--muted); }
.rp-gross{ font-size:12.5px; color:var(--ink-2); }
.rp-tag{ margin-left:auto; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; color:var(--muted); border:1px solid var(--line); border-radius:999px; padding:2px 8px; }
.rp-lines{ display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:6px; font-size:11.5px; color:var(--ink-2); }
.rp-line b{ font-family:var(--font-mono); color:var(--ink); }
.rp-cav{ margin-top:6px; font-size:10.5px; color:var(--muted); line-height:1.4; }
.r-price-none{ background:var(--surface-2); font-size:12px; color:var(--muted); }

/* Auftragsannahme: Freie Preisvereinbarung (Fixpreis) */
.aa-fp-h{ margin-top:6px; }
.aa-fp-toggle{ font-size:11px; font-weight:600; margin-left:10px; color:var(--ink-2); }
/* breit genug, dass die Platzhalter nicht abgeschnitten werden */
.aa-fp .aa-fp-km{ flex:0 1 120px; min-width:110px; }
.aa-fp .aa-fp-f{ flex:1 1 185px; min-width:175px; }
.r-price-fixed{ background:color-mix(in srgb, var(--ok) 14%, transparent); border-color:var(--ok); }
.r-price-fixed .rp-tag{ color:var(--ok); border-color:var(--ok); }

/* ===== Annahme-Ergebnis (Machbarkeit & Fahrer) — kompakt wie das Formular ===== */
.aa-result .result{ box-shadow:var(--shadow-sm); }
.aa-result .r-head{ padding:6px 12px; gap:6px; }
.aa-result .r-head .ref{ font-size:11px; }
.aa-result .r-body{ padding:9px 12px; }
.aa-result .r-cols{ gap:10px; }
.aa-result .r-price{ margin:8px 0 3px; padding:7px 10px; }
.aa-result .rp-euro{ font-size:16px; }
.aa-result .rp-net{ font-size:9.5px; } .aa-result .rp-gross{ font-size:11px; }
.aa-result .rp-tag{ font-size:9px; padding:1px 7px; }
.aa-result .rp-lines{ gap:4px 10px; margin-top:4px; font-size:10.5px; }
.aa-result .rp-cav{ font-size:10px; margin-top:3px; }
.aa-result .window-wrap{ padding:5px 0; gap:8px; }
.aa-result .window{ font-size:16px; }
.aa-result .window .u{ font-size:10px; }
.aa-result .window-wrap .lbl{ font-size:9px; }
.aa-result .routeline{ font-size:11px; gap:4px 7px; margin-bottom:6px; }
.aa-result .routeline .tag{ font-size:10px; padding:1px 6px; }
/* Flottenstatus (Fahrer · Offen · Load) inline auf EINE Zeile statt 3 gestapelte Kacheln */
.aa-result .stat-row{ display:flex; flex-wrap:wrap; align-items:baseline; gap:3px 16px; }
.aa-result .stat{ display:flex; align-items:baseline; gap:5px; padding:0; background:none; border:none; border-radius:0; }
.aa-result .stat .k{ font-size:9px; } .aa-result .stat .v{ font-size:12px; margin-top:0; }
.aa-result .conf-block{ margin-top:7px; }
.aa-result .conf-top{ margin-bottom:3px; }
.aa-result .conf-top .lbl{ font-size:9px; } .aa-result .conf-top .pct{ font-size:12px; }
.aa-result .confbar{ height:6px; }
.aa-result .bestdrv{ margin-top:7px; padding:7px 10px; gap:8px; }
.aa-result .bestdrv .bd-ic{ font-size:14px; }
.aa-result .bestdrv .bd-lbl{ font-size:9px; }
.aa-result .bestdrv .bd-name{ font-size:12.5px; }
.aa-result .bestdrv .meta{ font-size:10.5px; }
.aa-result .bestdrv .bd-detour{ font-size:10px; }
.aa-result .upg{ padding:7px 10px; margin-top:7px; font-size:11px; }
.aa-result .sec-title{ font-size:9px; margin-bottom:4px; }
.aa-result .result table{ font-size:10.5px; }
.aa-result .result table th, .aa-result .result table td{ padding:3px 6px; }
.aa-result .bd-alts{ padding:6px 10px; } .aa-result .bd-alt{ font-size:10.5px; }
.aa-result .bd-alts-h{ font-size:9px; }
/* „Machbar"-Status neben dem Prüf-Button (aus dem Ergebnis-Header hochgezogen) */
.aa-status{ display:inline-flex; align-items:center; gap:6px; flex-wrap:wrap; }
.aa-status:empty{ display:none; }
.aa-status .badge, .aa-status .chip{ font-size:11px; }
.aa-status .ref{ font-size:11px; font-weight:600; color:var(--muted); }
/* Kosten (netto · brutto · Grundpreis-Positionen · Richtpreis-Tag · Hinweis) auf EINE Zeile */
.aa-result .r-price{ display:flex; flex-wrap:nowrap; align-items:baseline; gap:3px 9px; overflow:hidden; }
.aa-result .rp-top, .aa-result .rp-lines{ display:contents; }
.aa-result .rp-euro{ font-size:13px; white-space:nowrap; }
.aa-result .rp-gross{ font-size:10.5px; white-space:nowrap; }
.aa-result .rp-tag{ margin-left:0; white-space:nowrap; flex:0 0 auto; }
.aa-result .rp-line{ white-space:nowrap; }
.aa-result .rp-cav{ flex:1 1 auto; min-width:40px; margin-top:0; font-size:10px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* Zugesagtes Zeitfenster + Route (Innen … → Umland · Tier · PAC) auf EINE Zeile */
.aa-result .r-topline{ display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 14px; margin-bottom:6px; }
.aa-result .window-wrap{ padding:0; margin:0; background:none; border:none; border-radius:0; gap:6px; flex:0 0 auto; align-items:baseline; }
.aa-result .window-wrap .lbl{ font-size:9px; }
.aa-result .routeline{ margin:0; }

/* Auftragsannahme: Zahlung/Frachtzahler je Adresse */
.aa-pay .a-card-info{ font-size:10px; margin-top:2px; line-height:1.3; }
.aa-pay .a-card-info.ok{ color:var(--ok); }
.aa-pay .a-card-info.bad{ color:var(--bad); }

/* ===== Annahme: EXTRA-kompakt — maximale Dichte, Formular + Fahrer-Vorschau auf einem Screen ===== */
.aa-sec{ padding:8px 11px; }
.aa-sec-h{ font-size:12px; margin-bottom:6px; }
.aa-sec-h .ico{ width:20px; height:20px; border-radius:6px; }
.aa-sec-h .ico svg{ width:12px; height:12px; }
.aa-grid{ gap:9px; margin:0 0 9px; }
.aa-kdrow, .aa-row2, .aa-row-addr, .aa-row-meta, .aa-when{ gap:5px 8px; margin-bottom:5px; }
.aa-f{ gap:2px; }
.aa-f label{ font-size:8.5px; letter-spacing:.3px; }
.aa-f input, .aa-f select{ padding:4px 8px; font-size:12px; }
.aa-addr-sec{ margin:0 0 9px; }
.aa-addr{ padding:7px 10px; }
.aa-addr-list{ gap:6px; }
.aa-addr-head{ margin-bottom:5px; }
.aa-addr-badge{ font-size:9.5px; padding:1px 7px; }
.aa-when label{ font-size:8px; }
.aa-prod-h, .aa-fp-h{ margin-top:2px; }
.aa-prodgrid{ grid-template-columns:repeat(auto-fill,minmax(90px,1fr)); gap:5px; margin:0 0 9px; }
.aa-prod{ padding:5px 8px; border-top-width:2px; }
.aa-prod-n{ font-size:11px; } .aa-prod-c{ font-size:9.5px; } .aa-prod-w{ font-size:9.5px; }
.aa-prod-d, .aa-prod-p{ font-size:9px; }
.aa-actions{ margin:0; gap:8px; }
.aa-actions .aa-check{ padding:7px 12px; }
.aa-side{ flex-basis:340px; }
.aa-newtag{ font-size:11px; }
/* Adressen fest zweispaltig (Abholung/Zustellung nebeneinander) — Formular ist wieder
   volle Breite, daher ab normaler Desktop-Breite; darunter einspaltig. */
@media (min-width:1040px){ .aa-addr-list{ display:grid; grid-template-columns:1fr 1fr; gap:8px; align-items:start; } }
/* Zahlung/Frachtzahler pro Adresse einklappbar (Standard zu) */
.aa-pay-toggle, .aa-info-toggle{ font-size:10.5px; font-weight:700; color:var(--link); background:transparent; border:none;
  box-shadow:none; padding:0 4px; cursor:pointer; }
.aa-pay-toggle:hover, .aa-info-toggle:hover{ color:var(--accent); box-shadow:none; filter:none; }
.aa-pay-toggle.on, .aa-info-toggle.on{ color:var(--accent); }
.aa-pay, .aa-info{ margin-bottom:0; padding-top:6px; border-top:1px dashed var(--line); }
/* Kopfbereich zweispaltig: Auftraggeber (links) · Produkt/Sendungstyp (rechts) */
.aa-top{ display:grid; grid-template-columns:1fr 1fr; gap:12px; align-items:start; margin:0 0 10px; }
.aa-top > .aa-sec:first-child{ grid-column:auto; }   /* Auftraggeber NICHT mehr über beide Spalten */
.aa-prod-sec .aa-prodgrid{ margin-bottom:0; }
@media (max-width:1000px){ .aa-top{ grid-template-columns:1fr; } }

/* Dienstplan-Kalender: Balken-Toolbar (Stunden ±1, löschen) rechts neben dem Balken */
.tl-bar{ overflow:visible; }                       /* Toolbar darf über den Balken hinausragen */
.tlb-lbl{ overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.tlb-tools{ position:absolute; left:100%; top:50%; transform:translateY(-50%); margin-left:3px;
  display:none; gap:3px; z-index:8; white-space:nowrap; padding:2px; }
/* Hover an der ganzen Tageszelle (deckt Balken + Lücke + Toolbar) UND am Balken selbst,
   damit die Buttons beim Rübergehen nicht verschwinden. Beim Ziehen ausgeblendet. */
.tl-day:hover .tlb-tools, .tl-bar:hover .tlb-tools{ display:inline-flex; }
.tl-day.tl-dragging .tlb-tools{ display:none !important; }
.tlb-tools button{ width:20px; height:20px; padding:0; border:0; border-radius:5px; cursor:pointer;
  font-size:14px; line-height:20px; text-align:center; color:#fff; background:rgba(20,20,20,.78);
  box-shadow:0 1px 3px rgba(0,0,0,.35); }
.tlb-tools button:hover{ filter:brightness(1.25); }
.tlb-tools .tlb-step:hover{ background:var(--ok); }
.tlb-tools .tlb-del:hover{ background:var(--bad); }
/* Raster-Popover: Löschen-Button rot markieren */
.dp-del{ color:var(--bad); } .dp-del:hover{ border-color:var(--bad); color:var(--bad); }

/* ===================== Kundenportal (neue Buchungsplattform, standalone) ===================== */
.pl-wrap{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px; box-sizing:border-box; }
.pl-card{ width:min(400px,92vw); background:var(--card); border:var(--border-w) solid var(--line-strong);
  border-radius:var(--radius); box-shadow:var(--shadow-lg); padding:28px 26px; }
.pl-card-wide{ width:min(560px,94vw); }
.pl-brand{ font-size:26px; font-weight:800; letter-spacing:-.5px; color:var(--ink); margin:0; }
.pl-brand span{ color:var(--accent); }
.pl-sub{ color:var(--muted); font-size:13px; margin:2px 0 20px; }
.pl-card label{ display:block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.4px;
  color:var(--muted); margin:12px 0 4px; }
.pl-card input{ width:100%; box-sizing:border-box; padding:9px 12px; font-size:14px;
  border:var(--border-w) solid var(--line-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); }
.pl-card input:focus{ outline:none; border-color:var(--accent); }
.pl-btn{ width:100%; margin-top:18px; padding:10px; font-size:14px; font-weight:700;
  background:var(--accent); color:var(--accent-ink); border:none; border-radius:var(--radius-sm); cursor:pointer; }
.pl-btn-ghost{ background:var(--surface-2); color:var(--ink); }
.pl-err{ margin:14px 0 0; padding:9px 11px; font-size:12.5px; color:var(--bad); background:var(--bad-bg); border-radius:var(--radius-sm); }
.pl-foot{ margin-top:16px; font-size:11px; color:var(--muted); text-align:center; }
.pl-hi{ margin:14px 0 4px; font-size:18px; color:var(--ink); }
.pl-meta{ font-size:12.5px; color:var(--ink-2); margin:0; }
.pl-note{ margin:18px 0; padding:12px 14px; background:var(--surface-2); border-radius:var(--radius-sm);
  font-size:13px; color:var(--ink-2); line-height:1.5; }

/* ---- Empfehlungs-Report: Klick-Analyse (Empfohlen vs. tatsächlich) ---- */
tr.rp-row:hover{ background:var(--surface-2); }
.ra-head{ margin-bottom:10px; }
.ra-title{ font-size:15px; font-weight:800; color:var(--ink); }
.ra-sub{ font-size:12.5px; color:var(--muted); margin-top:2px; }
.ra-sub a{ color:var(--accent); text-decoration:none; }
.ra-ctx{ display:flex; flex-wrap:wrap; gap:8px 16px; padding:10px 12px; margin-bottom:12px;
  background:var(--surface-2); border-radius:var(--radius-sm); font-size:12.5px; color:var(--ink-2); }
.ra-ctx b{ color:var(--muted); font-weight:700; text-transform:uppercase; font-size:10px; letter-spacing:.4px; margin-right:5px; }
.ra-cmp{ width:100%; border-collapse:collapse; font-size:13px; }
.ra-cmp th, .ra-cmp td{ padding:7px 10px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top; }
.ra-cmp thead th{ font-size:11.5px; color:var(--ink-2); font-weight:700; line-height:1.35; border-bottom:2px solid var(--line-strong); }
.ra-cmp td:first-child{ color:var(--muted); width:38%; }
.ra-cmp .ra-rec{ background:color-mix(in srgb, var(--ok) 8%, transparent); }
.ra-cmp th.ra-rec{ background:transparent; color:var(--ok); }
.ra-cmp .ra-act b{ color:var(--ink); }
.ra-note{ background:var(--warn-bg); color:var(--warn); font-size:12.5px; line-height:1.5; }
.ra-verdict{ margin-top:14px; padding:12px 14px; background:var(--surface-2); border-left:3px solid var(--accent);
  border-radius:6px; font-size:13px; color:var(--ink); line-height:1.55; }

/* ---- Empfehlungs-Analyse: Mini-Karte ---- */
.ra-map{ height:240px; margin:10px 0 4px; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.ra-pin{ font-size:18px; line-height:1; text-align:center; text-shadow:0 0 2px #fff,0 0 2px #fff; }
.ra-maplegend{ display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; font-size:11.5px; color:var(--ink-2); margin-bottom:12px; }
.ra-maplegend .rl{ display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:4px; vertical-align:-1px; }
.ra-maplegend .rl-pk{ background:#2f6f3e; border-radius:0; clip-path:polygon(50% 0,100% 100%,0 100%); }
.ra-maplegend .rl-dl{ background:#1f5ea8; border-radius:0; clip-path:polygon(0 0,100% 0,50% 100%); }
.ra-mapnote{ color:var(--muted); }

/* ---- Dispo-Board: Spaltenbreite per Rand ziehen (th ist sticky = Containing-Block) ---- */
.dg-rz{ position:absolute; top:0; right:0; width:8px; height:100%; cursor:col-resize; user-select:none; }
.dg-rz:hover{ background:linear-gradient(90deg, transparent, var(--accent)); opacity:.5; }

/* ---- Dispo-Board: getrennte Adress-Spalten (Von / Nach) ---- */
.dg-adr{ display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dg-adr-sub{ display:block; font-size:11px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
