:root{
  --takt-v:"1.56.0";   /* App-Version, per version_setzen.py – muss zu index.html passen */
  --bg:#F4F5F6; --surface:#FFFFFF; --ink:#1C1F22; --ink-2:#5A6068; --ink-3:#686E75;
  --line:#E3E6E9; --line-2:#EEF0F2;
  --accent:#C2410C; --accent-dark:#9A3412;
  --anthra:#2B2B2B;
  --rot:#C0392B; --gelb:#C88A00; --gruen:#2E7D32;
  --rot-bg:#FBEDEC; --gelb-bg:#FBF4E3; --gruen-bg:#EDF5EE;
  --radius:10px; --radius-lg:14px;
  --shadow:0 1px 2px rgba(20,25,30,.04), 0 2px 8px rgba(20,25,30,.05);
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0); padding-bottom:env(safe-area-inset-bottom,0);
}
:root[data-theme="dark"]{
  --bg:#16181B; --surface:#1E2125; --ink:#EDEFF1; --ink-2:#A6ADB4; --ink-3:#979DA5;
  --line:#2C3036; --line-2:#24272C;
  --rot-bg:#2A1917; --gelb-bg:#26200F; --gruen-bg:#152018;
  --shadow:0 1px 2px rgba(0,0,0,.2), 0 2px 10px rgba(0,0,0,.25);
}
*{box-sizing:inherit}
html,body{margin:0}
body{
  background:var(--bg); color:var(--ink);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; font-size:15px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
.mono{font-family:ui-monospace,"SF Mono",Consolas,"Liberation Mono",monospace}

/* ---------- Kopf ---------- */
header{
  background:var(--anthra); color:#fff;
  padding:14px clamp(16px,4vw,32px);
  display:flex; align-items:center; gap:16px;
}
.logo{display:flex; align-items:baseline; gap:12px}
.logo b{font-size:19px; font-weight:800; letter-spacing:.02em}
.logo span{font-size:13px; color:#B9BDC2; font-weight:500}
.accent{height:3px; background:var(--accent)}
.toggle{margin-left:auto; display:flex; align-items:center; gap:8px; cursor:pointer;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.14);
  border-radius:999px; padding:6px 12px; font-size:12.5px; color:#D6D9DC; user-select:none}
.toggle:hover{background:rgba(255,255,255,.14)}

main{max-width:1180px; margin:0 auto; padding:clamp(16px,3vw,26px)}

/* ---------- KPI-Kacheln ---------- */
.kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:22px}
.kpi{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg);
  padding:16px 18px; box-shadow:var(--shadow); position:relative; overflow:hidden}
.kpi .k-label{font-size:13px; color:var(--ink-2); font-weight:500; margin-bottom:6px}
.kpi .k-val{font-size:34px; font-weight:800; line-height:1; letter-spacing:-.02em}
.kpi .k-val small{font-size:16px; font-weight:600; color:var(--ink-3); letter-spacing:0}
.kpi .k-sub{font-size:13.5px; color:var(--ink-3); margin-top:6px}
.kpi .rail{position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--line)}
.kpi.state-rot .rail{background:var(--rot)} .kpi.state-rot .k-val{color:var(--rot)}
.kpi.state-gelb .rail{background:var(--gelb)} .kpi.state-gelb .k-val{color:var(--gelb)}
.kpi.state-gruen .rail{background:var(--gruen)} .kpi.state-gruen .k-val{color:var(--gruen)}

/* ---------- Funktionen eines Bereichs als Liste ---------- */
.tabbar{display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:8px; margin:0 0 20px}
.tabbar[hidden]{display:none}
.tabbar.unter-start{margin-top:18px}
.liste-titel{grid-column:1 / -1; margin:0; font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3)}
.tabbar:not(.unter-start) .liste-titel{display:none}
.tab{font:inherit; text-align:left; display:grid; gap:2px; align-content:center; position:relative; min-height:64px;
  padding:12px 40px 12px 16px; border:1px solid var(--line); border-radius:var(--radius-lg); background:var(--surface);
  color:var(--ink); cursor:pointer; box-shadow:var(--shadow)}
.tab b{font-size:15.5px}
.tab span{font-size:14px; color:var(--ink-2); font-weight:400}
.tab::after{content:"›"; position:absolute; right:16px; top:50%; transform:translateY(-50%); font-size:22px; color:var(--ink-3)}
.tab:hover{border-color:var(--ink-3)}
.tab[hidden]{display:none}
.bereich-titel{font-size:22px; margin:4px 0 14px}
.bereich-zurueck{display:inline-block; justify-self:start; text-align:left; margin:0 0 10px; padding:10px 0; font-size:15px}
.panel{display:none} .panel.active{display:block}

/* ---------- Karten allgemein ---------- */
.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg);
  box-shadow:var(--shadow)}
.card h2{font-size:15px; font-weight:700; margin:0; padding:14px 18px; border-bottom:1px solid var(--line-2)}

/* ---------- Eingaben ---------- */
.row{display:flex; gap:10px; align-items:center; flex-wrap:wrap}
label.fld{font-size:14px; color:var(--ink-2); font-weight:500}
input[type=text]{font:inherit; font-size:14px; padding:9px 12px; border:1px solid var(--line);
  border-radius:var(--radius); background:var(--surface); color:var(--ink); min-width:0}
input[type=text]:focus{outline:2px solid var(--accent); outline-offset:-1px; border-color:var(--accent)}
.btn{font:inherit; font-weight:600; font-size:14px; padding:9px 18px; border:none; border-radius:var(--radius);
  background:var(--accent); color:#fff; cursor:pointer}
.btn:hover{background:var(--accent-dark)}
.btn.ghost{background:var(--anthra)} .btn.ghost:hover{background:#111}
.btn:disabled{opacity:.5; cursor:default}

/* Gewerke-Chips */
.chips{display:grid; grid-template-columns:repeat(3,1fr); gap:6px 14px; margin-top:4px}
.chip{display:flex; align-items:center; gap:7px; font-size:14px; color:var(--ink); cursor:pointer}
.chip input{accent-color:var(--accent); width:15px; height:15px}

/* ---------- Ergebnis-Liste ---------- */
.result-row{display:flex; align-items:flex-start; gap:10px; padding:11px 14px;
  border:1px solid var(--line); border-radius:var(--radius); margin-bottom:8px; background:var(--surface)}
.dot{width:11px; height:11px; border-radius:50%; margin-top:4px; flex:none}
.dot.rot{background:var(--rot)} .dot.gelb{background:var(--gelb)} .dot.gruen{background:var(--gruen)}
.result-row .g-name{font-weight:600; font-size:14px}
.result-row .g-mass{font-size:14px; color:var(--ink-2); margin-top:2px}
.badge{font-size:12px; font-weight:700; padding:2px 8px; border-radius:999px; letter-spacing:.02em; white-space:nowrap}
.badge.norm{background:var(--gruen-bg); color:var(--gruen)}
.badge.pruef{background:var(--gelb-bg); color:var(--gelb)}
.badge.richt{background:var(--line-2); color:var(--ink-2)}

/* ---------- Bautagebuch ---------- */
#tagebuch{width:100%; min-height:240px; font:inherit; font-size:14px; line-height:1.6;
  padding:14px; border:1px solid var(--line); border-radius:var(--radius); resize:vertical;
  background:var(--bg); color:var(--ink)}

/* ---------- 7-Tage-Vorschau ---------- */
.days{display:grid; grid-template-columns:repeat(7,1fr); gap:8px}
.day{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding:10px 8px; text-align:center; position:relative}
.day .d-name{font-size:12.5px; color:var(--ink-3); font-weight:600; text-transform:capitalize}
.day .d-temp{font-size:17px; font-weight:700; margin:4px 0}
.day .d-meta{font-size:12px; color:var(--ink-3)}
.day .d-flag{margin-top:6px; font-size:12px; font-weight:700; padding:2px 0; border-radius:6px}
.day.warn .d-flag{background:var(--gelb-bg); color:var(--gelb)}
.day.crit .d-flag{background:var(--rot-bg); color:var(--rot)}
.day.ok .d-flag{background:var(--gruen-bg); color:var(--gruen)}

/* ---------- Normen-Tab ---------- */
.norm-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg);
  margin-bottom:12px; box-shadow:var(--shadow); overflow:hidden}
.norm-head{padding:13px 16px; border-bottom:1px solid var(--line-2); display:flex; align-items:baseline; gap:12px; flex-wrap:wrap}
.norm-head .n-id{font-weight:800; color:var(--accent); font-size:15px}
.norm-head .n-name{font-weight:700; font-size:15px}
.norm-head .n-norm{font-size:13px; color:var(--ink-3); font-family:ui-monospace,"SF Mono",Consolas,"Liberation Mono",monospace}
.rule{display:flex; align-items:flex-start; gap:10px; padding:9px 16px; border-top:1px solid var(--line-2)}
.rule .r-grenz{font-weight:600; font-size:14px; min-width:210px}
.rule .r-mass{font-size:14px; color:var(--ink-2)}
.norm-src{padding:8px 16px; font-size:13px; color:var(--ink-3); background:var(--line-2)}

.hint{font-size:14px; color:var(--ink-2); margin-top:14px; padding:10px 14px;
  border-left:3px solid var(--accent); background:var(--surface); border-radius:0 var(--radius) var(--radius) 0}
.grid-2{display:grid; grid-template-columns:1.3fr 1fr; gap:16px}
.status-line{font-size:14px; color:var(--ink-2); min-height:18px}
@media(max-width:900px){
  .kpis{grid-template-columns:repeat(2,1fr)} .grid-2{grid-template-columns:1fr}
  .chips{grid-template-columns:repeat(2,1fr)} .days{grid-template-columns:repeat(4,1fr)}
}
@media(max-width:560px){ .days{grid-template-columns:repeat(2,1fr)} }

/* ---------- Phase 1: Offline-Hinweis, Messwerte ---------- */
.offline-hinweis{margin-bottom:16px; padding:12px 16px; border-radius:var(--radius);
  background:var(--gelb-bg); color:var(--ink); border-left:4px solid var(--gelb); font-size:13.5px}
