/* Mileon – Gestaltungssystem
   Leitidee: Depot-Tafel. Ruhige Flächen, klare Linien, Farbe nur für Bedeutung
   (Wellen A/B/C, Status). Kennzeichen erscheinen wie echte Schilder. */

@font-face{font-family:Barlow;src:url(../fonts/Barlow-Regular.woff2) format("woff2");font-weight:400;font-display:fallback}
@font-face{font-family:Barlow;src:url(../fonts/Barlow-Medium.woff2) format("woff2");font-weight:500;font-display:fallback}
@font-face{font-family:Barlow;src:url(../fonts/Barlow-SemiBold.woff2) format("woff2");font-weight:600;font-display:fallback}
@font-face{font-family:Barlow;src:url(../fonts/Barlow-Bold.woff2) format("woff2");font-weight:700;font-display:fallback}
@font-face{font-family:"Barlow Semi Condensed";src:url(../fonts/BarlowSemiCondensed-Medium.woff2) format("woff2");font-weight:500;font-display:fallback}
@font-face{font-family:"Barlow Semi Condensed";src:url(../fonts/BarlowSemiCondensed-SemiBold.woff2) format("woff2");font-weight:600;font-display:fallback}
@font-face{font-family:"Barlow Semi Condensed";src:url(../fonts/BarlowSemiCondensed-Bold.woff2) format("woff2");font-weight:700;font-display:fallback}
@font-face{font-family:"Barlow Condensed";src:url(../fonts/BarlowCondensed-SemiBold.woff2) format("woff2");font-weight:600;font-display:fallback}

