/* Zeiterfassung – handytauglich, große Tasten für die Baustelle */
:root{
  --bg:#f3f4f1; --card:#fff; --ink:#1d242c; --muted:#6b7480; --line:#e1e3de;
  --dark:#1f2a36; --accent:#f2b705; --accent-ink:#1d242c;
  --ok:#2e7d4f; --ok-bg:#e6f4ea; --err:#b3261e; --err-bg:#fbe9e7; --warn-bg:#fff6d6;
  --r:12px;
}
@media (prefers-color-scheme: dark){html:not([data-theme=hell]){ --bg:#14191f; --card:#1d242c; --ink:#e8eaec; --muted:#97a0aa; --line:#2c353f;
         --ok-bg:#16301f; --err-bg:#3a1a17; --warn-bg:#3a3214; --ok:#6fcf97; --err:#ff8a80; }}
html[data-theme=dunkel]{ --bg:#14191f; --card:#1d242c; --ink:#e8eaec; --muted:#97a0aa; --line:#2c353f;
         --ok-bg:#16301f; --err-bg:#3a1a17; --warn-bg:#3a3214; --ok:#6fcf97; --err:#ff8a80; }
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding-bottom:76px}
a{color:inherit}
h1{font-size:1.45rem;margin:.2rem 0 1rem}
h2{font-size:1.1rem;margin:0 0 .75rem}
.muted{color:var(--muted)}
.small{font-size:.85rem}
code{background:var(--line);padding:1px 5px;border-radius:4px}

/* Kopf */
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:1rem;background:var(--dark);color:#fff;padding:.7rem 1rem;padding-top:max(.7rem,env(safe-area-inset-top))}
.brand{font-weight:700;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top nav.desk{display:none;gap:.25rem;margin-left:1rem}
.top nav a{text-decoration:none;padding:.4rem .75rem;border-radius:8px;color:#cfd6dd}
.top nav a.on,.top nav a:hover{background:rgba(255,255,255,.1);color:#fff}
.who{margin-left:auto;display:flex;gap:.9rem;align-items:center;font-size:.9rem;color:#cfd6dd}
.who a{text-decoration:none}
.desk{display:none}
@media(min-width:800px){ .desk,.top nav.desk{display:flex} .mob-only{display:none} body{padding-bottom:0} .tabbar{display:none!important} }

/* Tabbar unten (Handy) */
.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:5;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tabbar a{flex:1;min-width:0;text-align:center;text-decoration:none;font-size:.72rem;color:var(--muted);padding:.45rem 0 .5rem}
.tabbar a b{display:block;font-size:1.3rem;line-height:1.3}
.tabbar a.on{color:var(--ink);font-weight:600}

.wrap{max-width:1000px;margin:0 auto;padding:1rem}

/* Karten & Raster */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem;margin-bottom:1rem}
.grid{display:grid;gap:1rem}
@media(min-width:700px){ .grid.c2{grid-template-columns:1fr 1fr} .grid.c3{grid-template-columns:repeat(3,1fr)} }
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:1rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.8rem 1rem}
.stat b{display:block;font-size:1.6rem;font-variant-numeric:tabular-nums}
.stat span{color:var(--muted);font-size:.85rem}
.stat.hi{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.stat.hi span{color:inherit;opacity:.75}

.head-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;justify-content:space-between;margin-bottom:1rem}
.head-row h1{margin:0}
.actions{display:flex;flex-wrap:wrap;gap:.5rem}

/* Formulare */
label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.75rem}
input,select,textarea{display:block;width:100%;margin-top:.25rem;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:.7rem .75rem;min-height:48px}
textarea{min-height:80px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.row{display:grid;gap:0 .75rem;grid-template-columns:1fr 1fr}
.row.r3{grid-template-columns:1fr 1fr 1fr}
.row.r4{grid-template-columns:repeat(2,1fr)}
@media(min-width:600px){ .row.r4{grid-template-columns:2fr 1fr 1fr 1fr} }
label.check{display:flex;align-items:center;gap:.5rem;color:var(--ink);font-size:1rem}
label.check input{width:auto;min-height:0;margin:0}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-height:48px;padding:.6rem 1.1rem;border:0;border-radius:10px;background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}
.btn.sec{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.btn.dark{background:var(--dark);color:#fff}
.btn.red{background:var(--err);color:#fff}
.btn.sm{min-height:36px;padding:.3rem .7rem;font-size:.9rem}
.btn.big{width:100%;min-height:64px;font-size:1.2rem}
.btn.full{width:100%}
form.inline{display:inline}
.link-btn{background:none;border:0;color:var(--err);font:inherit;cursor:pointer;padding:.25rem;text-decoration:underline}

/* Live-Anzeige der berechneten Zeit */
.dauer{font-size:1.4rem;font-weight:700;font-variant-numeric:tabular-nums;background:var(--warn-bg);border-radius:10px;padding:.6rem .9rem;margin-bottom:.75rem}
.dauer small{font-weight:400;color:var(--muted);font-size:.85rem}

/* Stempeluhr */
.uhr{text-align:center}
.uhr .lauf{font-size:2.6rem;font-weight:700;font-variant-numeric:tabular-nums;margin:.25rem 0}
.uhr.an{background:var(--dark);color:#fff;border-color:var(--dark)}
.uhr.an .muted{color:#cfd6dd}

/* Tabellen / Listen */
.tbl{width:100%;border-collapse:collapse}
.tbl th,.tbl td{text-align:left;padding:.55rem .4rem;border-bottom:1px solid var(--line);vertical-align:top}
.tbl th{font-size:.8rem;color:var(--muted);font-weight:600}
.tbl .r{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.tbl tfoot td{font-weight:700;border-bottom:0}
.scroll{overflow-x:auto}

.list{list-style:none;margin:0;padding:0}
.list li{border-bottom:1px solid var(--line)}
.list li:last-child{border-bottom:0}
.list a.item{display:flex;align-items:center;gap:.75rem;padding:.8rem .2rem;text-decoration:none}
.list .item .grow{flex:1;min-width:0}
.list .item .t{font-weight:600}
.list .item .s{color:var(--muted);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .item .n{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}

.tag{display:inline-block;font-size:.75rem;padding:.1rem .5rem;border-radius:99px;background:var(--line);color:var(--ink)}
.tag.offen{background:var(--warn-bg)}
.tag.erledigt{background:var(--ok-bg);color:var(--ok)}
.tag.zu{background:var(--ok-bg);color:var(--ok)}

.badge{display:inline-block;min-width:1.3em;padding:0 .35em;border-radius:99px;background:var(--accent);color:var(--accent-ink);font-size:.75rem;font-weight:700;text-align:center;margin-left:.2rem}
.tag.wartet{background:var(--warn-bg)}
.tag.gesperrt{background:var(--err-bg);color:var(--err)}
.tag.aktiv{background:var(--ok-bg);color:var(--ok)}
.tag.abw{background:#e3ecfa;color:#1d4f91}
@media (prefers-color-scheme: dark){html:not([data-theme=hell]) .tag.abw{background:#1b2c44;color:#9cc3ff}}
html[data-theme=dunkel] .tag.abw{background:#1b2c44;color:#9cc3ff}
tr.we td{color:var(--muted)}
.nur-abw{display:none}
.alert{padding:.75rem 1rem;border-radius:10px;margin-bottom:1rem}
.alert.ok{background:var(--ok-bg);color:var(--ok)}
.alert.err{background:var(--err-bg);color:var(--err)}
.alert.warn{background:var(--warn-bg)}

.search{margin-bottom:1rem}
.weeknav{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:1rem}
.weeknav .mid{text-align:center;font-weight:700}
.weeknav .mid small{display:block;font-weight:400;color:var(--muted)}

.day{margin-bottom:.25rem}
.day-h{display:flex;justify-content:space-between;font-weight:700;padding:.6rem 0 .3rem;border-bottom:2px solid var(--line)}
.empty{color:var(--muted);text-align:center;padding:1.5rem 0}

/* Login */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem}
.login-box{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1.5rem}
.login-box .btn{width:100%}

/* V5: Woche fertig / Versand / Profil */
.check{display:flex;gap:.6rem;align-items:flex-start;color:var(--ink);font-size:.95rem;margin-bottom:.75rem;cursor:pointer}
.check input{width:1.25rem;height:1.25rem;margin:.1rem 0 0;flex:none;accent-color:var(--accent)}
.check small{display:block;color:var(--muted);font-size:.8rem}
.zettel{display:grid;gap:1rem;margin-bottom:1rem}
@media(min-width:800px){.zettel{grid-template-columns:1fr 1fr}}
.zettel .card{margin:0;display:flex;flex-direction:column}
.zettel iframe{display:none;width:100%;height:520px;border:1px solid var(--line);border-radius:8px;background:#fff;margin-bottom:.75rem}
@media(min-width:800px){.zettel iframe{display:block}}
.zettel .vorschau{font-size:.85rem;margin-bottom:.75rem}
@media(min-width:800px){.zettel .vorschau{display:none}}
.versand-log li{font-size:.85rem;padding:.25rem 0;border-bottom:1px solid var(--line);list-style:none}
.versand-log{padding:0;margin:0}
.versand-log .err{color:var(--err)}
select.viertel{font-size:1.35rem;font-weight:700;text-align:center;text-align-last:center}

/* V6: Aufträge, Legenden, Dateien */
.tag.frei{background:var(--ok-bg);color:var(--ok)}
.tbl.eingabe td,.tbl.eingabe th{padding:.2rem .25rem}
.tbl.eingabe input,.tbl.eingabe select{margin:0;padding:.45rem .5rem;font-size:.95rem;min-width:4.5rem}
.tbl.eingabe input[type=date]{min-width:9rem}
.tbl.legende th input{font-weight:700;background:transparent;border-color:transparent}
.galerie{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}
.gal{border:1px solid var(--line);border-radius:10px;padding:.4rem;display:flex;flex-direction:column;gap:.2rem}
.vorschau-bild{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;background:var(--bg);border-radius:6px;overflow:hidden;text-decoration:none}
.vorschau-bild img{width:100%;height:100%;object-fit:cover}
.pdf-icon{font-size:2.4rem;text-align:center;line-height:1}
.pdf-icon small{display:block;font-size:.75rem;color:var(--muted)}
.gal-akt{display:flex;justify-content:space-between;align-items:center;margin-top:auto}
.tabbar a.nur-desk{display:none}

/* V8: Konten auf der Startseite */
a.stat.konto{text-decoration:none;color:inherit}
.stat.konto.plus b{color:var(--ok)}
.stat.konto.minus b{color:var(--err)}
.stat b.klein{font-size:1.05rem}

/* V9 */
.funktionen{display:grid;grid-template-columns:1fr;gap:0 1rem}
@media(min-width:800px){.funktionen{grid-template-columns:1fr 1fr}.funktionen .fgruppe,.funktionen .actions,.funktionen p{grid-column:1/-1}}
.fgruppe{font-weight:700;font-size:.85rem;color:var(--muted);margin:.6rem 0 .3rem;text-transform:uppercase;letter-spacing:.03em}
.warn-tag{display:inline-block;font-size:.72rem;padding:.05rem .45rem;border-radius:99px;background:var(--warn-bg);color:#8a5a00;margin:.15rem .25rem 0 0}
.balken{display:flex;align-items:flex-end;gap:4px;height:160px;margin:.5rem 0}
.balken .sp{flex:1;position:relative;height:100%}
.balken .ist{position:absolute;left:0;right:0;bottom:0;background:var(--accent);border-radius:4px 4px 0 0;min-height:1px}
.balken .soll{position:absolute;left:-2px;right:-2px;border-top:2px dashed var(--muted)}
.balken-l{display:flex;gap:4px}.balken-l span{flex:1;text-align:center;font-size:.7rem;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem}
.chip{border:1px solid var(--line);background:var(--bg);border-radius:99px;padding:.3rem .7rem;font-size:.85rem;cursor:pointer;color:var(--ink)}
.punkt{display:flex;gap:.6rem;align-items:flex-start;padding:.45rem 0;border-bottom:1px solid var(--line)}
.punkt.erledigt .ptext{text-decoration:line-through;color:var(--muted)}
.punkt .ptext{flex:1}
.punkt img{width:56px;height:56px;object-fit:cover;border-radius:6px}
.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
a.chip{text-decoration:none}
.mob-only-flex{display:flex}@media(min-width:800px){.mob-only-flex{display:none}}
/* V9: viele Reiter am PC – kompakter, nichts umbrechen */
.top nav a{white-space:nowrap}
.who a{white-space:nowrap}
.brand{flex-shrink:0}
@media(min-width:800px) and (max-width:1400px){
  .top{gap:.5rem}
  .top nav.desk{margin-left:.25rem;gap:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .top nav a{padding:.4rem .5rem;font-size:.9rem}
  .who .nutzername{display:none}
}

/* Baustellen-Suche (select[data-suche]) */
.bsw-versteckt{position:absolute!important;opacity:0;pointer-events:none;height:1px!important;min-height:0!important;width:1px!important;padding:0!important;margin:0!important;border:0!important}
label:has(> .bsw-versteckt){position:relative}
.bsw-knopf{display:flex;align-items:center;gap:.5rem;width:100%;margin-top:.25rem;min-height:48px;padding:.5rem .75rem;font:inherit;text-align:left;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;cursor:pointer}
.bsw-knopf .grow{flex:1;min-width:0}
.bsw-knopf b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bsw-knopf small{display:block;color:var(--muted);font-size:.8rem}
.uhr .bsw-knopf{background:var(--card)}
body.bsw-offen{overflow:hidden}
.bsw-ov{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.45);display:flex;align-items:flex-start;justify-content:center;padding:max(.75rem,env(safe-area-inset-top)) .75rem .75rem}
.bsw{background:var(--card);color:var(--ink);border-radius:var(--r);width:100%;max-width:560px;max-height:calc(100dvh - 1.5rem);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 40px rgba(0,0,0,.3)}
.bsw-kopf{display:flex;gap:.5rem;padding:.75rem;border-bottom:1px solid var(--line)}
.bsw-kopf input{margin:0;font-size:1.05rem}
.bsw-zu{flex:none;width:48px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font-size:1.1rem;cursor:pointer}
.bsw-liste{overflow-y:auto;padding:.25rem .5rem .75rem;flex:1}
.bsw-gr{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:.8rem .5rem .3rem}
.bsw-e{display:block;width:100%;text-align:left;font:inherit;color:var(--ink);background:none;border:0;border-radius:8px;padding:.6rem .5rem;cursor:pointer}
.bsw-e:hover,.bsw-e:focus{background:var(--bg)}
.bsw-e.an{background:var(--warn-bg)}
.bsw-e small{display:block;color:var(--muted);font-size:.8rem}
.bsw-fuss{padding:.6rem .75rem;border-top:1px solid var(--line)}
.bsw-fuss .btn{width:100%}

/* mehrere Tage */
.tage-tbl input{min-height:40px;padding:.4rem .5rem;margin:0}
.tage-tbl input[type=checkbox]{width:22px;height:22px;min-height:0}
.tage-tbl td{vertical-align:middle}
.tage-tbl .tag-name{white-space:nowrap}
.tage-tbl tr.aus td:not(:first-child){opacity:.45}
.warn-txt{color:#a86b00}
@media (max-width:640px){
  .tage-tbl thead{display:none}
  .tage-tbl,.tage-tbl tbody,.tage-tbl tfoot{display:block}
  .tage-tbl tr[data-tag]{display:grid;grid-template-columns:30px 1fr 1fr 4.6rem;gap:.35rem .4rem;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--line)}
  .tage-tbl tr[data-tag] td{border:0;padding:0}
  .tage-tbl tr[data-tag] td:nth-child(2){grid-column:2 / 4}
  .tage-tbl tr[data-tag] td.std{grid-column:4;grid-row:1;font-weight:700}
  .tage-tbl tr[data-tag] td:nth-child(3){grid-column:1 / 3}
  .tage-tbl tr[data-tag] td:nth-child(7){grid-column:1 / -1}
  .tage-tbl input[type=number]{width:100%!important}
  .tage-tbl tfoot tr{display:flex;justify-content:space-between;padding:.6rem 0}
  .tage-tbl tfoot th{border:0;padding:0}
}

/* Navigation zur Baustelle */
.navi{display:flex;gap:.5rem;flex-wrap:wrap;margin:.6rem 0 .2rem}
.navi .btn{flex:1 1 10rem}
.list li:has(> .navi-mini){display:flex;align-items:center}
.list li:has(> .navi-mini) > a.item{flex:1;min-width:0}
.navi-mini{flex:none;display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin-left:.25rem;border:1px solid var(--line);border-radius:10px;text-decoration:none;font-size:1.2rem;background:var(--bg)}

/* Lieferscheine */
.ls{padding:.6rem 0;border-bottom:1px solid var(--line)}
.ls-kopf{display:flex;gap:.6rem;align-items:flex-start}
.ls-kopf .grow{flex:1;min-width:0}
.ls-haken{background:none;border:0;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--ink);padding:.1rem}
.ls.ok b{color:var(--ok)}
.ls-seiten{display:flex;gap:.4rem;flex-wrap:wrap;margin:.45rem 0 .4rem 2.1rem}
.ls-seiten img,.ls-pdf{width:72px;height:72px;object-fit:cover;border-radius:6px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-weight:700;background:var(--bg);color:var(--ink);text-decoration:none}
.ls-notiz{display:flex;gap:.4rem;margin-left:2.1rem}
.ls-notiz input{margin:0;min-height:40px;padding:.4rem .6rem}
.ls-notiz .btn{min-height:40px}
details > summary.btn{list-style:none;display:inline-flex}
details > summary.btn::-webkit-details-marker{display:none}

/* Fingerabdruck / Passkey */
.login-finger{display:flex;flex-direction:column;gap:.5rem;margin-top:.75rem}
.login-finger .btn{width:100%}
#app-finger{display:none}
body.app-finger #app-finger{display:flex}
.geraet{display:flex;align-items:center;gap:.5rem;padding:.45rem 0;border-bottom:1px solid var(--line)}
.geraet .grow{flex:1;min-width:0}

/* Mehrfirmen-Version */
.brand{display:flex;align-items:center;gap:.5rem}
.brand-logo{height:28px;max-width:90px;object-fit:contain;background:#fff;border-radius:4px;padding:2px}
.betreiber .top{background:#2b1f3a}
.betreiber-mob{display:flex;background:var(--card);border-bottom:1px solid var(--line);overflow-x:auto}
.betreiber-mob a{flex:1;text-align:center;padding:.6rem .4rem;text-decoration:none;font-size:.85rem;color:var(--muted);white-space:nowrap}
.betreiber-mob a.on{color:var(--ink);font-weight:700;box-shadow:inset 0 -2px 0 #7b4fb3}
@media(min-width:800px){.betreiber-mob{display:none}}
.betreiber .top .grow{flex:1}
.tag.st-test{background:#e7f0ff;color:#24508f}
.tag.st-aktiv{background:var(--ok-bg);color:var(--ok)}
.tag.st-gesperrt{background:var(--err-bg);color:var(--err)}
.firmen-tbl td{vertical-align:middle}
.welche{margin:.2rem 0 .8rem 2rem}
.welche .check{margin-bottom:.3rem;font-size:.95rem}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.2rem .8rem}
/* Copyright-Zeile */
.copyright{text-align:center;font-size:.75rem;color:var(--muted);padding:1rem 1rem 1.5rem}
body.login-body .copyright{position:fixed;bottom:0;left:0;right:0;padding:.75rem}
.dok-tbl .c{text-align:center} .dok-tbl input[type=checkbox]{width:22px;height:22px;min-height:0;margin:0 auto}

/* ===== Module: Nachrichten ===== */
.chat-seite{display:grid;gap:1rem}
@media(min-width:800px){.chat-seite{grid-template-columns:260px 1fr;align-items:start}}
.chat-liste{padding:.5rem;max-height:70vh;overflow-y:auto}
.chat-k{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem .6rem;border-radius:8px;text-decoration:none;color:var(--ink)}
.chat-k span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-k.an{background:var(--warn-bg);font-weight:600}
.chat-tr{font-size:.75rem;font-weight:700;text-transform:uppercase;color:var(--muted);padding:.8rem .6rem .3rem}
.badge{display:inline-block;min-width:1.3rem;padding:0 .35rem;border-radius:99px;background:#d93025;color:#fff;font-size:.72rem;font-weight:700;text-align:center;line-height:1.3rem}
.chat{display:flex;flex-direction:column;min-height:60vh}
.chat-titel{margin:0 0 .5rem}
.chat-verlauf{flex:1;overflow-y:auto;max-height:60vh;min-height:260px;display:flex;flex-direction:column;gap:.45rem;padding:.25rem .1rem 1rem}
.nachricht{max-width:82%;align-self:flex-start;background:var(--bg);border:1px solid var(--line);border-radius:14px 14px 14px 4px;padding:.45rem .7rem}
.nachricht.mein{align-self:flex-end;background:#fff3c4;border-color:#f2d36b;border-radius:14px 14px 4px 14px}
@media (prefers-color-scheme: dark){html:not([data-theme=hell]) .nachricht.mein{background:#3a3214;border-color:#5a4a14}}
html[data-theme=dunkel] .nachricht.mein{background:#3a3214;border-color:#5a4a14}
.nachricht .von{font-size:.75rem;font-weight:700;color:var(--muted)}
.nachricht .txt{white-space:normal;word-wrap:break-word}
.nachricht img{display:block;max-width:240px;max-height:240px;border-radius:8px;margin-top:.3rem}
.nachricht .zeit{font-size:.68rem;color:var(--muted);text-align:right}
.nanhang{display:inline-block;margin-top:.3rem;padding:.4rem .6rem;border:1px solid var(--line);border-radius:8px;background:var(--card);text-decoration:none;font-weight:600}
.chat-form{border-top:1px solid var(--line);padding-top:.6rem}
.chat-form textarea{margin:0 0 .5rem;min-height:56px}
.chat-knoepfe{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.chat-knoepfe .verweis{flex:1;min-width:160px;margin:0;min-height:40px;padding:.4rem .6rem}
.datei-knopf{cursor:pointer}
.bs-chat .chat-verlauf{max-height:320px;min-height:120px}

/* ===== Urlaub / Einsatzplan ===== */
.kal{border-collapse:collapse;font-size:.78rem;width:100%}
.kal th,.kal td{border:1px solid var(--line);padding:0;text-align:center;min-width:24px;height:26px}
.kal th{background:var(--bg);font-weight:600}
.kal th.we,.kal td.we{background:rgba(127,127,127,.12)}
.kal td.name,.kal th.name{text-align:left;padding:0 .4rem;white-space:nowrap;min-width:110px;position:sticky;left:0;background:var(--card);z-index:1}
.kal td.u{background:#8fd19e}.kal td.uo{background:repeating-linear-gradient(45deg,#cfe9d5,#cfe9d5 4px,#fff 4px,#fff 8px)}
.kal td.k{background:#f4b4ad}.kal td.f{background:#c9d7f0}.kal td.s{background:#e6d3f5}
.kal td.heute,.kal th.heute{outline:2px solid var(--accent);outline-offset:-2px}
.legende-farben{display:flex;gap:.8rem;flex-wrap:wrap;font-size:.8rem;margin:.5rem 0}
.legende-farben i{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:.25rem}
.plan{border-collapse:collapse;width:100%;font-size:.85rem}
.plan th,.plan td{border:1px solid var(--line);padding:.35rem;vertical-align:top}
.plan th{background:var(--bg)}
.plan td.name{white-space:nowrap;font-weight:600;background:var(--card);position:sticky;left:0}
.plan .eins{display:block;background:#e7f0ff;border-radius:6px;padding:.2rem .35rem;margin-bottom:.2rem;text-decoration:none;color:#1d3d6b;font-size:.78rem}
@media (prefers-color-scheme: dark){html:not([data-theme=hell]) .plan .eins{background:#1d2c44;color:#cfe0ff}}
html[data-theme=dunkel] .plan .eins{background:#1d2c44;color:#cfe0ff}
.plan .plus{display:block;text-align:center;color:var(--muted);text-decoration:none;font-size:1.1rem}
.heute-einsatz{background:#e7f0ff;border-color:#b7cdf0}
@media (prefers-color-scheme: dark){html:not([data-theme=hell]) .heute-einsatz{background:#1d2c44;border-color:#2c4469}}
html[data-theme=dunkel] .heute-einsatz{background:#1d2c44;border-color:#2c4469}

/* ===== Inventar / Messprotokolle / Auslagen ===== */
.inv{display:flex;gap:.7rem;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--line)}
.inv img{width:52px;height:52px;object-fit:cover;border-radius:8px}
.inv .grow{flex:1;min-width:0}
.faellig{color:var(--err);font-weight:700}
.bald{color:#a86b00;font-weight:700}
.mess-tbl input,.mess-tbl select{margin:0;padding:.3rem .35rem;min-height:36px;font-size:.85rem;min-width:3.5rem}
.mess-tbl td{padding:.15rem}
.mess-tbl .breit{min-width:10rem}
.mess-tbl input.schlecht{background:#fbe9e7;border-color:#d93025}
.check-tbl td{padding:.3rem .4rem}
.check-tbl select{margin:0;min-height:36px;padding:.2rem .4rem;width:auto}
.auslage{display:flex;gap:.6rem;align-items:flex-start;padding:.55rem 0;border-bottom:1px solid var(--line)}
.auslage .grow{flex:1;min-width:0}
.auslage .betrag{font-weight:700;white-space:nowrap}
.auslage.offen .betrag{color:#a86b00}
.auslage-belege{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.3rem}
.auslage-belege img,.auslage-belege .ls-pdf{width:48px;height:48px;object-fit:cover;border-radius:6px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;text-decoration:none;color:var(--ink);background:var(--bg)}
.hinweis-box{display:block;text-decoration:none}
.plan button.eins{border:0;width:100%;text-align:left;font:inherit;font-size:.78rem;cursor:pointer}
.plan button.eins{border:0;width:100%;text-align:left;font:inherit;font-size:.78rem;cursor:pointer}
.bereiche-menue{position:relative;max-width:1000px;margin:0 auto}
.bereiche-menue > summary{display:none}
.bereiche-menue[open] nav{position:absolute;right:1rem;top:.25rem;z-index:20;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,.15);padding:.4rem;display:flex;flex-direction:column;min-width:230px}
.bereiche-menue nav a{padding:.6rem .8rem;border-radius:8px;text-decoration:none;color:var(--ink)}
.bereiche-menue nav a:hover{background:var(--bg)}
.who .badge{margin-left:2px;vertical-align:top}

/* ===== Zusatz-Module Teil 2 ===== */
@media(min-width:700px){ .grid.c4{grid-template-columns:repeat(4,1fr)} }
@media(max-width:699px){ .grid.c4{grid-template-columns:1fr 1fr;gap:.6rem} .grid.c4 .stat b{font-size:1.2rem} }
.inline-row{display:inline-flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.inline-row input,.inline-row select{margin:0;width:auto;padding:.35rem .5rem;min-height:36px}

/* Hilfe */
.info-i{border:0;background:none;color:var(--muted);font-size:1rem;line-height:1;padding:0 .2rem;cursor:pointer;vertical-align:middle}
.info-i:hover{color:var(--ink)}
.info-blase{position:absolute;z-index:50;background:var(--dark);color:#fff;border-radius:10px;padding:.7rem .85rem;font-size:.88rem;line-height:1.45;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.seite-hilfe{background:var(--warn-bg);border:1px solid var(--line);border-radius:var(--r);padding:.55rem .8rem;margin-bottom:1rem;font-size:.92rem}
.seite-hilfe summary{cursor:pointer;font-weight:600}
.seite-hilfe p{margin:.5rem 0 0}
.hilfe-eintrag{padding:.55rem 0;border-bottom:1px solid var(--line)}
.hilfe-eintrag:last-child{border-bottom:0}
.hilfe-eintrag p{margin:.25rem 0 0;color:var(--muted);font-size:.92rem}
.hilfe-eintrag.aus{opacity:.55}
#hilfe-suche{margin:0}

/* Meldungen */
.toast{position:fixed;left:50%;bottom:88px;transform:translateX(-50%);z-index:60;background:var(--dark);color:#fff;padding:.65rem 1rem;border-radius:10px;max-width:92vw;box-shadow:0 8px 24px rgba(0,0,0,.25);transition:opacity .5s}
.toast.weg{opacity:0}
#offline-leiste{position:sticky;top:0;z-index:6;background:#5b3a00;color:#ffe9b3;text-align:center;font-size:.88rem;padding:.4rem .8rem}

/* Einsatzplan */
.plan .eins.gewaehlt{outline:2px solid var(--accent)}

/* Farben */
.farb-vorschau{--fv-akzent:#F2B705;--fv-tabkopf:#1F2A36;--fv-tabkopf-schrift:#fff;--fv-kasten:#DCDCDC;--fv-streifen:#F0F0F0;--fv-abwesend:#E8F0FC;background:#fff;color:#111;border:1px solid var(--line);border-radius:8px;overflow:hidden;font-size:.78rem;margin-bottom:1rem;max-width:520px}
.fv-akzent{height:6px;background:var(--fv-akzent)}
.fv-kopf{display:flex;justify-content:space-between;padding:.5rem .7rem}
.fv-tab,.fv-z{display:grid;grid-template-columns:1fr 1.6fr .6fr;padding:.3rem .7rem}
.fv-tab{background:var(--fv-tabkopf);color:var(--fv-tabkopf-schrift);font-weight:700;border-bottom:1px solid #999}
.fv-z{border-bottom:1px solid #e4e4e4}
.fv-streifen{background:var(--fv-streifen)}
.fv-abw{background:var(--fv-abwesend)}
.fv-summe{background:var(--fv-akzent);padding:.45rem .7rem;font-weight:700;display:flex;justify-content:space-between;margin:.5rem .7rem .7rem;border:1px solid #bbb}
.farb-zeile{display:flex;gap:.6rem;align-items:center;padding:.45rem 0;border-bottom:1px solid var(--line)}
.farb-zeile input[type=color]{width:46px;height:38px;padding:2px;margin:0;border-radius:8px;flex:none}
.farb-zeile .farb-hex{width:6.5rem;margin:0;font-family:ui-monospace,monospace;flex:none}
.farb-zeile .check{margin:0;flex:none}
@media(max-width:560px){ .farb-zeile{flex-wrap:wrap} .farb-zeile .grow{flex-basis:calc(100% - 180px)} }

/* GPS & Fahrten */
.gps-hinweis{margin:-.3rem 0 .7rem;text-align:left}
.gps-teile{margin:.3rem 0 .6rem;padding-left:.4rem;border-left:3px solid var(--line)}
.bs-standort{margin:.2rem 0 1rem}
.fahrt-liste li.fahrt{display:flex;gap:.45rem;align-items:center;padding:.5rem 0;flex-wrap:wrap}
.fahrt-liste .grow{min-width:200px}
.km-feld{width:4.6rem!important;text-align:right}
.km-feld.neu-berechnet{background:var(--ok-bg)}
.tag.fa-dienst{background:#e6f4ea;color:#1d6b3f}
.tag.fa-direkt{background:#fff3d6;color:#7a5600}
.tag.fa-arbeitsweg{background:#ececec;color:#555}

/* Pläne */
.plan-box{position:relative;display:inline-block;max-width:100%;margin-bottom:1rem;cursor:crosshair;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff;touch-action:manipulation}
.plan-box img{display:block;max-width:100%;height:auto}
.pin{position:absolute;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50%;background:#1f5ac8;color:#fff;font:700 .78rem/26px system-ui,sans-serif;text-align:center;text-decoration:none;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.pin.mangel{background:#c8281e}
.pin.erledigt{opacity:.45}
.pin.neu{background:var(--accent);color:var(--accent-ink)}
.pin-nr{flex:none;width:26px;height:26px;border-radius:50%;background:#1f5ac8;color:#fff;font-weight:700;font-size:.78rem;display:flex;align-items:center;justify-content:center}
.pin-nr.mangel{background:#c8281e}
.pin-foto{width:56px;height:56px;object-fit:cover;border-radius:6px}

/* Checklisten */
.checkl li{padding:.6rem 0}
.checkl-t{font-weight:600;margin-bottom:.35rem}
.checkl-w{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}
.seg{margin:0}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:inline-block;border:1px solid var(--line);border-radius:8px;padding:.35rem .6rem;font-size:.88rem;cursor:pointer;background:var(--card)}
.seg input:checked+span{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.seg input[value=nein]:checked+span{background:var(--err);border-color:var(--err);color:#fff}
.checkl-n{flex:1;min-width:140px;margin:0!important}

/* Abnahme */
.sig-box{border:1px dashed var(--muted);border-radius:10px;padding:.5rem;margin:.6rem 0;background:#fff;color:#333}
.sig-box canvas{width:100%;height:auto;aspect-ratio:3/1;touch-action:none;display:block;background:#fff}

/* Nachweise, Fahrzeug-Material */
.tag.unterw-ab{background:var(--err-bg);color:var(--err)}
.tag.unterw-bald{background:var(--warn-bg);color:#7a5600}
.tag.unterw-ok{background:var(--ok-bg);color:var(--ok)}
tr.zu-wenig td{background:var(--warn-bg)}

/* Anmeldeseite */
.login-logo{text-align:center;margin-bottom:.6rem}
.login-logo img{max-width:220px;max-height:90px;object-fit:contain;background:#fff;border-radius:8px;padding:.3rem}

/* QR */
.qr-scan video{width:100%;max-width:420px;border-radius:10px;margin-top:.6rem}

/* Dunkler Modus erzwungen (Profil) – die Farben kommen aus den Dark-Regeln oben */
html[data-theme=dunkel]{color-scheme:dark}
html[data-theme=hell]{color-scheme:light}

/* dunkel-umschaltbar */

/* ===== Plattform: öffentliche Seiten, Abos ===== */
body.web{padding-bottom:0;background:var(--bg)}
.web-innen{max-width:1120px;margin:0 auto;padding:0 1.1rem}
.web-kopf{position:sticky;top:0;z-index:10;background:var(--dark);color:#fff}
.web-kopf .web-innen{display:flex;align-items:center;gap:1rem;min-height:60px}
.web-marke{font-weight:800;font-size:1.15rem;text-decoration:none;display:flex;align-items:center;gap:.45rem;white-space:nowrap}
.web-marke img{height:34px;max-width:140px;object-fit:contain;background:#fff;border-radius:6px;padding:2px}
.web-nav{margin-left:auto;display:flex;align-items:center;gap:.25rem}
.web-nav a{text-decoration:none;color:#d6dce2;padding:.45rem .7rem;border-radius:8px}
.web-nav a.on,.web-nav a:hover{color:#fff;background:rgba(255,255,255,.08)}
.web-nav .btn{color:var(--accent-ink);background:var(--web,var(--accent));margin-left:.3rem}
.web-burger{display:none;margin-left:auto;font-size:1.5rem;cursor:pointer;padding:.2rem .5rem}
@media(max-width:820px){
  .web-burger{display:block}
  .web-nav{display:none;position:absolute;top:60px;left:0;right:0;background:var(--dark);flex-direction:column;align-items:stretch;padding:.5rem 1rem 1rem}
  #web-menu:checked~.web-nav{display:flex}
  .web-nav .btn{margin:.4rem 0 0;text-align:center}
}
.web-main{min-height:60vh}
.web-held{background:linear-gradient(160deg,var(--dark) 0%,#2b3a4a 100%);color:#fff;padding:3.2rem 0 3.6rem}
.web-held .web-innen{display:grid;grid-template-columns:1.25fr 1fr;gap:2.5rem;align-items:center}
.web-held h1{font-size:clamp(1.8rem,4.2vw,2.9rem);line-height:1.12;margin:0 0 1rem;letter-spacing:-.01em}
.web-lead{font-size:1.15rem;line-height:1.5;opacity:.92;max-width:40rem}
.web-held .muted{color:#b9c3cd}
.web-held .btn.sec{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.btn.big-ish{min-height:52px;padding:.7rem 1.3rem;font-size:1.05rem}
.web-held .btn:not(.sec){background:var(--web,var(--accent))}
@media(max-width:820px){ .web-held .web-innen{grid-template-columns:1fr} .web-held-bild{display:none} .web-held{padding:2.2rem 0 2.6rem} }
.web-handy{width:270px;margin:0 auto;background:#f3f4f1;color:#1d242c;border-radius:30px;padding:14px;border:8px solid #11171d;box-shadow:0 24px 60px rgba(0,0,0,.4);font-size:.82rem}
.wh-kopf{background:#1f2a36;color:#fff;border-radius:12px;padding:.45rem .7rem;font-weight:700}
.wh-gruss{font-weight:800;font-size:1.05rem;margin:.6rem .2rem}
.wh-kacheln{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}
.wh-k{background:#fff;border-radius:10px;padding:.5rem .6rem;border:1px solid #e1e3de}.wh-k b{display:block;font-size:1.2rem}.wh-k span{color:#6b7480;font-size:.72rem}
.wh-k.hi{background:var(--web,#F2B705);border-color:transparent}
.wh-karte{background:#fff;border:1px solid #e1e3de;border-radius:10px;padding:.55rem .6rem;margin-top:.45rem;display:flex;flex-direction:column;gap:.3rem}
.wh-feld{background:#f3f4f1;border-radius:8px;padding:.4rem .5rem;font-weight:600}
.wh-knopf{background:var(--web,#F2B705);border-radius:8px;padding:.45rem;text-align:center;font-weight:800}
.web-band{background:var(--card);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:2.2rem 0}
.web-vorteile{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
@media(max-width:820px){ .web-vorteile{grid-template-columns:1fr} }
.web-vorteil h3{margin:0 0 .3rem;font-size:1.1rem}.web-vorteil p{margin:0;color:var(--muted)}
.web-abschnitt{padding:2.4rem 1.1rem}
.web-abschnitt h1{font-size:2rem;margin:0 0 1rem}.web-abschnitt h2{font-size:1.5rem;margin:0 0 1rem}
.web-zwei{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:700px){ .web-zwei{grid-template-columns:1fr} }
.web-wer{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.2rem}
.web-wer h3{margin:0 0 .4rem}.web-wahl{text-decoration:none;display:block;transition:border-color .15s}.web-wahl:hover{border-color:var(--web,var(--accent))}
.web-funk{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.8rem}
.web-funk-k{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.8rem .9rem;display:flex;flex-direction:column;gap:.25rem}
.web-funk-k span{color:var(--muted);font-size:.9rem}
.web-stimmen{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}
.web-stimmen blockquote{margin:0;background:var(--bg);border-radius:10px;padding:1rem;font-style:italic}
.web-stimmen cite{display:block;margin-top:.5rem;font-style:normal;color:var(--muted);font-size:.88rem}
.web-faq{border-bottom:1px solid var(--line);padding:.7rem 0}.web-faq summary{cursor:pointer;font-weight:600}.web-faq p{margin:.5rem 0 0;color:var(--muted)}
.web-cta{text-align:center}
.web-text{max-width:820px}.web-text p{line-height:1.6}
.web-fuss{background:var(--dark);color:#cfd6dd;padding:2rem 0 1rem;margin-top:2rem}
.web-fuss .web-innen{display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between}
.web-fuss nav{display:flex;flex-wrap:wrap;gap:.3rem 1rem}.web-fuss a{color:#cfd6dd}
.web-fuss .copyright{color:#97a0aa}
.spamfalle{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}

.abo-karten{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.8rem;margin-bottom:.6rem}
.abo-karten.gross{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin:1rem 0}
.abo-karte{position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1rem;display:flex;flex-direction:column;gap:.35rem}
.abo-karte h3{margin:0;font-size:1.15rem}
.abo-karte .btn{margin-top:auto}
.abo-karte.beliebt{border:2px solid var(--web,var(--accent));box-shadow:0 8px 24px rgba(0,0,0,.08)}
.abo-karte.ist{background:var(--ok-bg)}
.abo-band{position:absolute;top:-11px;right:12px;background:var(--web,var(--accent));color:var(--accent-ink);font-size:.72rem;font-weight:800;padding:.15rem .55rem;border-radius:99px;text-transform:uppercase;letter-spacing:.04em}
.abo-preis{font-size:1.7rem;font-weight:800;font-variant-numeric:tabular-nums}.abo-preis span{font-size:.9rem;font-weight:500;color:var(--muted)}.abo-preis small{font-size:.75rem;color:var(--muted);font-weight:500}
.abo-liste{margin:.3rem 0 .6rem;padding-left:1.1rem}.abo-liste li{margin:.15rem 0}
.abo-wahl{display:grid;gap:.4rem;margin-bottom:.8rem}
.abo-radio{display:flex;gap:.6rem;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem;cursor:pointer;margin:0}
.abo-radio input{margin-top:.25rem;width:auto}
.abo-radio small{display:block;color:var(--muted)}
.abo-radio:has(input:checked){border-color:var(--web,var(--accent));background:var(--warn-bg)}
.vergleich .vgruppe td{background:var(--bg);font-weight:700;font-size:.85rem}
.vergleich td.c,.vergleich th.c{text-align:center}
.shop-band{display:block;text-decoration:none;background:var(--warn-bg);border:1px solid #e7cf6b;color:var(--ink);border-radius:10px;padding:.55rem .8rem;margin-bottom:1rem;font-size:.92rem}
.chip.gesperrt{opacity:.6}
.buchung{border-top:1px solid var(--line);padding:.6rem 0}
.nowrap{white-space:nowrap}
#web-menu{display:none!important}
.abo-radio{color:var(--ink)}