.messwerte{margin:4px 0 14px; font-size:14px}
.messwerte summary{cursor:pointer; color:var(--ink-2); font-weight:600}
.messwerte summary:focus-visible, .btn:focus-visible, .tab:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.mess-info{font-size:14px; color:var(--ink-2); margin:8px 0 0; max-width:70ch}
@media (prefers-reduced-motion: reduce){ *{transition:none !important; animation:none !important} }
@media(max-width:560px){ .logo span{display:none} header{padding:12px 16px} }

/* ---------- Phase 2: Export, Behinderungsanzeige ---------- */
.knopfpaar{display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:10px}
.h2-zeile{display:flex; align-items:center; justify-content:space-between; gap:10px}
.btn.klein{padding:6px 12px; font-size:14px}
.formular{display:grid; grid-template-columns:150px minmax(0,1fr); gap:8px 12px; align-items:center; margin:10px 0}
.formular .fld{align-self:start; padding-top:9px}
.formular input, .formular select, .formular textarea, .brief{font:inherit; font-size:14px; padding:9px 12px;
  border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); min-width:0; width:100%}
.formular .row input{width:70px}
.formular select{flex:1; width:auto}
.formular textarea{resize:vertical}
.formular input:focus, .formular select:focus, .formular textarea:focus, .brief:focus{outline:2px solid var(--accent); outline-offset:-1px}
.brief{min-height:300px; font-size:14px; line-height:1.55; background:var(--bg); resize:vertical}
#bh-ergebnis .days{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}
@media(max-width:560px){ .formular{grid-template-columns:minmax(0,1fr)} .formular .fld{padding-top:4px} }

/* ---------- Toleranzen ---------- */
.segment{display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden}
.segment button{font:inherit; font-size:14px; font-weight:600; padding:9px 6px; border:none; background:var(--surface); color:var(--ink-2); cursor:pointer}
.segment button + button{border-left:1px solid var(--line)}
.segment button[aria-pressed="true"]{background:var(--anthra); color:#fff}
.segment button:focus-visible{outline:2px solid var(--accent); outline-offset:-2px}
.formular select#tl-fall{width:100%}
.btn:disabled:hover{background:var(--accent)}
.btn.ghost:disabled:hover{background:var(--anthra)}
.kpis[hidden]{display:none}
.kpis:not(.hat-daten){display:none}              /* Kennzahlen erst mit Werten */
#tab-live .kpis{margin:0 0 16px}

/* ---------- Fünf Bereiche: Handy unten, Laptop links ---------- */
.bereiche{position:fixed; left:0; right:0; bottom:0; z-index:30; display:grid; grid-template-columns:repeat(5,minmax(0,1fr));
  background:var(--surface); border-top:1px solid var(--line); box-shadow:0 -4px 16px rgba(20,25,30,.06);
  padding:4px max(4px,env(safe-area-inset-left,0px)) calc(6px + env(safe-area-inset-bottom,0px))}
.bereiche button{font:inherit; font-size:12.5px; font-weight:700; color:var(--ink-3); background:none; border:none; cursor:pointer;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; min-height:56px; padding:6px 2px; border-radius:10px}
.bereiche button svg{width:24px; height:24px}
.bereiche button[aria-pressed="true"]{color:var(--accent)}
.bereiche button[aria-pressed="true"] svg{stroke-width:2.4}
.bereiche button:focus-visible{outline:2px solid var(--accent); outline-offset:-2px}
body:not(.rolle-polier) main{padding-bottom:96px}
@media(min-width:900px){
  body:not(.rolle-polier) main{display:grid; grid-template-columns:190px minmax(0,1fr); column-gap:28px; align-items:start; padding-bottom:clamp(16px,3vw,26px)}
  body:not(.rolle-polier) main > *{grid-column:2}
  .bereiche{position:sticky; top:16px; grid-column:1 !important; grid-row:1 / span 40; left:auto; right:auto; bottom:auto;
    grid-template-columns:1fr; gap:4px; padding:8px; border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:var(--shadow)}
  .bereiche button{flex-direction:row; justify-content:flex-start; gap:12px; font-size:14.5px; min-height:48px; padding:8px 12px; color:var(--ink-2)}
  .bereiche button[aria-pressed="true"]{background:var(--bg); color:var(--accent)}
}
#bewertung{width:100%; font:inherit; font-size:14px; padding:9px 12px; border:1px solid var(--line);
  border-radius:var(--radius); background:var(--surface); color:var(--ink); resize:vertical; margin-top:4px}
#bewertung:focus{outline:2px solid var(--accent); outline-offset:-1px}
.grundsaetze{font-size:14px; color:var(--ink-2); text-align:center; margin:28px auto 8px; max-width:70ch}
.register-eintrag .aktionen{display:flex; gap:6px; flex-wrap:wrap; margin-top:8px}
.erinnerung{color:var(--gelb); font-weight:600}

/* Ausgeblendete Elemente bleiben ausgeblendet, auch wenn eine Klasse display setzt */
[hidden]{display:none !important}
/* details-Inhalte erben box-sizing nicht zuverlässig -> für Eingaben ausdrücklich setzen */
input,select,textarea,button{box-sizing:border-box}

/* ---------- Daten-Dialog ---------- */
.kopf-knoepfe{display:flex; gap:8px; align-items:center}
button.toggle{font:inherit}
#dlg-daten{max-width:560px; width:calc(100% - 32px); border:none; border-radius:var(--radius); padding:20px 22px;
  background:var(--surface); color:var(--ink); box-shadow:0 20px 60px rgba(0,0,0,.35)}
#dlg-daten::backdrop{background:rgba(0,0,0,.45)}
#dlg-daten h2{margin:0 0 8px; font-size:18px}
#dlg-daten p{font-size:13.5px; color:var(--ink-2); margin:0 0 12px}
.daten-tabelle{width:100%; border-collapse:collapse; font-size:14px; margin-bottom:12px}
.daten-tabelle th{text-align:left; font-weight:600; padding:6px 8px 6px 0}
.daten-tabelle td{padding:6px 8px; color:var(--ink-2)}
.daten-tabelle tr + tr{border-top:1px solid var(--line)}
.grundsaetze{font-size:14px; padding-left:18px; margin:8px 0; color:var(--ink-2)}
.grundsaetze li{margin-bottom:6px}
.kopf-knoepfe{margin-left:auto}
.kopf-knoepfe .toggle{margin-left:0}
.kopf-knoepfe .toggle{white-space:nowrap}

/* ---------- Fußzeile ---------- */
.app-fuss{margin-top:28px; padding:16px 0 8px; border-top:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:6px 16px; justify-content:space-between;
  font-size:13px; color:var(--ink-3)}
.app-fuss b{color:var(--ink-2)}
.app-fuss .fuss-hinweis{max-width:60ch}

/* ============ Polier-Ansicht ============ */
#polier-ansicht,#polier-melden,#p-leiste,#p-planstand-seite{display:none}
body.rolle-polier #kpis, body.rolle-polier .bereiche, body.rolle-polier .tabbar, body.rolle-polier .panel,
body.rolle-polier .bereich-titel, body.rolle-polier .bereich-zurueck{display:none !important}
body.rolle-polier:not([data-polier-seite]) #polier-ansicht{display:block}
body.rolle-polier[data-polier-seite="melden"] #polier-melden{display:block}
body.rolle-polier[data-polier-seite="planstand"] #p-planstand-seite{display:block}
body.rolle-polier[data-polier-seite="toleranzen"] #p-leiste,
body.rolle-polier[data-polier-seite="schlechtwetter"] #p-leiste,
body.rolle-polier[data-polier-seite="tagesbericht"] #p-leiste,
body.rolle-polier[data-polier-seite="lieferschein"] #p-leiste,
body.rolle-polier[data-polier-seite="uebersetzen"] #p-leiste{display:block; margin-bottom:12px}
body.rolle-polier[data-polier-seite="tagesbericht"] #tab-tagesbericht{display:block !important}
body.rolle-polier[data-polier-seite="schlechtwetter"] #tab-schlechtwetter{display:block !important}
body.rolle-polier[data-polier-seite="toleranzen"] #tab-toleranzen{display:block !important}
body.rolle-polier[data-polier-seite="lieferschein"] #tab-lieferschein{display:block !important}
body.rolle-polier[data-polier-seite="uebersetzen"] #tab-uebersetzen{display:block !important}
#polier-ansicht,#polier-melden,#p-planstand-seite{font-size:17px; max-width:720px; margin:0 auto}
.p-titel{font-size:22px; margin:4px 0 8px}
.p-zeile{margin:4px 0; color:var(--ink)}
.p-gross{font-size:20px; font-weight:700}
.p-hinweis{font-size:14px; color:var(--ink-2); margin:8px 0}
.p-knopf{min-height:52px; font-size:17px; padding:12px 18px}
.p-gross-knopf{width:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; margin-top:10px}
.p-gross-knopf small{font-weight:400; font-size:14px; opacity:.85}
.p-standort{display:grid; grid-template-columns:1fr auto auto; gap:8px}
.p-standort input{font-size:17px; min-height:52px}
@media(max-width:560px){ .p-standort{grid-template-columns:1fr 1fr} .p-standort input{grid-column:1 / -1} }
.p-kopf{background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--shadow); padding:14px 16px; margin:12px 0}
.p-karte{background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--shadow); padding:14px 16px; margin:10px 0; border-left:8px solid var(--gruen)}
.p-karte.gelb{border-left-color:var(--gelb)} .p-karte.rot{border-left-color:var(--rot)}
.p-karte h3{font-size:19px; margin:0 0 10px}
.p-stufen{display:grid; grid-template-columns:1fr 1fr; gap:8px}
.p-stufe{border-radius:var(--radius); padding:10px 12px; display:flex; flex-direction:column; gap:2px}
.p-stufe.gruen{background:var(--gruen-bg)} .p-stufe.gelb{background:var(--gelb-bg)} .p-stufe.rot{background:var(--rot-bg)}
.p-stufe b{font-size:18px} .p-stufe.gruen b{color:var(--gruen)} .p-stufe.gelb b{color:var(--gelb)} .p-stufe.rot b{color:var(--rot)}
.p-was{font-size:13px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-2)}
.p-zeit{font-size:14px; color:var(--ink)}
.p-mass{margin:10px 0 0; font-size:15.5px; line-height:1.4}
.p-link{background:none; border:none; color:var(--accent); font:inherit; font-size:16px; font-weight:600; padding:12px 0; cursor:pointer}
.p-auswahl-liste{display:grid; gap:8px; margin:12px 0}
.p-wahl{display:flex; align-items:center; gap:12px; background:var(--surface); border:2px solid var(--line); border-radius:var(--radius); padding:12px 14px; min-height:52px; cursor:pointer}
.p-wahl input{width:24px; height:24px; flex:none}
.p-wahl:has(input:checked){border-color:var(--accent)}
.p-formular{display:grid; gap:6px; margin:12px 0}
.p-formular label{font-weight:600; margin-top:8px}
.p-formular textarea,.p-formular input,.p-formular select{font-size:17px; min-height:48px}
.pm-vorschau img{max-width:100%; max-height:260px; border-radius:var(--radius); display:block; margin:8px 0}
#dlg-rolle{max-width:460px; width:calc(100% - 32px); border:none; border-radius:var(--radius); padding:20px 22px; background:var(--surface); color:var(--ink)}
#dlg-rolle::backdrop{background:rgba(0,0,0,.45)}
#dlg-rolle h2{margin:0 0 8px; font-size:20px}
#dlg-rolle p{font-size:14.5px; color:var(--ink-2); margin:0 0 6px}
.p-formular textarea,.p-formular input,.p-formular select,.p-standort input{font-family:inherit}
.p-feldname{font-weight:600; margin-top:8px}
.pm-foto-knopf{display:flex; align-items:center; justify-content:center; cursor:pointer}
.pm-foto-feld{position:absolute; width:1px; height:1px; opacity:0; pointer-events:none}
.pm-foto-feld:focus-visible + *, .pm-foto-knopf:focus-within{outline:2px solid var(--accent)}