:root{--fs-xs:11px;--fs-sm:12.5px;--fs-md:14px;--fs-base:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:30px;--caps:.06em;
  --font:Barlow,"Segoe UI",system-ui,sans-serif;
  --cond:"Barlow Semi Condensed",Barlow,"Arial Narrow",sans-serif;
  --plate-font:"Barlow Condensed","Arial Narrow",sans-serif;
  --asphalt:#18222E; --asphalt-2:#223040; --asphalt-ink:#AEBBC9;
  --bg:#EEF1F4; --surface:#FFFFFF; --surface-2:#F6F8FA; --sunk:#E7EBEF;
  --line:#DCE2E8; --line-strong:#C4CDD6;
  --ink:#17212C; --ink-2:#4A5868; --ink-3:#768392;
  --blue:#2346C5; --blue-ink:#1B37A0; --blue-soft:#E3E9FB;
  --mark:#F5C400; --mark-soft:#FFF5CC;
  --ok:#17804A; --ok-soft:#DCF2E5;
  --warn:#9A5B00; --warn-soft:#FCEDCF;
  --bad:#BE3329; --bad-soft:#FBE0DD;
  --wa:#0D8476; --wa-soft:#D3EEEA;
  --wb:#2346C5; --wb-soft:#DCE3FA;
  --wc:#7246BF; --wc-soft:#E9E0F8;
  --absent:#8A6A00; --absent-soft:#FFF0BF;
  --sick:#B23A2F; --sick-soft:#F9DCD8;
  --free:#6C7886; --free-soft:#E9EDF1;
  --radius:10px; --radius-sm:6px;
  --shadow:0 1px 2px rgba(23,33,44,.06),0 4px 14px rgba(23,33,44,.05);
  color-scheme:light;
}
:root[data-theme="dark"]{
  --asphalt:#0B1118; --asphalt-2:#16212C; --asphalt-ink:#93A2B2;
  --bg:#0F161E; --surface:#16202B; --surface-2:#1B2734; --sunk:#111A23;
  --line:#26343F; --line-strong:#344553;
  --ink:#E5EBF1; --ink-2:#A8B5C2; --ink-3:#7E8C9A;
  --blue:#7E97F2; --blue-ink:#A9BBF7; --blue-soft:#1E2A4F;
  --mark:#F5C400; --mark-soft:#3A3412;
  --ok:#5CC98C; --ok-soft:#173527; --warn:#E8A84A; --warn-soft:#3A2A10; --bad:#F07B70; --bad-soft:#3D1D1A;
  --wa:#4CC7B6; --wa-soft:#123430; --wb:#8FA5F5; --wb-soft:#1D2850; --wc:#B597EE; --wc-soft:#2B2048;
  --absent:#E6C25A; --absent-soft:#3A3212; --sick:#F08A80; --sick-soft:#3C1E1B; --free:#9AA7B4; --free-soft:#222E3A;
  --shadow:0 1px 2px rgba(0,0,0,.3);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --asphalt:#0B1118; --asphalt-2:#16212C; --asphalt-ink:#93A2B2;
    --bg:#0F161E; --surface:#16202B; --surface-2:#1B2734; --sunk:#111A23;
    --line:#26343F; --line-strong:#344553;
    --ink:#E5EBF1; --ink-2:#A8B5C2; --ink-3:#7E8C9A;
    --blue:#7E97F2; --blue-ink:#A9BBF7; --blue-soft:#1E2A4F;
    --mark-soft:#3A3412;
    --ok:#5CC98C; --ok-soft:#173527; --warn:#E8A84A; --warn-soft:#3A2A10; --bad:#F07B70; --bad-soft:#3D1D1A;
    --wa:#4CC7B6; --wa-soft:#123430; --wb:#8FA5F5; --wb-soft:#1D2850; --wc:#B597EE; --wc-soft:#2B2048;
    --absent:#E6C25A; --absent-soft:#3A3212; --sick:#F08A80; --sick-soft:#3C1E1B; --free:#9AA7B4; --free-soft:#222E3A;
    --shadow:0 1px 2px rgba(0,0,0,.3);
    color-scheme:dark;
  }
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:400 var(--fs-base)/1.5 var(--font);color:var(--ink);background:var(--bg);font-variant-numeric:tabular-nums}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:4px}
h1,h2,h3{font-family:var(--cond);font-weight:600;letter-spacing:-.01em;margin:0;line-height:1.2}
h1{font-size:var(--fs-3xl)}
h2{font-size:var(--fs-xl)}
h3{font-size:var(--fs-lg)}
p{margin:0 0 .75em}
small,.muted{color:var(--ink-3)}
.ink-2{color:var(--ink-2)}
.num{font-variant-numeric:tabular-nums}
.icon{width:18px;height:18px;flex:none;display:inline-block;vertical-align:-3px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon.sm{width:15px;height:15px;vertical-align:-2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
hr{border:0;border-top:1px solid var(--line);margin:18px 0}

/* ---------- Layout ---------- */
.app{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh;background:linear-gradient(to right,var(--asphalt) 236px,transparent 236px)}
.side{background:var(--asphalt);color:var(--asphalt-ink);position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;padding:18px 12px 14px}
.brand{display:flex;align-items:center;gap:10px;padding:2px 10px 18px;color:#fff;text-decoration:none}
.brand:hover{text-decoration:none}
.brand img{width:30px;height:30px}
.brand b{font:600 var(--fs-xl)/1 var(--cond);letter-spacing:.01em}
.brand small{display:block;color:var(--asphalt-ink);font-size:var(--fs-xs);margin-top:3px}
.nav-group{margin:12px 0 4px;padding:0 10px;font:500 var(--fs-sm)/1 var(--cond);color:#6F7F90;letter-spacing:.02em}
.side nav a{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:8px;color:var(--asphalt-ink);font-weight:500;font-size:var(--fs-md);position:relative}
.side nav a:hover{background:var(--asphalt-2);color:#fff;text-decoration:none}
.side nav a[aria-current="page"]{background:var(--asphalt-2);color:#fff}
.side nav a[aria-current="page"]::before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:4px;border-radius:0 3px 3px 0;background:var(--mark)}
.side nav .badge{margin-left:auto;background:var(--mark);color:#1d1600;border-radius:9px;font:600 var(--fs-xs)/18px var(--font);padding:0 6px}
.side-foot{margin-top:auto;border-top:1px solid #263443;padding-top:12px;display:flex;flex-direction:column;gap:2px}
.side-foot a,.side-foot button{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:8px;color:var(--asphalt-ink);font:500 var(--fs-md) var(--font);background:none;border:0;cursor:pointer;text-align:left;width:100%}
.side-foot a:hover,.side-foot button:hover{background:var(--asphalt-2);color:#fff;text-decoration:none}
.side-foot .who{color:#fff}
.side-foot .who small{display:block;color:#6F7F90;font-size:var(--fs-sm)}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:22px 32px 14px;flex-wrap:wrap}
.top .crumbs{font:600 var(--fs-xs)/1.4 var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;min-height:15px}
.top .crumbs a{color:var(--ink-3)}
.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.content{padding:4px 32px 48px;max-width:1600px;width:100%}
.mobile-bar{display:none}

/* ---------- Bausteine ---------- */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px;box-shadow:var(--shadow)}
.panel>.head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.panel>.head p{margin:2px 0 0;color:var(--ink-3);font-size:var(--fs-sm)}
.panel>.body{padding:16px 18px}
.panel>.body.flush{padding:0}
.panel>.foot{padding:10px 18px;border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 var(--radius) var(--radius);font-size:var(--fs-md)}
.cols{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));align-items:start}
.cols-2{display:grid;gap:18px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}
.stack>*+*{margin-top:12px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.end{justify-content:flex-end}
.spread{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.grow{flex:1}

/* Kennzahlen: schmale Leiste statt Kachelwand */
.figures{display:flex;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px;box-shadow:var(--shadow)}
.figure{flex:1 1 150px;padding:14px 18px;border-right:1px solid var(--line);color:inherit;min-width:140px}
.figures.inset{box-shadow:none;border-width:0 0 1px;border-radius:0;margin:0}
.figures.inset .figure{min-width:90px;flex-basis:90px;padding:12px 16px}
.figure:last-child{border-right:0}
a.figure:hover{background:var(--surface-2);text-decoration:none}
a.figure[aria-current="true"]{box-shadow:inset 0 -3px 0 var(--blue)}
.figure span{display:block;color:var(--ink-3);font-size:var(--fs-sm)}
.figure b{display:block;font:600 var(--fs-2xl)/1.15 var(--cond);margin-top:2px}
.figure b.ok{color:var(--ok)}.figure b.warn{color:var(--warn)}.figure b.bad{color:var(--bad)}
.figure em{font-style:normal;font-size:var(--fs-sm);color:var(--ink-3)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font:600 var(--fs-md) var(--font);cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:hover{background:var(--surface-2);text-decoration:none}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.primary:hover{background:var(--blue-ink);border-color:var(--blue-ink)}
:root[data-theme="dark"] .btn.primary{color:#0D1530}
.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}
.btn.danger:hover{background:var(--bad-soft)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--sunk)}
.btn.sm{height:30px;padding:0 10px;font-size:var(--fs-sm);border-radius:7px}
.btn.icon-only{width:36px;padding:0}
.btn.sm.icon-only{width:30px}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* Formulare */
label{font-size:var(--fs-md);font-weight:500;color:var(--ink-2)}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field .hint{font-size:var(--fs-sm);color:var(--ink-3);font-weight:400}
.form-grid{display:grid;gap:14px 16px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.form-grid .wide{grid-column:1/-1}
input,select,textarea{font:400 var(--fs-md) var(--font);color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:7px;height:36px;padding:0 10px;min-width:0;max-width:100%}
textarea{height:auto;min-height:84px;padding:8px 10px;line-height:1.45;resize:vertical}
input[type=checkbox],input[type=radio]{height:16px;width:16px;accent-color:var(--blue)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
input.sm,select.sm{height:30px;font-size:var(--fs-md);padding:0 8px}
input[type=number].km{width:110px}
.check{display:flex;align-items:center;gap:8px;font-weight:500;color:var(--ink)}
.inline-form{display:inline-flex;gap:6px;align-items:center;margin:0}
.toolbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.toolbar .field{min-width:130px}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px 16px;margin:0 0 14px}
legend{font:600 var(--fs-md) var(--cond);padding:0 6px;color:var(--ink-2)}

/* Segmentierte Auswahl */
.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden;background:var(--surface)}
.seg a,.seg button{padding:0 12px;height:34px;display:flex;align-items:center;color:var(--ink-2);font:500 var(--fs-md) var(--font);border:0;background:none;border-right:1px solid var(--line);cursor:pointer}
.seg a:last-child,.seg button:last-child{border-right:0}
.seg a:hover{background:var(--surface-2);text-decoration:none}
.seg [aria-current="true"]{background:var(--blue-soft);color:var(--blue-ink);font-weight:600}
:root[data-theme="dark"] .seg [aria-current="true"]{color:var(--ink)}

/* Tabellen */
.table-wrap{overflow:auto;max-width:100%}
.table-wrap.fit{overflow:visible}
.table-wrap.scrolly{max-height:calc(100vh - 120px)}
.fc-table td,.fc-table th{padding-left:8px;padding-right:8px}
.table-wrap.fit thead th{box-shadow:0 1px 0 var(--line-strong)}
table{border-collapse:collapse;width:100%;font-size:var(--fs-md)}
th{font:600 var(--fs-sm)/1.2 var(--cond);color:var(--ink-3);text-align:left;padding:10px 12px;border-bottom:1px solid var(--line-strong);background:var(--surface-2);white-space:nowrap;position:sticky;top:0;z-index:1}
th[data-sort]{cursor:pointer;user-select:none}
th[data-sort]:hover{color:var(--ink)}
th[aria-sort=ascending]::after{content:" ▲";font-size:9px}
th[aria-sort=descending]::after{content:" ▼";font-size:9px}
td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr:hover td{background:var(--surface-2)}
tr.dim td{color:var(--ink-3)}
td.r,th.r{text-align:right}
td.c,th.c{text-align:center}
td .sub{display:block;font-size:var(--fs-sm);color:var(--ink-3)}
.empty{padding:34px 18px;text-align:center;color:var(--ink-3)}
.empty b{display:block;color:var(--ink-2);font:600 var(--fs-lg) var(--cond);margin-bottom:4px}

/* Status-Pillen */
.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:11px;font:600 var(--fs-sm)/1 var(--font);white-space:nowrap;background:var(--sunk);color:var(--ink-2)}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}
.pill.ok{background:var(--ok-soft);color:var(--ok)}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.pill.info{background:var(--blue-soft);color:var(--blue-ink)}
.pill.plain::before{display:none}
.tags{display:flex;flex-wrap:wrap;gap:4px}
.tag{font-size:var(--fs-sm);padding:1px 7px;border-radius:5px;background:var(--sunk);color:var(--ink-2);white-space:nowrap}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.bad{background:var(--bad-soft);color:var(--bad)}

/* Kennzeichen wie ein Schild: weiße Fläche, schwarzer Rand, blaues Länderfeld */
.plate{display:inline-flex;align-items:stretch;height:24px;border:1.5px solid #1b1b1b;border-radius:4px;background:#fff;color:#111;font:600 var(--fs-base)/21px var(--plate-font);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-decoration:none;vertical-align:middle}
.plate::before{content:"D";width:12px;background:#1D3FA8;color:#fff;font:600 8.5px/1 var(--font);display:flex;align-items:flex-end;justify-content:center;padding-bottom:3px}
.plate span{padding:0 7px 0 6px}
a.plate:hover{text-decoration:none;box-shadow:0 0 0 3px var(--blue-soft)}
.plate.big{height:38px;font-size:var(--fs-2xl);line-height:34px;border-width:2px;border-radius:6px}
.plate.big::before{width:20px;font-size:var(--fs-xs);padding-bottom:5px}
.plate.big span{padding:0 12px 0 10px}
.plate.none{border-style:dashed;border-color:var(--line-strong);background:transparent;color:var(--ink-3);font-family:var(--font);font-size:var(--fs-sm);letter-spacing:0}
.plate.none::before{display:none}

/* Wellen- und Tagescodes (Magnettafel) */
.code{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:24px;padding:0 6px;border-radius:5px;font:700 var(--fs-sm)/1 var(--cond);letter-spacing:.02em;background:var(--sunk);color:var(--ink-2)}
.code.WA{background:var(--wa-soft);color:var(--wa)}
.code.WB{background:var(--wb-soft);color:var(--wb)}
.code.WC{background:var(--wc-soft);color:var(--wc)}
.code.WAC{background:linear-gradient(90deg,var(--wa-soft) 50%,var(--wc-soft) 50%);color:var(--ink)}
.code.U,.code.SA,.code.FW{background:var(--absent-soft);color:var(--absent)}
.code.K,.code.KO,.code.UE{background:var(--sick-soft);color:var(--sick)}
.code.X{background:var(--free-soft);color:var(--free)}
.code.S,.code.R,.code.ED{background:var(--ok-soft);color:var(--ok)}
.code.RAUS{background:var(--ink-2);color:var(--surface)}
.wave{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.wave i{width:10px;height:10px;border-radius:3px;display:inline-block}
.wave.A i{background:var(--wa)}.wave.ND i{background:var(--wb)}.wave.C i{background:var(--wc)}

/* Tourtyp-Farben (frei wählbar je Tourtyp) */
:root{--t-teal:#0D8476;--t-teal-soft:#D3EEEA;--t-blue:#2346C5;--t-blue-soft:#DCE3FA;--t-violet:#7246BF;--t-violet-soft:#E9E0F8;--t-green:#17804A;--t-green-soft:#DCF2E5;--t-amber:#9A5B00;--t-amber-soft:#FCEDCF;--t-rose:#B4304F;--t-rose-soft:#FADDE5;--t-cyan:#0B6F8F;--t-cyan-soft:#D5EEF6;--t-slate:#4A5868;--t-slate-soft:#E7EBEF;}
:root[data-theme="dark"]{--t-teal:#4CC7B6;--t-teal-soft:#123430;--t-blue:#8FA5F5;--t-blue-soft:#1D2850;--t-violet:#B597EE;--t-violet-soft:#2B2048;--t-green:#5CC98C;--t-green-soft:#173527;--t-amber:#E8A84A;--t-amber-soft:#3A2A10;--t-rose:#F08AA2;--t-rose-soft:#3C1B25;--t-cyan:#5CC3E3;--t-cyan-soft:#11303B;--t-slate:#A8B5C2;--t-slate-soft:#222E3A;}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--t-teal:#4CC7B6;--t-teal-soft:#123430;--t-blue:#8FA5F5;--t-blue-soft:#1D2850;--t-violet:#B597EE;--t-violet-soft:#2B2048;--t-green:#5CC98C;--t-green-soft:#173527;--t-amber:#E8A84A;--t-amber-soft:#3A2A10;--t-rose:#F08AA2;--t-rose-soft:#3C1B25;--t-cyan:#5CC3E3;--t-cyan-soft:#11303B;--t-slate:#A8B5C2;--t-slate-soft:#222E3A;}}
.code.tc-teal{background:var(--t-teal-soft);color:var(--t-teal)}.wave.tc-teal i,.track .fill.tc-teal{background:var(--t-teal)}.code.tc-blue{background:var(--t-blue-soft);color:var(--t-blue)}.wave.tc-blue i,.track .fill.tc-blue{background:var(--t-blue)}.code.tc-violet{background:var(--t-violet-soft);color:var(--t-violet)}.wave.tc-violet i,.track .fill.tc-violet{background:var(--t-violet)}.code.tc-green{background:var(--t-green-soft);color:var(--t-green)}.wave.tc-green i,.track .fill.tc-green{background:var(--t-green)}.code.tc-amber{background:var(--t-amber-soft);color:var(--t-amber)}.wave.tc-amber i,.track .fill.tc-amber{background:var(--t-amber)}.code.tc-rose{background:var(--t-rose-soft);color:var(--t-rose)}.wave.tc-rose i,.track .fill.tc-rose{background:var(--t-rose)}.code.tc-cyan{background:var(--t-cyan-soft);color:var(--t-cyan)}.wave.tc-cyan i,.track .fill.tc-cyan{background:var(--t-cyan)}.code.tc-slate{background:var(--t-slate-soft);color:var(--t-slate)}.wave.tc-slate i,.track .fill.tc-slate{background:var(--t-slate)}
.wave i{background:var(--ink-3)}
.tag.manual{background:var(--t-amber-soft);color:var(--t-amber)}

/* Depot-Tafel (Dashboard) */
.board{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px;overflow:hidden}
.board-head{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.board-head h2{font-size:var(--fs-xl)}
.board-head .total{font:600 var(--fs-base) var(--cond);color:var(--ink-2)}
.board-head .total b{font-size:var(--fs-3xl);color:var(--ink);margin-right:2px}
.lane{display:grid;grid-template-columns:170px minmax(0,1fr) 210px;align-items:center;gap:20px;padding:14px 20px;border-bottom:1px solid var(--line)}
.lane:last-child{border-bottom:0}
.lane .name{font:600 var(--fs-lg) var(--cond)}
.lane .name small{display:block;font:400 var(--fs-sm) var(--font);color:var(--ink-3)}
.track{position:relative;height:30px;background:var(--sunk);border-radius:6px;overflow:hidden;display:flex}
.track .fill{height:100%;display:flex;align-items:center;justify-content:flex-end;padding-right:8px;color:#fff;font:600 var(--fs-sm) var(--cond);min-width:0;transition:width .4s ease}
.track .fill.A{background:var(--wa)}.track .fill.ND{background:var(--wb)}.track .fill.C{background:var(--wc)}
:root[data-theme="dark"] .track .fill{color:#0b1118}
.track .gap{height:100%;background:repeating-linear-gradient(-45deg,var(--bad-soft) 0 7px,transparent 7px 14px);border-left:2px solid var(--bad)}
.lane .count{font:600 var(--fs-base) var(--cond);text-align:right;color:var(--ink-2)}
.lane .count b{font-size:var(--fs-2xl);color:var(--ink)}
.lane .count .short{color:var(--bad)}
.lane .count .done{color:var(--ok)}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line)}
.week a{padding:10px 12px;border-right:1px solid var(--line);color:inherit;display:block}
.week a:last-child{border-right:0}
.week a:hover{background:var(--surface-2);text-decoration:none}
.week a[aria-current="true"]{background:var(--mark-soft)}
.week .d{font:600 var(--fs-sm) var(--cond);color:var(--ink-3)}
.week .v{font:600 var(--fs-lg) var(--cond)}
.week .v.short{color:var(--bad)}
.week .v.done{color:var(--ok)}
.meter{height:6px;border-radius:3px;background:var(--sunk);overflow:hidden;margin-top:6px;display:flex}
.meter span{display:block;height:100%}
.split{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--sunk);margin:8px 0 10px}
.split span{height:100%}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:var(--fs-sm);color:var(--ink-2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.list{list-style:none;margin:0;padding:0}
.list li{display:flex;align-items:center;gap:12px;padding:9px 18px;border-bottom:1px solid var(--line)}
.list li:last-child{border-bottom:0}
.list li .grow{min-width:0}
.list li .grow small{display:block}
.due-date{font:600 var(--fs-md) var(--cond);text-align:right;white-space:nowrap}
.due-date.bad{color:var(--bad)}.due-date.warn{color:var(--warn)}

/* Dienstplan-Raster */
.roster-wrap{overflow:auto;max-height:calc(100vh - 230px);border-top:1px solid var(--line)}
table.roster{font-size:var(--fs-sm);border-collapse:separate;border-spacing:0}
table.roster th,table.roster td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0}
table.roster th{padding:6px 4px;text-align:center;background:var(--surface-2);font-size:var(--fs-sm);top:0}
table.roster th.today,table.roster td.today{box-shadow:inset 2px 0 0 var(--mark),inset -2px 0 0 var(--mark)}
table.roster th.today{background:var(--mark-soft);color:var(--ink)}
table.roster th.closed,table.roster td.closed{background:repeating-linear-gradient(-45deg,var(--surface-2) 0 6px,var(--surface) 6px 12px)}
table.roster th.weekstart,table.roster td.weekstart{border-left:2px solid var(--line-strong)}
table.roster .who{position:sticky;left:0;z-index:2;background:var(--surface);text-align:left;padding:5px 10px;width:230px;min-width:210px;max-width:240px;border-right:1px solid var(--line-strong)}
table.roster th.who{z-index:3}
table.roster .who a{color:var(--ink);font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.roster .who small{display:block;font-size:var(--fs-xs);color:var(--ink-3)}
table.roster td.cell{min-width:46px;height:34px;text-align:center;position:relative}
table.roster td.cell button{all:unset;display:flex;align-items:center;justify-content:center;width:100%;height:34px;cursor:pointer;box-sizing:border-box}
table.roster td.cell button:hover{background:var(--blue-soft)}
table.roster td.cell button:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
table.roster td.cell .code{min-width:34px;height:22px;font-size:var(--fs-sm)}
table.roster td.cell.conflict::after,table.roster td.cell.novehicle::after{content:"";position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:var(--bad)}
table.roster td.cell.novehicle::after{background:var(--warn)}
table.roster td.cell.pending .code{outline:1.5px dashed var(--absent);outline-offset:-1px}
table.roster tr.sum td{background:var(--surface-2);font:600 var(--fs-sm) var(--cond);text-align:center;height:28px}
table.roster tr.sum td.who{font-family:var(--font);font-weight:600;text-align:left}
table.roster tr.sum td.short{color:var(--bad)}
table.roster tr.sum td.done{color:var(--ok)}
table.roster td.gone{background:var(--sunk)}
table.roster tfoot td{position:sticky;z-index:1}
table.roster tfoot tr:nth-child(1) td{bottom:84px}table.roster tfoot tr:nth-child(2) td{bottom:56px}table.roster tfoot tr:nth-child(3) td{bottom:28px}table.roster tfoot tr:nth-child(4) td{bottom:0}
table.roster tfoot td.who{z-index:3}
table.roster tr.leaver .who a{color:var(--ink-3);text-decoration:line-through}
table.roster tr.hidden{display:none}
.code-menu{position:absolute;z-index:50;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;box-shadow:0 10px 30px rgba(10,20,30,.18);padding:10px;width:330px}
.code-menu .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.code-menu button{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:7px;font-size:var(--fs-xs);color:var(--ink-3);text-align:center}
.code-menu button:hover,.code-menu button:focus-visible{background:var(--surface-2);color:var(--ink)}
.code-menu .title{font:600 var(--fs-sm) var(--cond);margin:0 2px 8px;color:var(--ink-2)}
.code-menu .clear{grid-column:span 4;flex-direction:row;justify-content:center;border:1px dashed var(--line-strong);padding:6px}

/* Meldungen */
.toasts{position:fixed;right:20px;bottom:20px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:min(440px,calc(100vw - 40px))}
.toast{display:flex;gap:10px;align-items:flex-start;background:var(--surface);border:1px solid var(--line-strong);border-left:4px solid var(--ok);border-radius:8px;padding:11px 12px;box-shadow:0 10px 30px rgba(10,20,30,.16);font-size:var(--fs-md)}
.toast.error{border-left-color:var(--bad)}
.toast.warn{border-left-color:var(--warn)}
.toast .grow a{display:inline-block;margin-top:4px;font-weight:600}
.toast button{all:unset;cursor:pointer;color:var(--ink-3);padding:2px}
.notice{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:8px;background:var(--blue-soft);color:var(--ink);font-size:var(--fs-md);margin-bottom:16px}
.notice.warn{background:var(--warn-soft)}
.notice.bad{background:var(--bad-soft)}
.notice .icon{margin-top:2px}

/* Dialog */
dialog{border:1px solid var(--line-strong);border-radius:12px;padding:0;background:var(--surface);color:var(--ink);box-shadow:0 20px 60px rgba(10,20,30,.3);max-width:min(560px,calc(100vw - 32px));width:100%}
dialog::backdrop{background:rgba(15,22,30,.45)}
dialog .head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
dialog .body{padding:18px 20px}
dialog .foot{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:var(--surface-2);border-radius:0 0 12px 12px}

details.more>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--blue)}
details.more>summary::-webkit-details-marker{display:none}
details.more>summary::before{content:"+";font-size:var(--fs-lg);line-height:1;width:16px}
details.more[open]>summary::before{content:"–"}
details.more>div{margin-top:14px}

summary.head{display:flex;align-items:center;justify-content:flex-start;gap:10px;list-style:none;cursor:pointer}
summary.head::-webkit-details-marker{display:none}
summary.head::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);transform:rotate(45deg);transition:transform .15s}
details[open]>summary.head::after{transform:rotate(225deg)}
details:not([open])>summary.head{border-bottom:0}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:0 0 18px;overflow-x:auto}
.tabs a{padding:10px 14px;color:var(--ink-2);font-weight:600;border-bottom:3px solid transparent;white-space:nowrap}
.tabs a:hover{color:var(--ink);text-decoration:none}
.tabs a[aria-current="true"]{color:var(--ink);border-bottom-color:var(--blue)}
.tabs .count{color:var(--ink-3);font-weight:500;margin-left:4px}

dl.facts{display:grid;grid-template-columns:minmax(120px,auto) 1fr;gap:8px 16px;margin:0;font-size:var(--fs-md)}
dl.facts dt{color:var(--ink-3)}
dl.facts dd{margin:0;font-weight:500}

.vehicle-hero{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:6px}
.pager{display:flex;gap:6px;align-items:center;justify-content:flex-end;padding:12px 18px}

/* Anmeldung */
.login{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(380px,.9fr)}
.login-art{background:var(--asphalt);color:#fff;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:40px 48px}
.login-art .brand{padding:0}
.login-art h1{font:600 clamp(34px,4vw,54px)/1.05 var(--cond);max-width:12ch;margin-bottom:16px}
.login-art p{color:var(--asphalt-ink);max-width:40ch;font-size:var(--fs-lg)}
.road{position:absolute;right:-60px;bottom:-40px;width:520px;height:520px;opacity:.9;pointer-events:none}
.login-form{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--surface)}
.login-form form{width:min(380px,100%)}
.login-form h2{font-size:var(--fs-2xl);margin-bottom:6px}
.login-form .field{margin-top:16px}
.login-form input{height:42px;font-size:var(--fs-base)}
.login-form .btn{width:100%;height:44px;margin-top:22px;font-size:var(--fs-base)}
.login-form .error{margin-top:14px}

/* Druck */
@media print{
  .side,.top-actions,.toasts,.no-print{display:none!important}
  .app{display:block;background:none}
  body{background:#fff}
  .panel,.board{box-shadow:none;break-inside:avoid}
  .roster-wrap{max-height:none;overflow:visible}
}

/* Mobil */
@media (max-width:1100px){
  .cols-2{grid-template-columns:minmax(0,1fr)}
  .lane{grid-template-columns:120px minmax(0,1fr);gap:12px}
  .lane .count{grid-column:2;text-align:left}
}
@media (max-width:860px){
  .app{display:block;background:none}
  .side{position:fixed;inset:0 auto 0 0;width:270px;z-index:60;transform:translateX(-100%);transition:transform .2s ease}
  body.nav-open .side{transform:none;box-shadow:0 0 0 100vmax rgba(10,15,20,.45)}
  .mobile-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--asphalt);color:#fff;position:sticky;top:0;z-index:40}
  .mobile-bar button{all:unset;cursor:pointer;display:flex;padding:6px;color:#fff}
  .mobile-bar b{font:600 var(--fs-lg) var(--cond)}
  .top{padding:16px 16px 10px}
  .content{padding:4px 16px 40px}
  h1{font-size:var(--fs-2xl)}
  .figure{flex-basis:45%;border-bottom:1px solid var(--line)}
  .week{grid-template-columns:repeat(4,minmax(0,1fr))}
  .search input{width:100%}
  table.roster .who{min-width:130px;max-width:150px}
  .login{grid-template-columns:1fr}
  .login-art{padding:28px 24px;min-height:200px}
  .login-art h1{font-size:var(--fs-3xl)}
  .road{width:300px;height:300px;right:-80px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---- 2.1: Aufgabenleiste, Glocke, Hinweise ---- */
.taskbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 14px;padding:6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.taskbar-label{display:inline-flex;align-items:center;gap:6px;font:600 var(--fs-sm)/1 var(--cond);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-2);padding:0 8px 0 6px}
.taskbar .task{display:inline-flex;align-items:center;gap:7px;padding:5px 10px 5px 5px;border-radius:999px;font-size:var(--fs-sm);color:var(--ink);text-decoration:none;background:var(--sunk);border:1px solid transparent}
.taskbar .task b{min-width:22px;height:22px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;font:700 var(--fs-sm)/1 var(--font);color:#fff;background:var(--ink-3)}
.taskbar .task.warn{background:var(--warn-soft)}.taskbar .task.warn b{background:var(--warn)}
.taskbar .task.bad{background:var(--bad-soft)}.taskbar .task.bad b{background:var(--bad)}
.taskbar .task:hover{border-color:var(--line-strong)}
.taskbar .task.more{margin-left:auto;background:none;color:var(--blue-ink);padding-left:10px}
.notice.info{background:var(--blue-soft)}
.notice.slim{padding:8px 12px;margin:0 0 10px;font-size:var(--fs-sm)}
.notice .plate{margin:2px 2px 2px 0;vertical-align:middle}
.warn-dot{display:inline-grid;place-items:center;width:16px;height:16px;margin-left:5px;border-radius:50%;background:var(--warn);color:#fff;font:700 var(--fs-xs)/1 var(--font);vertical-align:middle}
.bell{position:relative}
.bell>summary{list-style:none;cursor:pointer;display:grid;place-items:center;width:38px;height:38px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);position:relative}
.bell>summary::-webkit-details-marker{display:none}
.bell>summary:hover{border-color:var(--line-strong)}
.bell .dot{position:absolute;top:-6px;right:-6px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--bad);color:#fff;font:700 var(--fs-xs)/19px var(--font);text-align:center;box-shadow:0 0 0 2px var(--bg)}
.bell-pop{position:absolute;right:0;top:46px;z-index:40;width:min(380px,calc(100vw - 32px));max-height:70vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.bell-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line)}
.bell-pop ul{list-style:none;margin:0;padding:0}
.bell-pop li{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-bottom:1px solid var(--line);border-left:3px solid var(--blue);font-size:var(--fs-md)}
.bell-pop li.warn{border-left-color:var(--warn)}.bell-pop li.bad{border-left-color:var(--bad)}
.bell-pop li.read{border-left-color:transparent;opacity:.6}
.bell-pop li a{flex:1;color:var(--ink);text-decoration:none}.bell-pop li a:hover{text-decoration:underline}
.bell-pop .mark{border:0;background:none;color:var(--ink-3);cursor:pointer;padding:2px}
.bell-pop p{padding:14px 12px;margin:0}
.rank-bar{height:8px;border-radius:4px;background:var(--bad);display:block;min-width:4px}
.secret{font-family:var(--plate-font);letter-spacing:.04em}
.field>.label{font-size:var(--fs-md);font-weight:500;color:var(--ink-2)}
.checks{display:flex;flex-wrap:wrap;gap:6px 14px;min-height:36px;align-items:center}
.checks .check{font-size:var(--fs-md)}
.tour-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}
.tour-card>summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;list-style:none}
.tour-card>summary::-webkit-details-marker{display:none}
.tour-card[open]>summary{border-bottom:1px solid var(--line);background:var(--surface-2)}
.tour-card>form{padding:14px}
.tour-card>form.row{padding-top:0}
.tour-card.new{border-style:dashed}
.tag.ok{background:var(--ok-soft);color:var(--ok)}
.tag.bad{background:var(--bad-soft);color:var(--bad)}
.class-row{display:flex;gap:8px;align-items:center;padding:8px 14px;flex-wrap:wrap}
.class-row .mono{min-width:64px;font-family:var(--plate-font)}
.class-row input[name=name]{flex:1;min-width:140px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em;letter-spacing:.01em}
@media (max-width:720px){.bell-pop{position:fixed;left:12px;right:12px;top:70px;width:auto;max-height:75vh}}
select.missing{border-color:var(--warn);background:var(--warn-soft)}

/* ---- 2.2: Tagesplanung mit Sammelspeichern ---- */
.savebar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:50;display:flex;align-items:center;gap:10px;padding:10px 12px 10px 18px;border-radius:12px;background:var(--asphalt);color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.25);max-width:calc(100vw - 32px)}
.savebar[hidden]{display:none}
.savebar .btn:not(.primary){background:transparent;color:#fff;border-color:rgba(255,255,255,.35)}
body.has-savebar .content{padding-bottom:90px}
input.changed,select.changed{border-color:var(--warn);background:var(--warn-soft)}
input.min{width:76px}
.apply-all{padding:8px 18px;border-top:1px solid var(--line);background:var(--surface-2)}
.check.small{font-size:var(--fs-sm);font-weight:500}
label.mini{display:inline-flex;flex-direction:column;gap:2px;font-size:var(--fs-xs);color:var(--ink-3)}
@media (max-width:720px){.savebar{left:12px;right:12px;transform:none;flex-wrap:wrap}}
.row.nowrap{flex-wrap:nowrap}
select.open{border-color:var(--bad);color:var(--bad)}
#day-plan + section td,[data-tour-panel] td{padding-left:10px;padding-right:10px}
[data-tour-panel] select.sm{max-width:180px}
details.done-form{position:relative}
details.done-form>div{position:absolute;right:0;top:100%;z-index:30;width:min(380px,90vw);margin-top:6px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
details.done-form .form-grid{grid-template-columns:1fr 1fr}
details.done-form>summary::before{content:none}
.notice.ok-notice{background:var(--ok-soft)}
/* ---- 2.3: Abo-Hinweise ---- */
.billing-bar{display:flex;align-items:center;gap:10px;margin:0 32px 10px;padding:9px 14px;border-radius:8px;font-size:var(--fs-md)}
.billing-bar span{flex:1}
.billing-bar a{font-weight:600;white-space:nowrap}
.billing-bar.info{background:var(--blue-soft)}.billing-bar.warn{background:var(--warn-soft)}.billing-bar.bad{background:var(--bad-soft)}
@media (max-width:720px){.billing-bar{margin:0 16px 10px;flex-wrap:wrap}}

/* Ersteinrichtung */
.choice-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:6px}
.choice-card{display:flex;gap:10px;align-items:flex-start;padding:14px 16px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--surface)}
.choice-card:has(input:checked){border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.choice-card input{margin-top:3px}
.choice-card small{display:block;color:var(--ink-3);margin-top:3px;font-size:var(--fs-sm);line-height:1.4}
.setup-rows{display:grid;gap:8px;margin-top:6px}
.setup-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:8px}

/* Sprachwechsel */
.side-foot .lang-switch{margin:0}
.login-form{flex-direction:column;gap:22px}
.login-lang{display:flex;justify-content:center}
.login-lang button{display:inline-flex;align-items:center;gap:7px;background:none;border:1px solid var(--line);border-radius:999px;padding:6px 12px;color:var(--ink-2);font:500 var(--fs-sm) var(--font);cursor:pointer}
.login-lang button:hover{border-color:var(--ink-3);color:var(--ink)}
.login-lang .i{width:15px;height:15px}
.billing-bar.demo{background:var(--warn-soft);box-shadow:inset 4px 0 0 #F5C400}

/* --- 2.6: Fahrerakte, Fristen, Tourennachweis ------------------------------------------------------ */
[hidden],.field[hidden]{display:none!important}
.opt{font-weight:400;color:var(--ink-3);font-size:var(--fs-sm);margin-left:4px}
.driver-tabs a{display:inline-flex;align-items:center;gap:6px}
fieldset.plain{border:0;margin:0;padding:0;min-width:0}
.dl-stack{display:grid;gap:14px}
.dl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
.dl-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);overflow:hidden;min-width:0}
.dl-card.is-ok{border-color:color-mix(in srgb,var(--ok) 30%,var(--line))}
.dl-main{display:flex;gap:12px;align-items:center;padding:12px 14px}
.dl-main .grow{min-width:0;display:grid;gap:2px}
.dl-main small{color:var(--ink-2);font-size:var(--fs-sm)}
.dl-icon{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;background:var(--sunk);color:var(--ink-2);flex:none}
.dl-icon.soon{background:var(--warn-soft);color:var(--warn)}.dl-icon.late{background:var(--bad-soft);color:var(--bad)}
.dl-icon.ok{background:var(--ok-soft);color:var(--ok)}.dl-icon.train.ok{background:var(--blue-soft);color:var(--blue-ink)}
.dl-foot{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:8px 14px;border-top:1px solid var(--line);background:var(--surface)}
.dl-foot .muted{min-width:0;flex:1 1 220px}
.dl-train{display:inline-flex;gap:6px;align-items:center}.dl-train input{height:32px;width:auto}
.contract-line{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:relative}
.contract-line::before{content:"";position:absolute;left:8px;right:8px;top:7px;height:2px;background:var(--line-strong)}
.contract-line li{position:relative;padding-top:22px;display:grid;gap:1px;font-size:var(--fs-sm);color:var(--ink-3)}
.contract-line li::before{content:"";position:absolute;top:0;left:0;width:16px;height:16px;border-radius:50%;background:var(--surface);border:2px solid var(--line-strong);box-sizing:border-box}
.contract-line li b{font:600 var(--fs-base)/1.2 var(--cond);color:var(--ink)}
.contract-line li.done::before{background:var(--ink-3);border-color:var(--ink-3)}
.contract-line li.now::before{background:var(--blue);border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-soft)}
.contract-line li.now b{color:var(--blue-ink)}
@media (max-width:900px){.contract-line{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:14px}.contract-line::before{display:none}}
.secret-row{display:flex;gap:4px}.secret-row input{flex:1;min-width:0}
.check.inline{display:inline-flex;margin-left:6px;font-size:var(--fs-sm)}
.static-savebar{position:sticky;bottom:14px;left:auto;transform:none;justify-content:space-between;margin-top:4px;max-width:none}
.list-head{flex-wrap:wrap;gap:10px}.list-head p{margin:0}
.row.gap{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pick-list{width:100%;margin-top:6px}
.bell-group{padding:6px 12px;background:var(--surface-2);border-bottom:1px solid var(--line);font:600 var(--fs-xs)/1.4 var(--cond);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.bell-pop li:not(.read) a{font-weight:600}
.code.twin{min-width:0;padding:0 4px}
.cell-two{display:inline-flex;gap:2px}
.maint-bar{background:var(--blue-soft);color:var(--ink)}
.hint.bad-text{color:var(--bad)}
.settable td,.settable th{vertical-align:middle}.settable .c{text-align:center}
.sub-line{display:block;color:var(--ink-3);font-size:var(--fs-sm);font-weight:400}
.inline-num{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.num-in{width:70px}
.field-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.field-row.new{padding-top:10px;border-top:1px dashed var(--line-strong)}
.rec-chart{position:relative}.rec-chart svg{width:100%;height:auto;display:block}
.rec-chart .gl{stroke:var(--line);stroke-width:1}.rec-chart .base{stroke:var(--line-strong);stroke-width:1}
.rec-chart .ax{fill:var(--ink-3);font:500 var(--fs-xs) var(--font)}
.rec-chart .bar.ist{fill:var(--blue)}.rec-chart .bar.cut{fill:var(--warn)}.rec-chart .bar.abort{fill:var(--bad)}
.rec-chart .hit{fill:transparent}.rec-chart .hit:hover{fill:color-mix(in srgb,var(--ink) 6%,transparent)}
.rec-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:var(--fs-sm);color:var(--ink-2);margin-bottom:6px}
.rec-legend span{display:inline-flex;gap:6px;align-items:center}
.rec-legend .sw{width:10px;height:10px;border-radius:3px;display:inline-block}
.rec-legend .sw.ist{background:var(--blue)}.rec-legend .sw.cut{background:var(--warn)}.rec-legend .sw.abort{background:var(--bad)}
.rec-tip{position:absolute;pointer-events:none;background:var(--asphalt);color:#fff;font-size:var(--fs-sm);padding:5px 9px;border-radius:7px;white-space:nowrap;transform:translate(-50%,-110%);z-index:5}
.rec-table{font-size:var(--fs-sm)}
.rec-table th,.rec-table td{padding:6px 8px;white-space:nowrap}
.rec-table .code{min-width:28px;height:20px;font-size:var(--fs-xs)}
.rec-table .first{position:sticky;left:0;background:var(--surface);z-index:1;text-align:left;font-weight:600;border-right:1px solid var(--line)}
.rec-table thead .first{background:var(--surface-2)}
.rec-table .sepcol{border-left:1px solid var(--line);border-right:1px solid var(--line)}
.rec-table .nocount{color:var(--ink-3)}
.rec-table .soll{color:var(--ink-2)}
.rec-table tr.off td,.rec-table tr.off th{color:var(--ink-3)}
.rec-table tr.dayrow{cursor:pointer}
.rec-table tr.dayrow:hover td,.rec-table tr.dayrow:hover th{background:var(--surface-2)}
.rec-table tr.dayrow:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
.rec-table tfoot td,.rec-table tfoot th{font-weight:700;background:var(--surface-2);border-top:2px solid var(--line-strong)}
.rec-table .notecol{min-width:160px;max-width:280px;white-space:normal;border-right:1px solid var(--line)}
.rec-table .note-text{color:var(--ink-2)}
.note-edit{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.note-edit input[type=text]{height:30px;font-size:var(--fs-sm);min-width:0;flex:1 1 160px}
.shiftlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:4px 16px;font-size:var(--fs-sm)}
.shiftlist div{display:flex;gap:8px;align-items:center;min-width:0}.shiftlist .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seg-select select{border:0;height:34px;background:transparent;font:500 var(--fs-md) var(--font);padding:0 8px}
.tour-chips{display:flex;flex-wrap:wrap;gap:6px}
.tour-chip{display:inline-flex;align-items:center;gap:7px;padding:3px 10px 3px 3px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--ink-2);font:500 var(--fs-sm) var(--font);cursor:pointer}
.tour-chip[aria-pressed="true"]{border-color:var(--blue);background:var(--blue-soft);color:var(--ink);font-weight:600}
.tour-chip:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.roster .who small .code{min-width:0;height:16px;font-size:var(--fs-xs);padding:0 4px;vertical-align:1px}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden}
.stepper button{all:unset;cursor:pointer;width:30px;height:28px;text-align:center;font-weight:700;color:var(--ink-2)}
.stepper button:hover,.stepper button:focus-visible{background:var(--surface-2)}
.stepper b{min-width:28px;text-align:center;font:600 var(--fs-md) var(--cond)}
.code-menu .second{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-strong)}
.code-menu .second-head{display:flex;justify-content:space-between;align-items:baseline;margin:0 2px 8px;font-size:var(--fs-sm)}
.code-menu .second-head small{color:var(--ink-3)}
.code-menu .second .hint{margin:8px 2px 0;font-size:var(--fs-sm);color:var(--ink-3)}
.field-row input[name=name]{flex:1 1 220px;min-width:150px}
.import-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;align-items:start}
.import-grid>*{min-width:0}.stack-gap{display:grid;gap:18px;grid-template-columns:minmax(0,1fr)}.stack-gap>*{min-width:0}.stack-gap>.panel{margin:0}
@media (max-width:1100px){.import-grid{grid-template-columns:minmax(0,1fr)}}
.drop{position:relative;display:grid;justify-items:center;gap:4px;padding:24px 16px;border:2px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-2);text-align:center;cursor:pointer;color:var(--ink-2)}
.drop:hover,.drop:focus-within,.drop.over{border-color:var(--blue);background:var(--blue-soft)}
.drop .icon{width:26px;height:26px;color:var(--blue)}.drop b{color:var(--ink);font-size:var(--fs-base)}.drop span{font-size:var(--fs-sm)}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.drop em{font-style:normal;font-weight:600;color:var(--blue-ink)}
.import-areas .list li{align-items:flex-start}.import-areas .list li .icon{margin-top:3px;color:var(--ink-3)}
.import-areas .list small{color:var(--ink-3);font-size:var(--fs-sm);line-height:1.4}

/* 2.6: Rollen, Lohn & Bank, Fuhrpark-Filter */
.role-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.role-card{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line-strong);border-radius:var(--radius);cursor:pointer;background:var(--surface)}
.role-card:has(input:checked){border-color:var(--blue);background:var(--blue-soft)}
.role-card input{margin-top:4px}
.role-card span{display:grid;gap:2px;min-width:0}
.role-card small{color:var(--ink-2);font-size:var(--fs-sm);line-height:1.4}
.pay-panel .head h2 .icon,.panel .head h2 .icon.sm{vertical-align:-2px}
.chip-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{display:inline-flex;align-items:center;gap:7px;padding:3px 10px 3px 4px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--ink-2);font:500 var(--fs-md) var(--font);cursor:pointer}
.chip .n{min-width:22px;height:20px;border-radius:999px;background:var(--surface-2);display:inline-grid;place-items:center;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.chip[aria-pressed="true"]{border-color:var(--blue);background:var(--blue-soft);color:var(--ink);font-weight:600}
.chip:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.fleet-filters{display:grid;gap:8px;padding:12px 18px;border-bottom:1px solid var(--line)}
.fleet-filters .label{font-size:var(--fs-sm);color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:var(--caps)}
.mode-pill .icon{vertical-align:-2px}
.warn-text{color:var(--warn);font-weight:600}
tr.wave-row td{background:var(--surface-2);font-size:var(--fs-sm);padding-top:6px;padding-bottom:6px;border-top:2px solid var(--line-strong)}
tr.wave-row .tag{margin-left:4px}
.variant-need{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:end;margin-top:12px;padding-top:10px;border-top:1px dashed var(--line-strong)}
.variant-need .field{max-width:140px}
.calc-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px}
.calc-step{flex:1 1 170px;display:grid;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);min-width:0}
.calc-step.hl{border-color:var(--blue);background:var(--blue-soft)}
.calc-step .k{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line-strong);font:600 var(--fs-xs) var(--cond)}
.calc-step small{color:var(--ink-2);font-size:var(--fs-sm);line-height:1.35}
.calc-op{align-self:center;font:700 var(--fs-lg) var(--cond);color:var(--ink-3)}

