/* Schriften (lokal, keine externen Anbieter) */
@font-face{font-family:"Barlow Semi Condensed";font-weight:500;font-display:swap;src:url(lib/fonts/barlow-semi-condensed-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Barlow Semi Condensed";font-weight:600;font-display:swap;src:url(lib/fonts/barlow-semi-condensed-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Barlow Semi Condensed";font-weight:700;font-display:swap;src:url(lib/fonts/barlow-semi-condensed-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Source Sans 3";font-weight:400;font-display:swap;src:url(lib/fonts/source-sans-3-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Source Sans 3";font-weight:600;font-display:swap;src:url(lib/fonts/source-sans-3-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Source Sans 3";font-weight:700;font-display:swap;src:url(lib/fonts/source-sans-3-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono";font-weight:500;font-display:swap;src:url(lib/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono";font-weight:600;font-display:swap;src:url(lib/fonts/jetbrains-mono-latin-600-normal.woff2) format("woff2")}

/* Layout: Arbeitsspalte links (Fahrt erfassen, Liste), Karte rechts; schmal: Karte einklappbar */
:root{
  --bg:#eef1f5; --panel:#ffffff; --fg:#16202c; --muted:#5a6676; --line:#d5dce5; --field:#f7f9fb;
  --accent:#1d4f91; --accent-soft:#e3ecf8; --sign:#1d4f91; --sign-fg:#ffffff; --danger:#b3261e; --ok:#1d7a45; --warn-bg:#fff4d6; --warn-fg:#6b4d00;
  --f-display:"Barlow Semi Condensed","Arial Narrow",Arial,sans-serif;
  --f-body:"Source Sans 3","Segoe UI",Arial,sans-serif;
  --f-mono:"JetBrains Mono",Consolas,"Courier New",monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0f141b; --panel:#161d26; --fg:#e5eaf1; --muted:#97a3b3; --line:#2a3542; --field:#1c2530;
  --accent:#6aa0e6; --accent-soft:#1d2d42; --sign:#1d4f91; --sign-fg:#ffffff; --danger:#ff8a80; --ok:#6fd49a; --warn-bg:#3a3010; --warn-fg:#ffe08a; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0f141b; --panel:#161d26; --fg:#e5eaf1; --muted:#97a3b3; --line:#2a3542; --field:#1c2530;
  --accent:#6aa0e6; --accent-soft:#1d2d42; --sign:#1d4f91; --sign-fg:#ffffff; --danger:#ff8a80; --ok:#6fd49a; --warn-bg:#3a3010; --warn-fg:#ffe08a; color-scheme:dark}

*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--fg);font:15px/1.45 var(--f-body)}
.app{display:grid;grid-template-columns:minmax(360px,500px) 1fr;height:100%}
.side{overflow-y:auto;padding-block:20px 40px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:16px;display:flex;flex-direction:column;gap:18px;min-width:0}
.mapwrap{position:relative;min-width:0}
#map{height:100%;min-height:300px}
.maptoggle{display:none}
.mapmsg{position:absolute;z-index:500;left:60px;right:16px;top:16px;max-width:420px;background:var(--panel);color:var(--fg);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:14px;box-shadow:0 4px 16px rgba(0,0,0,.15)}
.mapmsg p{margin:6px 0 0}
header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
h1{font:700 30px/1 var(--f-display);letter-spacing:.01em;margin:0}
h2{font:600 15px/1.2 var(--f-display);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0}
.sub{color:var(--muted);font-size:13px}
.statusbar{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center}
.sync{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
.sync::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--muted)}
.sync.ok::before{background:var(--ok)} .sync.warn::before{background:#d29b00} .sync.err::before{background:var(--danger)}
.who{font-size:13px;color:var(--muted)} .who b{color:var(--fg)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:14px}
.row{display:flex;gap:8px;align-items:center}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:12px}
@media (max-width:420px){.grid3{grid-template-columns:1fr 1fr}.grid3 .wide{grid-column:1/-1}}
label,.lbl{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.daytag{text-transform:none;letter-spacing:0;font-weight:600;color:var(--fg);margin-left:4px}
.daytag.warn{color:var(--warn-fg);background:var(--warn-bg);padding:0 6px;border-radius:4px}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
input[type=text],input[type=date],input[type=email],input[type=password],select{font:inherit;font-size:16px;color:var(--fg);background:var(--field);border:1px solid var(--line);border-radius:7px;padding:8px 10px;width:100%;min-width:0}
select{width:auto}
input[aria-invalid="true"]{border-color:var(--danger)}
input:focus-visible,select:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button{font:600 14px var(--f-body);border-radius:7px;border:1px solid var(--line);background:var(--panel);color:var(--fg);padding:8px 12px;cursor:pointer;white-space:nowrap;min-height:36px}
button:hover{border-color:var(--accent)}
button.primary{background:var(--accent);border-color:var(--accent);color:var(--panel)}
button.big{padding:10px 18px;font-size:15px}
button.danger{color:var(--danger)}
button.small{padding:4px 10px;font-size:13px;min-height:30px}
button.linkbtn{border:none;background:none;color:var(--accent);padding:4px 0;text-decoration:underline;min-height:0}
button[disabled]{opacity:.5;cursor:default}
@media (pointer:coarse){button,button.small{min-height:40px}.chip{min-height:36px}}
.endpoint .tag{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--panel);font:700 12px var(--f-display);margin-right:6px}
.results{list-style:none;margin:4px 0 0;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--panel);display:flex;flex-direction:column;max-height:240px;overflow:auto}
.results li button{all:unset;display:block;width:100%;box-sizing:border-box;padding:8px;border-radius:6px;cursor:pointer;font-size:14px}
.results li button:hover,.results li button:focus-visible{background:var(--accent-soft)}
.results .hint{padding:7px 8px;color:var(--muted);font-size:13px}
.chosen{font-size:13px;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-height:22px}
.chosen b{color:var(--fg);font-weight:600}
.chips{display:flex;gap:6px;flex-wrap:wrap;padding-bottom:2px}
.chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip.more{background:none;border:1px dashed var(--line);color:var(--muted)}
.chip{font:500 13px var(--f-body);padding:3px 10px;border-radius:999px;background:var(--accent-soft);border:1px solid transparent;color:var(--fg);min-height:30px}
.swap{align-self:center;margin:-6px 0}
.check{display:flex;gap:8px;align-items:center;font-size:14px;color:var(--fg);text-transform:none;letter-spacing:0;font-weight:400}
.check input{width:18px;height:18px}
fieldset{border:1px dashed var(--line);border-radius:8px;padding:10px 12px 12px;margin:0;display:flex;flex-direction:column;gap:10px;min-width:0}
legend{padding:0 4px;font:600 12px var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.sign{background:var(--sign);color:var(--sign-fg);border-radius:8px;padding:10px 14px;display:grid;grid-template-columns:1fr auto;gap:2px 16px;border:3px solid var(--sign);box-shadow:inset 0 0 0 2px var(--sign-fg)}
.sign .k{font:500 15px/1.3 var(--f-display);letter-spacing:.02em;opacity:.9}
.sign .v{font:600 16px/1.3 var(--f-mono);text-align:right;font-variant-numeric:tabular-nums}
.sign .total .k,.sign .total .v{font-size:20px;opacity:1}
.sign > div{display:contents}
.formactions{display:flex;flex-direction:column;gap:6px}
.status{font-size:13px;color:var(--muted);min-height:18px}
.status.err{color:var(--danger)}
.status.okc{color:var(--ok)}
.msg{font-size:13px;padding:8px 10px;border-radius:7px;background:var(--warn-bg);color:var(--warn-fg)}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.actions .spacer,.rtools .spacer{flex:1}
.tablewrap{overflow-x:auto}
table.list{border-collapse:collapse;width:100%;font-size:14px}
.list th{font:600 12px var(--f-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:left;padding:6px;border-bottom:1px solid var(--line)}
.list td{padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}
.list td.num,.list th.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.list tbody tr{cursor:pointer}
.list tbody tr:hover{background:var(--accent-soft)}
.list tbody tr.active{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}
.list td .route{color:var(--muted);font-size:13px}
.list tfoot td{font-weight:700;border-bottom:none}
.list tr.daysum td{font-size:12px;color:var(--muted);padding-top:2px;padding-bottom:6px;cursor:default}
.list tbody tr.daysum:hover{background:none}
.list tfoot .sub{font-weight:400}
.empty{color:var(--muted);font-size:14px;padding:6px 0}
.places,.users{display:flex;flex-direction:column;gap:6px}
.place,.user{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:14px;border-bottom:1px solid var(--line);padding-bottom:6px;flex-wrap:wrap}
.place > .pinfo,.user > .pinfo{min-width:0;flex:1 1 180px}
.pinfo small{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.user .status{flex-basis:100%;min-height:0}
.pill{font:600 11px var(--f-body);text-transform:uppercase;letter-spacing:.05em;padding:1px 7px;border-radius:999px;background:var(--accent-soft);color:var(--fg);margin-left:6px}
.pill.off{background:var(--warn-bg);color:var(--warn-fg)}
.editbox{display:flex;flex-direction:column;gap:8px;flex-basis:100%}
details summary{cursor:pointer;font:600 15px var(--f-display);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
details[open] summary{margin-bottom:12px}
.stack{display:flex;flex-direction:column;gap:14px}
.bk{display:grid;grid-template-columns:1fr auto auto;gap:6px 8px;align-items:center;font-size:14px}
.logo-prev{max-height:40px;max-width:180px;background:#fff;border:1px solid var(--line);border-radius:4px;padding:2px}
.pin{display:grid;place-items:center;border-radius:50%;background:#1d4f91;color:#fff;font:700 13px "Barlow Semi Condensed",Arial,sans-serif;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.pin.via{background:#fff;border:3px solid #1d4f91}
.leaflet-routing-container{display:none}

/* Handy: Karte einklappbar, Speichern-Leiste unten */
@media (max-width:860px){
  .app{display:flex;flex-direction:column;height:auto}
  .mapwrap{order:-1;display:none}
  body.showmap .mapwrap{display:block}
  #map{height:52vh;min-height:260px}
  .maptoggle{display:inline-block}
  .side{overflow:visible;padding-right:max(16px,env(safe-area-inset-right,0px))}
  .formactions{position:sticky;bottom:0;z-index:5;background:var(--panel);margin:0 -16px -16px;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);border-radius:0 0 10px 10px}
}

/* Anmeldung */
.overlay{position:fixed;inset:0;z-index:2000;background:var(--bg);display:grid;place-items:center;padding:16px;overflow:auto}
.overlay .card{width:min(420px,100%)}
.overlay h1{margin-bottom:4px}

/* Berichte */
.reportview{position:fixed;inset:0;z-index:1500;background:var(--bg);display:flex;flex-direction:column}
.rtools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding-block:12px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));border-bottom:1px solid var(--line);background:var(--panel)}
.rtools .status{flex-basis:100%}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{border:none;border-radius:0;background:var(--panel)}
.seg button[aria-selected="true"]{background:var(--accent);color:var(--panel)}
.rscroll{flex:1;overflow:auto;padding:20px 16px;display:flex;flex-direction:column;gap:20px;align-items:center}
/* Vorschau Papier: feste Papierfarben, unabhängig vom Farbschema */
.sheet{background:#fff;color:#111;width:210mm;max-width:none;flex:none;min-height:297mm;padding:14mm 13mm 12mm;box-shadow:0 2px 14px rgba(0,0,0,.18);font:9pt/1.25 Arial,Helvetica,sans-serif}
.sheet .head{display:grid;grid-template-columns:auto 1fr auto;align-items:end;gap:10mm;margin-bottom:5mm}
.sheet .title{font-size:13pt;font-weight:700}
.sheet .month{font-size:11pt}
.sheet .logo{text-align:right}
.sheet .logo img{max-height:15mm;max-width:55mm}
.sheet .logo .co{font-size:10pt;font-weight:700}
.sheet .meta{display:flex;justify-content:space-between;margin-bottom:3mm}
.sheet table{border-collapse:collapse;width:100%;table-layout:fixed}
.sheet th{font-weight:400;font-size:7.5pt;text-align:center;vertical-align:bottom;padding:0 1.5mm 1.5mm;border-bottom:1.2pt solid #111}
.sheet td{border:0.5pt solid #666;padding:0 1.5mm;height:5.5mm;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet td.n{text-align:right;font-variant-numeric:tabular-nums}
.sheet td.d{text-align:right}
.sheet td.b{white-space:normal;line-height:1.1;font-size:8pt}
.sheet td.b span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sheet tr.we td{background:#f1f1f1}
.sheet tfoot td{border:none;height:5mm}
.sheet tfoot tr.lab td{font-weight:700;font-size:7.5pt;border-top:1.2pt solid #111;overflow:visible}
.sheet tfoot tr.sum td{border-bottom:1.2pt solid #111}
.sheet tfoot tr.sum td.tot{font-weight:700}
.sheet .sigs{margin-top:9mm;display:grid;grid-template-columns:38mm 70mm;row-gap:11mm;align-items:end}
.sheet .sigline{border-bottom:0.6pt solid #111;height:8mm;position:relative}
.sheet .sigline span{position:absolute;top:100%;left:0;font-size:6.5pt;padding-top:1mm}
.sheet .foot{margin-top:10mm;font-size:7pt;color:#555}
.sheet2{min-height:0}
.sheet h3{font-size:12pt;margin:0 0 3mm}
.sheet table.orte td{white-space:normal;height:auto;padding:1mm 1.5mm}
/* Jahresbericht-Vorschau */
.sheet.year h2{color:#222;text-transform:none;letter-spacing:0;font:400 14pt Arial,sans-serif;margin:30mm 0 4mm}
.sheet.year .big{font:700 34pt/1.05 Arial,sans-serif;margin:0}
.sheet.year .period{font:700 17pt Arial,sans-serif;color:#666;margin:3mm 0 14mm}
.sheet.year table td,.sheet.year table th{border:none;border-bottom:0.5pt solid #ddd;height:7mm;font-size:8.5pt}
.sheet.year table th{font-weight:700;text-align:right;border-bottom:1pt solid #bbb}
.sheet.year table td{text-align:right}
.sheet.year table th:first-child,.sheet.year table td:first-child{text-align:left}
.sheet.year tr.total td{font-weight:700;font-size:10pt;border-bottom:none}
.sheet.year .person{margin-top:16mm;display:grid;grid-template-columns:35mm 1fr;gap:2mm 6mm;font-size:8.5pt;max-width:100mm;border-top:0.5pt solid #ddd;padding-top:3mm}
@media (max-width:860px){.rscroll{align-items:flex-start}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Reisekosten */
.rkwrap{display:flex;flex-direction:column;gap:6px}
.rkbox{border-left:3px solid var(--accent);padding:4px 0 4px 10px;display:flex;flex-direction:column;gap:6px}
.rktag{display:inline-block;font:700 10px/1 var(--f-display);letter-spacing:.06em;background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:3px 4px;vertical-align:1px}
.jform{border-top:1px solid var(--line);padding-top:12px;margin-top:4px}
.jform h3{margin:0;font:600 15px/1.2 var(--f-display)}
.jdays{display:flex;flex-direction:column;gap:10px}
.jday{border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;background:var(--field)}
.jhead{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:14px}
.jhead .pd{color:var(--muted);font-size:13px}
.meals{display:flex;gap:6px 16px;flex-wrap:wrap;align-items:center}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media (max-width:560px){.grid4{grid-template-columns:1fr 1fr}}
.jsum{font-size:13px}
/* Reisekostenabrechnung (Querformat) */
.sheet.land{width:297mm;min-height:210mm;padding:10mm 9mm}
.sheet.land .rkhead{display:grid;grid-template-columns:1fr auto;gap:2mm 10mm;margin-bottom:4mm;align-items:end}
.sheet.land .rkhead .t{font-size:13pt;font-weight:700;align-self:start}
.sheet.land .rklogo{text-align:right}
.sheet.land .rklogo img{max-height:14mm;max-width:55mm}
.sheet.land .rkym{text-align:right}
.sheet.land .rknote{color:#444;font-size:6.5pt}
.sheet.land table.rk th{font-size:6.3pt;padding:0 .8mm 1mm;line-height:1.1;white-space:normal}
.sheet.land table.rk td{font-size:7pt;padding:0 .8mm;height:5mm}
.sheet.land table.rk td.c{text-align:center}
.sheet.land table.rk tfoot td{font-weight:700;border-top:1.2pt solid #111;font-size:7pt}
.sheet.land .rktot{display:flex;justify-content:flex-end;gap:6mm;margin-top:4mm;font-size:11pt;font-weight:700}
.sheet.land .sigs{grid-template-columns:45mm 80mm}
.jday .grid4{grid-template-columns:1fr 1fr}
.errc{color:var(--danger)!important}