/* ---------- Einrichtungs-Link ---------- */
.ei-zeile{margin-top:12px}
.p-profil{font-size:14px; color:var(--ink-2); margin:0 0 8px}
.p-meldung{background:var(--gruen-bg); color:var(--ink); border-radius:var(--radius); padding:12px 14px; font-weight:600; margin:0 0 12px}
.p-meldung.fehler{background:var(--rot-bg)}
.p-gruppe{border:none; padding:0; margin:0 0 6px; display:grid; gap:8px}
.p-gruppe legend{font-weight:700; font-size:15px; color:var(--ink-2); padding:6px 0 2px}
#dlg-einrichten{max-width:560px; width:calc(100% - 24px); max-height:calc(100dvh - 24px); overflow:auto; border:none;
  border-radius:var(--radius); padding:20px 22px; background:var(--surface); color:var(--ink); font-size:16px}
#dlg-einrichten::backdrop{background:rgba(0,0,0,.45)}
#dlg-einrichten h2{margin:0 0 6px; font-size:20px}
#dlg-einrichten > p{font-size:14.5px; color:var(--ink-2); margin:0 0 8px}
#dlg-einrichten .p-feldname{display:block; margin:14px 0 6px}
#dlg-einrichten input[type=text]{width:100%; font-size:16px; min-height:46px; box-sizing:border-box}
.ei-zeit{display:flex; align-items:center; gap:10px}
.ei-zeit select{font-size:16px; min-height:46px; flex:1}

/* Gewerke-Auswahl: „Fertig“ bleibt beim Scrollen unten sichtbar */
#p-auswahl-fertig{position:sticky; bottom:12px; width:100%; z-index:2; box-shadow:0 4px 16px rgba(0,0,0,.18)}
#p-auswahl-zurueck{padding-top:4px}
.p-warn{font-weight:700; color:var(--rot, #b3261e)}

/* Schlechtwetter-Nachweis */
.sw-zeit{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.formular .sw-zeit input{width:auto; min-width:0; flex:1 1 110px}
.sw-tabelle{overflow-x:auto; margin-top:10px}
.sw-tabelle table{border-collapse:collapse; font-size:13.5px; width:100%; font-variant-numeric:tabular-nums}
.sw-tabelle th, .sw-tabelle td{padding:4px 8px; text-align:right; border-bottom:1px solid var(--line); white-space:nowrap}
.sw-tabelle th:first-child, .sw-tabelle td:first-child{text-align:left}
.sw-tabelle tr.ausfall td{background:var(--gelb-bg)}
.sw-summe{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:4px 0 10px}
.sw-summe div{background:var(--surface-2, var(--bg)); border:1px solid var(--line); border-radius:var(--radius); padding:8px 10px}
.sw-summe b{display:block; font-size:18px; font-variant-numeric:tabular-nums}
.sw-summe span{font-size:13px; color:var(--ink-3)}

/* Bautagesbericht */
.tb-h{font-size:13px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-3); margin:18px 0 6px}
.tb-personal-kopf, .tb-zeile{display:grid; grid-template-columns:76px minmax(0,1fr) 36px; gap:6px 8px; align-items:center}
.tb-personal-kopf{font-size:13px; color:var(--ink-3); margin-bottom:4px}
.tb-zeile{margin-bottom:6px}
.tb-zeile .tb-firma{grid-column:1 / -1}
.tb-firma-block{padding:10px 0; border-bottom:1px solid var(--line)}
.tb-firma-block:last-child{border-bottom:none}
.tb-zeile input{font:inherit; font-size:14px; padding:9px 10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); min-width:0; width:100%}
.tb-zeile input.tb-soll{text-align:center}
.tb-ist{display:grid; grid-template-columns:38px minmax(0,1fr) 38px; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--surface)}
.tb-ist button{font:inherit; font-size:20px; line-height:1; border:none; background:var(--bg); color:var(--ink); cursor:pointer; min-height:40px}
.tb-ist button:active{background:var(--line)}
.tb-ist output{display:flex; align-items:center; justify-content:center; font-weight:700; font-size:16px; font-variant-numeric:tabular-nums}
.tb-ist.unter output{color:var(--rot)}
.tb-weg{border:none; background:none; color:var(--ink-3); font-size:20px; cursor:pointer; min-height:40px}
.tb-voll{font-size:14px; color:var(--accent); background:none; border:none; cursor:pointer; padding:2px 0; text-align:center}
.tb-sollist-zeile{padding:8px 0; border-bottom:1px solid var(--line)}
.tb-sollist-zeile:last-child{border-bottom:none}

/* Problem melden: Stillstand */
.pm-stillstand{border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px 12px; margin:10px 0 4px; display:grid; gap:6px}
.pm-stillstand legend{font-weight:700; padding:0 4px}
.pm-stillstand legend .p-hinweis{font-weight:400; font-size:14px}
.pm-grund{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px}
.pm-grund label{display:flex; align-items:center; gap:8px; border:2px solid var(--line); border-radius:var(--radius); padding:10px; font-size:15px; font-weight:500; margin:0; cursor:pointer; background:var(--surface); min-height:48px}
.pm-grund label:has(input:checked){border-color:var(--accent)}
.pm-grund input{width:20px; height:20px; min-height:0; flex:none; accent-color:var(--accent)}
.pm-zwei{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:10px; align-items:end}
.pm-zwei input{width:100%}
.pm-anzahl{min-height:48px}
.pm-opt{font-weight:400; color:var(--ink-2)}
.pm-stillstand .datum-zeit .dz input{min-height:48px; font:inherit; font-weight:400; font-size:16px; padding:9px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink)}
.pm-stillstand .datum-zeit .dz input:focus{outline:2px solid var(--accent); outline-offset:-1px; border-color:var(--accent)}
.pm-stillstand .datum-zeit .dz>span{font-weight:400}
.pm-anzahl button{min-height:48px}
@media(max-width:380px){ .pm-grund{grid-template-columns:minmax(0,1fr)} }
.pm-tb{display:flex; align-items:center; gap:8px; font-weight:500 !important; margin-top:4px !important}
.pm-tb input{width:20px; height:20px; min-height:0}

/* Planstand (Polier) */
.p-planstand{margin-top:18px; padding:12px 14px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius)}
.p-planstand input{width:100%; font:inherit; font-size:17px; min-height:48px; padding:10px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink)}
.p-plan-liste{list-style:none; margin:10px 0 0; padding:0; display:grid; gap:4px; max-height:320px; overflow:auto}
.p-plan-liste li{padding:8px 10px; border-radius:var(--radius); background:var(--bg); font-variant-numeric:tabular-nums}
.p-plan-liste li.leer{background:none; color:var(--rot); font-weight:600}
#ei-plaene{width:100%; font:inherit; font-size:15px; padding:9px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); resize:vertical}