/* Startseite 2.7: zwei Spalten, offene Touren groß, vollständige kompakt */
.dash-grid{display:grid;gap:18px;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);align-items:start}
.dash-grid.single{grid-template-columns:minmax(0,1fr)}
.dash-grid .board{margin-bottom:0}
.dash-side{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;min-width:0}
.dash-side .panel{margin-bottom:0}
.dash-grid .lane{grid-template-columns:150px minmax(0,1fr) auto;gap:16px;padding:12px 18px}
.dash-grid .lane .count{white-space:nowrap}
.full-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.full-line .done{display:inline-flex;align-items:center;gap:5px;color:var(--ok);font-weight:700}
.full-chip{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--ink-2)}
.full-chip .wave{font-weight:500}
.full-chip b{color:var(--ink)}
.tour-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.tour-tile{border:1px solid var(--line);border-radius:8px;padding:9px 10px;background:var(--surface);min-width:0}
.tour-tile .tt-head{display:flex;justify-content:space-between;gap:6px;font-weight:600;font-size:var(--fs-sm)}
.tour-tile .tt-head span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tour-tile .tt-head .short{color:var(--bad)}
.tour-tile .meter{height:5px}
.tour-tile small{color:var(--ink-3);font-size:var(--fs-xs)}
.meter span.tc-teal{background:var(--t-teal)}.meter span.tc-blue{background:var(--t-blue)}.meter span.tc-violet{background:var(--t-violet)}.meter span.tc-green{background:var(--t-green)}.meter span.tc-amber{background:var(--t-amber)}.meter span.tc-rose{background:var(--t-rose)}.meter span.tc-cyan{background:var(--t-cyan)}.meter span.tc-slate{background:var(--t-slate)}
.tiles-toggle{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 18px;font-size:var(--fs-sm)}
.linkish{background:none;border:0;padding:0;color:var(--blue-ink);font:600 var(--fs-sm) var(--font);cursor:pointer}
.linkish:hover{text-decoration:underline}
.warn-text{color:var(--warn)}
.taskbar .task.info{background:var(--sunk)}.taskbar .task.info b{background:var(--ink-3)}
.pill.plan{background:var(--blue-soft);color:var(--blue-ink)}
.svc-src{display:block;font-size:var(--fs-xs);color:var(--ink-3);font-weight:400}
@media (max-width:1100px){.dash-grid{grid-template-columns:minmax(0,1fr)}.dash-grid .lane{grid-template-columns:120px minmax(0,1fr)}.dash-grid .lane .count{grid-column:2}}
.confirm-box{margin:0 18px 18px;border:2px solid var(--bad);border-radius:var(--radius);padding:14px 16px;display:grid;gap:10px;background:var(--surface)}
.confirm-box h3{display:flex;align-items:center;gap:6px;color:var(--bad);font-size:var(--fs-lg);margin:0}
.confirm-box p{margin:0}
.appt-list{display:grid}
.appt{border-top:1px solid var(--line)}
.appt summary{list-style:none;display:grid;grid-template-columns:minmax(0,1.4fr) auto minmax(0,1fr) minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 18px;cursor:pointer}
.appt summary::-webkit-details-marker{display:none}
.appt summary:hover{background:var(--surface-2)}
.appt .what small{display:block;color:var(--ink-3)}
.appt[open] summary{background:var(--surface-2)}
.appt[open] .as-btn{visibility:hidden}
.appt-body{padding:14px 18px 18px;border-top:1px dashed var(--line)}
@media (max-width:720px){.appt summary{grid-template-columns:minmax(0,1fr) auto}.appt summary .muted{grid-column:1/-1}}
.dash-main{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;min-width:0;align-content:start}
.dash-main .panel{margin-bottom:0}
.tour-map{display:grid;gap:8px;margin-top:6px}
.tour-map .tour-new{padding:10px;border:1px dashed var(--line-strong);border-radius:8px}

/* Schäden: Fotos, Dokumente, Lightbox (2.8) */
.gallery{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px}
.gallery li{position:relative;min-width:0}
.g-thumb{display:block;width:100%;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface-2,var(--line));cursor:zoom-in;aspect-ratio:4/3}
.g-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.g-thumb:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.g-del{position:absolute;top:4px;right:4px;margin:0}
.g-del .btn{background:color-mix(in srgb,var(--surface) 88%,transparent);padding:3px 5px}
.g-more{display:grid;place-items:center;aspect-ratio:4/3;border:1px dashed var(--line-strong);border-radius:8px}
.upload-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0}
.upload-row select{width:auto}
.upload-row label.btn{cursor:pointer}
.upload-row.busy{opacity:.6;pointer-events:none}
.doc-list{width:100%;border-collapse:collapse;margin-bottom:12px}
.doc-list td{padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:middle}
.doc-list td:first-child{width:28px;color:var(--ink-3)}
.doc-list a{word-break:break-all}
.lightbox{border:0;padding:0;background:transparent;max-width:min(96vw,1600px);max-height:96vh;width:auto}
.lightbox::backdrop{background:rgba(10,14,20,.86)}
.lightbox img{display:block;max-width:min(96vw,1600px);max-height:calc(96vh - 56px);margin:0 auto;border-radius:6px}
.lb-bar{display:flex;gap:8px;align-items:center;justify-content:center;padding:8px;color:#E5EBF1;flex-wrap:wrap}
.lb-bar span{font-size:var(--fs-sm);min-width:0}
.cam-count{display:inline-flex;align-items:center;gap:3px;color:var(--ink-3);font-size:var(--fs-sm);white-space:nowrap}
.handy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}
.handy-box{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:grid;gap:10px;align-content:start;min-width:0}
.handy-box h3{margin:0;font-size:var(--fs-lg)}.handy-box p{margin:0}
.handy-box .qr{justify-self:start;background:#fff;padding:6px;border-radius:8px;border:1px solid var(--line);line-height:0}
.handy-box .qr svg{display:block;width:150px;height:150px}
.copy-row{flex-wrap:nowrap}.copy-row input{min-width:0}
.pub-upload{max-width:520px;margin:0 auto;padding:20px max(16px,env(safe-area-inset-left,0px)) 40px;display:grid;gap:16px}
.pub-upload .brand{display:flex;gap:10px;align-items:center;color:var(--ink);font-size:var(--fs-lg)}
.pub-upload .brand img{width:32px;height:32px}
.pub-upload .big{display:grid;gap:10px}
.pub-upload .big label.btn{justify-content:center;padding:16px;font-size:var(--fs-lg)}
.pub-upload .upload-row{display:grid;gap:10px}

/* Hilfe-Assistent (2.8) */
.hb-panel{position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:max(16px,env(safe-area-inset-bottom,0px));z-index:60;width:min(400px,calc(100vw - 32px));
  max-height:min(640px,calc(100vh - 32px));display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 18px 48px rgba(10,20,30,.28);overflow:hidden}
.hb-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}
.hb-head b{display:block;font-size:var(--fs-lg)}.hb-head small{color:var(--ink-3)}
.hb-x{border:0;background:none;color:var(--ink-2);cursor:pointer;padding:6px;border-radius:6px}.hb-x:hover{background:var(--line)}
.hb-log{flex:1;overflow:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px;min-height:120px}
.hb-msg{max-width:92%;padding:9px 12px;border-radius:12px;line-height:1.45;font-size:var(--fs-md)}
.hb-msg p{margin:4px 0}
.hb-msg.bot{background:var(--sunk);border:1px solid var(--line);align-self:flex-start}
.hb-msg.me{background:var(--blue);color:#fff;align-self:flex-end}
.hb-q{display:block;margin-bottom:2px}
.hb-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.hb-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;border:1px solid var(--line-strong);font-weight:600;font-size:var(--fs-sm);text-decoration:none;color:var(--ink);background:var(--surface)}
.hb-btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.hb-chips{display:flex;flex-wrap:wrap;gap:6px}
.hb-suggest{padding:0 14px 8px}
.hb-chip{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:999px;padding:5px 10px;font:inherit;font-size:var(--fs-sm);cursor:pointer;text-align:left}
.hb-chip:hover{border-color:var(--blue)}
.hb-also{display:block;margin-top:8px;color:var(--ink-3)}
.hb-fb{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px;color:var(--ink-3)}
.hb-mini{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:6px;padding:2px 9px;font:inherit;font-size:var(--fs-sm);cursor:pointer}
.hb-form{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--line)}
.hb-form input{flex:1;min-width:0}
.hb-note{margin:0;padding:0 14px 10px;font-size:var(--fs-xs);color:var(--ink-3)}
.filter-bar{gap:8px;flex-wrap:wrap}
.code.duty{min-width:0;padding:0 5px;font-size:var(--fs-xs);white-space:nowrap;background:var(--sunk);color:var(--ink);font-weight:600}
.roster tbody.others tr.sep td{background:var(--surface-2);font-weight:600}
.roster tbody.others tr.sep small{font-weight:400;color:var(--ink-3);margin-left:6px}
.settings-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px;align-items:start}
.settings-nav{position:sticky;top:16px;margin:0;padding:8px 0}
.settings-nav a{display:flex;justify-content:flex-start;align-items:center;gap:10px;padding:7px 16px;border-left:3px solid transparent;color:var(--ink)}
.settings-nav a small{font-size:var(--fs-xs);color:var(--ink-3)}
.settings-nav a[aria-current]{background:var(--blue-soft);border-left-color:var(--blue);font-weight:600}
.settings-nav a:hover{background:var(--surface-2)}
.settings-group{padding:12px 16px 4px;text-transform:uppercase;letter-spacing:var(--caps);font-size:var(--fs-xs);color:var(--ink-3)}
.settings-search{padding:4px 12px 6px}
.station-bar{display:flex;align-items:center;gap:10px;margin:0 0 12px}
@media (max-width:900px){.settings-layout{grid-template-columns:minmax(0,1fr)}.settings-nav{position:static}}

#duty-pop .hint{font-size:var(--fs-sm);color:var(--ink-3)}
#duty-pop{width:320px}
td.nowrap,th.nowrap{white-space:nowrap}
/* Tabellen: Links in Textfarbe statt blau – ruhiger; ganze Zeile anklickbar (data-row-link), Hover zeigt das Ziel */
table td a:not(.btn):not(.plate){color:var(--ink);text-decoration:none}
table td a:not(.btn):not(.plate):hover{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
table tbody tr[data-row-link]{cursor:pointer}
table tbody tr[data-row-link]:hover td{background:var(--surface-2)}



/* Schnellsuche: Knopf oben, Suchfenster in der Mitte */
.qs-open{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 8px 0 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink-2);font:inherit;font-weight:500;cursor:pointer}
.qs-open:hover{border-color:var(--line-strong);color:var(--ink)}
.qs-open kbd,.qs-field kbd{font-size:var(--fs-xs);line-height:1;color:var(--ink-3);border:1px solid var(--line);border-radius:5px;padding:3px 5px;background:var(--surface-2);white-space:nowrap}
.qs-overlay{position:fixed;inset:0;z-index:120;background:rgba(15,22,30,.38);display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px}
.qs-overlay[hidden]{display:none}
.qs-dialog{width:min(620px,100%);background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 64px rgba(15,22,30,.32);overflow:hidden}
.qs-field{display:flex;align-items:center;gap:10px;padding:0 14px;height:56px;border-bottom:1px solid var(--line);color:var(--ink-3)}
.qs-field input{flex:1;min-width:0;border:0;outline:0;background:transparent;height:52px;padding:0;color:var(--ink);font:inherit;font-size:var(--fs-lg);box-shadow:none}
.qs-field input::-webkit-search-cancel-button{display:none}
.qs-pop{padding:6px;max-height:min(60vh,480px);overflow:auto}
.qs-group{padding:8px 10px 4px;font-size:var(--fs-xs);font-weight:600;letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.qs-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--ink);text-decoration:none}
.qs-item:hover,.qs-item[aria-selected="true"]{background:var(--blue-soft);color:var(--ink)}
.qs-item .ic{flex:none;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--surface-2);color:var(--ink-2)}
.qs-item b{font-weight:600;color:var(--ink)}
.qs-item.is-plate div{display:flex;align-items:center;gap:12px;min-width:0}.qs-item.is-plate .meta{display:inline}
.qs-item span.meta{display:block;font-size:var(--fs-sm);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qs-item div{min-width:0}
.qs-item mark{background:transparent;color:var(--blue-ink);font-weight:700}
.qs-empty,.qs-foot{padding:10px 12px;color:var(--ink-3);font-size:var(--fs-sm)}
.qs-foot{border-top:1px solid var(--line);margin-top:4px;display:flex;gap:12px}
.qs-foot kbd{font-size:var(--fs-xs);border:1px solid var(--line);border-radius:4px;padding:1px 4px;background:var(--surface-2)}
@media (max-width:760px){.qs-open span,.qs-open kbd{display:none}.qs-open{padding:0 10px}.qs-overlay{padding-top:16px}}

/* Dienstplan: getipptes Kürzel kurz anzeigen */
.roster td.cell button[data-typing]{position:relative;outline:2px solid var(--blue);outline-offset:-2px}
.roster td.cell button[data-typing]::after{content:attr(data-typing);position:absolute;inset:3px;display:grid;place-items:center;border-radius:6px;background:var(--blue-soft);color:var(--blue-ink);font-weight:700;font-size:var(--fs-sm);letter-spacing:.04em}

/* Einheitliches Suchfeld auf allen Seiten (Listen, Dienstplan, Einstellungen) */
.search{position:relative;display:flex;align-items:center;width:340px;max-width:100%;flex:0 1 340px}
.search input{width:100%;height:38px;padding:0 12px 0 36px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit}
.search input::placeholder{color:var(--ink-3)}
.search input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);outline:0}
.search > .icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-3);pointer-events:none}
.settings-search .search{width:100%;flex:1 1 auto}
@media (max-width:760px){.search{width:100%;flex:1 1 100%}}

