/* 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:center; gap:1px; flex:1 1 auto;
  overflow-x:auto; scrollbar-width:none; }
.topnav::-webkit-scrollbar{ display:none; }
.topnav a{ display:inline-flex; align-items:center; gap:7px; padding:7px 11px; border-radius:var(--radius-sm);
  text-decoration:none; color:var(--ink-2); font-size:13px; 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:16px; height:16px; }
.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{ margin-left:auto; display:inline-flex; align-items:center; gap:6px; padding:6px 10px;
  border-radius:var(--radius-sm); font-size:12px; font-weight:700; 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:8px; }

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

/* ============================ 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; }

/* ============================ 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 148px; width:148px; 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; color:var(--ink); }
.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; }
.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; }
.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; }

/* ============================ 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-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) ============================ */
.ck-kpis{ display:grid; grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr); gap:12px; margin-bottom:14px; align-items:stretch; }
.ck-alert{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.ck-flow{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.ck-sep{ background:var(--line-strong); border-radius:2px; }
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); } }
@media (max-width:1200px){ .ck-kpis{ grid-template-columns:1fr; } .ck-sep{ display:none; } }
@media (max-width:640px){ .ck-alert{ grid-template-columns:repeat(2,1fr); } }

.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:70ch; 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; }
.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-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; }
.ls-uqt-row.is-overdue{ background:var(--bad-bg); }
.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(248px,1fr)); gap:12px; align-items:start; }
.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:12px 13px; display:flex; flex-direction:column; gap:7px; }
.ls-lane.is-idle{ opacity:.55; }
.ls-lane-head{ display:flex; align-items:baseline; gap:8px; text-decoration:none; }
.ls-lane-name{ font-size:14px; 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:11.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:4px; height:240px; overflow-y:auto; }
.ls-stops-end{ flex:0 0 auto; height:210px; }  /* Scroll-Puffer: aktueller Stopp kann immer nach ganz oben */
.ls-stop{ display:flex; align-items:center; gap:7px; font-size:11.5px; padding:4px 7px;
  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; }
.ls-eta{ color:var(--ink-2); min-width:38px; }
.ls-kind{ font-weight:700; color:var(--ink); min-width:66px; }
.ls-where{ color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
/* 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 solid #8a8a8a; opacity:.7; }

.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); }
.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; }
.fm-seq{ line-height:1; }
.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; }
/* 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; }
.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 150px; 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 220px; }
.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(116px,1fr)); gap:8px; margin:0 0 14px; }
.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%; } }

/* ============================ 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; color:#F1F4F8; font-weight:800; letter-spacing:-.045em;
  font-size:clamp(46px,7vw,86px); line-height:.95; }
.login-wordmark .lw-dot{ color:#E8E22A; text-shadow:0 0 16px rgba(232,226,42,.55); }
.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{ font-size:clamp(38px,13vw,64px); }
}
@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-a{ display:flex; align-items:center; gap:9px; padding:11px 14px; color:var(--ink);
  text-decoration:none; font-size:14px; font-weight:600; }
.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); }