/* Tätigkeiten & Wochenplanung */
.tk-karte{border-left-color:var(--accent)}
.tk-karte h3{margin:10px 0 8px}
.tk-wahl{display:flex; flex-wrap:wrap; gap:6px; margin-top:8px}
.tk-chip{font:inherit; font-size:15px; font-weight:600; padding:9px 14px; min-height:44px; border-radius:999px; border:2px solid var(--line); background:var(--surface); color:var(--ink); cursor:pointer}
.tk-chip[aria-pressed="true"]{border-color:var(--accent); background:var(--accent); color:#fff}
.tk-chip:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.tk-woche{display:grid; grid-template-columns:repeat(auto-fill,minmax(64px,1fr)); gap:6px; margin-top:12px}
.tk-tag{border-radius:var(--radius); padding:8px 4px; text-align:center; display:flex; flex-direction:column; gap:1px; border:2px solid transparent; font-variant-numeric:tabular-nums}
.tk-tag.gruen{background:var(--gruen-bg)} .tk-tag.gelb{background:var(--gelb-bg)} .tk-tag.rot{background:var(--rot-bg)}
.tk-tag b{font-size:20px} .tk-tag.gruen b{color:var(--gruen)} .tk-tag.gelb b{color:var(--gelb)} .tk-tag.rot b{color:var(--rot)}
.tk-tag.beste{border-color:var(--ink)}
.tk-wt{font-weight:700; font-size:14px} .tk-dm, .tk-fs{font-size:13px; color:var(--ink-2)}

/* Briefkopf */
#dlg-briefkopf{max-width:620px; width:calc(100% - 32px)}
.bk-logo-vorschau{margin-top:6px}
.bk-logo-vorschau img{max-height:48px; max-width:200px; display:block; background:#fff; padding:4px; border:1px solid var(--line); border-radius:6px}
.bk-knoepfe{flex-wrap:wrap; gap:8px}
.bk-leiste{font-size:14px; color:var(--ink-3); margin:0 0 6px}
.bk-leiste .p-link{font-size:14px; padding:0 4px}
body.rolle-polier .bk-leiste{display:none !important}
.bk-knoepfe{display:flex}

/* Amtliche Warnungen (DWD) – Farben der DWD-Warnstufen */
:root{--w1:#d9a400; --w1-bg:#fff7d6; --w2:#e06a00; --w2-bg:#ffead6; --w3:#c0182a; --w3-bg:#fde2e4; --w4:#8e1d8e; --w4-bg:#f6e1f6}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){--w1-bg:#2d2610; --w2-bg:#301d0c; --w3-bg:#321418; --w4-bg:#2c1430} }
:root[data-theme="dark"]{--w1-bg:#2d2610; --w2-bg:#301d0c; --w3-bg:#321418; --w4-bg:#2c1430}
.warnungen{margin:0 0 14px}
.warn-liste{display:grid; gap:8px}
.warn{border-radius:var(--radius); border-left:8px solid var(--w1); background:var(--w1-bg); padding:10px 12px}
.warn.w2{border-left-color:var(--w2); background:var(--w2-bg)} .warn.w3{border-left-color:var(--w3); background:var(--w3-bg)} .warn.w4{border-left-color:var(--w4); background:var(--w4-bg)}
.warn summary{cursor:pointer; display:flex; flex-direction:column; gap:2px; list-style:none}
.warn summary::-webkit-details-marker{display:none}
.warn-stufe{font-size:12px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--w1)}
.warn.w2 .warn-stufe{color:var(--w2)} .warn.w3 .warn-stufe{color:var(--w3)} .warn.w4 .warn-stufe{color:var(--w4)}
.warn b{font-size:16px; color:var(--ink)}
.warn-zeit{font-size:14px; color:var(--ink-2)}
.warn p{margin:8px 0 0; font-size:14px; line-height:1.45; color:var(--ink)}
.warn-bau{font-weight:600}
.warn-dwd{color:var(--ink-2)}
.warn-quelle, .warn-info{font-size:14px; color:var(--ink-2); margin:4px 0 0}
.warn-keine span{display:inline-block}
#polier-ansicht .warn b{font-size:18px}

details.tk-karte > summary{cursor:pointer; list-style:none; display:flex; flex-direction:column; gap:2px}
details.tk-karte > summary::-webkit-details-marker{display:none}
.tk-titel{font-weight:700; font-size:17px}
.tk-titel::after{content:" ▸"; color:var(--ink-3)}
details.tk-karte[open] .tk-titel::after{content:" ▾"}
.tk-kurz{font-size:14.5px; color:var(--ink-2)}

/* Kopfzeile: Symbolknöpfe */
.ikon-knopf{padding:6px 10px; min-height:36px; min-width:36px; justify-content:center}
.ikon-knopf svg{width:18px; height:18px; flex:none}
.ikon-knopf .i-mond{display:none}
:root[data-theme="dark"] .ikon-knopf .i-sonne{display:none}
:root[data-theme="dark"] .ikon-knopf .i-mond{display:block}
.toggle:focus-visible{outline:2px solid #fff; outline-offset:2px}
@media(max-width:640px){ .ikon-text{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap} }
.einst-knoepfe{display:flex; flex-wrap:wrap; gap:8px; margin:4px 0 14px}
.einst-h{font-size:14px; margin:0 0 6px}

/* ---------- Polier: Standort als Zeile ---------- */
.p-ort-zeile{display:flex; align-items:center; gap:10px; font-size:15px; color:var(--ink-2); padding:2px 0}
.p-ort-zeile b{color:var(--ink)}
.p-ort-zeile .p-link{margin-left:auto; padding:10px 0 10px 12px; font-size:15px}

/* ---------- Polier: feste Aktionsleiste unten (Daumenbereich) ---------- */
.p-aktionsleiste{position:fixed; left:0; right:0; bottom:0; z-index:30; background:var(--surface); border-top:1px solid var(--line);
  box-shadow:0 -4px 16px rgba(20,25,30,.08); padding:8px max(12px,env(safe-area-inset-left,0px)) calc(10px + env(safe-area-inset-bottom,0px));
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px}
@media(min-width:760px){ .p-aktionsleiste{left:50%; right:auto; width:720px; transform:translateX(-50%); border-radius:16px 16px 0 0; border:1px solid var(--line); border-bottom:none} }
.p-akt{font:inherit; min-height:60px; border-radius:12px; border:none; cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; font-size:15px; font-weight:700; padding:6px 4px}
.p-akt svg{width:22px; height:22px}
.p-akt.haupt{background:var(--accent); color:#fff}
.p-akt.zweit{background:var(--anthra); color:#fff}
.p-akt.dritt{background:var(--bg); color:var(--ink); border:1px solid var(--line)}
.p-akt:active{transform:translateY(1px)}
.p-akt:focus-visible{outline:3px solid var(--ink); outline-offset:2px}
:root[data-theme="dark"] .p-akt.zweit{background:#3a3f46}
/* Platz schaffen, damit die Leiste nichts verdeckt */
body.rolle-polier:not([data-polier-seite]) main{padding-bottom:110px}

/* ---------- Polier: Blatt „Mehr“ ---------- */
.p-blatt{border:none; padding:10px 14px calc(18px + env(safe-area-inset-bottom,0px)); margin:auto auto 0; width:100%; max-width:720px;
  border-radius:18px 18px 0 0; background:var(--surface); color:var(--ink); font-size:17px}
.p-blatt::backdrop{background:rgba(0,0,0,.4)}
.p-blatt-griff{width:42px; height:4px; border-radius:2px; background:var(--line); margin:0 auto 12px}
.p-blatt-liste{display:grid; gap:8px; margin-bottom:10px}
.p-blatt-liste button{font:inherit; text-align:left; display:grid; gap:2px; background:var(--bg); color:var(--ink); border:1px solid var(--line); border-radius:12px; padding:13px 16px; min-height:60px; cursor:pointer}
.p-blatt-liste button b{font-size:17px}
.p-blatt-liste button span{font-size:14px; color:var(--ink-2)}
.p-blatt-liste button:focus-visible{outline:3px solid var(--accent); outline-offset:1px}
.p-blatt .p-knopf{width:100%}
@media (prefers-reduced-motion:no-preference){ .p-blatt[open]{animation:p-hoch .18s ease-out} @keyframes p-hoch{from{transform:translateY(40px); opacity:.6}to{transform:none; opacity:1}} }
.p-planstand .p-titel{margin-top:0}

/* ---------- KI-Unterstützung ---------- */
.ki-einst select,.ki-einst input[type=password]{width:100%; font:inherit; min-height:44px; padding:8px 10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink)}
.ki-schalter{display:flex; gap:10px; align-items:center; font-weight:600; min-height:44px}
.ki-schalter input{width:22px; height:22px}
.ki-block{display:grid; gap:6px; border:1px dashed var(--accent); border-radius:var(--radius); padding:10px 12px; margin-bottom:6px; background:var(--surface)}
.ki-block label{margin-top:0}
.ki-block textarea{width:100%; box-sizing:border-box; min-height:96px}
.ki-block[hidden]{display:none}
.ki-knoepfe{display:flex; gap:8px; flex-wrap:wrap; margin-top:8px}
.ki-knoepfe .btn{flex:1 1 140px; min-height:48px}
.ki-status{white-space:pre-line}
.ki-status:empty{display:none}
.ki-status.fehler{color:var(--rot, #b91c1c)}
.ki-status.ok{color:var(--gruen, #15803d)}
#pm-sprechen.laeuft{background:var(--accent); color:#fff; border-color:var(--accent)}
.ki-gefuellt{outline:2px solid var(--accent); outline-offset:1px; transition:outline-color 1.5s}
.ki-formulieren{margin:4px 0 8px; font-size:14px; padding:6px 0}
.ki-formulieren[hidden]{display:none}
.ki-vorschlag{border:1px solid var(--accent); border-radius:var(--radius); padding:10px 12px; margin:0 0 10px; background:var(--surface)}
.ki-vorschlag p{margin:0 0 8px; white-space:pre-wrap}
.ki-vorschlag .knopfpaar{margin-top:6px}
.ls-foto-knopf{display:block; text-align:center; margin-bottom:8px}
.ls-eintrag{border-top:1px solid var(--line-2); padding:8px 0; font-size:14px}
.ls-eintrag:first-child{border-top:none}
.ls-eintrag b{display:block}
.ls-eintrag .p-link{font-size:14px; padding:4px 0}
.ls-ki-knopf{display:block; width:100%; margin-bottom:8px; min-height:48px}
.ls-ki-knopf[hidden]{display:none}

/* ---------- Fertig / gespeichert ---------- */
.fertig-knopf{display:block; width:100%; min-height:52px; margin-top:12px; font-size:16px}
.btn.ist-fertig,.btn.ist-fertig:disabled{background:var(--gruen); border-color:var(--gruen); color:#fff; opacity:1}
.fertig-marke{color:var(--gruen); font-weight:700; font-size:14px}
.offen-marke{color:var(--ink-2); font-size:14px}
.p-akt{position:relative}
.p-akt-haken{position:absolute; top:4px; right:10px; width:20px; height:20px; border-radius:50%; background:var(--gruen); color:#fff; font-size:13px; line-height:20px; text-align:center; border:2px solid #fff}
.p-akt-haken[hidden]{display:none}

/* ---------- Baustoffe ---------- */
.badge.datenblatt{background:var(--gruen-bg); color:var(--gruen)}
.bf-zeiten{border:1px solid var(--line); border-radius:var(--radius); padding:8px 12px 10px; margin:6px 0 10px; min-width:0}
.bf-zeiten legend{font-size:14px; color:var(--ink-2); font-weight:500; padding:0 4px}
.bf-zeile{display:grid; grid-template-columns:70px minmax(0,1fr) minmax(0,1fr); gap:8px; margin-top:6px}
.bf-zeile input{font:inherit; font-size:14px; padding:8px 10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); min-width:0; width:100%; box-sizing:border-box}
.bf-kopf span{font-size:13px; color:var(--ink-3)}
.formular .row input#bf-regenfestH, .formular .row input#bf-schutzH{width:120px}
.bf-listentitel{font-size:14px; margin:18px 0 6px}
.bf-eintrag{border-top:1px solid var(--line-2); padding:10px 0}
.bf-eintrag .bf-name{font-weight:600; font-size:14px; display:flex; flex-wrap:wrap; gap:6px; align-items:center}
.bf-eintrag .bf-info{font-size:14px; color:var(--ink-2); margin-top:2px}
.bf-knoepfe{display:flex; gap:14px}
.bf-knoepfe .p-link{font-size:14px; padding:10px 0; min-height:44px}
#tab-baustoffe span.fld{font-size:14px; color:var(--ink-2); font-weight:500}
.nur-vorlesen{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0}
.bp-stufe{margin-bottom:10px}
.bp-stufe b{font-size:20px}
.bp-punkte{list-style:none; padding:0; margin:0 0 10px; display:grid; gap:6px}
.bp-punkte li{display:flex; gap:8px; align-items:flex-start; font-size:14px; line-height:1.4}
.bp-punkte .dot{margin-top:6px; flex:none}
.dot.info{background:var(--ink-3)}
.bp-block{font-size:15px; line-height:1.45; margin:10px 0 0; padding-top:10px; border-top:1px solid var(--line-2)}
.bp-block p{margin:0 0 6px}
.bp-werte{font-size:14px; color:var(--ink-2); margin:0 0 8px}

/* ---------- So rechnet TAKT ---------- */
.rr{padding:0; margin-bottom:14px}
.rr > summary{cursor:pointer; padding:14px 16px; display:flex; flex-wrap:wrap; gap:4px 10px; align-items:baseline}
.rr > summary:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.rr[open] > summary{border-bottom:1px solid var(--line-2)}
#rr-liste{padding:4px 16px 12px}
.rr-eintrag{padding:12px 0; border-bottom:1px solid var(--line-2)}
.rr-eintrag:last-child{border-bottom:none}
.rr-eintrag h3{font-size:15px; margin:0 0 2px}
.rr-eintrag p{margin:6px 0 0; font-size:13.5px; line-height:1.5}
.rr-wo{color:var(--ink-2); font-size:13.5px !important; margin-top:0 !important}
.rr-formel{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:13px !important; background:var(--bg); border:1px solid var(--line-2); border-radius:var(--radius); padding:8px 10px; overflow-wrap:anywhere}
.rr-meta{color:var(--ink-2); font-size:14px !important}

/* ---------- KI: Texte eines Formulars verbessern ---------- */
.ki-block{margin:4px 0 10px}
.ki-block .ki-alle{font-size:15px; padding:8px 0}
.ki-paar{margin:10px 0; font-size:14.5px; line-height:1.45}
.ki-paar > b{display:block; margin-bottom:4px}
.ki-alt, .ki-neu{border-radius:var(--radius); padding:8px 10px; white-space:pre-wrap; overflow-wrap:anywhere}
.ki-alt{background:var(--line-2); color:var(--ink-2)}
.ki-neu{background:var(--gruen-bg); color:var(--ink); margin-top:4px}
.ki-alt span, .ki-neu span{display:block; font-size:11px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; color:var(--ink-3); margin-bottom:2px}
body.rolle-polier #tb-eingang-karte{display:none}
.tb-ein-text{white-space:pre-wrap; overflow-wrap:anywhere; font-family:inherit; font-size:14px; line-height:1.5; background:var(--bg); border:1px solid var(--line-2); border-radius:var(--radius); padding:10px 12px; margin:8px 0 0}

/* ---------- Briefkasten & Abgleich (v1.29) ---------- */
body:not(.rolle-polier) #tb-senden{display:none}
.sync-status{margin:4px 0 10px; font-size:15px}
.sync-fehler{color:var(--rot, #b91c1c)}
.sync-einst textarea{width:100%; font:inherit; font-size:14px; padding:8px 10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); box-sizing:border-box}
.sync-einst .btn{margin-top:6px}
.sync-linkbox{border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px; margin:10px 0; background:var(--surface-2, var(--surface))}
.sync-zugang{display:flex; justify-content:space-between; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--line); font-size:14px}
.sync-zugang.gesperrt{opacity:.6}
.sync-einfuegen{margin-top:12px}
.eingang-karte{padding:14px 16px; margin-bottom:16px}
.eingang-kopf h2{font-size:17px; margin:0 0 8px}
.eingang-zahl{display:inline-block; background:var(--accent); color:#fff; border-radius:999px; padding:1px 9px; font-size:13px; margin-left:6px; vertical-align:middle}
.eingang-eintrag{padding:10px 0; border-top:1px solid var(--line); font-size:15px}
.eingang-eintrag.neu b{color:var(--ink)}
.eingang-eintrag .aktionen{display:flex; gap:8px; flex-wrap:wrap; margin-top:8px}
.ein-kopf{display:flex; align-items:flex-start; justify-content:space-between; gap:8px; width:100%; background:none; border:0; padding:0; margin:0; font:inherit; color:inherit; text-align:left; cursor:pointer}
.ein-kopf:focus-visible,.ein-karte-knopf:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:4px}
.ein-kopf-rechts{display:flex; align-items:center; gap:6px; flex:none}
.eingang-eintrag.zu .ein-kopf b{display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden; font-weight:600}
.ein-koerper{display:grid}
.ein-ki-kurz{font-size:12px; color:var(--gruen,#2E7D32); font-weight:600; white-space:nowrap}
.ein-pfeil{width:8px; height:8px; border-right:2px solid var(--ink-2); border-bottom:2px solid var(--ink-2); transform:rotate(45deg); margin:0 4px 3px; flex:none; transition:transform .15s}
[aria-expanded="true"] .ein-pfeil{transform:rotate(-135deg); margin-bottom:-3px}
.ein-karte-knopf{display:flex; align-items:center; gap:10px; width:100%; background:none; border:0; padding:0; font:inherit; color:inherit; text-align:left; cursor:pointer}
.ein-karte-knopf>span:first-child{flex:1}
.ein-zu-info{font-size:13px; font-weight:400; color:var(--ink-2)}
@media (prefers-reduced-motion:reduce){ .ein-pfeil{transition:none} }
.ein-marke{flex:none; font-size:12px; font-weight:600; border-radius:999px; padding:1px 8px; background:var(--line); color:var(--ink)}
.ein-marke.neu{background:var(--accent); color:#fff}
.ein-felder{display:grid; grid-template-columns:auto minmax(0,1fr); gap:3px 12px; margin:6px 0 0; font-size:14.5px}
.ein-felder dt{color:var(--ink-2)}
.ein-felder dd{margin:0; overflow-wrap:anywhere}
.eingang-eintrag .ein-von{margin-top:4px; font-size:13px}
.ein-ki{margin:8px 0 0; padding:6px 10px; border-left:3px solid var(--gruen,#2E7D32); background:var(--gruen-bg,rgba(46,125,50,.08)); border-radius:4px; font-size:14px; line-height:1.4}
.ein-ki.keins{border-left-color:var(--line); background:transparent}
.ein-ki.laeuft{border-left-color:var(--line); color:var(--ink-2); background:transparent}
.ein-ki-zusatz{color:var(--ink-2); font-size:13px}
.btn.ein-vorschlag{box-shadow:0 0 0 3px var(--gruen,#2E7D32); outline:2px solid var(--surface); outline-offset:0}
.eingang-berichte{margin:10px 0 0; font-size:14px}
/* Erledigte Meldungen im Eingang (zugeklappt, Wieder öffnen, Sprung zur Übersicht) */
.ein-erledigt{margin-top:10px; border-top:1px solid var(--line)}
.ein-erl-knopf{display:flex; align-items:center; gap:10px; width:100%; min-height:44px; background:none; border:0; padding:6px 0; font:inherit; font-size:15px; font-weight:600; color:var(--ink-2); text-align:left; cursor:pointer}
.ein-erl-knopf>span:first-child{flex:1}
.ein-erl-knopf:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:4px}
.ein-erl-zahl{font-weight:400}
.ein-erl-zeile{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 0; border-top:1px solid var(--line-2); font-size:14.5px}
.ein-erl-text{display:grid; gap:2px; min-width:0}
.ein-erl-text b{font-weight:600; overflow-wrap:anywhere}
.ein-erl-text .mess-info{margin:0; font-size:13px}
.ein-erl-zeile .btn{flex:none}
.ein-erl-alle{margin:8px 0 0}
.p-ausgang{margin-top:12px}
.p-ausgang-zeile{display:flex; justify-content:space-between; gap:10px; padding:6px 0; border-top:1px solid var(--line); font-size:14px}
.p-ausgang-status.wartet{color:var(--gelb, #a16207)}
.p-ausgang-status.zugestellt,.p-ausgang-status.übernommen,.p-ausgang-status.uebernommen{color:var(--gruen, #15803d)}
#btnEingang{position:relative}
body.rolle-polier #btnEingang{display:none}
.eingang-punkt{position:absolute; top:-4px; right:-4px; min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:var(--rot, #b91c1c); color:#fff; font-size:11px; font-weight:700; line-height:18px; text-align:center; box-sizing:border-box}
/* Baustellen-Profil */
.profil-form{display:flex; flex-direction:column; gap:4px; margin:10px 0}
.profil-form .fld{margin-top:10px; font-weight:700; font-size:14px; color:var(--ink-2)}
.pf-ort #pf-ort-text{display:block; margin-bottom:4px}
.profil-form input, .profil-form select, .profil-form textarea{font:inherit; font-size:15px; padding:9px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--ink); width:100%; box-sizing:border-box}
.profil-form textarea{resize:vertical}
.feld-hinweis{font-size:14px; color:var(--ink-2); line-height:1.35; margin-bottom:2px}
.pf-ort{padding:8px 0}
.pf-ort .knopfpaar{display:flex; flex-wrap:wrap; margin-top:6px}
.profil-tabelle th{width:34%}
.profil-hinweis{padding:14px 16px; margin-bottom:16px; font-size:14px; line-height:1.4; border-left:4px solid var(--akzent,#c2410c)}
.stamm-kurz{font-weight:400; color:var(--ink-2)}
.stamm-info{font-size:14px; color:var(--ink-2); max-width:none}
.stamm-info .btn{margin-left:4px; vertical-align:baseline}
.ort-warnung{font-weight:500; font-size:14px}
.ort-warnung .knopfpaar{grid-template-columns:auto; justify-content:start}
/* Übersicht der Baustelle */
body:not(.rolle-polier) :is(#tb-excel,#bh-reg-excel,#sw-reg-excel,#ls-excel,#tl-excel){display:none}
body.rolle-polier .zur-ue{display:none}
.ue-kopf h2{margin:0}
.ue-inhalt{padding:12px 14px}
.ue-zeitraum-zeile{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:4px}
.ue-zeitraum-zeile select, .ue-zeitraum-zeile input, .ue-auswahl input[type=month]{font:inherit; font-size:15px; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--ink)}
.ue-knoepfe{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px}
.ue-auswahl{margin-top:12px; padding:12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--line-2)}
.ue-haken{display:flex; flex-direction:column; gap:6px}
.ue-haken-zeile{display:flex; gap:8px; align-items:center; font-size:15px}
.ue-haken-zeile input{width:20px; height:20px; margin:0}
.ue-liste{margin-bottom:10px; padding:0}
.ue-liste > summary{padding:14px 16px; cursor:pointer; font-size:16px; list-style-position:inside}
.ue-name{font-weight:700}
.ue-zahl{display:inline-block; min-width:24px; padding:1px 8px; border-radius:12px; background:var(--line-2); color:var(--ink-2); font-size:14px; font-weight:700; text-align:center}
.ue-marke{display:inline-block; padding:0 7px; border-radius:10px; background:var(--line-2); color:var(--ink-2); font-size:12.5px; font-weight:600; vertical-align:1px}
.ue-marke.neu{background:var(--rot,#b91c1c); color:#fff}
.ue-status{font-size:14px; color:var(--ink-2)}
.ue-status.warn{color:var(--rot,#b91c1c); font-weight:600}
.ue-zeilen{border-top:1px solid var(--line)}
.ue-zeile{display:flex; gap:12px; width:100%; text-align:left; background:none; border:0; border-bottom:1px solid var(--line-2); padding:10px 16px; font:inherit; color:var(--ink); cursor:pointer}
.ue-zeile:hover{background:var(--line-2)}
.ue-datum{flex:0 0 92px; font-size:14px; color:var(--ink-2); padding-top:1px}
.ue-text{flex:1; min-width:0; font-size:15px; line-height:1.35}
.ue-info{display:block; font-size:14px; color:var(--ink-2); margin-top:2px; overflow-wrap:anywhere}
.ue-leer{padding:0 16px 14px; margin:0}
/* Baustellen-Info */
.ue-sicht{margin-top:14px; padding-top:12px; border-top:1px solid var(--line)}
.ue-sicht-chips{display:flex; flex-wrap:wrap; gap:6px}
.ue-poliere{font-size:13px; color:var(--ink-2); font-weight:500; white-space:nowrap}
.bi-karte .bi-abschnitt{margin:6px 0 12px}
.bi-karte h3{font-size:16px; margin:10px 0 6px}
.bi-zusatz{font-size:13px; font-weight:600; color:var(--rot,#b91c1c)}
.bi-zeile{padding:8px 0; border-bottom:1px solid var(--line-2)}
.bi-kopf{font-weight:700; font-size:15px}
.bi-text{font-size:14.5px; color:var(--ink); margin-top:2px; overflow-wrap:anywhere}
.bi-fuss{font-size:14px; color:var(--ink-2); margin-top:2px}
.bi-fuss .st-offen{color:var(--rot,#b91c1c)}
.bi-fuss .st-ok{color:var(--gruen,#15803d)}
.bi-fuss .st-neutral{color:var(--ink)}
.ue-zeile-rahmen{display:flex; align-items:center; gap:8px; border-bottom:1px solid var(--line-2); padding-right:12px}
.ue-zeile-rahmen .ue-zeile{border-bottom:0}
.ue-aktion{flex:0 0 auto}
.p-ausgang-status.erledigt{color:var(--gruen, #15803d)}
.p-ausgang-status.wieder-offen{color:var(--gelb, #a16207)}
/* Mitteilungen an Poliere */
.mt-karte{border-left:4px solid var(--akzent,#c2410c)}
.mt-karte .p-titel{margin:0 0 8px}
.mt-eintrag{padding:10px 0; border-bottom:1px solid var(--line-2)}
.mt-eintrag.wichtig{border-left:4px solid var(--rot,#b91c1c); padding-left:10px; background:var(--rot-bg,#fef2f2)}
.mt-text{font-size:16px; line-height:1.4; margin:4px 0; white-space:pre-wrap; overflow-wrap:anywhere}
.mt-gelesen{margin-top:8px; width:100%}
.mt-frueher > summary{cursor:pointer; padding:8px 0; font-weight:600; color:var(--ink-2)}
.mt-aus{opacity:.55}
#dlg-mitteilung textarea, #dlg-mitteilung input[type=text]{font:inherit; font-size:15px; padding:9px 12px; border:1px solid var(--line); border-radius:8px; width:100%; box-sizing:border-box; background:var(--surface); color:var(--ink)}
.p-ausgang-status.gelesen{color:var(--gruen, #15803d)}
/* Sprechen an Feldern + Markierung fehlender Angaben */
.diktat-feld{display:flex; gap:6px; align-items:flex-start; min-width:0; width:100%}
.diktat-feld > input, .diktat-feld > textarea{flex:1; min-width:0}
.diktat-knopf{flex:0 0 auto; width:40px; height:40px; border-radius:50%; border:1px solid var(--line); background:var(--surface); font-size:18px; line-height:1; cursor:pointer; padding:0}
.diktat-knopf.laeuft{background:var(--rot,#b91c1c); color:#fff; border-color:var(--rot,#b91c1c); animation:diktat-puls 1.2s infinite}
@keyframes diktat-puls{50%{box-shadow:0 0 0 6px rgba(185,28,28,.25)}}
.diktat-status{grid-column:1 / -1; font-size:14px; color:var(--ink-2); margin:2px 0 4px}
.formular > .diktat-status{grid-column:2}
.diktat-status.fehler{color:var(--rot,#b91c1c)}
.ki-fehlt{outline:2px solid var(--rot,#b91c1c) !important; outline-offset:1px; background:var(--rot-bg,#fef2f2) !important}
.ki-pruefen{outline:2px solid var(--gelb,#ca8a04) !important; outline-offset:1px; background:#fefce8 !important}
.ki-marke{margin:4px 0 8px; font-size:14px; font-weight:700; line-height:1.3}
.formular > .ki-marke{grid-column:2}
.ki-marke.fehlt{color:var(--rot,#b91c1c)}
.ki-marke.pruefen{color:#a16207}
.tb-erzaehlen-block{margin:10px 0 14px}
.tb-erzaehlen-block #tb-erzaehlen{width:100%}
.tb-erzaehlen-block #tb-erzaehlen.laeuft{background:var(--rot,#b91c1c)}
.tb-verstanden summary{cursor:pointer; font-size:14px; color:var(--ink-2)}
.tb-verstanden p{font-size:14px; white-space:pre-wrap}
@media (max-width:640px){ .formular > .diktat-status, .formular > .ki-marke{grid-column:1 / -1} }
.ki-zusammen{margin:8px 0 10px; padding:10px 12px; border:2px solid var(--rot,#b91c1c); border-radius:8px; background:var(--rot-bg,#fef2f2); color:var(--ink); font-size:15px; line-height:1.4}
.ki-zusammen b{color:var(--rot,#b91c1c)}
/* Scan-Import Lieferscheine */
.ls-import{margin-bottom:16px}
.ls-scan-knopf{width:100%; text-align:center}
.ls-dateien{list-style:none; padding:0; margin:0 0 10px; font-size:14.5px}
.ls-datei{padding:3px 0}
.ls-datei.fehler{color:var(--rot,#b91c1c)}
.ls-datei.ok{color:var(--gruen,#15803d)}
.ls-karten{display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:12px}
.ls-karte{border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px; background:var(--surface)}
.ls-karte.doppelt{opacity:.7; border-style:dashed}
.ls-karte-kopf{display:flex; flex-wrap:wrap; gap:6px; align-items:baseline; font-size:15px; cursor:pointer}
.ls-karte-kopf input{width:20px; height:20px; margin:0}
.ls-karte .formular{margin:8px 0}
.ls-karte .lsi-hinweis{width:100%; margin-top:4px}
.ls-doppelt{color:#a16207; font-weight:700; margin:6px 0; font-size:14px}
.ls-import-knoepfe{margin-top:14px}
.ls-zuordnung{font-size:14px; color:var(--ink-2)}
@media (max-width:560px){ .ls-karten{grid-template-columns:1fr} }
.bf-ki{margin:0 0 12px}
.bf-ki-knopf{width:100%; text-align:center}
/* Lieferfreigabe: Gründe sichtbar */
.lf-gruende{margin-top:10px; display:flex; flex-direction:column; gap:6px}
.lf-grund{font-size:15px; line-height:1.4; padding:8px 12px; border-radius:8px; border-left:4px solid var(--gelb); background:var(--gelb-bg)}
.lf-grund.rot{border-left-color:var(--rot); background:var(--rot-bg)}
.lf-grund.gruen{border-left-color:var(--gruen); background:var(--gruen-bg)}
/* Reifegrad: Prognose als Hauptaussage */
.rg-haupt{border-left:6px solid var(--gelb); padding:10px 14px; margin-bottom:10px; background:var(--surface)}
.rg-haupt-text{font-size:21px; font-weight:800; line-height:1.25; color:var(--ink)}
.rg-haupt-unter{font-size:14px; color:var(--ink-2); margin-top:4px}
.mess-aktiv{color:var(--accent); font-weight:700}
.day .d-grund{margin-top:6px; font-size:13.5px; line-height:1.3; color:var(--ink); text-align:left; hyphens:auto; overflow-wrap:anywhere}
/* Paket 2: Feldhinweise, Datum + Uhrzeit, Schriftform */
label.fld .fld-sub{display:block; font-size:13px; font-weight:400; color:var(--ink-2); line-height:1.3; margin-top:2px}
.formular .fld:has(.fld-sub){padding-top:6px}
.datum-zeit{gap:8px; flex-wrap:nowrap}
.datum-zeit input[type=date]{flex:1 1 60%; min-width:0}
.datum-zeit input[type=time]{flex:0 1 110px; min-width:90px}
.datum-zeit{align-items:flex-end}
.datum-zeit .dz{display:flex; flex-direction:column; gap:2px; min-width:0}
.datum-zeit .dz>span{font-size:12px; color:var(--ink-2); line-height:1.2}
.datum-zeit .dz-d{flex:1 1 60%}
.datum-zeit .dz-z{flex:0 1 130px; min-width:100px}
.formular .datum-zeit .dz input, .datum-zeit .dz input{flex:none; width:100%; min-width:0; box-sizing:border-box; min-height:40px}
.mess-info.schriftform{color:var(--ink); background:var(--gelb-bg); border-left:3px solid var(--gelb); padding:6px 10px; border-radius:4px}
/* Breite Inhalte (Tabellen) dürfen die Spalten nicht aufziehen – sie scrollen in ihrer Karte */
.grid-2 > *, .card, .panel{min-width:0}
.nb-quellen{display:flex; flex-wrap:wrap; gap:8px; align-items:center}
.nb-quellen select{flex:1 1 200px; min-width:0; font:inherit; font-size:14px; padding:8px 10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink)}
.nb-quelle-gesetzt{color:var(--ink) !important; background:var(--gruen-bg); padding:6px 10px; border-radius:6px}

/* ---------- Abnahme & Mängel ---------- */
.ab-abschnitt{font-size:16px; margin:18px 0 6px; padding-top:12px; border-top:1px solid var(--line); display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.ab-abschnitt .p-hinweis{font-weight:400; font-size:14px}
.ab-diktat-block{margin:6px 0 8px}
.ab-text-block{margin:6px 0 8px}
.ab-text-block summary{cursor:pointer; font-size:14px; color:var(--ink-2)}
.ab-text-block textarea{width:100%; font:inherit; font-size:14px; padding:9px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--ink); margin:6px 0}
.ab-mangel{border:1px solid var(--line); border-left:4px solid var(--gelb); border-radius:10px; padding:10px 12px; margin:10px 0; background:var(--surface)}
.ab-mangel.behoben{border-left-color:var(--gruen); opacity:.85}
.ab-m-kopf{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.ab-m-kopf .ab-m-weg{margin-left:auto}
.ab-mangel .formular{margin:8px 0 4px}
.ab-fotos{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:6px}
.ab-foto{position:relative; display:inline-block}
.ab-foto img{width:84px; height:84px; object-fit:cover; border-radius:8px; border:1px solid var(--line); cursor:zoom-in; background:var(--line-2); display:block}
.ab-foto-weg{position:absolute; top:-6px; right:-6px; width:28px; height:28px; border-radius:50%; border:1px solid var(--line); background:var(--surface); color:var(--ink); font-size:14px; line-height:1; cursor:pointer}
.ab-foto-knopf{position:relative; overflow:hidden; cursor:pointer}
.ab-foto-fehlt{font-size:14px; color:var(--ink-2); max-width:160px}
.ab-frist-alle{margin:10px 0 4px}
.ab-frist-alle .row{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:6px}
.ab-frist-alle input[type=date]{font:inherit; font-size:14px; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--ink)}
.ab-strafe-info{margin:2px 0 8px 28px; font-size:14px}
.ab-richtung-nu .ab-strafe{font-weight:700 !important}
.ab-hinweise{margin:8px 0}
.ab-us{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px}
@media(max-width:560px){ .ab-us{grid-template-columns:minmax(0,1fr)} }
.ab-us-feld{border:1px dashed var(--line); border-radius:10px; padding:10px; display:flex; flex-direction:column; gap:6px; align-items:flex-start}
.ab-us-bild{width:100%; max-width:300px; height:auto; background:#fff; border-radius:6px; border:1px solid var(--line)}
#dlg-unterschrift{max-width:640px; width:calc(100% - 24px); max-height:calc(100dvh - 24px); overflow:auto; border:none; border-radius:var(--radius); padding:18px 20px; background:var(--surface); color:var(--ink)}
#dlg-unterschrift::backdrop{background:rgba(0,0,0,.45)}
#dlg-unterschrift h2{margin:0 0 6px; font-size:20px}
#dlg-unterschrift > p{font-size:14.5px; color:var(--ink-2); margin:0 0 8px}
#dlg-unterschrift .p-feldname{display:block; margin:8px 0 6px}
#dlg-unterschrift input[type=text]{width:100%; font:inherit; font-size:16px; padding:9px 12px; border:1px solid var(--line); border-radius:8px; box-sizing:border-box; background:var(--surface); color:var(--ink)}
.us-flaeche{position:relative; margin:10px 0; border:1px solid var(--line); border-radius:10px; background:#fff; touch-action:none}
.us-flaeche canvas{display:block; width:100%; height:auto; aspect-ratio:3/1; touch-action:none; cursor:crosshair}
.us-linie{position:absolute; left:6%; right:6%; bottom:22%; border-bottom:1px solid #bbb; pointer-events:none}
.ab-ergebnis-zeile{margin:0 0 6px; padding:8px 10px; border-radius:8px; background:var(--gruen-bg)}
.ab-ergebnis-zeile.maengel{background:var(--gelb-bg)}
.ab-ergebnis-zeile.verweigert{background:var(--rot-bg)}
.ab-folgen{margin:8px 0 12px}
.ab-folgen dt{font-weight:700; font-size:14px; margin-top:8px}
.ab-folgen dd{margin:2px 0 0; font-size:14px}
.ab-warn{color:var(--rot)}
.ab-knoepfe{flex-wrap:wrap}
.ab-eintrag{display:flex; align-items:stretch; border-bottom:1px solid var(--line-2)}
.ab-eintrag.aktiv{background:var(--line-2)}
.ab-eintrag .ue-zeile{border-bottom:0; flex:1; min-width:0; padding-left:4px}
.ab-eintrag-knoepfe{display:flex; flex-direction:column; gap:4px; justify-content:center; padding:6px 0}
.ab-erg-abgenommen{background:var(--gruen-bg); color:var(--gruen)}
.ab-erg-maengel{background:var(--gelb-bg); color:var(--gelb)}
.ab-erg-verweigert{background:var(--rot-bg); color:var(--rot)}

/* ---------- Schreiben per Sprache ---------- */
.ez-block{margin:4px 0 10px; padding:10px 12px; border:1px dashed var(--line); border-radius:10px}
.ez-block:not(:has(> [data-ki]:not([hidden]))){display:none}   /* ohne KI: ganzer Block weg */
.ez-text summary{cursor:pointer; font-size:14px; color:var(--ink-2); margin-top:6px}
.ez-text textarea{width:100%; font:inherit; font-size:14px; padding:9px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--ink); margin:6px 0}

/* ---------- Beispiel-Baustelle ---------- */
.demo-warn{border-left:3px solid var(--gelb); padding-left:8px}
.ab-erzaehl{display:grid; gap:6px; margin:0 0 12px}
.ab-erzaehl:not(:has([data-ki]:not([hidden]))){display:none}
/* Zuklappen: Listen der Bauleitung und Baustellen-Info des Poliers (klappen.js) */
.klapp-knopf{display:inline-flex; align-items:center; gap:8px; background:none; border:0; padding:0; margin:0; font:inherit; color:inherit; cursor:pointer; text-align:left}
.klapp-knopf:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:4px}
.klapp-zahl{font-size:13px; font-weight:600; color:var(--ink-2); background:var(--bg); border:1px solid var(--line); border-radius:999px; padding:0 8px}
.klapp-zahl:empty{display:none}
.klapp-pfeil{width:8px; height:8px; border-right:2px solid var(--ink-2); border-bottom:2px solid var(--ink-2); transform:rotate(-135deg); margin:3px 4px 0; transition:transform .15s}
.card.zu .klapp-pfeil{transform:rotate(45deg); margin:0 4px 3px}
[data-klapp-zu]{display:none !important}
.bi-abschnitt > summary{cursor:pointer; display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-weight:700; padding:8px 0; list-style:none}
.bi-abschnitt > summary::-webkit-details-marker{display:none}
.bi-abschnitt > summary::after{content:""; width:8px; height:8px; border-right:2px solid var(--ink-2); border-bottom:2px solid var(--ink-2); transform:rotate(45deg); margin-left:auto; margin-right:4px}
.bi-abschnitt[open] > summary::after{transform:rotate(-135deg); margin-top:4px}
.bi-anzahl{font-size:13px; font-weight:600; color:var(--ink-2); background:var(--bg); border:1px solid var(--line); border-radius:999px; padding:0 8px}
.bi-abschnitt + .bi-abschnitt{border-top:1px solid var(--line)}
@media (prefers-reduced-motion:reduce){ .klapp-pfeil{transition:none} }

/* Bedienung auf Touch-Geräten (v1.51.3): Eingabefelder mind. 16 px, damit das iPhone beim Antippen
   nicht hineinzoomt; Knöpfe mind. 44 px hoch (Apple-Empfehlung). Größere Werte (Polier-Ansicht) bleiben. */
@media (pointer:coarse){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]), select, textarea{font-size:16px !important}
  :is(.p-formular,.p-standort,.p-planstand) :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]){font-size:17px !important}
  :where(.btn), :where(.segment button){min-height:44px}
}

/* Angaben für den Brief (Versand, Zeichen, Ansprechpartner) – v1.52.0 */
.brief-optionen{margin-top:10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface)}
.brief-optionen>summary{padding:10px 12px; min-height:24px; cursor:pointer; font-size:14px; font-weight:600; color:var(--ink)}
.brief-optionen .bo-zusatz{font-weight:400; color:var(--ink-2); font-size:13px}
.bo-raster{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 12px; padding:2px 12px 4px}
.bo-feld{display:grid; gap:4px; font-size:13px; color:var(--ink-2); font-weight:500}
.bo-breit{grid-column:1 / -1}
.bo-feld input,.bo-feld select{font:inherit; font-size:14px; color:var(--ink); padding:8px 10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); min-width:0; width:100%; box-sizing:border-box}
.brief-optionen .mess-info{padding:0 12px 10px; margin:6px 0 0}
@media(max-width:560px){ .bo-raster{grid-template-columns:minmax(0,1fr)} }

/* Fotos als Anlage zu Schreiben – v1.54.0 */
.brief-anlagen{margin-top:10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); padding:10px 12px}
.anl-kopf{display:flex; align-items:baseline; gap:8px; font-size:14px}
.anl-kopf .mess-info{margin:0}
.anl-liste{display:grid; gap:10px; margin:10px 0}
.anl-liste:empty{display:none}
.anl-foto{display:grid; grid-template-columns:84px minmax(0,1fr) auto; gap:10px; align-items:center}
.anl-foto img{width:84px; height:64px; object-fit:cover; border-radius:6px; border:1px solid var(--line); background:var(--bg)}
.anl-text{display:grid; gap:2px; min-width:0}
.anl-text .mess-info{margin:0; font-size:12px}
.anl-knopf{display:inline-flex; align-items:center; cursor:pointer; margin-top:4px}
.anl-hinweis{margin:6px 0 0; font-size:12.5px}
@media(max-width:560px){ .anl-foto{grid-template-columns:64px minmax(0,1fr)} .anl-foto img{width:64px; height:52px} .anl-foto .anl-weg{grid-column:2; justify-self:start} }
.anl-knopf[hidden]{display:none}

/* Pläne – v1.55.0 */
.pl-liste{display:grid}
.pl-eintrag{display:grid; grid-template-columns:96px minmax(0,1fr); gap:12px; padding:12px 14px; border-top:1px solid var(--line)}
.pl-eintrag:first-child{border-top:0}
.pl-vorschau{width:96px; height:72px; object-fit:contain; background:#fff; border:1px solid var(--line); border-radius:6px}
.pl-text{display:grid; gap:3px; min-width:0}
.pl-text b{overflow-wrap:anywhere}
.pl-text .mess-info{margin:0}
.pl-text .aktionen{display:flex; flex-wrap:wrap; gap:6px; margin-top:6px}
.pl-aendern{margin-top:8px}
/* Fenster: Plan ansehen / Nadel setzen */
.plan-dlg{width:min(1100px,100vw); height:min(860px,100dvh); max-width:100vw; max-height:100dvh; padding:0; border:0; border-radius:12px; background:var(--surface); color:var(--ink);
  display:none; flex-direction:column; overflow:hidden}
.plan-dlg[open]{display:flex}
.plan-dlg::backdrop{background:rgba(0,0,0,.55)}
@media(max-width:700px){ .plan-dlg{width:100vw; height:100dvh; border-radius:0} }
.plan-kopf{display:flex; align-items:center; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line)}
.plan-kopf-text{flex:1; min-width:0; display:grid}
.plan-kopf-text b{white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.plan-kopf select{font:inherit; font-size:15px; padding:8px 10px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); min-width:0; width:100%}
.plan-flaeche{position:relative; flex:1; overflow:hidden; background:#d9dde1; touch-action:none; cursor:grab; user-select:none; -webkit-user-select:none}
.plan-flaeche:active{cursor:grabbing}
.plan-ebene{position:absolute; left:0; top:0; transform-origin:0 0; background:#fff; box-shadow:0 2px 12px rgba(0,0,0,.25)}
.plan-kachel{position:absolute; display:block; max-width:none; pointer-events:none}
.plan-nadel{position:absolute; width:34px; height:44px; transform-origin:50% 100%; pointer-events:none}
.plan-nadel::before{content:""; position:absolute; left:50%; bottom:0; width:0; height:0; transform:translateX(-50%); border-left:9px solid transparent; border-right:9px solid transparent; border-top:16px solid #6b7280}
.plan-nadel span{position:absolute; left:2px; top:0; width:30px; height:30px; border-radius:50%; background:#6b7280; border:2px solid #fff; color:#fff; font:700 14px/26px system-ui,sans-serif; text-align:center; box-sizing:border-box}
.plan-nadel.aktiv::before{border-top-color:#C2410C} .plan-nadel.aktiv span{background:#C2410C}
.plan-kreuz{position:absolute; left:50%; top:50%; width:64px; height:64px; margin:-32px 0 0 -32px; pointer-events:none}
.plan-kreuz::before,.plan-kreuz::after{content:""; position:absolute; background:#C2410C; box-shadow:0 0 0 1.5px #fff}
.plan-kreuz::before{left:31px; top:0; width:2px; height:64px} .plan-kreuz::after{top:31px; left:0; height:2px; width:64px}
.plan-laden{position:absolute; left:50%; top:12px; transform:translateX(-50%); margin:0; background:var(--surface); padding:6px 12px; border-radius:999px; font-size:14px}
.plan-hinweis{margin:0; padding:8px 12px; font-size:13.5px; color:var(--ink-2); border-top:1px solid var(--line)}
.plan-leiste{display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:10px 12px calc(10px + env(safe-area-inset-bottom)); border-top:1px solid var(--line)}
.plan-leiste .btn{min-height:48px}
.plan-leiste #plan-minus,.plan-leiste #plan-plus{min-width:52px; font-size:22px; padding:6px 0}
.plan-leiste-platz{flex:1}
.plan-leiste #plan-setzen{font-size:16px}
@media(max-width:560px){ .plan-leiste-platz{display:none} .plan-leiste #plan-setzen{flex:1 1 100%} }
/* Anlagen: Lage im Plan – v1.55.0 */
.anl-abschnitt{display:grid; gap:6px; padding:8px 0 4px; border-top:1px solid var(--line-2); margin-top:8px}
.anl-titel-zeile{font-size:13.5px; font-weight:600; color:var(--ink-2)}
.anl-titel-zeile .mess-info{font-weight:400; margin:0 0 0 6px}
.anl-plan-gesetzt{display:grid; grid-template-columns:150px minmax(0,1fr); gap:10px; align-items:start}
.anl-plan-bild{width:150px; aspect-ratio:1.6; object-fit:cover; border:1px solid var(--line); border-radius:6px; background:#fff}
.anl-plan-gesetzt .aktionen{display:flex; flex-wrap:wrap; gap:6px; margin-top:6px}
.anl-plan-leer{margin:0}
@media(max-width:560px){ .anl-plan-gesetzt{grid-template-columns:1fr} .anl-plan-bild{width:100%} }
.ab-plan-marke{font-size:13px; color:var(--ink); align-self:center; margin-left:4px}

/* Schreiben: Schritt für Schritt – v1.56.0 */
.eingabe-modus{display:grid; grid-template-columns:1fr 1fr; margin:0 0 12px}
.schritt-aus{display:none !important}
.schritt-kopf{display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px; margin:0 0 12px; padding:10px 12px; border-radius:var(--radius); background:var(--line-2)}
.schritt-kopf b{font-size:16px}
.schritt-nr{font-size:13px; color:var(--ink-2)}
.schritt-punkte{display:flex; gap:5px; margin-left:auto}
.schritt-punkte i{width:10px; height:10px; border-radius:50%; background:var(--line)}
.schritt-punkte i.an{background:var(--accent)}
.schritt-nav{margin-top:14px}
.schritt-nav [hidden]{display:none}
.schritt-pruefen{display:grid; gap:0; margin-top:4px}
.schritt-pruefen[hidden]{display:none}
.pruef-zus{margin:0 0 8px; font-size:14px; font-weight:600; color:var(--gruen,#2E7D32)}
.pruef-zus.fehlt{color:var(--rot,#b91c1c)}
.pruef-zeile{display:grid; grid-template-columns:minmax(110px,34%) minmax(0,1fr) auto; gap:4px 10px; align-items:baseline; padding:9px 0; border-top:1px solid var(--line-2); font-size:14.5px}
.pruef-k{color:var(--ink-2); font-size:13.5px}
.pruef-v{overflow-wrap:anywhere}
.pruef-zeile.fehlt .pruef-v{color:var(--rot,#b91c1c); font-weight:600}
.pruef-zeile .p-link{font-size:14px; padding:6px 0; min-height:32px}
@media(max-width:560px){ .pruef-zeile{grid-template-columns:minmax(0,1fr) auto} .pruef-k{grid-column:1 / -1} }