/* Schaden: Fotos & Unfallbericht – entweder selbst hochladen oder Einmal-Link */
.dm-ways{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:16px;align-items:stretch}
.dm-ways.single{grid-template-columns:minmax(0,1fr)}
.dm-way{border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;gap:12px;align-content:start;background:var(--surface);min-width:0;transition:opacity .15s,border-color .15s,background .15s}
.dm-way h3,.dm-way h4{margin:0;font-size:var(--fs-base);font-weight:600;display:flex;align-items:center;gap:8px}
.dm-way p{margin:0}
.dm-way-row{display:grid;gap:6px}
.dm-way-label{font-size:var(--fs-xs);font-weight:600;letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.dm-way .upload-row{margin:0}
.dm-or{display:grid;place-items:center;position:relative;color:var(--ink-3);font-size:var(--fs-sm);font-weight:600;text-transform:uppercase;letter-spacing:var(--caps)}
.dm-or::before{content:"";position:absolute;top:8px;bottom:8px;left:50%;border-left:1px dashed var(--line-strong)}
.dm-or span{position:relative;background:var(--surface);padding:6px 0}
.dm-way-check{cursor:pointer}
.dm-way-check input[type=checkbox]{width:18px;height:18px;margin:0;accent-color:var(--blue)}
.dm-way-check:has(input:checked){border-color:var(--blue);background:var(--blue-soft)}
.dm-way.is-off{opacity:.45;pointer-events:none}
.dm-new-files{border-top:1px solid var(--line);display:grid;gap:12px}
.dm-new-files > h3{margin:0;font-size:var(--fs-base);display:flex;align-items:center;gap:8px}.dm-new-files > h3 small{font-weight:400}
.dm-media-list{border-top:1px solid var(--line);display:grid;gap:10px}
.dm-media-list h3{margin:6px 0 0;font-size:var(--fs-sm);font-weight:600;color:var(--ink-2)}
@media (max-width:760px){.dm-ways{grid-template-columns:minmax(0,1fr)}.dm-or::before{top:50%;bottom:auto;left:8px;right:8px;border-left:0;border-top:1px dashed var(--line-strong)}.dm-or span{padding:0 10px}}

/* Ruhige Links auch in Listen der Startseite und Panels: Namen in Textfarbe, blau erst beim Überfahren */
.list li .grow > a,.list li > a:not(.plate):not(.btn){color:var(--ink)}
.list li .grow > a:hover,.list li > a:not(.plate):not(.btn):hover{color:var(--blue)}
.dm-link-now{display:grid;gap:10px}
.dm-link-now .copy-row input{background:var(--surface)}

/* Auswahlmenü für Knöpfe (z. B. Drucken & Export) */
.dropdown{position:relative}
.dropdown > summary{list-style:none;cursor:pointer}
.dropdown > summary::-webkit-details-marker{display:none}
.dropdown > summary .icon.sm:last-child{margin-left:2px;opacity:.7}
.dropdown-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:260px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 48px rgba(15,22,30,.18);padding:6px;display:grid;gap:2px}
.dropdown-menu a{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;border-radius:8px;color:var(--ink)}
.dropdown-menu a:hover,.dropdown-menu a:focus-visible{background:var(--surface-2);color:var(--ink);outline:0}
.dropdown-menu a .icon{margin-top:2px;color:var(--ink-3)}
.dropdown-menu small{display:block;color:var(--ink-3);font-size:var(--fs-sm)}

/* Fuhrpark: Klasse und Aufbau als Text, Bearbeiten erst per Knopf */
table:not(.editing) .quick-edit{display:none}
table.editing .quick-text{display:none}
.quick-edit{display:grid;gap:4px;margin-top:4px}
[data-toggle-edit][aria-pressed="true"]{background:var(--blue-soft);border-color:var(--blue);color:var(--blue-ink)}

/* Kennzahlen als gleichmäßiges Raster (Tagesplanung) – keine halb leeren Zeilen */
.figures.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));overflow:hidden}
.figures.tiles .figure{border-right:0;box-shadow:1px 0 0 var(--line),0 1px 0 var(--line);min-width:0}
@media (min-width:1100px){.figures.tiles{grid-template-columns:repeat(min(var(--cols),10),minmax(0,1fr))}}
/* Personalakte: lange Tätigkeit in der Kennzahl kleiner */
.figure b.text{font-size:var(--fs-xl);line-height:1.25}
.legend a{color:var(--ink-2)}.legend a:hover{color:var(--blue)}
.empty .empty-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}

/* 2.9.1 – Tankkarten & Scanner je Station, Meldungen & Erinnerungen */
.kit-table td{vertical-align:top;padding-top:14px;padding-bottom:14px}
.kit-table th{vertical-align:top;padding-top:18px}
.kit-seg{flex-wrap:nowrap;max-width:100%}
.kit-seg button{gap:4px;padding:0 8px;white-space:nowrap;font-size:var(--fs-sm)}
.kit-table th:first-child{width:96px}
.kit-head-text{flex:1 1 380px;min-width:0}
.kit-seg button:last-of-type{border-right:0}
.kit-seg button:disabled{opacity:.6;cursor:progress}
.kit-note{margin:8px 0 0;font-size:var(--fs-sm);color:var(--ink-3);max-width:380px;line-height:1.45}
.kit-explain{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.kit-box{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:var(--surface-2)}
.kit-box-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.kit-box ul{margin:0;padding-left:18px;font-size:var(--fs-md);line-height:1.55}
.kit-box p{margin:0;font-size:var(--fs-md);line-height:1.55;color:var(--ink-2)}
.alert-table .al-name{width:28%}
.alert-table .al-sw{width:96px}
.alert-table .al-group th{background:var(--surface-2);font:600 var(--fs-sm)/1.2 var(--cond);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.al-when{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:var(--fs-md)}
.al-when label{display:inline-flex;align-items:center;gap:6px;font-weight:400;margin:0}
.al-when .num-in.wide{width:84px}
.alert-table td.c input[type=checkbox]{width:18px;height:18px}
.row.between{justify-content:space-between;flex-wrap:wrap;gap:12px}
.kit-cell{white-space:nowrap}
.kit-cell .icon{color:var(--ink-3)}
@media (max-width:860px){.kit-explain{grid-template-columns:1fr}.alert-table .al-name{width:auto}}
.kit-col{font-size:var(--fs-sm);white-space:normal;max-width:190px}
.kit-col .kit-line2{margin-top:3px;color:var(--ink-2)}
.kit-col .pill{font-size:var(--fs-xs)}
.reco-note{display:flex;gap:10px;align-items:flex-start;margin:0 18px 14px;padding:10px 14px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);font-size:var(--fs-md);line-height:1.5;color:var(--ink-2)}
.reco-note > .icon{margin-top:3px;color:var(--ink-3);flex:none}
.reco-note b{color:var(--ink)}
.reco-off{color:var(--warn);font-weight:600}
.reco-tag{margin-left:6px;font-size:var(--fs-xs);vertical-align:1px}
th .reco-tag{display:inline-block;margin:6px 0 0}
.reco-label{display:inline-flex;align-items:center;gap:4px;color:var(--ok);font-weight:600;font-size:var(--fs-sm)}
.role-list{border-top:1px solid var(--line)}
.role-grid{display:grid;grid-template-columns:minmax(110px,1.2fr) 76px minmax(150px,1.1fr) minmax(96px,.7fr) 76px auto;gap:8px;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line)}
.role-grid .r{text-align:right}
.role-head{padding-top:10px;padding-bottom:10px;background:var(--surface-2);font-size:var(--fs-sm);font-weight:600;color:var(--ink-3)}
.role-n b{font-variant-numeric:tabular-nums}
@media (max-width:860px){.role-grid{grid-template-columns:1fr 1fr}.role-head{display:none}.role-grid input[name=name]{grid-column:1/-1}}
.role-grid > input.sm,.role-grid > select.sm,.role-grid > .btn{width:100%;min-width:0}
.role-move{display:flex;justify-content:center;gap:4px}
.role-move .btn{width:34px;padding:0;justify-content:center}
.role-move .btn:disabled{opacity:.3}
.flip-y{transform:rotate(180deg)}
.role-head .c{text-align:center}
.class-grid{grid-template-columns:72px 140px minmax(160px,1fr) 110px 110px 84px 104px}
.class-grid .mono{font-family:var(--plate-font)}
.body-grid{grid-template-columns:minmax(160px,1fr) 120px 84px 104px}
@media (max-width:860px){.class-grid,.body-grid{grid-template-columns:1fr 1fr}}

/* 2.9.2 · Einstellungen: Gliederung nach Station / Ganze Firma / System */
.settings-nav .nav-home{font-weight:600}
.settings-nav .step{width:20px;height:20px;border-radius:50%;display:inline-grid;place-items:center;font:700 var(--fs-xs)/1 var(--font);background:var(--sunk);color:var(--ink-2);flex:none}
.settings-nav .step.ok{background:var(--ok-soft);color:var(--ok)}
.settings-nav .step.warn{background:var(--warn-soft);color:var(--warn)}
.settings-nav .step.bad{background:var(--bad-soft);color:var(--bad)}
.nav-station{display:flex;align-items:center;gap:8px;margin:2px 12px 6px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface)}
.nav-station select{border:0;background:transparent;font:600 var(--fs-base) var(--font);flex:1;min-width:0;padding:2px 0;color:var(--ink)}
.nav-station small{color:var(--ink-3);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}
.ready-table td{vertical-align:middle}
.ready-row{cursor:pointer}
.ready-row:hover td{background:var(--surface-2)}
.ready-row.open td{background:var(--blue-soft)}
.ready-row:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
.ready-row .caret{display:inline-block;width:12px;color:var(--ink-3);transition:transform .15s}
.ready-row.open .caret{transform:rotate(90deg)}
.ready-detail td{background:var(--surface-2);padding:0}
.ready-detail ul{list-style:none;margin:0;padding:6px 16px 12px 40px}
.ready-detail li{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:var(--fs-md);white-space:normal}
.ready-detail li:last-child{border-bottom:0}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-md);white-space:nowrap}
.chk b{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:var(--fs-sm);flex:none}
.chk.ok b{background:var(--ok-soft);color:var(--ok)}.chk.warn b{background:var(--warn-soft);color:var(--warn)}
.chk.bad b{background:var(--bad-soft);color:var(--bad)}.chk.off b{background:var(--sunk);color:var(--ink-3)}.chk.off{color:var(--ink-3)}
.lamp{display:inline-flex;align-items:center;gap:7px;font-weight:600;white-space:nowrap}
.lamp i{width:10px;height:10px;border-radius:50%;display:inline-block}
.lamp.ok{color:var(--ok)}.lamp.ok i{background:var(--ok)}.lamp.warn{color:var(--warn)}.lamp.warn i{background:var(--warn)}
.lamp.bad{color:var(--bad)}.lamp.bad i{background:var(--bad)}
.lamp.off{color:var(--ink-3)}.lamp.off i{background:var(--ink-3)}
.status-panel .head p.status-warn{color:var(--warn);font-weight:600;margin-top:2px}
.legend-row{display:flex;gap:18px;flex-wrap:wrap;font-size:var(--fs-sm)}
.copybox{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.copybox select{min-width:110px}
.copy-preview{border-top:1px solid var(--line);padding:14px 18px;display:grid;gap:10px}
.copy-preview h3{margin:0;font:600 var(--fs-lg) var(--cond)}
.copy-list{margin:0;padding-left:18px;display:grid;gap:4px}
/* Touren: Zeilen in der Tourkarte */
.tline{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:11px 0;border-top:1px solid var(--line)}
.tline:first-of-type{margin-top:14px}
.tline > b{width:170px;flex:none;font-size:var(--fs-md)}
.check-inline{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-md)}
.seg.radio{flex-wrap:wrap}
.seg.radio label{position:relative;display:flex;cursor:pointer;border-right:1px solid var(--line)}
.seg.radio label:last-child{border-right:0}
.seg.radio input{position:absolute;opacity:0;pointer-events:none}
.seg.radio span{padding:0 12px;height:34px;display:flex;align-items:center;color:var(--ink-2);font:500 var(--fs-md) var(--font)}
.seg.radio input:checked + span{background:var(--blue-soft);color:var(--blue-ink);font-weight:600}
.seg.radio input:focus-visible + span{outline:2px solid var(--blue);outline-offset:-2px}
.tour-del{margin-top:6px}
.col-row{display:flex;align-items:center;gap:12px;padding:8px 18px;border-bottom:1px solid var(--line);margin:0}
.col-row.h{background:var(--surface-2);font-size:var(--fs-sm);font-weight:600;color:var(--ink-3)}
.col-row .cr-name{flex:1 1 auto;min-width:0}
.col-row .cr-kind{flex:none;width:60px}
.col-row .cr-status{flex:none;width:130px}
.col-row .cr-btn{flex:none;width:104px;justify-content:center}
.add-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.add-row input:not([type=hidden]){flex:1 1 220px;min-width:0}
.add-row select,.add-row .btn{flex:none}
/* Fahrzeuge für Touren */
.check-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line)}
.check-tiles > div{padding:14px 18px;border-right:1px solid var(--line)}
.check-tiles > div:last-child{border-right:0}
.check-tiles small{display:block;color:var(--ink-3);font-size:var(--fs-sm)}
.check-tiles b{display:block;font:600 var(--fs-2xl)/1.15 var(--cond)}
.check-tiles b.warn{color:var(--warn)}
.find{display:flex;gap:10px;align-items:flex-start;padding:10px 18px;border-bottom:1px solid var(--line);font-size:var(--fs-md)}
.find:last-child{border-bottom:0}
.find .dot{width:9px;height:9px;border-radius:50%;margin-top:6px;flex:none;background:var(--ink-3)}
.find.ok .dot{background:var(--ok)}.find.warn .dot{background:var(--warn)}.find.bad .dot{background:var(--bad)}
.find a{white-space:nowrap}
.vt-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:var(--fs-sm);color:var(--ink-2);align-items:center}
.vt-legend span{display:inline-flex;align-items:center;gap:6px}
.vt-legend .sw{width:10px;height:10px;border-radius:3px;display:inline-block}
.vt-legend .sw.passt{background:var(--ok)}.vt-legend .sw.ersatz{background:var(--warn)}.vt-legend .sw.nie{background:var(--sunk);border:1px dashed var(--ink-3)}
.vt-legend .icon,.star .icon{width:15px;height:15px}
.vt-card{border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:hidden}
.vt-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;flex-wrap:wrap}
.vt-card .vt-body{border-top:1px solid var(--line);padding:12px 16px;display:grid;gap:12px}
.vt-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.vt-title b{font:600 var(--fs-lg) var(--cond)}
.vt-row{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap}
.vt-label{width:140px;flex:none;font-size:var(--fs-sm);font-weight:600;color:var(--ink-3);padding-top:8px}
.vt-body-select{width:200px}
.vt-row > small{padding-top:8px}
.chips{display:flex;flex-wrap:wrap;gap:8px;flex:1;min-width:0}
.chip-wrap{display:inline-flex;align-items:center;gap:2px}
.chip{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 6px 0 12px;border-radius:9px;border:1px solid var(--line-strong);background:var(--surface);font:500 var(--fs-md) var(--font);color:var(--ink);cursor:pointer}
.chip:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
.chip .lv{font-size:var(--fs-xs);font-weight:600;padding:2px 7px;border-radius:5px}
.chip.passt{border-color:color-mix(in srgb,var(--ok) 55%,transparent);background:var(--ok-soft)}.chip.passt .lv{background:var(--ok);color:#fff}
.chip.ersatz{border-color:color-mix(in srgb,var(--warn) 55%,transparent);background:var(--warn-soft)}.chip.ersatz .lv{background:var(--warn);color:#fff}
.chip.nie{background:var(--surface-2);color:var(--ink-3);border-style:dashed}.chip.nie .lv{background:var(--sunk);color:var(--ink-3)}
.star{width:30px;height:30px;border-radius:7px;border:0;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--ink-3)}
.star.on{color:#C77700}.star.on .icon{fill:currentColor}
.star:disabled{opacity:.25;cursor:default}
.splits{display:grid;gap:8px;flex:1;min-width:0}
.split-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--fs-md)}
.split-line input[type=number]{width:70px}
.split-add > summary{list-style:none;display:inline-flex;width:max-content}
.split-add > summary::-webkit-details-marker{display:none}
.split-add[open]{display:grid;gap:8px}
.body.bordered{border-top:1px solid var(--line)}
details.mgmt > summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px}
details.mgmt > summary::-webkit-details-marker{display:none}
details.mgmt > summary h2{margin:0}
details.mgmt > summary p{margin:2px 0 0;font-size:var(--fs-md)}
details.mgmt[open] > summary .icon{transform:rotate(180deg)}
details.mgmt[open] > summary{border-bottom:1px solid var(--line)}
.mg-grid,.bd-grid{display:grid;gap:10px;align-items:center;padding:8px 18px;border-bottom:1px solid var(--line);margin:0}
.mg-grid{grid-template-columns:minmax(140px,1fr) minmax(150px,190px) 80px 110px 104px}
.bd-grid{grid-template-columns:minmax(140px,1fr) 110px 80px 104px}
.mg-grid.h,.bd-grid.h{background:var(--surface-2);font-size:var(--fs-sm);font-weight:600;color:var(--ink-3)}
.mg-grid input,.mg-grid select,.bd-grid input,.bd-grid select{width:100%;min-width:0}
.mg-grid .btn,.bd-grid .btn{justify-content:center}
.mg-grid .r,.bd-grid .r{text-align:right}
@media (max-width:900px){.mg-grid,.bd-grid{grid-template-columns:1fr 1fr}.mg-grid.h,.bd-grid.h{display:none}.check-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Führerscheinklassen */
.lic-field{border:0;padding:0;margin:0 0 14px;display:grid;gap:8px}
.lic-field legend{padding:0;margin-bottom:6px}
.lic-field .req{color:var(--bad)}
.lic-checks{display:flex;flex-wrap:wrap;gap:8px}
.lic-check{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:9px;cursor:pointer;background:var(--surface)}
.lic-check:has(input:checked){border-color:var(--blue);background:var(--blue-soft)}
.lic-check b{font:700 var(--fs-md) var(--font)}
.lic-check small{color:var(--ink-3);font-size:var(--fs-sm)}
.lic-check.none{border-style:dashed}
.lic-error{color:var(--bad);font-size:var(--fs-sm);font-weight:600}
.lic-tag{display:inline-block;font:700 var(--fs-sm)/1 var(--font);padding:4px 7px;border-radius:5px;background:var(--blue-soft);color:var(--blue-ink);margin-right:4px}
/* Tourennachweis 2.9.2 */
.rec-layout{display:grid;gap:18px;align-items:start}
.rec-layout.with-side{grid-template-columns:minmax(0,1fr) 380px}
@media (max-width:1250px){.rec-layout.with-side{grid-template-columns:minmax(0,1fr)}}
.rec-side{position:sticky;top:16px;margin:0}
.rec-table .grpcol{border-left:2px solid var(--line-strong)}
.rec-table .z{color:var(--ink-3);font-weight:400}
.rec-table .cutv{color:var(--warn);font-weight:600}.rec-table .abv{color:var(--bad);font-weight:600}
.rec-table .hand{display:inline-block;font:600 var(--fs-xs) var(--font);color:var(--ink-3);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:0 6px;margin-left:4px;vertical-align:1px;text-transform:none;letter-spacing:0}
.rec-table tr.sel td,.rec-table tr.sel th{background:var(--blue-soft)}
.rec-table th.first a{color:inherit}
.ed-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line)}
.ed-sum > div{padding:12px 18px;border-right:1px solid var(--line)}
.ed-sum > div:last-child{border-right:0}
.ed-sum small{display:block;color:var(--ink-3);font-size:var(--fs-sm)}
.ed-sum b{font:600 var(--fs-2xl)/1.15 var(--cond)}
.ed-sum b.ok{color:var(--ok)}.ed-sum b.bad{color:var(--bad)}
.ed-row{display:grid;grid-template-columns:minmax(0,1fr) 62px 80px 80px;gap:8px;align-items:center;padding:8px 18px;border-bottom:1px solid var(--line);font-size:var(--fs-md)}
.ed-row.h{background:var(--surface-2);font-size:var(--fs-sm);font-weight:600;color:var(--ink-3)}
.ed-row > span:first-child{display:flex;align-items:center;gap:6px;min-width:0}
.ed-row input{width:100%;min-width:0;text-align:right}
.ed-row .r{text-align:right}
.ed-row .lock{color:var(--ink-3);font-weight:600}
.rec-side .pk{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px 18px;border-bottom:1px solid var(--line)}
.rec-side .side-note{margin:12px 18px 0}
.rec-side .drove{border-top:1px solid var(--line);padding:10px 18px}
.rec-side .drove summary{cursor:pointer;font-weight:600;font-size:var(--fs-md)}
.rec-side .drove ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}
.rec-side .drove li{display:flex;align-items:center;gap:8px;font-size:var(--fs-md)}
.rec-side .body{padding:12px 18px}
details.mgmt > .foot{padding:10px 18px;border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 var(--radius) var(--radius)}
.dv-pop{width:300px}
/* 2.9.3 · Wellen */
.wave-parts{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
.wave-parts span{font-size:var(--fs-sm);padding:1px 7px;border-radius:6px;background:var(--blue-soft);color:var(--blue-ink);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.wave-need{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:12px;display:grid;gap:8px}
.wave-need .wn-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.wave-need .wn-head b{display:inline-flex;align-items:center;gap:6px}
.wave-need .wn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.wave-need .wn-grid .field{margin:0}
.wave-need .wn-grid input{width:100%;box-sizing:border-box}
.wn-sum{font-size:var(--fs-sm);padding:5px 9px;border-radius:7px;background:var(--surface-2);color:var(--ink-2)}
.wn-sum.ok{background:var(--ok-soft);color:var(--ok)}
.wn-sum.warn{background:var(--warn-soft);color:var(--warn)}
.waves-edit{display:flex;flex-wrap:wrap;gap:8px;align-items:center;flex:1;min-width:0}
.wchip{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 4px 0 11px;border:1px solid var(--line-strong);border-radius:9px;background:var(--blue-soft);font:600 var(--fs-md) var(--font);color:var(--blue-ink)}
.wchip button{width:26px;height:26px;border:0;background:transparent;border-radius:6px;cursor:pointer;color:var(--blue-ink);font-size:var(--fs-lg);line-height:1}
.wchip button:hover{background:var(--surface)}
.waves-add{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.waves-add input{width:120px}
.tline .hint-line{flex-basis:100%;color:var(--ink-3);font-size:var(--fs-sm);margin-left:184px}
@media (max-width:720px){.tline .hint-line{margin-left:0}}
/* 2.9.3 Tagesplanung: Tourenzeilen ohne seitliches Scrollen */
.day-cols{grid-template-columns:minmax(0,1fr) 330px}
@media (max-width:1340px){.day-cols{grid-template-columns:minmax(0,1fr)}.day-cols>.day-side{order:-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;align-items:start}.day-cols>.day-side>*{margin:0}}
[data-tour-panel] td,[data-tour-panel] th{padding-left:8px;padding-right:8px}
[data-tour-panel] td:first-child,[data-tour-panel] th:first-child{padding-left:16px}
[data-tour-panel] td:last-child,[data-tour-panel] th:last-child{padding-right:14px}
[data-tour-panel] select.sm{max-width:165px}
.time-pair{display:flex;align-items:center;gap:6px;white-space:nowrap}
.time-pair input[type=time]{width:106px}
.time-pair input.min{width:58px}
.time-pair .unit{font-size:var(--fs-sm);color:var(--ink-3)}
.kit-wait{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-sm);color:var(--ink-3)}
.kit-sub{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;margin-top:3px;font-size:var(--fs-sm);color:var(--ink-2)}
.kit-sub .kit-cell{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.kit-sub .pill{font-size:var(--fs-xs)}
.day-cols .wn-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr))}
/* 2.9.4 Startseite: Termine & Erinnerungen getrennt */
.list li.list-head{gap:8px;padding:9px 18px 7px;background:var(--surface-2);font:600 var(--fs-sm) var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-2)}
.list li.list-head .icon{color:var(--ink-3)}
.list li.list-head small{margin-left:auto;font:400 var(--fs-sm) var(--font);letter-spacing:0;text-transform:none;color:var(--ink-3)}
.lane .count .lane-ok{display:flex;align-items:center;justify-content:flex-end;gap:4px;font:500 var(--fs-sm) var(--font);color:var(--ok)}
.tiles-toggle .muted .icon{vertical-align:-2px;color:var(--ok)}

/* 2.9.6 Mehrarbeit & Aushilfe ------------------------------------------------------------------------------ */
dialog.xw{max-width:min(780px,calc(100vw - 32px));max-height:calc(100vh - 40px)}
dialog.xw > form{display:flex;flex-direction:column;max-height:calc(100vh - 42px)}
dialog.xw .head{gap:12px;flex-wrap:wrap}
dialog.xw .head h2{margin:0}
dialog.xw .body{display:grid;gap:18px;overflow:auto}
.xw-foot{justify-content:space-between !important;align-items:center;flex-wrap:wrap}
.xw-lead{margin:0;color:var(--ink-2);font-size:var(--fs-md)}
.xw-tour{display:grid;gap:16px}
.xw-tour + .xw-tour{border-top:1px solid var(--line);padding-top:16px}
.xw-tour-h{display:flex;gap:10px;align-items:center;font-weight:600}
.xw-page .body{display:grid;gap:18px}
.xw-page{max-width:820px}
.sec{display:grid;gap:8px}
.sec-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sec-h b{font:600 var(--fs-base) var(--font)}
.sec-h small{color:var(--ink-3);font-size:var(--fs-sm)}
.xopt{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:var(--fs-md);cursor:pointer}
.xopt.on{border-color:var(--blue);background:var(--blue-soft)}
.xopt small{display:block;color:var(--ink-3);font-size:var(--fs-sm)}
.xopt .num{font:600 var(--fs-base) var(--cond);color:var(--ink-2);text-align:right;white-space:nowrap;display:grid;justify-items:end;gap:4px}
.xopt .veh{grid-column:2 / 4;display:flex;gap:10px 14px;flex-wrap:wrap;align-items:center;font-size:var(--fs-md);padding-top:2px;cursor:default}
.xopt .veh select{font-size:var(--fs-md);height:32px;max-width:100%}
.xopt .veh .check{margin:0}
.none{padding:10px 12px;border:1px dashed var(--line-strong);border-radius:10px;color:var(--ink-3);font-size:var(--fs-md)}
.muted-line{font-size:var(--fs-sm);color:var(--ink-3)}
.xw-note{display:flex;gap:8px;align-items:center;font-size:var(--fs-sm);color:var(--ink-3)}
.count{font-size:var(--fs-md);color:var(--ink-2)}
.count b{color:var(--ink)}
.pill.mw{background:#FFF1C9;color:#7A5200}
.mark-line{display:block;margin-top:3px}
.bell-sub{display:block;font-size:var(--fs-sm);color:var(--ink-3);margin-top:2px;font-weight:400}
/* Dienstplan: Aushilfe als schraffiertes Kürzel (gleiche Größe), Mehrarbeit als kleines „+“ */
.code.aus{background:repeating-linear-gradient(-45deg,var(--surface-2) 0 4px,var(--surface) 4px 8px);box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--ink-3)}
table.roster td.cell .loan-cell{display:flex;align-items:center;justify-content:center;height:34px;cursor:not-allowed}
.mw-plus{position:absolute;top:2px;right:3px;width:13px;height:13px;border-radius:50%;background:#B7791F;color:#FFF;display:grid;place-items:center;font:700 10px/1 var(--font);box-shadow:0 0 0 2px var(--surface);pointer-events:none}
table.roster td.cell.has-plus::after{right:auto;left:3px}
.legend .mw-plus.legend-plus{position:static;display:inline-grid;vertical-align:-2px;margin-right:4px;box-shadow:none}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pill.mw{background:#3A2E10;color:#F2C46B}}
:root[data-theme="dark"] .pill.mw{background:#3A2E10;color:#F2C46B}
@media (max-width:640px){.xopt{grid-template-columns:22px minmax(0,1fr)}.xopt .num{grid-column:2;justify-items:start}.xopt .veh{grid-column:1 / -1}}
.xopt b{color:var(--ink)}

/* 2.9.7 Anmeldung: dunkel, Mileon als Marke ------------------------------------------------------------ */
.auth{min-height:100vh;position:relative;overflow:hidden;background:#121A23;color:#fff;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
.auth-road{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.auth-art{position:relative;padding:52px 64px;display:flex;flex-direction:column;justify-content:space-between;gap:40px}
.auth-brand{display:inline-flex;align-items:center;gap:14px;color:#fff;text-decoration:none}
.auth-brand:hover{text-decoration:none;color:#fff}
.auth-brand img{width:54px;height:54px}
.auth-brand b{display:block;font:700 var(--fs-3xl)/1 var(--cond);letter-spacing:.2px}
.auth-brand small{display:block;margin-top:3px;font-size:var(--fs-md);color:#8696A7}
.auth-claim{max-width:560px}
.auth-greet{margin:0 0 18px;font:600 var(--fs-sm) var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:#F5C400}
.auth-claim h1{margin:0 0 20px;font:600 clamp(36px,4.2vw,60px)/1.02 var(--cond);color:#fff}
.auth-claim > p:last-child{margin:0;font-size:var(--fs-lg);line-height:1.6;color:#8E9DAE}
.auth-meta{display:flex;gap:22px;font-size:var(--fs-sm);color:#6F7F90}
.auth-side{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:24px;padding:40px 56px 40px 0}
.auth-card{width:min(400px,100%);box-sizing:border-box;padding:40px 40px 34px;border-radius:16px;background:rgba(27,38,51,.94);border:1px solid #263544;box-shadow:0 30px 80px rgba(0,0,0,.45)}
.auth-card h2{margin:0 0 8px;font:600 var(--fs-3xl)/1.12 var(--cond);color:#fff}
.auth-sub{margin:0;color:#AEBBC9;font-size:var(--fs-base);line-height:1.5}
.auth-field{display:grid;gap:7px;margin-top:18px}
.auth-field label{font:500 var(--fs-md) var(--font);color:#AEBBC9}
.auth-field input{height:46px;font-size:var(--fs-base);border:1px solid #33465A;border-radius:9px;padding:0 13px;background:#111A24;color:#fff;width:100%;box-sizing:border-box}
.auth-field input:focus{border-color:#5B7BEA;box-shadow:0 0 0 3px rgba(91,123,234,.25)}
.auth-hint{font-size:var(--fs-sm);color:#8696A7}
.auth-pw{position:relative}
.auth-pw input{padding-right:46px}
.auth-eye{position:absolute;right:4px;top:4px;width:38px;height:38px;border:0;border-radius:7px;background:transparent;color:#8E9DAE;cursor:pointer;display:grid;place-items:center}
.auth-eye:hover,.auth-eye[aria-pressed="true"]{color:#fff;background:rgba(255,255,255,.08)}
.auth-row{display:flex;justify-content:flex-end;margin-top:12px;font-size:var(--fs-md)}
.auth-row.center{justify-content:center;margin-top:18px}
.auth-card a{color:#9DB4FF}
.auth-card a:hover{color:#C3D1FF}
.auth-btn{display:flex;align-items:center;justify-content:center;width:100%;height:48px;margin-top:22px;border:0;border-radius:9px;background:#2F55E0;color:#fff !important;font:600 var(--fs-base) var(--font);cursor:pointer;text-decoration:none !important}
.auth-btn:hover{background:#3D63EE}
.auth-msg{display:flex;gap:10px;align-items:flex-start;margin-top:16px;padding:13px 15px;border-radius:10px;font-size:var(--fs-md);line-height:1.45}
.auth-msg .icon{flex:none;margin-top:2px}
.auth-msg.ok{background:rgba(46,160,98,.14);color:#9BE0B9;border:1px solid rgba(46,160,98,.35)}
.auth-msg.bad{background:rgba(214,72,60,.14);color:#F4B2AB;border:1px solid rgba(214,72,60,.35)}
.auth-msg.info{background:rgba(91,123,234,.14);color:#C3D1FF;border:1px solid rgba(91,123,234,.35)}
.auth-lang{display:flex;justify-content:center}
.auth-lang button{display:inline-flex;align-items:center;gap:7px;background:none;border:1px solid #2A3A4A;border-radius:999px;padding:7px 14px;color:#8E9DAE;font:500 var(--fs-sm) var(--font);cursor:pointer}
.auth-lang button:hover{border-color:#44586C;color:#fff}
@media (max-width:900px){
  .auth{grid-template-columns:1fr}
  .auth-art{padding:28px 24px 0;gap:20px}
  .auth-claim h1{font-size:var(--fs-3xl)}
  .auth-claim > p:last-child,.auth-meta{display:none}
  .auth-side{padding:24px 16px 40px}
  .auth-card{padding:28px 22px}
}
/* 2.9.7 Los geht's: kleines Fenster unten rechts */
.onb{position:fixed;right:24px;bottom:24px;width:min(400px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:var(--surface);border:1px solid var(--line-strong);border-radius:14px;box-shadow:0 18px 50px rgba(10,20,30,.22);z-index:40}
.onb[hidden],.onb-mini[hidden]{display:none}
.onb-h{display:flex;align-items:center;gap:10px;padding:12px 10px 12px 16px;border-bottom:1px solid var(--line)}
.onb-h h2{margin:0;font-size:var(--fs-lg)}
.onb-bar{height:5px;background:var(--sunk)}
.onb-bar > i{display:block;height:100%;background:var(--ok)}
.onb-st{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border-top:1px solid var(--line);font-size:var(--fs-md)}
.onb-st:first-child{border-top:0}
.onb-n{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font:700 var(--fs-sm) var(--cond);background:var(--blue-soft);color:var(--blue-ink)}
.onb-st.done .onb-n{background:var(--ok-soft);color:var(--ok)}
.onb-st.skip .onb-n{background:var(--sunk);color:var(--ink-3)}
.onb-st b{font-weight:600}
.onb-st.done b,.onb-st.skip b{color:var(--ink-3);font-weight:500}
.onb-act{display:flex;gap:4px;align-items:center}
.onb-more{grid-column:2 / 4;display:grid;gap:8px}
.onb-more small{color:var(--ink-3);font-size:var(--fs-sm);line-height:1.4}
.onb-more .row{display:flex;gap:6px;flex-wrap:wrap}
.onb-mini{position:fixed;right:24px;bottom:24px;z-index:40;display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 8px 0 16px;border-radius:999px;background:var(--asphalt);color:#fff;box-shadow:0 12px 30px rgba(10,20,30,.25);font:600 var(--fs-md) var(--font)}
.onb-mini button{background:transparent;border:0;color:#fff;cursor:pointer;height:32px;border-radius:999px;padding:0 10px;font:600 var(--fs-sm) var(--font)}
.onb-mini button:hover{background:rgba(255,255,255,.12)}
@media print{.onb,.onb-mini{display:none}}
/* 2.9.7 Stammdaten in Gruppen */
.fgroup{padding:16px 18px;border-top:1px solid var(--line);display:grid;gap:12px}
.fgroup:first-of-type{border-top:0}
.fgroup[hidden]{display:none}
.fgroup-h{font:600 var(--fs-sm) var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.pk-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--fs-md)}
.pk-line b{font:600 var(--fs-lg) var(--cond)}
@media (max-width:640px){.fgroup .form-grid{grid-template-columns:1fr !important}}
/* 2.9.7 Marke: Logo auf Höhe des Namens „Mileon“, Firma klein darunter */
.brand,.auth-brand{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:center}
.brand > span,.auth-brand > span{display:contents}
.brand img,.auth-brand img{grid-row:1;grid-column:1}
.brand b,.auth-brand b{grid-row:1;grid-column:2}
.brand small,.auth-brand small{grid-row:2;grid-column:2;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand img{width:28px;height:28px}
.auth-brand{column-gap:14px}
.auth-brand img{width:42px;height:42px}
.auth-brand small{margin-top:5px}
.mobile-bar b{display:flex;align-items:center;gap:8px}
.mobile-bar b img{width:24px;height:24px}
/* Menü unten: Name mit kleinem Menü, darunter Hilfe */
.umenu-wrap{position:relative}
.umenu-wrap > summary{list-style:none;display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:8px;color:#fff;cursor:pointer}
.umenu-wrap > summary::-webkit-details-marker{display:none}
.umenu-wrap > summary:hover{background:var(--asphalt-2)}
.umenu-wrap > summary > span{flex:1;min-width:0}
.umenu-wrap > summary small{display:block;color:#6F7F90;font-size:var(--fs-sm)}
.umenu-wrap[open] > summary > .icon:last-child{transform:rotate(180deg)}
.umenu{position:absolute;left:0;right:0;bottom:calc(100% + 6px);background:var(--asphalt-2);border:1px solid #33465A;border-radius:10px;padding:6px;box-shadow:0 14px 40px rgba(0,0,0,.4);display:grid;gap:2px;z-index:5}
.umenu a,.umenu button{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:7px;color:#E7ECF1;font:500 var(--fs-md) var(--font);background:none;border:0;cursor:pointer;width:100%;text-align:left}
.umenu a:hover,.umenu button:hover{background:rgba(255,255,255,.08);color:#fff;text-decoration:none}
.umenu form{margin:0}
.umenu .sep{border-top:1px solid #33465A;margin-top:4px;padding-top:4px}
.umenu .lang-switch{display:block}
/* Handy-Leiste unten */
.tabbar{display:none}
@media (max-width:760px){
  .tabbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:45;height:62px;padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -4px 14px rgba(10,20,30,.06)}
  .tabbar a,.tabbar button{all:unset;display:grid;justify-items:center;align-content:center;gap:3px;color:var(--ink-3);font:600 var(--fs-xs) var(--font);cursor:pointer;text-align:center}
  .tabbar .icon{width:22px;height:22px}
  .tabbar a[aria-current="page"]{color:var(--blue)}
  .main{padding-bottom:72px}
  .onb,.onb-mini{bottom:76px;right:12px}
  .toasts{bottom:76px}
  /* Suche und Glocke in die dunkle Leiste oben */
  .top-actions .qs-open{position:fixed;top:4px;right:52px;z-index:41;height:44px;width:44px;padding:0;justify-content:center;background:transparent;border:0;color:#fff}
  .top-actions details.bell{position:fixed;top:4px;right:6px;z-index:41}
  .top-actions details.bell > summary{color:#fff;width:44px;height:44px;display:grid;place-items:center;background:transparent;border:0}
  .top-actions details.bell .dot{top:2px;right:2px;box-shadow:0 0 0 2px var(--asphalt)}
  .top-actions details.bell .bell-pop{position:fixed;top:56px;left:8px;right:8px;width:auto;max-height:70vh}
  .mobile-bar{min-height:52px;padding:4px 104px 4px 8px}
  /* Größere Knöpfe auf dem Handy */
  .btn{min-height:40px}
  .btn.sm{min-height:36px}
  .btn.icon-only,.btn.sm.icon-only{min-width:40px}
  /* Tagesplanung (2.9.25): Tagesbedarf oben unter den Kacheln, Touren danach, „Noch frei“ am Ende */
  .day-cols>.day-side{display:contents}
  .day-cols>.day-side>form{order:-1}
  .day-cols>.day-side>section{order:1}
  /* Dienstplan: schmale Namen, mehr Tage sichtbar */
  table.roster .who{width:104px;min-width:96px;max-width:110px;padding:5px 8px}
  table.roster .who small{display:none}
  table.roster{width:auto}
  table.roster th:not(.who),table.roster td.cell{min-width:46px;width:46px;max-width:46px}
  table.roster .who{width:96px;min-width:88px;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* Listen als Karten */
  table.m-cards thead{display:none}
  table.m-cards,table.m-cards tbody{display:block}
  table.m-cards tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:11px 14px;border-bottom:1px solid var(--line);align-items:center}
  table.m-cards td{display:none;border:0;padding:0}
  table.m-cards td.m-main{display:block;grid-column:1}
  table.m-cards td.m-side{display:block;grid-column:2;grid-row:1 / span 2;justify-self:end}
  table.m-cards td.m-sub{display:block;grid-column:1;color:var(--ink-3);font-size:var(--fs-sm)}
  table.m-cards td.m-sub .sub{display:inline}
}
@media (pointer:coarse){.side nav a{padding:10px 10px}}
.m-only{display:none}
@media (max-width:760px){.m-only{display:inline}}
@media (max-width:760px){
  [data-m-collapse] > .head{cursor:pointer}
  [data-m-collapse] > .head::after{content:"";width:8px;height:8px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);transform:rotate(45deg);margin-left:auto}
  [data-m-collapse] > .head:has(.m-edit)::after{display:none}
  [data-m-collapse] .m-edit{display:inline-flex;margin-left:auto;align-items:center;height:34px;padding:0 12px;border-radius:8px;border:1px solid var(--line-strong);font:600 var(--fs-md)/1 var(--font);color:var(--ink);white-space:nowrap}
  [data-m-collapse].m-collapsed .m-edit{background:var(--blue);border-color:var(--blue);color:#fff}
  [data-m-collapse] .m-edit .o,[data-m-collapse]:not(.m-collapsed) .m-edit .c{display:inline}
  [data-m-collapse] .m-edit .c,[data-m-collapse]:not(.m-collapsed) .m-edit .o{display:none}
  [data-m-collapse].m-collapsed > .head::after{transform:rotate(-45deg)}
  [data-m-collapse].m-collapsed > :not(.head){display:none}
  /* Tagesplanung: Zeilen als kompakte Karten */
  .day-cols section[data-tour-panel] table thead{display:none}
  .day-cols section[data-tour-panel] table,.day-cols section[data-tour-panel] tbody{display:block}
  .day-cols section[data-tour-panel] tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 10px;padding:10px 14px;border-bottom:1px solid var(--line)}
  .day-cols section[data-tour-panel] tr.wave-row{display:block;background:var(--surface-2)}
  .day-cols section[data-tour-panel] td{display:block;border:0;padding:0;min-width:0}
  .day-cols section[data-tour-panel] td select{width:100%}
  .day-cols section[data-tour-panel] td.r{grid-column:1 / -1}
  .day-cols section[data-tour-panel] td.r .row{justify-content:flex-start}
}
/* 2.9.7: Menü scrollt für sich, Name und Hilfe bleiben unten immer sichtbar */
@media (min-width:761px){
  .side{overflow:hidden}
  .side nav{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#2C3B4B transparent;margin:0 -6px 0 -12px;padding:0 6px 0 12px}
  .side nav a{padding-top:7px;padding-bottom:7px}
  .side-foot{flex:none}
}
/* 2.9.8: Uhrzeit auf dem Handy nicht abschneiden */
@media (max-width:760px){
  .day-cols section[data-tour-panel] td.tcell{grid-column:1 / -1}
  .day-cols section[data-tour-panel] .time-pair{display:flex;align-items:center;gap:6px}
  .day-cols section[data-tour-panel] .time-pair input[type=time]{width:118px;min-width:118px;flex:none}
}
/* 2.9.8: Mileon als App */
.app-hint{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:14px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--mark);border-radius:var(--radius)}
.app-hint[hidden]{display:none}
.app-hint img{width:40px;height:40px;border-radius:10px;flex:none}
.app-hint b{display:block;font-size:var(--fs-base)}
.app-hint small{display:block;color:var(--ink-3);font-size:var(--fs-sm);line-height:1.35}
.app-dialog{max-width:440px}
.app-dialog .head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.app-dlg-top{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.app-dlg-top img{width:56px;height:56px;border-radius:13px;flex:none}
.app-steps{margin:0;padding-left:22px;display:grid;gap:8px}
.app-steps[hidden]{display:none}
.app-note{margin-top:14px}
/* 2.9.9: Ladebalken und weicher Seitenwechsel */
html.is-nav::after{content:"";position:fixed;left:0;right:0;top:env(safe-area-inset-top,0px);height:3px;z-index:9999;background:var(--mark);
  transform-origin:left;animation:nav-load 6s cubic-bezier(.08,.75,.15,1) forwards;pointer-events:none}
@keyframes nav-load{from{transform:scaleX(0)}to{transform:scaleX(.92)}}
html.is-nav .main{opacity:.88;transition:opacity .15s .12s}
@view-transition{navigation:auto}
.mobile-bar{view-transition-name:m-topbar}
.tabbar{view-transition-name:m-tabbar}
.side{view-transition-name:m-side}
::view-transition-old(root),::view-transition-new(root){animation-duration:.16s}
@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  html.is-nav::after{animation:none;transform:scaleX(.6)}
}
/* 2.9.10: zwei Touren am selben Tag (WA+WC) – Farbe der ersten Tour, Streifen der zweiten */
.code.tc2-teal{box-shadow:inset -4px 0 0 var(--t-teal)}.code.tc2-blue{box-shadow:inset -4px 0 0 var(--t-blue)}.code.tc2-violet{box-shadow:inset -4px 0 0 var(--t-violet)}.code.tc2-green{box-shadow:inset -4px 0 0 var(--t-green)}.code.tc2-amber{box-shadow:inset -4px 0 0 var(--t-amber)}.code.tc2-rose{box-shadow:inset -4px 0 0 var(--t-rose)}.code.tc2-cyan{box-shadow:inset -4px 0 0 var(--t-cyan)}.code.tc2-slate{box-shadow:inset -4px 0 0 var(--t-slate)}
@media (max-width:760px){table.roster td.cell .code{padding:0 3px;letter-spacing:0}}

/* 2.9.10 Schalter, Forecast Fahrer/Fahrzeuge, Vorrang bei der Fahrzeugwahl */
.tgl{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:var(--fs-md);cursor:pointer;user-select:none;padding:0 4px;position:relative}
.tgl input{position:absolute;opacity:0;width:1px;height:1px}
.tgl-track{width:40px;height:22px;border-radius:11px;background:var(--line-strong);position:relative;transition:background .2s;flex:none}
.tgl-dot{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .2s}
.tgl input:checked + .tgl-track{background:var(--ok)}
.tgl input:checked + .tgl-track .tgl-dot{transform:translateX(18px)}
.tgl input:focus-visible + .tgl-track{outline:2px solid var(--blue);outline-offset:2px}
.tgl.sm{font-size:var(--fs-sm)}
.fc-table td.fc-drv{background:color-mix(in srgb,var(--blue) 7%,transparent)}
.fc-table td.fc-veh{background:color-mix(in srgb,var(--ink-3) 9%,transparent)}
.fc-table th.fc-drv{background:color-mix(in srgb,var(--blue) 7%,var(--surface-2))}
.fc-table th.fc-veh{background:color-mix(in srgb,var(--ink-3) 9%,var(--surface-2))}
.fc-grp th{font-size:var(--fs-sm);letter-spacing:var(--caps);text-transform:uppercase;padding-top:10px;padding-bottom:4px;border-bottom:0}
.fc-grp th.fc-drv{color:var(--blue);border-top:3px solid var(--blue)}
.fc-grp th.fc-veh{color:var(--ink-2);border-top:3px solid var(--ink-3)}
.fc-grp th .icon{vertical-align:-2px}
.fc-table td.fc-drv b,.fc-table td.fc-veh b{font-size:var(--fs-base)}
.fc-table td:first-child{white-space:nowrap}
.fc-ok{display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-width:150px}
.fc-ok .pill{white-space:nowrap}
.fc-table td>.fc-ok{max-width:260px}
.fc-wk-btn{white-space:nowrap}
.sub.nowrap{white-space:nowrap}
.fc-week td{background:var(--surface-2);border-top:1px solid var(--line-strong)}
.calc-step.off{opacity:.5}
.calc-step.off b{text-decoration:line-through;text-decoration-thickness:1.5px}
.calc-step .st{justify-self:start;font:700 var(--fs-xs) var(--cond);letter-spacing:.06em;padding:1px 7px;border-radius:999px;background:var(--line);color:var(--ink-2)}
.calc-step .st.on{background:var(--ok-soft,#DDF1EA);color:var(--ok)}
.fc-drv-step{border-color:var(--blue)!important}
.fc-veh-step{border-color:var(--ink-3)!important;background:color-mix(in srgb,var(--ink-3) 9%,var(--surface))!important}
.fc-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fc-cards{display:none}
.fc-m-note{margin:6px 14px 2px}
@media (max-width:760px){
  .calc-note{display:none}
  .fc-table .fc-grp{display:none}
  .fc-cards{display:grid;padding:4px 0}
  .fc-desk{display:none}
  .fc-table > .foot{position:sticky;bottom:calc(62px + env(safe-area-inset-bottom));z-index:5;background:var(--surface);box-shadow:0 -4px 12px rgba(10,20,30,.06)}
  .fc-in{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin-top:4px}
  .fc-in label{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:var(--fs-sm);color:var(--ink-2)}
  .fc-in input{width:64px!important;flex:none}
  .fc-card{display:grid;grid-template-columns:1fr auto auto;gap:4px 14px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}
  .fc-card:last-child{border-bottom:0}
  .fc-card .fc-ok{grid-column:1/-1;min-width:0}
  .fc-card.wk{background:var(--surface-2)}
  .fc-card.wk .btn{grid-column:1/-1;justify-self:start}
  .fc-card .icon{vertical-align:-2px;color:var(--ink-3)}
  .calc-flow{display:grid;grid-template-columns:1fr 1fr;gap:6px}
  .calc-flow .calc-op{display:none}
  .calc-step{padding:8px 10px}
  .calc-step small{display:none}
  .calc-step .k{display:none}
  .calc-step{padding:8px 10px;align-content:center}
}
.vr-chain{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap;counter-reset:vr}
.vr-chip{flex:1 1 200px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);min-width:0}
.vr-chip{align-content:center}
.vr-chip .vr-no{grid-row:1/span 3;align-self:center}
.vr-chip b{font-size:var(--fs-md)}
.vr-chip small{color:var(--ink-3);font-size:var(--fs-sm);line-height:1.3}
.vr-chip .tgl{grid-column:2;margin-top:6px;justify-self:start;padding:0}
.vr-chip.off{opacity:.55}
.vr-no{counter-increment:vr;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--asphalt);color:var(--mark);font:700 var(--fs-base) var(--cond);flex:none}
.vr-no::before{content:counter(vr)}
.vr-swap{align-self:center;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;width:34px;height:34px;cursor:pointer;font-size:var(--fs-lg);color:var(--ink-2)}
.vr-swap:hover{border-color:var(--blue);color:var(--blue)}
@media (max-width:760px){.vr-chain{flex-direction:column;gap:4px}.vr-chip{flex:none}.vr-swap{transform:rotate(90deg);width:30px;height:30px}}
.vrule-fix{margin:10px 0 0;color:var(--ink-2);font-size:var(--fs-md)}
.vrule-fix summary{cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);font-weight:600;font-size:var(--fs-md);list-style:none}
.vrule-fix summary::-webkit-details-marker{display:none}
.vrule-fix summary .icon{transition:transform .15s}
.vrule-fix summary .icon:last-child{margin-left:2px}
.vrule-fix[open] summary .icon:last-child{transform:rotate(90deg)}
.vrule-fix ul{margin:8px 0 0;padding-left:18px;display:grid;gap:4px}
.vrule-fix li b{color:var(--ink);font-weight:600}
.vrule-ex{display:flex;gap:10px;align-items:flex-start;margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--blue-soft);color:var(--ink);font-size:var(--fs-md)}
.vrule-ex b{display:block}
/* Dienstplan: Zelle in der Tagesplanung bearbeitet */
table.roster td.cell.tp button{position:relative}
table.roster td.cell.tp button::after{content:"";position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--blue)}

/* Tagesplanung: Tour wechseln (2.9.10) */
.tour-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.tour-opt{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--surface)}
.tour-opt:hover{border-color:var(--line-strong)}
.tour-opt input{position:absolute;opacity:0;width:1px;height:1px}
.tour-opt:has(input:checked){border-color:var(--blue);background:var(--blue-soft);box-shadow:0 0 0 1px var(--blue)}
.tour-opt:has(input:focus-visible){outline:2px solid var(--blue);outline-offset:2px}
.tour-opt span b{display:block;font-size:var(--fs-md)}
.tour-opt span small{color:var(--ink-3);font-size:var(--fs-sm)}
.tour-opt[hidden]{display:none}
.tour-note{margin:14px 0 0;padding-left:18px;color:var(--ink-2);font-size:var(--fs-md);display:grid;gap:3px}
.tour-dlg .head p{margin:2px 0 0}
@media (max-width:760px){.tour-pick{grid-template-columns:1fr 1fr;gap:6px}.tour-opt{padding:8px;gap:8px}.tour-opt span small{font-size:var(--fs-sm)}}

/* Tagesplanung: Zeilenmenü „⋯“ (2.9.10) */
.rowmenu{position:relative;display:inline-block}
.rowmenu summary{list-style:none;font-weight:700;letter-spacing:1px}
.rowmenu summary::-webkit-details-marker{display:none}
.rowmenu-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:30;min-width:220px;padding:6px;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;box-shadow:0 12px 32px rgba(10,20,30,.18);display:grid;gap:2px}
.rowmenu-pop form{margin:0}
.rowmenu-pop button{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:0;background:none;border-radius:7px;font:500 var(--fs-md) var(--font);color:var(--ink);cursor:pointer;text-align:left;white-space:nowrap}
.rowmenu-pop button:hover,.rowmenu-pop button:focus-visible{background:var(--surface-2)}
.rowmenu-pop button.danger{color:var(--bad)}
@media (max-width:760px){.rowmenu-pop{left:0;right:auto}}
@media (max-width:760px){.waves-add input{width:112px}.waves-add .btn{flex-basis:100%;justify-content:center}}

/* Abwesenheiten: Auffälligkeiten, Urlaubskonto (2.9.10) */
.pat-msub{display:none}
tr.pat-flag td{background:color-mix(in srgb,var(--warn) 7%,transparent)}
.pat-legend{margin:0;padding:10px 20px;border-bottom:1px solid var(--line)}
.pat-quick a{font-size:var(--fs-sm)}
.sub.bad-t{color:var(--bad);font-weight:600}
@media (max-width:760px){.pat-quick{width:100%;display:grid;grid-template-columns:repeat(4,1fr)}.pat-quick a{white-space:nowrap;text-align:center;padding-left:4px;padding-right:4px}.pat-legend{padding:10px 14px}table.m-cards tr.pat-flag{background:color-mix(in srgb,var(--warn) 7%,transparent)}table.m-cards tr.pat-flag td{background:none}}
/* Protokoll (2.9.10) */
.audit-filter .field.grow{flex:1 1 220px}
.audit-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 20px;border-bottom:1px solid var(--line)}
.audit-table td{vertical-align:top}
.audit-det{font-size:var(--fs-md)}.audit-det>div{display:flex;flex-wrap:wrap;gap:3px 14px;max-width:760px}
.audit-det i{font-style:normal;color:var(--ink-3)}
.nowrap{white-space:nowrap}
@media (max-width:760px){.audit-bar{padding:10px 14px}table.m-cards.audit-table td.m-sub{grid-column:1 / -1}.audit-det>div{gap:2px 10px}}
/* Abwesenheiten: Kalender (2.9.10) */
.cal-legend{display:flex;flex-wrap:wrap;gap:6px 16px;padding:10px 20px;border-bottom:1px solid var(--line);font-size:var(--fs-sm);color:var(--ink-2)}
.cal-legend span{display:inline-flex;align-items:center;gap:6px}
.cal-sw{width:18px;height:10px;border-radius:3px;display:inline-block}
.k-U{--k:var(--absent);--ks:var(--absent-soft)}.k-SA{--k:var(--t-teal);--ks:var(--t-teal-soft)}.k-K,.k-KO{--k:var(--sick);--ks:var(--sick-soft)}
.k-UE{--k:var(--bad);--ks:var(--bad-soft)}.k-FW,.k-ED,.k-FREI{--k:var(--t-slate);--ks:var(--t-slate-soft)}
.cal-sw{background:var(--ks);border:1px solid var(--k)}
.cal-sw.req{background:repeating-linear-gradient(135deg,var(--surface-2) 0 3px,var(--line-strong) 3px 5px);border:1px dashed var(--ink-3)}
.cal-over-chip{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--bad);color:#fff;font-size:var(--fs-xs)}
.cal-wrap{max-height:none}
table.cal{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:900px}
table.cal th,table.cal td{padding:0;border-bottom:1px solid var(--line);height:34px}
table.cal .cal-name{position:sticky;left:0;z-index:2;background:var(--surface);width:150px;padding:0 10px;text-align:left;border-right:1px solid var(--line-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.cal .cal-name a{color:var(--ink);font-weight:600}
table.cal .cal-name small{display:block;color:var(--ink-3);font-size:var(--fs-xs);font-weight:400;line-height:1}
table.cal thead th{position:sticky;top:0;z-index:1}
table.cal thead th.cal-name{z-index:3}
th.cal-d{text-align:center;font:600 var(--fs-xs)/1.1 var(--cond);color:var(--ink-3);padding:4px 0}
th.cal-d span{display:block;font-size:var(--fs-xs)}
th.cal-d b{display:block;font-size:var(--fs-md);color:var(--ink)}
th.cal-d.today b{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--blue);color:#fff}
.cal-sum th{text-align:center;font:700 var(--fs-sm) var(--cond);color:var(--ink-2);background:var(--surface-2);height:26px}
.cal-sum th small{display:block;font-size:10px;color:var(--ink-3);font-weight:600;line-height:1}
.cal-sum th.over{background:var(--bad-soft);color:var(--bad)}
.cal-sum th.cal-name{font:600 var(--fs-sm) var(--font);color:var(--ink-3)}
th.closed,td.closed{background:var(--surface-2)}
td.cal-e button{display:block;width:100%;height:33px;border:0;background:transparent;cursor:pointer}
td.cal-e button:hover{background:var(--blue-soft)}
td.cal-bar-cell{padding:3px 1px}
.cal-bar{display:flex;align-items:center;gap:4px;height:26px;padding:0 6px;min-width:0;border-radius:6px;background:var(--ks);color:var(--k);border:1px solid color-mix(in srgb,var(--k) 45%,transparent);font:700 var(--fs-sm) var(--cond);white-space:nowrap;overflow:hidden;text-decoration:none}
.cal-bar span{font:600 var(--fs-sm) var(--font);opacity:.85}
.cal-bar:hover{text-decoration:none;filter:brightness(.97);box-shadow:0 0 0 2px color-mix(in srgb,var(--k) 35%,transparent)}
.cal-bar.cl{border-top-left-radius:0;border-bottom-left-radius:0;border-left-style:dashed}
.cal-bar.cr{border-top-right-radius:0;border-bottom-right-radius:0;border-right-style:dashed}
.cal-bar.req{background:repeating-linear-gradient(135deg,var(--ks) 0 5px,var(--surface) 5px 9px);border-style:dashed}
.cal-limit summary{font-size:var(--fs-md)}
.cal-mobile{display:none}
@media (max-width:760px){
  .cal-desk{display:none}.cal-mobile{display:grid}
  .cal-legend{padding:10px 14px;gap:6px 12px}
  .cal-day{padding:10px 14px;border-bottom:1px solid var(--line)}
  .cal-day.over{background:color-mix(in srgb,var(--bad) 6%,transparent)}
  .cal-day-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px}
  .cal-day-h span{font-size:var(--fs-sm);color:var(--ink-3)}.cal-day.over .cal-day-h span{color:var(--bad);font-weight:600}
  .cal-chips{display:flex;flex-wrap:wrap;gap:6px}
  .cal-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 4px;border-radius:999px;background:var(--ks);color:var(--ink);font-size:var(--fs-md)}
  .cal-chip b{display:inline-grid;place-items:center;min-width:26px;height:20px;border-radius:999px;background:var(--surface);color:var(--k);font:700 var(--fs-xs) var(--cond)}
  .cal-chip.req{background:repeating-linear-gradient(135deg,var(--ks) 0 5px,var(--surface) 5px 9px)}
}

/* Abwesenheitsliste: Karten auf dem Handy (2.9.10) */
.abs-list .al-m{display:none}
@media (max-width:760px){
  table.abs-list thead{display:none}
  table.abs-list,table.abs-list tbody{display:block}
  table.abs-list tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;padding:12px 14px;border-bottom:1px solid var(--line)}
  table.abs-list td{display:block;border:0;padding:0}
  table.abs-list td.al-x{display:none}
  table.abs-list td.al-name{grid-column:1}
  table.abs-list td.al-name a{font-weight:600}
  table.abs-list .al-m{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px;font-size:var(--fs-sm);color:var(--ink-2)}
  table.abs-list td.al-st{grid-column:1 / -1}
  table.abs-list td.al-st .sub{display:block;font-size:var(--fs-sm);margin-top:2px}
  table.abs-list td.al-act{grid-column:1 / -1;text-align:left}
  table.abs-list td.al-act .row.end{justify-content:flex-start;flex-wrap:wrap}
}

/* Forecast: So wird gerechnet (2.9.10, neu) */
.fc-how>summary h2{margin:0}
.fc-how-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 20px 4px}
.fc-how-box{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface-2);min-width:0}
.fc-how-box.drv{border-top:3px solid var(--blue)}
.fc-how-box.veh{border-top:3px solid var(--ink-3)}
.fc-how-box h3{display:flex;align-items:center;gap:7px;margin:0 0 10px;font:700 var(--fs-base) var(--cond);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink)}
.fc-how-box dl{display:grid;grid-template-columns:86px minmax(0,1fr);gap:10px 12px;margin:0}
.fc-how-box dt{font:700 var(--fs-xs) var(--cond);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3);padding-top:4px}
.fc-how-box dd{margin:0;font-size:var(--fs-md);line-height:1.45;color:var(--ink-2)}
.fc-how-box dd small{display:block;margin-top:4px;color:var(--ink-3);font-size:var(--fs-sm)}
.fc-eq{display:inline-flex;flex-wrap:wrap;align-items:center;gap:5px 6px;margin-top:2px}
.fc-eq i{font-style:normal;font:700 var(--fs-md) var(--cond);color:var(--ink-3)}
.fc-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}
.fc-chip b{font:700 var(--fs-xs) var(--cond);letter-spacing:.06em;padding:1px 6px;border-radius:999px;background:var(--ok-soft,#DDF1EA);color:var(--ok)}
.fc-chip.off{color:var(--ink-3)}.fc-chip.off b{background:var(--line);color:var(--ink-3)}
.fc-chip.hl{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}
.fc-how-foot{margin:0;padding:10px 20px 14px;font-size:var(--fs-sm);color:var(--ink-3)}
@media (max-width:900px){.fc-how-grid{grid-template-columns:1fr}}
@media (max-width:760px){.fc-how-grid{padding:12px 14px 2px;gap:8px}.fc-how-box{padding:10px 12px}.fc-how-box dl{grid-template-columns:1fr;gap:2px}.fc-how-box dt{padding-top:6px}.fc-how-foot{padding:8px 14px 12px}}
/* 2.9.10: Fahrzeugklassen – Beispielnamen */
.mg-tip{display:flex;gap:8px;align-items:flex-start;margin:0;padding:10px 18px;font-size:var(--fs-sm);color:var(--ink-3);border-bottom:1px solid var(--line)}
.mg-name{display:grid;gap:2px;min-width:0}
.mg-ex{font-size:var(--fs-sm);color:var(--ink-3);opacity:.85}
/* 2.9.10: Ähnliche Tour anlegen */
.tour-copy{margin:0 14px 10px;border:1px dashed var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-2)}
.tour-copy>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;padding:9px 12px;font-weight:600;color:var(--blue)}
.tour-copy>summary::-webkit-details-marker{display:none}
.tour-copy[open]>summary{border-bottom:1px dashed var(--line-strong)}
.tc-form{padding:12px;display:grid;gap:10px}
.tc-fields{display:grid;grid-template-columns:minmax(0,1.4fr) 110px minmax(0,1.2fr);gap:10px}
.tc-fields:has(.tc-short[hidden]){grid-template-columns:minmax(0,1.4fr) minmax(0,1.2fr)}
.tc-info{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-sm);line-height:1.45;color:var(--ink-3);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:9px 11px}
.tc-info b{color:var(--ink-2);font-weight:600}
@media (max-width:760px){.tc-fields{grid-template-columns:1fr 1fr}.tc-fields .field:first-child,.tc-fields .field:last-child:not(.tc-short){grid-column:1 / -1}.tour-copy{margin:0 10px 10px}}
/* 2.9.10: Forecast – Fahrzeuge je Klasse */
.fc-vcls{display:flex;flex-direction:column;align-items:flex-end;gap:1px;margin-top:3px;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.3}
.fc-vcls span{white-space:nowrap}.fc-vcls b{color:var(--ink-2);font-weight:600}
.fc-vcls .bad,.fc-vcls .bad b{color:var(--bad)}
@media (max-width:760px){.fc-vcls{align-items:flex-start;width:100%;font-size:var(--fs-sm)}}
/* 2.9.10: Fahrzeuge für Touren – Überblick je Klasse */
.vc-over{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.vc-item{display:grid;gap:4px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:var(--fs-sm);color:var(--ink-2);text-decoration:none}
.vc-item:hover{text-decoration:none}
.vc-h{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.vc-h b{color:var(--ink);font-size:var(--fs-md)}.vc-h span{font:600 var(--fs-sm) var(--cond);color:var(--ink-3);white-space:nowrap}
.vc-t{display:grid;gap:2px;line-height:1.35}.vc-t b{font-weight:600;color:var(--ink)}
.vc-item.empty{opacity:.6}
.vc-item.unused .vc-h span{color:var(--warn)}
.vc-item.warn{border-color:color-mix(in srgb,var(--warn) 50%,var(--line))}.vc-item.warn .vc-h span{color:var(--warn)}
@media (max-width:760px){.vc-over{padding:10px 14px;grid-template-columns:1fr 1fr}}

/* 2.9.11 Untertypen, Wellen, Einrichtungs-Check */
.tour-group{margin-bottom:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2)}
.tour-group>.tg-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;padding:12px 16px;cursor:pointer;list-style:none}
.tour-group>.tg-head::-webkit-details-marker{display:none}
.tour-group>.tg-head::before{content:"▾";color:var(--ink-3,#8593A1);margin-right:2px;transition:transform .15s}
.tour-group:not([open])>.tg-head::before{transform:rotate(-90deg)}
.tg-title{display:flex;align-items:center;gap:8px;flex:1 1 auto;min-width:0}
.tg-sum{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tg-sum b.ok{color:var(--ok)} .tg-sum b.bad{color:var(--bad)}
.tour-group>.panel.tg-member{margin:0 10px 10px;box-shadow:none}
.tour-group>.panel.tg-member:first-of-type{margin-top:0}
.setup-check{border:1px solid var(--warn-soft);background:color-mix(in srgb,var(--warn-soft) 45%,var(--surface));border-radius:var(--radius-sm);padding:10px 14px;font-size:var(--fs-md)}
.setup-check.ok{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-color:var(--ok-soft);background:color-mix(in srgb,var(--ok-soft) 45%,var(--surface))}
.setup-check .sc-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.setup-check ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}
.setup-check li{display:flex;justify-content:space-between;align-items:baseline;gap:6px 14px;flex-wrap:wrap;padding-left:14px;position:relative}
.setup-check li::before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--warn)}
.setup-check li.sc-info::before{background:var(--line-strong)}
.setup-check li a{white-space:nowrap;font-weight:600}
.tour-facts{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:var(--fs-sm);color:var(--ink-3,#6B7A88);padding-left:2px}
.tour-facts .fx-miss{color:var(--warn)}
.tour-card.sub{margin-left:22px;position:relative}
.tour-card.sub::before{content:"";position:absolute;left:-14px;top:-8px;bottom:50%;width:10px;border-left:2px solid var(--line);border-bottom:2px solid var(--line);border-bottom-left-radius:6px}
.sub-opt{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;flex-basis:100%;margin-top:6px}
.sub-opt>span:first-child{font-size:var(--fs-sm);font-weight:600;min-width:58px}
.wave-names{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:8px;font-size:var(--fs-sm)}
.wave-names .mini{display:inline-flex;align-items:center;gap:6px}
.wave-names input{width:130px}
.lane-subs span.bad-text{color:var(--bad)}
@media (max-width:640px){
  .tour-group>.panel.tg-member{margin:0 6px 8px}
  .tour-card.sub{margin-left:12px}
  .tour-card.sub::before{left:-9px;width:6px}
  .wave-names input{width:110px}
}
.wave-lines{display:flex;flex-direction:column;gap:1px;margin-top:3px;font:400 var(--fs-sm) var(--font);color:var(--ink-3)}
.wave-lines b{font-weight:600;color:var(--ink-2)}
.wave-lines .bad-text,.wave-lines .bad-text b{color:var(--bad)}
/* Forecast-Spalten je Tour (2.9.11) */
.fcmap{padding:14px 18px;border-bottom:1px solid var(--line);display:grid;gap:8px}
.fcmap-h{font-size:var(--fs-md);margin-bottom:2px}
.fcmap-row{display:grid;grid-template-columns:minmax(200px,290px) minmax(0,1fr);align-items:center;gap:6px 14px}
.fcmap-tour{display:flex;align-items:center;gap:8px;min-width:0}
.ms{position:relative}
.ms>summary{list-style:none;cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:36px;padding:4px 34px 4px 8px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);position:relative}
.ms>summary::-webkit-details-marker{display:none}
.ms>summary::after{content:"▾";position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--ink-3)}
.ms[open]>summary{border-color:var(--blue,#2B4FD8)}
.ms-chip{font-size:var(--fs-sm);padding:2px 8px;border-radius:6px;background:var(--blue-soft);color:var(--blue-ink);white-space:nowrap}
.ms-pop{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow);padding:6px;display:grid;gap:2px;max-height:320px;overflow:auto}
.ms-opt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:var(--fs-md)}
.ms-opt:hover{background:var(--surface-2)}
.ms-opt small{margin-left:auto;font-size:var(--fs-sm)}
.fcmap-free{font-size:var(--fs-sm);color:var(--ok);display:flex;align-items:center;gap:6px;margin-top:4px}
.fcmap-free.warn{color:var(--warn)}
@media (max-width:640px){.fcmap{padding:12px}.fcmap-row{grid-template-columns:1fr}}
.fcmap-tour.sub{padding-left:18px}
.tour-restore{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding-top:4px}
/* Forecast 2.9.14: gleich hohe Zeilen – Klassen im aufklappbaren Feld */
.fc-table tr:not(.fc-week) td>.fc-ok{max-width:none;flex-wrap:nowrap}
.fc-vpop{position:relative;display:inline-block}
.fc-vpop>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:4px;border-bottom:1px dashed var(--line-strong)}
.fc-vpop>summary::-webkit-details-marker{display:none}
.fc-vdot{width:7px;height:7px;border-radius:50%;background:var(--bad);display:inline-block;margin-left:2px}
.fc-vpop-box{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:240px;background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow);padding:10px 12px;text-align:right;white-space:nowrap}
.fc-vpop-h{display:block;font-size:var(--fs-sm);color:var(--ink-3);font-weight:600;margin-bottom:4px;text-align:left}
.fc-vpop-box .fc-vcls{align-items:stretch;font-size:var(--fs-sm)}
.fc-vpop-box .fc-vcls>span{display:flex;justify-content:space-between;gap:16px}
.fc-vcls .fc-vany,.fc-vany{display:block;font-size:var(--fs-sm);color:var(--bad);margin-top:2px;text-align:left;white-space:normal}
.fc-vcls em{font-style:normal}
.legend .legend-how{flex-basis:100%;color:var(--ink-2)}
.tour-chips .muted.small{align-self:center;margin-right:2px}
/* Dienstplan-Legende (2.9.16): Gruppen, auf dem Handy eingeklappt */
.legend-box{padding:10px 18px 14px;border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 var(--radius) var(--radius);font-size:var(--fs-sm);color:var(--ink-2)}
.legend-box>summary{cursor:pointer;font-weight:600;color:var(--ink);list-style:none;padding:2px 0}
.legend-box>summary::-webkit-details-marker{display:none}
.legend-box>summary::after{content:" ▾";color:var(--ink-3)}
.legend-box:not([open])>summary::after{content:" ▸"}
.legend-how{margin:6px 0 4px;color:var(--ink-3)}
.legend-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 24px;margin-top:8px}
.lg-h{display:block;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--caps);color:var(--ink-3);margin-bottom:6px}
.lg-items{display:grid;gap:6px}
.lg-items>span{display:grid;grid-template-columns:56px minmax(0,1fr);align-items:center;gap:10px}
.lg-items>span>.code{justify-self:start}
.lg-items em{font-style:normal}
.lg-ic{display:inline-flex;justify-content:center;align-items:center;width:44px;height:24px}
.lg-ic i{width:10px;height:10px;border-radius:50%;display:inline-block}
@media (max-width:900px){
  .legend-how{display:none}
  .legend-box{padding:10px 12px 12px}
  .legend-groups{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 10px}
  .lg-h{font-size:var(--fs-xs);letter-spacing:.02em}
  .lg-items{gap:9px}
  .lg-items>span{grid-template-columns:1fr;gap:3px;justify-items:start}
  .lg-items em{font-size:var(--fs-sm);line-height:1.3;color:var(--ink-2)}
  .lg-items em small{display:block}
  .lg-ic{width:auto;justify-content:flex-start;height:auto}
}
.lg-plus{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:#B7791F;color:#FFF;font:700 var(--fs-xs)/1 var(--font)}
.lg-s{display:none}
@media (max-width:900px){
  .lg-l{display:none}.lg-s{display:inline}
  .lg-items>span{height:44px;align-content:start}
  .lg-items em{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:block}
  .lg-items em small{display:inline}
  .lg-items em small.lg-l{display:none}
  .lg-ic{height:24px;align-items:center}
}
tr.to-delete td{opacity:.5}tr.to-delete td:last-child{opacity:1}tr.to-delete input[type=text],tr.to-delete input:not([type]){text-decoration:line-through}
#prognose .foot{gap:12px;align-items:center}
@media (max-width:640px){
  #prognose .settable thead{display:none}
  #prognose .settable,#prognose .settable tbody{display:block}
  #prognose .settable tr{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:8px 12px;padding:12px;border-bottom:1px solid var(--line);align-items:center}
  #prognose .settable td[data-l]::before{content:attr(data-l);color:var(--ink-3);font-size:var(--fs-sm)}
  #prognose .settable td[data-l] select{min-width:0;flex:1}
  #prognose .settable td[data-l="fließt in"]{grid-column:1/-1;white-space:normal}
  #prognose .settable td:last-child:not([colspan]){justify-content:flex-end}
  #prognose .settable td.r input{width:56px}
  #prognose .settable td{display:flex;align-items:center;gap:8px;padding:0;border:0}
  #prognose .settable td:first-child{grid-column:1/-1}
  #prognose .settable td:first-child input{width:100%}
  #prognose .settable td.c,#prognose .settable td.r{justify-content:flex-start}
  #prognose .settable td[colspan]{grid-column:1/-1}
  #prognose .settable td[colspan] select{width:100%}
}
/* Forecast-Einstellungen 2.9.19: Schritte, Welle an der Zuordnung */
.fc-step{display:flex;gap:10px;align-items:flex-start;margin-bottom:4px}
.fc-step b{display:block;font-size:var(--fs-base)}.fc-step small{color:var(--ink-3);font-size:var(--fs-sm)}
.fc-step-no{flex:none;width:24px;height:24px;border-radius:50%;background:var(--blue-soft);color:var(--blue-ink);display:grid;place-items:center;font-weight:700;font-size:var(--fs-sm)}
.fc-step-2{padding:14px 18px 6px}
.fcmap-pick{display:grid;gap:6px;min-width:0}
.fcmap-waves{display:grid;gap:4px}
.fcmap-wave{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--ink-2)}
.fcmap-wave[hidden]{display:none}
.fcmap-wave>span{min-width:110px}.fcmap-wave i{color:var(--ink-3);font-style:normal}
.fcmap-rest>summary{cursor:pointer;color:var(--ink-3);font-size:var(--fs-sm);padding:6px 0;list-style:none}
.fcmap-rest>summary::before{content:"▸ "}.fcmap-rest[open]>summary::before{content:"▾ "}
.fcmap-rest>summary::-webkit-details-marker{display:none}
.fcmap-rest[open]{display:grid;gap:8px}
.fc-dest{white-space:nowrap}
@media (max-width:640px){.fcmap-wave>span{min-width:0;flex:1}.fc-step-2{padding:12px}}
.fcmap-row{align-items:start}.fcmap-row>.fcmap-tour{min-height:44px}
/* 2.9.20: Haken-Listen in der Mitarbeiterakte bündig in Spalten */
.checks[data-tour-checks],.checks[data-help-sites]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px}
/* 2.9.20: Rechte – gesperrte Felder, Prüfvermerk, Rechte-Tabelle */
.lockbadge{display:inline-flex;align-items:center;gap:4px;font:600 var(--fs-xs)/1 var(--font);color:var(--ink-3);background:var(--sunk);padding:4px 7px;border-radius:5px;margin-left:8px;text-transform:none;letter-spacing:0;vertical-align:middle}
.fgroup input:disabled,.fgroup select:disabled,.fgroup textarea:disabled,.panel>.head select:disabled{background:var(--sunk);color:var(--ink-3);border-style:dashed;opacity:1;cursor:not-allowed}
.review-bar{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;padding:9px 14px;border-radius:8px;background:var(--sunk);font-size:var(--fs-md);margin-bottom:14px}
.review-bar.ok{background:var(--ok-soft)}.review-bar.ok b{color:var(--ok)}
.review-bar small{margin-left:auto;font-size:var(--fs-sm)}
@media (max-width:760px){.review-bar small{margin-left:0;flex-basis:100%}}
.rt{border-collapse:separate;border-spacing:0;width:100%}
.rt{table-layout:auto}
.rt th,.rt td{padding:8px 3px;border-bottom:1px solid var(--line);text-align:center;font-size:var(--fs-sm)}
.rt th:first-child,.rt td:first-child{text-align:left;padding-left:18px}
.rt thead tr.g th{font:700 var(--fs-xs)/1 var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3);border-bottom:0;padding-top:12px}
.rt thead tr.g th.grp,.rt .gl{border-left:1px solid var(--line)}
.rt thead tr.n th{white-space:normal;overflow-wrap:normal;font-weight:600;color:var(--ink-2);vertical-align:bottom;line-height:1.2;font-size:var(--fs-sm);min-width:52px;max-width:74px;hyphens:manual}
.rt input[type=checkbox]{width:18px;height:18px}
.rt .lockc{color:var(--ink-3)}
.rt td.st b{display:block}
.rt select{height:32px;font-size:var(--fs-sm);padding:0 6px;max-width:132px}
.rt th:last-child,.rt td:last-child{padding-right:14px}
.rnote{display:flex;gap:6px 18px;flex-wrap:wrap;padding:10px 18px;font-size:var(--fs-sm);color:var(--ink-3);border-top:1px solid var(--line)}
.rnote span{display:inline-flex;gap:6px;align-items:center}
.explain{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.explain>div{padding:14px 18px;border-left:1px solid var(--line)}
.explain>div:first-child{border-left:0}
.explain h3{margin:0 0 8px;font:700 var(--fs-xs)/1 var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.explain dl{margin:0;display:grid;gap:8px}
.explain dt{font-weight:600;font-size:var(--fs-md)}
.explain dd{margin:0;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.4}
details.panel>summary.head{cursor:pointer;list-style:none}
details.panel>summary.head::-webkit-details-marker{display:none}
details.panel:not([open])>summary.head{border-bottom:0}
.paybox{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.cell-all{color:var(--ok);font-weight:600}
.cell-part{font-weight:500}
.cell-no{color:var(--ink-3)}
.cell-sub{display:block;font-size:var(--fs-xs);color:var(--ink-3);font-weight:400}
.um tr.hit td{background:var(--blue-soft)}
.um tr.miss,.mcard.miss{opacity:.4}
.mcard.hit{background:var(--blue-soft)}
.mcards{display:none}
@media (max-width:760px){
  .rt-wrap,.um-wrap{display:none}.mcards{display:block}
  .mcard{border-top:1px solid var(--line);padding:12px 16px}
  .mcard:first-child{border-top:0}
  .mcard .top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;padding:0;flex-wrap:nowrap}
  .mcard .top select{max-width:46%}
  .mcard h4{margin:10px 0 4px;font:700 var(--fs-xs)/1 var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
  .mcard .g2{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}
  .mcard .check{font-size:var(--fs-md);min-height:36px}
  .explain{grid-template-columns:1fr}.explain>div{border-left:0;border-top:1px solid var(--line)}
  .explain>div:first-child{border-top:0}
}
.rt td .lk{display:none;color:var(--ink-3)}
.rt td:has(input:disabled) input{display:none}
.rt td:has(input:disabled) .lk{display:inline-flex}
.mcard .check:has(input:disabled){color:var(--ink-3)}
.fgroup.locked .hint:not(.warn-text){display:none}
/* 2.9.21: Rechte-Vorlagen als Karten */
.role-wrap{position:relative;display:grid}
.role-wrap .role-card{padding-right:40px;height:100%}
.role-edit{position:absolute;top:8px;right:8px}
.role-card .tpl-role{font-style:normal;font-size:var(--fs-xs);font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:var(--caps)}
.role-add{border-style:dashed;color:var(--ink-2);font:inherit;text-align:left;align-items:center}
.role-add:hover{border-color:var(--blue);color:var(--ink)}
.tpl-dialog{max-width:760px;width:calc(100% - 32px)}
.tpl-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 18px}
.tpl-groups h4{margin:0 0 6px;font:700 var(--fs-xs)/1 var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.tpl-groups .check{font-size:var(--fs-md);min-height:32px}
.tpl-groups .check:has(input:disabled){color:var(--ink-3)}
@media (max-width:760px){.tpl-groups{grid-template-columns:1fr 1fr}}
.role-card small span{display:inline}
/* 2.9.22: Neuanlage beantragen */
.request-box{border-color:var(--warn)}
.request-box.bad{border-color:var(--bad)}
.req-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:760px){.req-grid{grid-template-columns:1fr 1fr}}
/* 2.9.23: „So hängt es zusammen“ – eingeklappte Ablaufleiste */
.flow{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-bottom:16px}
.flow>summary{display:flex;align-items:center;gap:10px;padding:9px 14px;cursor:pointer;list-style:none;font-size:var(--fs-md);color:var(--ink-2)}
.flow>summary::-webkit-details-marker{display:none}
.flow>summary b{color:var(--ink);white-space:nowrap}
.flow .mini{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.flow .mini span{padding:2px 8px;border-radius:10px;background:var(--sunk);font-size:var(--fs-sm)}
.flow .mini span.on{background:var(--blue-soft);color:var(--ink);font-weight:600}
.flow .mini i{font-style:normal;color:var(--ink-3)}
.flow>summary .more{margin-left:auto;color:var(--blue-ink);font-weight:600;white-space:nowrap}
.flow>summary .more .c,.flow[open]>summary .more .o{display:none}
.flow[open]>summary .more .c{display:inline}
.flow-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line)}
.flow-step{padding:12px 14px;position:relative;border-left:1px solid var(--line)}
.flow-step:first-child{border-left:0}
.flow-step.on{background:var(--blue-soft)}
.flow-step .n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--sunk);font:700 var(--fs-xs)/1 var(--font);margin-right:6px;flex:none}
.flow-step.on .n{background:var(--blue);color:#fff}
.flow-step h4{margin:0 0 2px;font-size:var(--fs-md);display:flex;align-items:center}
.flow-step .pg{font-size:var(--fs-xs);color:var(--ink-3);margin:0 0 6px 26px}
.flow-step p{margin:0 0 6px;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.4}
.flow-step .br{display:grid;grid-template-columns:1fr auto 1fr;gap:6px;align-items:center;margin:2px 0 8px}
.flow-step .br a{border:1px solid var(--line);border-radius:8px;padding:6px 8px;display:grid;gap:2px;background:var(--surface);color:inherit;text-decoration:none}
.flow-step .br a:hover{border-color:var(--blue)}
.flow-step .br a.hit{border-color:var(--blue);background:var(--blue-soft)}
.flow-step .br b{font-size:var(--fs-sm)}.flow-step .br span{font-size:var(--fs-xs);color:var(--ink-3);line-height:1.3}
.flow-step .br em{font-style:normal;font-size:var(--fs-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:var(--caps)}
.flow-step .auto{display:flex;gap:5px;font-size:var(--fs-sm);color:var(--ok);margin-bottom:6px;line-height:1.35}
.flow-step .auto .icon{flex:none;margin-top:1px}
.flow-step a.cfg{font-size:var(--fs-sm);display:inline-flex;gap:4px;align-items:center;color:var(--ink-3)}
.flow-step a.cfg:hover{color:var(--ink)}
.flow-step .here{position:absolute;top:10px;right:12px;font:700 var(--fs-xs)/1 var(--font);letter-spacing:var(--caps);text-transform:uppercase;color:var(--blue-ink)}
@media (max-width:1100px){.flow .mini{display:none}}
@media (max-width:760px){.flow-steps{grid-template-columns:1fr}.flow-step{border-left:0;border-top:1px solid var(--line)}.flow-step:first-child{border-top:0}}
@media print{.flow{display:none}}
.need-hint-m{display:none}
@media (max-width:1340px){.need-hint-pc{display:none}.need-hint-m{display:flex}}
.m-edit{display:none}
.need-total{font-weight:500;color:var(--ink-2);font-size:.85em}
/* 2.9.27: Wellen direkt im Dienstplan wählen */
.code-menu .wv-group{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;background:var(--surface-2);border-radius:8px;padding:3px}
.code-menu .wv-group button small{display:block;font-size:10px;color:var(--ink-3);line-height:1.2}
.code-menu .wv-group button:hover,.code-menu .wv-group button:focus-visible{background:var(--surface)}
/* 2.9.27: eine Legende – „+“ = zweite Tour */
.code-menu .tile{position:relative;display:flex}
.code-menu .tile>button[data-code]{flex:1}
.code-menu .add2{display:none!important;position:absolute;top:1px;right:1px;width:20px;height:20px;padding:0!important;border-radius:6px!important;align-items:center;justify-content:center;font:700 var(--fs-md)/1 var(--cond)!important;color:var(--ink-2)!important;background:var(--surface-2);border:1px solid var(--line-strong)}
.code-menu.has-tour .add2{display:flex!important}
.code-menu .add2:hover,.code-menu .add2:focus-visible{background:var(--blue)!important;color:#fff!important;border-color:var(--blue)}
.code-menu .cm-tip{margin:-4px 2px 8px;font-size:var(--fs-sm);color:var(--ink-3)}
.code-menu .cm-tip .plus-ic{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;border-radius:4px;border:1px solid var(--line-strong);font-size:var(--fs-sm)}
.code-menu .add2{top:0;right:0;width:19px;height:19px}
@media (pointer:coarse){.code-menu .add2::after{content:"";position:absolute;inset:-6px}}

/* 2.9.32: Speichern in Listenzeilen erst nach Änderung hervorgehoben; Fenster am Handy: Knöpfe untereinander */
.btn.is-idle{opacity:.55}
.btn.is-idle:hover,.btn.is-idle:focus-visible{opacity:1}
@media (max-width:760px){
  dialog .foot{flex-direction:column-reverse;align-items:stretch}
  dialog .foot>.btn,dialog .foot>button,dialog .foot>a.btn{width:100%;justify-content:center}
}
@media (max-width:720px){
  .savebar{bottom:calc(72px + env(safe-area-inset-bottom));gap:8px;padding:10px 12px}
  .savebar>span{flex-basis:100%;font-size:var(--fs-md)}
  .savebar>.btn{flex:1;justify-content:center}
}

/* 2.9.33 Vorschau: gemeinsame Bausteine */
.caps{font-size:var(--fs-xs);letter-spacing:var(--caps);text-transform:uppercase;font-weight:600}
.taskbar-label{letter-spacing:var(--caps)}
.taskbar .task.clear{margin-left:auto}
/* Filterzeile: Suche links, Auswahl daneben, sofort wirksam */
.filterline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}
.filterline select,.filterline input[type=date]{height:38px}
.filterline .grow{flex:1}
.filterline .count{color:var(--ink-3);font-size:var(--fs-sm);margin-left:auto}
.sr-submit{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
/* Handy-Kopf: Filter & Ansicht als Fenster von unten */
.m-filter-btn{display:none}
dialog.m-sheet{margin:auto 0 0;width:100%;max-width:100%;border-radius:16px 16px 0 0;padding:0}
dialog.m-sheet .body{display:flex;flex-direction:column;gap:10px;padding:14px 16px 18px}
dialog.m-sheet .body > *{width:100%}
dialog.m-sheet .body .seg{display:flex}
dialog.m-sheet .body .seg > *{flex:1;justify-content:center;text-align:center}
@media (max-width:760px){
  .m-filter-btn{display:inline-flex}
  .top-actions{flex-wrap:wrap;gap:8px}
}
/* Handy: Tabellen als Karten */
@media (max-width:760px){
  table.m-cards thead{display:none}
  table.m-cards,table.m-cards tbody{display:block;width:100%}
  table.m-cards tr{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:12px 14px;border-bottom:1px solid var(--line)}
  table.m-cards td{display:block;padding:0;border:0;text-align:left;font-size:var(--fs-sm);color:var(--ink-2)}
  table.m-cards td:first-child{grid-column:1/-1;font-size:var(--fs-md);color:var(--ink);font-weight:600}
  table.m-cards td[data-label]:not(:first-child)::before{content:attr(data-label) " ";color:var(--ink-3)}
  table.m-cards td:empty,table.m-cards td.m-hide{display:none}
}
.tour-chip .tc-n{margin-left:6px;font-size:var(--fs-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}
dialog.m-sheet .tour-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
dialog.m-sheet .tour-chips > .muted{flex-basis:100%}
dialog.m-sheet .body details,dialog.m-sheet .body .dropdown{width:100%}
dialog.m-sheet .body details > summary.btn,dialog.m-sheet .body > .btn{width:100%;justify-content:center}
/* 2.9.33: Reiter einheitlich (Symbol mit Abstand), am Handy Wischkante, solange es rechts weitergeht */
.tabs a{display:inline-flex;align-items:center;gap:6px}
@media (max-width:760px){.tabs.has-more{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent)}}
/* 2.9.33: Kennzahl-Kacheln – anklickbare (Filter) mit Pfeil und Hover-Strich, reine Anzeigen ohne */
a.figure{position:relative}
a.figure span::after{content:"›";margin-left:5px;color:var(--ink-3);opacity:.6}
a.figure:not([aria-current="true"]):hover{box-shadow:inset 0 -3px 0 var(--line-strong)}
.dl-interval{display:flex;align-items:center;gap:5px;margin-top:4px;font-size:var(--fs-xs);color:var(--ink-3)}
.dl-interval a{color:var(--blue)}

/* 2.9.35: Mitarbeiter – weitere Filter (Feld unter der Filterzeile, am Handy von unten) und aktive Filter als Chips */
.more-filters{position:static}
.more-filters > summary{list-style:none;cursor:pointer}
.more-filters > summary::-webkit-details-marker{display:none}
.more-filters > summary .n{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--blue);color:#fff;font-size:var(--fs-xs);font-weight:700;display:inline-grid;place-items:center}
.more-filters > summary.on{border-color:var(--blue);background:var(--blue-soft)}
.more-filters[open] > summary{border-color:var(--blue)}
.list-head{position:relative}
.mf-panel{position:absolute;left:14px;right:14px;top:60px;z-index:40;background:var(--surface);border:1px solid var(--line-strong);border-radius:14px;box-shadow:0 18px 40px rgba(0,0,0,.35);overflow:hidden}
.mf-top{display:none}
.mf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}
.mf-grid fieldset{border:0;margin:0;padding:16px 20px 18px;display:flex;flex-direction:column;gap:10px;min-width:0}
.mf-grid fieldset:nth-child(even){border-left:1px solid var(--line)}
.mf-grid fieldset:nth-child(n+3){border-top:1px solid var(--line)}
.mf-grid legend{float:left;width:100%;padding:0;margin-bottom:2px;font-size:var(--fs-xs);font-weight:700;letter-spacing:var(--caps);text-transform:uppercase;color:var(--ink-3)}
.mf-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;align-items:center}
.mf-l{font-size:var(--fs-md);color:var(--ink-2)}
.mf-grid select,.mf-grid input[type=date],.mf-grid input[type=number]{width:100%;height:38px;min-width:0}
.mf-range{display:grid;grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center}
.mf-pre{color:var(--ink-3);font-size:var(--fs-sm)}
.mf-range > span{color:var(--ink-3)}
.mf-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line);background:var(--surface-2)}
.fchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex-basis:100%}
.fchip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 8px 0 12px;border-radius:999px;border:1px solid color-mix(in srgb,var(--blue) 55%,transparent);background:var(--blue-soft);color:var(--ink);font-size:var(--fs-sm);font-weight:600;text-decoration:none}
.fchip .icon{width:14px;height:14px;opacity:.7}
.fchip:hover .icon{opacity:1}
.fchip-clear{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-sm);font-weight:600;color:var(--blue-ink);margin-left:6px;text-decoration:none}.fchip-clear .icon{width:14px;height:14px}
@media (max-width:760px){
  .more-filters[open]::before{content:"";position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:90}
  .mf-panel{position:fixed;left:0;right:0;top:auto;bottom:0;z-index:91;border-radius:16px 16px 0 0;max-height:86vh;display:flex;flex-direction:column}
  .mf-top{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}
  .mf-top h2{font-size:var(--fs-lg);margin:0}
  .mf-grid{grid-template-columns:1fr;overflow:auto}
  .mf-grid fieldset:nth-child(even){border-left:0}
  .mf-grid fieldset + fieldset{border-top:1px solid var(--line)}
  .mf-row{grid-template-columns:1fr;gap:6px}
  .mf-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
  .mf-foot > *{flex:1;justify-content:center}
  .fchips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -2px;padding:0 2px}
  .fchip{flex:none}
  #drv-filter{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;width:100%}
  #drv-filter select{width:100%;min-width:0}
  #drv-filter .more-filters{grid-column:1 / -1}
  #drv-filter .more-filters > summary{width:100%;justify-content:center}
}

/* 2.9.35: Schieberegler (Status Aktiv/Inaktiv) – der Regler ist zugleich die Lampe */
.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;user-select:none;min-height:44px}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch .track{position:relative;width:52px;height:30px;border-radius:999px;background:var(--ink-3);transition:background .18s;flex:none}
.switch .track i{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.35);transition:transform .18s}
.switch input:checked + .track{background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 18%,transparent)}
.switch input:checked + .track i{transform:translateX(22px)}
.switch input:focus-visible + .track{outline:2px solid var(--blue);outline-offset:2px}
.switch b{min-width:56px;font-weight:600}
.switch input:not(:checked) ~ b{color:var(--ink-3)}
.switch input.changed + .track{outline:2px solid var(--warn);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.switch .track,.switch .track i{transition:none}}
.fchip-clear{white-space:nowrap;flex:none}

/* 2.9.35: Eingabe mit Knopf daneben (Personalnummer vorschlagen) */
.input-btn{display:flex;gap:8px;align-items:stretch}
.input-btn > input{flex:1;min-width:0}
.input-btn > .btn{flex:none;white-space:nowrap}
.mf-base{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--line)}
.mf-base > .mf-row{padding:14px 20px}
.mf-base > .mf-row + .mf-row{border-left:1px solid var(--line)}
@media (max-width:760px){.mf-base{grid-template-columns:1fr}.mf-base > .mf-row + .mf-row{border-left:0;border-top:1px solid var(--line)}
  #drv-filter{grid-template-columns:1fr}}
@media (max-width:760px){.mf-panel{overflow:auto}.mf-grid{overflow:visible}.mf-top{position:sticky;top:0;background:var(--surface);z-index:1}.mf-foot{position:sticky;bottom:0}}
#drv-filter{margin-right:auto}
.mf-panel .mf-row > .mf-l{color:var(--ink-2);font-size:var(--fs-md);font-weight:500;margin:0}
@media (max-width:760px){
  .list-head:has(#drv-filter){display:flex;flex-direction:row;flex-wrap:wrap;align-items:center}
  .list-head:has(#drv-filter) > .search{flex:1 1 0;min-width:0;width:auto}
  .list-head #drv-filter{display:block;width:auto;margin:0;flex:none}
  .list-head #drv-filter .more-filters > summary{width:auto;height:46px;padding:0 14px}
  .list-head:has(#drv-filter) > p,.list-head:has(#drv-filter) > .fchips{flex-basis:100%}
  .mf-base > .mf-row + .mf-row{border-top:0;padding-top:0}
}
.mf-grid .mf-range input[type=date]{padding-left:8px;padding-right:6px}
@media (max-width:1440px) and (min-width:761px){.mf-row{grid-template-columns:120px minmax(0,1fr);gap:10px}.mf-range{gap:6px}}
/* 2.9.35: Filterfeld kompakt – PC und Handy */
.mf-grid fieldset{padding:12px 18px 14px;gap:7px}
.mf-grid legend{margin-bottom:0}
.mf-base > .mf-row{padding:10px 18px}
.mf-row{grid-template-columns:120px minmax(0,1fr);gap:10px}
.mf-panel .mf-row > .mf-l{font-size:var(--fs-sm)}
.mf-grid select,.mf-grid input[type=date],.mf-grid input[type=number],.mf-base select{height:34px;font-size:var(--fs-sm);padding-top:0;padding-bottom:0}
.mf-range{gap:6px}
.mf-foot{padding:9px 14px}
.mf-foot .btn{height:34px}
@media (max-width:1440px) and (min-width:761px){.mf-row{grid-template-columns:108px minmax(0,1fr)}}
@media (max-width:760px){
  .mf-panel{max-height:80vh}
  .mf-top{padding:8px 14px}
  .mf-grid fieldset,.mf-base{padding:10px 14px 12px}
  .mf-base > .mf-row{padding:0}
  .mf-base{display:flex;flex-direction:column;gap:7px}
  .mf-row{grid-template-columns:104px minmax(0,1fr);gap:8px}
  .mf-row.mf-wide{grid-template-columns:1fr;gap:4px}
  .mf-grid select,.mf-grid input[type=date],.mf-grid input[type=number],.mf-base select{height:36px}
  .mf-foot{padding:8px 14px calc(8px + env(safe-area-inset-bottom))}
  .mf-foot .btn{height:40px}
  .list-head #drv-filter .more-filters > summary{height:40px}
}
.mf-panel{right:auto;width:min(880px,calc(100% - 28px))}
@media (max-width:760px){
  .mf-panel{width:auto;left:0;right:0}
  .mf-grid fieldset.mf-acc{padding:0}
  .mf-grid fieldset.mf-acc > legend{display:flex;align-items:center;gap:8px;width:100%;padding:13px 14px;margin:0;cursor:pointer;font-size:var(--fs-sm);color:var(--ink-2)}
  .mf-grid fieldset.mf-acc > legend::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);transform:rotate(45deg);transition:transform .15s}
  .mf-grid fieldset.mf-acc.open > legend::after{transform:rotate(-135deg)}
  .mf-grid fieldset.mf-acc > legend .n{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--blue);color:#fff;font-size:var(--fs-xs);display:inline-grid;place-items:center;letter-spacing:0}
  .mf-grid fieldset.mf-acc > .mf-row{display:none}
  .mf-grid fieldset.mf-acc.open > .mf-row{display:grid}
  .mf-grid fieldset.mf-acc.open{padding-bottom:12px}
  .mf-grid fieldset.mf-acc.open > .mf-row{margin:0 14px}
}

/* 2.9.36: Hinweis „Neue AGB“ für Administratoren */
.billing-bar .bar-link{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--blue-ink);cursor:pointer;white-space:nowrap}
.billing-bar .bar-link:hover{text-decoration:underline}
#terms-dialog{max-width:520px}
.terms-links{display:flex;flex-wrap:wrap;gap:8px}
.terms-check{align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface-2)}
.terms-check input{margin-top:3px;flex:none}
@media (max-width:720px){.billing-bar.terms-bar{align-items:flex-start}.billing-bar.terms-bar .icon{margin-top:3px}.billing-bar.terms-bar .bar-link{flex-basis:100%;text-align:left;padding-left:28px}}
/* Abo & Rechnungen (2.9.39) */
.abo-box{max-width:640px}
.abo-box .abo-line{margin:0 0 6px;font-size:var(--fs-lg)}
.abo-box .abo-sum{margin:0 0 10px;font-size:var(--fs-md)}
.abo-box .abo-sum b{font-size:var(--fs-xl)}
/* 2.9.39: Angemeldet bleiben, Passwortregeln */
.auth-row.between{justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.auth-check{display:inline-flex;align-items:center;gap:8px;color:#AEBBC9;cursor:pointer}
.auth-check input{width:17px;height:17px;accent-color:#5B7BEA;margin:0}
.pw-rules{list-style:none;margin:2px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:var(--fs-sm);color:#8696A7}
.pw-rules li{display:flex;align-items:center;gap:6px}
.pw-rules li::before{content:"";width:14px;height:14px;border-radius:50%;border:1.5px solid #4A5D72;flex:0 0 14px;box-sizing:border-box}
.pw-rules li.ok{color:#7FD3A4}
.pw-rules li.ok::before{border-color:#3FB57A;background:#3FB57A url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.2 2.2 4.8-4.8' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/10px no-repeat}
.auth-btn:disabled{opacity:.5;cursor:not-allowed}
@media (max-width:420px){.pw-rules{grid-template-columns:1fr}}
/* 2.9.39: Los geht's – jeder Schritt aufklappbar, freie Reihenfolge */
details.onb-st{display:block;padding:0}
details.onb-st>summary{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;cursor:pointer;list-style:none}
details.onb-st>summary::-webkit-details-marker{display:none}
details.onb-st>summary:hover{background:var(--surface-2)}
details.onb-st .onb-act .icon{color:var(--ink-3);transition:transform .15s}
details.onb-st[open] .onb-act .icon{transform:rotate(180deg)}
details.onb-st.cur>summary .onb-n{background:var(--blue);color:#fff}
details.onb-st .onb-more{padding:0 14px 12px 48px}
.onb-skip{margin-left:auto}
.onb-skip .linkish{background:none;border:0;color:var(--ink-3);font-size:var(--fs-sm);cursor:pointer;text-decoration:underline;padding:4px}
