:root {
  --tinte: #1d2433; --grau: #6b7280; --linie: #d9dde3; --flaeche: #f5f6f8; --weiss: #fff;
  --akzent: #1e5aa8; --akzent-hell: #e8f0fb; --warn: #b4232c; --warn-hell: #fbe9ea; --ok: #1f7a3a; --ok-hell: #e6f4ea;
}
* { box-sizing: border-box; }
body { margin: 0; font: 15px/1.45 -apple-system, "Segoe UI", Helvetica, Arial, sans-serif; color: var(--tinte); background: var(--flaeche); }
a { color: var(--akzent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 1.5rem; margin: 0 0 .6rem; }
h1 small { font-size: .95rem; font-weight: normal; }
h2 { font-size: 1.1rem; margin: 1.6rem 0 .6rem; }
h3 { font-size: 1rem; margin: 1rem 0 .4rem; }
.grau { color: var(--grau); }
.mono { font-variant-numeric: tabular-nums; }
.mitte { text-align: center; }
.hinweis { color: var(--grau); font-size: .9rem; }
.warn { color: var(--warn); }

header.top { display: flex; align-items: center; justify-content: space-between; padding: .5rem 1.2rem; background: var(--weiss); border-bottom: 1px solid var(--linie); position: sticky; top: 0; z-index: 5; }
header .logo { font-weight: 600; color: var(--tinte); display: flex; align-items: center; gap: .6rem; }
header .logo img { height: 28px; }
header nav { display: flex; gap: 1.2rem; align-items: center; }
header nav .wer { color: var(--grau); }
main { max-width: 1100px; margin: 0 auto; padding: 1.2rem; }

.flash { padding: .6rem .9rem; border-radius: 6px; margin-bottom: 1rem; background: var(--ok-hell); color: var(--ok); }
.flash.fehler { background: var(--warn-hell); color: var(--warn); }

.kopfzeile { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.kopfzeile .rechts { margin-left: auto; position: relative; }
.aktionen { display: flex; gap: .5rem; align-items: center; }
.aktionen form { display: inline; }
.zurueck { color: var(--grau); font-weight: normal; }

.karte { background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; padding: 1rem 1.2rem; margin-bottom: 1rem; }
.karte.schmal { max-width: 420px; margin: 3rem auto; }
.karte.schwebend { position: absolute; right: 0; top: 2.4rem; width: min(520px, 90vw); z-index: 6; box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.spalten { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.spalten > * { min-width: 0; }                 /* breite Tabellen scrollen in ihrer Spalte statt die Seite zu verbreitern */
.spalten.breit-links { grid-template-columns: 2fr 1fr; align-items: start; }
@media (max-width: 800px) { .spalten, .spalten.breit-links { grid-template-columns: 1fr; } }

label { display: block; margin: .5rem 0; font-size: .9rem; color: var(--grau); }
label.inline { display: inline-flex; align-items: center; gap: .35rem; margin-right: 1rem; color: var(--tinte); }
input, select, textarea { font: inherit; color: var(--tinte); width: 100%; padding: .45rem .55rem; border: 1px solid var(--linie); border-radius: 6px; background: var(--weiss); margin-top: .15rem; }
input[type=checkbox], input[type=radio] { width: auto; margin: 0; }
textarea { resize: vertical; }
.zeile { display: flex; gap: .8rem; flex-wrap: wrap; }
.zeile > label { flex: 1 1 180px; }
.zeile > label.datum { flex: 0 1 11rem; }      /* Datumsfelder nur so breit wie noetig */
.zeile > label.breit { flex: 3 1 260px; }      /* Titel bekommt den Rest */
.zeile.klein { align-items: center; margin-top: .4rem; }
.zeile.klein label.inline { margin-right: .4rem; font-size: .85rem; color: var(--grau); }
.zeile.klein select, .zeile.klein input[type=date] { width: auto; padding: .25rem .4rem; margin: 0; font-size: .85rem; max-width: 170px; }
fieldset { border: 0; padding: 0; margin: 0; }
fieldset:disabled input, fieldset:disabled textarea, fieldset:disabled select { background: var(--flaeche); color: var(--tinte); }

button, .knopf { font: inherit; cursor: pointer; padding: .45rem .9rem; border-radius: 6px; border: 1px solid var(--linie); background: var(--weiss); color: var(--tinte); display: inline-block; }
button:hover, .knopf:hover { border-color: var(--akzent); text-decoration: none; }
.primaer { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.primaer:hover { background: #174a8c; }
.ruhig { background: var(--akzent-hell); border-color: #c9d9ef; color: var(--akzent); }   /* ruhiges Blau: Zweitweg neben dem Quick-Ticket */
.ruhig:hover { background: #dbe7f7; border-color: var(--akzent); }
.klein { padding: .25rem .6rem; font-size: .85rem; }
.leise { border-color: transparent; color: var(--grau); background: transparent; }
.leise:hover { color: var(--warn); border-color: var(--linie); }
summary { cursor: pointer; list-style: none; }
summary::-webkit-details-marker { display: none; }
summary.knopf { display: inline-block; }

.tabs { display: flex; gap: .2rem; border-bottom: 1px solid var(--linie); margin: .6rem 0 1rem; }
.tabs a { padding: .5rem .9rem; color: var(--grau); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.tabs a.aktiv { color: var(--tinte); border-color: var(--akzent); font-weight: 600; }

.pille { display: inline-block; padding: .1rem .55rem; border-radius: 999px; background: var(--akzent-hell); color: var(--akzent); font-size: .8rem; font-weight: 500; vertical-align: middle; }
.pille.ok { background: var(--ok-hell); color: var(--ok); }
.pille.warn { background: var(--warn-hell); color: var(--warn); }
.pille.extern { background: #fff4e0; color: #8a5a00; }
.pille.klein { font-size: .74rem; }

table.liste { width: 100%; border-collapse: collapse; background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; overflow: hidden; }
table.liste th { text-align: left; font-weight: 600; font-size: .82rem; color: var(--grau); padding: .5rem .7rem; background: var(--flaeche); }
table.liste td { padding: .45rem .7rem; border-top: 1px solid var(--linie); vertical-align: middle; }
table.liste td input, table.liste td select { margin: 0; padding: .3rem .45rem; }
table.liste tr.erledigt td { color: var(--grau); }
table.liste tr.erledigt a { color: var(--grau); }
table.liste tr.ueberfaellig td:nth-child(5) { color: var(--warn); font-weight: 600; }
table.liste .aktionen form { display: inline; }
table.teilnehmer td { padding: .25rem .5rem; }
.scrollbar { overflow-x: auto; -webkit-overflow-scrolling: touch; margin-bottom: 1rem; }
table.beteiligte td { font-size: .9rem; white-space: nowrap; }
table.beteiligte td:nth-child(3) { white-space: normal; min-width: 160px; }
table.beteiligte td.ordnen { white-space: nowrap; width: 1%; padding-right: 0; }
table.beteiligte td.ordnen form { display: inline; }
table.beteiligte td.aktionen { position: relative; width: 1%; }
details.bearbeiten summary { white-space: nowrap; }
details.bearbeiten .karte.schwebend { position: fixed; left: 50%; top: 15vh; transform: translateX(-50%); right: auto; width: min(640px, 92vw); text-align: left; white-space: normal; z-index: 20; }
details.bearbeiten .karte.schwebend .aktionen { margin-top: .6rem; }

.kacheln { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.kachel { display: block; background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; padding: 1rem; color: var(--tinte); }
.kachel:hover { border-color: var(--akzent); text-decoration: none; }
.kachel.inaktiv { opacity: .6; }
.kachel .titel { font-weight: 600; font-size: 1.05rem; }
.kachel .zahlen { display: flex; gap: 1rem; margin-top: .6rem; font-size: .9rem; }
.plan-vorschau { width: 100%; height: 140px; object-fit: contain; background: var(--flaeche); border-radius: 4px; }
.plan-pdf { height: 140px; display: grid; place-items: center; background: var(--flaeche); color: var(--grau); border-radius: 4px; }
.logo-vorschau { display: flex; align-items: center; gap: 1rem; margin: .4rem 0; }
.logo-vorschau img { max-height: 48px; }

/* Punkte einer Ausgabe: Nr | Text | Verantwortlich, wie im Protokoll */
.punkt { display: grid; grid-template-columns: 72px 1fr 120px; gap: .8rem; background: var(--weiss); border: 1px solid var(--linie); border-top: 0; padding: .8rem; }
.punkt:first-of-type { border-top: 1px solid var(--linie); border-radius: 8px 8px 0 0; }
.punkt:last-of-type { border-radius: 0 0 8px 8px; margin-bottom: 1rem; }
.punkt.offen { background: #fcfcfd; }
.punkt.erledigt .titelzeile b { color: var(--grau); text-decoration: line-through; }
.punkt .nr b { font-size: 1.05rem; }
.punkt .kette { display: block; font-size: .72rem; color: var(--grau); line-height: 1.3; margin-top: .2rem; }
.punkt .titelzeile { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin-bottom: .3rem; }
.punkt .wer { font-size: .9rem; text-align: right; }
.punkt .ordnen { display: flex; gap: .1rem; justify-content: flex-end; margin-top: .5rem; }
.punkt .ordnen form { display: inline; }
.punkt .stand, .stand { white-space: pre-wrap; }
.eintrag-form textarea { margin: 0; }
.alt { color: var(--grau); font-style: italic; white-space: pre-wrap; font-size: .9rem; margin: .4rem 0; padding-left: .6rem; border-left: 2px solid var(--linie); }
.alt .kennung { font-style: normal; font-weight: 600; margin-right: .3rem; }
.historie { margin-top: .6rem; }
.verweis { color: var(--grau); font-size: .82rem; }
@media (max-width: 700px) { .punkt { grid-template-columns: 56px 1fr; } .punkt .wer { grid-column: 2; text-align: left; } }

.fotos { display: flex; flex-wrap: wrap; gap: .6rem; margin: .6rem 0; align-items: flex-start; }
.fotos figure { margin: 0; width: 160px; font-size: .78rem; color: var(--grau); }
.fotos img { width: 160px; height: 120px; object-fit: cover; border-radius: 4px; border: 1px solid var(--linie); display: block; }
.fotos .anlage { display: grid; place-items: center; width: 160px; height: 120px; background: var(--flaeche); border-radius: 4px; padding: .4rem; text-align: center; word-break: break-all; }
.pins { display: flex; flex-wrap: wrap; gap: .2rem; margin: .2rem 0; }
.pins form, .pille form { display: inline; }
.pille .x, .pille button.x { border: 0; background: transparent; padding: 0 0 0 .3rem; color: inherit; cursor: pointer; font-size: .8rem; }
.pille.leise { background: var(--flaeche); color: var(--grau); }
.versionen { display: flex; flex-wrap: wrap; gap: .2rem .4rem; align-items: center; margin-top: .4rem; }
.versionen form { display: inline; }
.mitnummer { position: relative; display: block; }
.fotonr { position: absolute; left: 4px; top: 4px; background: var(--akzent); color: #fff; font-weight: 700; font-size: .8rem; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.fotos.skizzen { border-top: 1px dashed var(--linie); padding-top: .5rem; }
.fotos figure.skizze { width: 240px; }
.fotos figure.skizze img { width: 240px; height: auto; max-height: 240px; object-fit: contain; background: #fff; }
.planwahl { display: flex; gap: .4rem; align-items: center; }
.foto-form { display: flex; flex-direction: column; gap: .2rem; margin-top: .2rem; }
.foto-form input, .foto-form select { padding: .2rem .35rem; font-size: .78rem; margin: 0; }
.fotos figure form:last-child { text-align: right; }
.upload { align-self: center; }

.stand-karte { background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; padding: .8rem 1rem; margin-bottom: .8rem; }
.stand-karte.extern { border-left: 4px solid #e0a030; }
.stand-karte .kopf { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin-bottom: .4rem; }

.funktionen { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .15rem .6rem; margin: .2rem 0 .6rem; }
.funktionen label.inline { margin: 0; font-size: .88rem; }

/* gesperrte Aktionen: sichtbar, aber ausgegraut; Klick zeigt den Grund */
.knopf.gesperrt, button.gesperrt { opacity: .45; cursor: not-allowed; background: var(--flaeche); color: var(--grau); border-color: var(--linie); }
.hinweisbox.warten { background: var(--akzent); padding-left: 2.6rem; }
.hinweisbox.warten::before { content: ""; position: absolute; left: .9rem; top: 50%; width: 1.1rem; height: 1.1rem; margin-top: -.55rem; border: 3px solid rgba(255,255,255,.35); border-top-color: #fff; border-radius: 50%; animation: drehen .9s linear infinite; }
@keyframes drehen { to { transform: rotate(360deg); } }
.hinweisbox { position: fixed; left: 50%; bottom: 1.5rem; transform: translateX(-50%); background: var(--tinte); color: #fff; padding: .7rem 1rem; border-radius: 8px; max-width: min(520px, 92vw); box-shadow: 0 6px 20px rgba(0,0,0,.25); z-index: 50; font-size: .95rem; }

table.beteiligte td.zugang { white-space: normal; min-width: 170px; position: relative; }
table.beteiligte td.zugang details { display: inline-block; margin-left: .3rem; }
table.beteiligte td.zugang .karte.schwebend { text-align: left; white-space: normal; }

tr.bt-zeile { cursor: pointer; }
tr.bt-zeile:hover td { background: #fafbfd; }
tr.bt-zeile.aktiv td { background: var(--akzent-hell); }

pre.plankopf { max-height: 220px; overflow: auto; background: var(--flaeche); padding: .5rem; font-size: .75rem; white-space: pre-wrap; }

/* Startseite (nicht angemeldet) */
.start { margin: -1.2rem calc(50% - 50vw) 0; }
.start-held { position: relative; background: #1e5aa8; color: #fff; overflow: hidden; }
.start-bild { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center bottom; }
.start-held::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(20,42,78,.78) 0%, rgba(20,42,78,.55) 50%, rgba(20,42,78,.12) 100%), linear-gradient(180deg, rgba(20,42,78,.35) 0%, rgba(20,42,78,0) 60%); }
.start-held-innen { position: relative; z-index: 1; max-width: 1100px; margin: 0 auto; padding: 3rem 1.2rem 5rem; display: grid; grid-template-columns: 1.4fr 1fr; gap: 2.4rem; align-items: start; }
.start-ueber { text-transform: uppercase; letter-spacing: .08em; font-size: .78rem; opacity: .85; margin: 0 0 .6rem; }
.start-text h1 { font-size: clamp(1.6rem, 3.2vw, 2.4rem); line-height: 1.15; margin: 0 0 1rem; text-shadow: 0 1px 2px rgba(0,0,0,.25); }
.start-text h1 .akzent { font-style: normal; color: #f09a3e; }
.start-satz { font-size: 1.05rem; line-height: 1.5; max-width: 42rem; margin: 0 0 1.2rem; }
.start-merkmale { list-style: none; padding: 0; margin: 0; display: grid; gap: .5rem; max-width: 42rem; }
.start-merkmale li { padding-left: 1.4rem; position: relative; font-size: .95rem; line-height: 1.4; }
.start-merkmale li::before { content: ""; position: absolute; left: 0; top: .45em; width: .7rem; height: .7rem; border-radius: 50%; background: #e8762b; box-shadow: 0 0 0 3px rgba(232,118,43,.3); }
.start-login { color: var(--tinte); margin: 0; box-shadow: 0 16px 40px rgba(0,0,0,.28); padding: 1.3rem 1.4rem 1.1rem; }
.start-login h2 { margin: 0 0 .4rem; }
.start-login .breit { width: 100%; margin-top: .6rem; padding: .6rem; }
.start-login .hinweis { margin: .9rem 0 0; }
.start-ablauf { max-width: 1100px; margin: 0 auto; padding: 2.4rem 1.2rem 1rem; }
.start-ablauf h2 { margin-top: 0; }
.start-ablauf ol { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.start-ablauf li { background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; padding: 1rem; display: flex; gap: .8rem; align-items: flex-start; font-size: .93rem; line-height: 1.4; }
.start-ablauf li span { flex: none; width: 2rem; height: 2rem; border-radius: 50%; background: var(--akzent); color: #fff; display: grid; place-items: center; font-weight: 600; }
.start-fuss { max-width: 1100px; margin: 1.5rem auto 0; padding: 1rem 1.2rem 2rem; display: flex; justify-content: space-between; flex-wrap: wrap; gap: .5rem; color: var(--grau); font-size: .85rem; border-top: 1px solid var(--linie); }
@media (max-width: 900px) {
  .start-held-innen { grid-template-columns: 1fr; padding: 2rem 1.2rem 2.4rem; }
  .start-login { order: -1; }  /* auf iPad hochkant und Handy: Anmeldung zuerst, Beschreibung darunter */
  .start-ablauf ol { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) { .start-ablauf ol { grid-template-columns: 1fr; } }

/* Planbezeichnung im Klartext (Plan-Kachel) */
.plan-klartext { margin-top: .4rem; font-size: .8rem; }
.plan-box h4 { margin: 0 0 .3rem; font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: var(--grau); font-weight: 600; }
.plan-box { margin-top: .4rem; border: 1px solid var(--linie); border-radius: 8px; padding: .5rem .65rem; background: var(--flaeche); }
.plan-box dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 10px; margin: 0; font-size: .8rem; }
.plan-box dt { color: var(--grau); }
.plan-box dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.plan-box code { font: .75rem ui-monospace, Menlo, monospace; background: var(--weiss); border: 1px solid var(--linie); border-radius: 4px; padding: 0 4px; margin-right: 6px; }
.plan-box .hervor { font-weight: 650; }
.plan-box .fehlt { color: var(--grau); font-style: italic; }
.plan-box .code-full { font: .75rem ui-monospace, Menlo, monospace; color: var(--grau); margin-top: .4rem; word-break: break-all; }

/* Such- und Filterleiste (Beteiligte) */
.filterleiste { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: .6rem 0; }
.filterleiste input[type=search] { flex: 1 1 220px; margin: 0; }
.filterleiste select { width: auto; max-width: 240px; margin: 0; padding: .4rem 1.9rem .4rem .5rem; }   /* rechts Platz fuer den Pfeil */
.filterleiste .zaehler { font-size: .85rem; white-space: nowrap; }
.foto-form input.gespeichert { border-color: var(--ok); box-shadow: 0 0 0 2px var(--ok-hell); transition: box-shadow .3s; }
.adressaten .filterleiste { margin: .3rem 0; }
.adressaten .rollenwahl select { max-width: 260px; }
.adressaten td .pille { margin-left: .25rem; }

/* Planauswahl mit Suche und Filter */
.planwahl-box { position: relative; display: inline-block; }
.planwahl-knopf { max-width: 360px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.planwahl-liste { position: absolute; left: 0; top: calc(100% + 4px); z-index: 30; width: min(520px, 92vw); background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.14); padding: .6rem; text-align: left; }
.planwahl-liste input[type=search] { margin: 0 0 .4rem; }
.planwahl-chips { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .4rem; }
.planwahl-chips .chip { font: inherit; font-size: .78rem; padding: .15rem .55rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--flaeche); color: var(--tinte); cursor: pointer; }
.planwahl-chips .chip.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.planwahl-liste ul { list-style: none; margin: 0; padding: 0; max-height: 300px; overflow: auto; }
.planwahl-liste li { padding: .4rem .5rem; border-radius: 6px; cursor: pointer; display: flex; flex-direction: column; gap: .1rem; font-size: .9rem; }
.planwahl-liste li[hidden] { display: none; }
.planwahl-liste li:hover { background: var(--akzent-hell); }
.planwahl-liste li.aktiv { background: var(--akzent-hell); outline: 1px solid var(--akzent); }
.planwahl-liste li .grau { font-size: .78rem; font-family: ui-monospace, Menlo, monospace; }
.planseite .planwahl-chips .chip { min-height: 0; padding: .15rem .55rem; font-size: .78rem; }
.planseite .planwahl-knopf { min-height: 40px; font-size: 1rem; }

/* Raeume */
.raeume-kachel { margin-top: .4rem; font-size: .85rem; display: flex; gap: .6rem; align-items: baseline; flex-wrap: wrap; }
.raeume-kachel details { flex: 1 1 100%; }
.raeume-kachel summary { cursor: pointer; }
.raeume-kachel form { display: inline; }
.raumliste-klein { list-style: none; margin: .3rem 0 0; padding: 0; max-height: 200px; overflow: auto; columns: 2; column-gap: 1rem; }
.raumliste-klein li { break-inside: avoid; padding: .1rem 0; }
.raumliste-klein code, .raumtabelle code { font: .78rem ui-monospace, Menlo, monospace; background: var(--flaeche); border: 1px solid var(--linie); border-radius: 4px; padding: 0 4px; }
.planwahl-liste li.raum { padding-left: 1.4rem; font-size: .85rem; }
.planwahl-liste li.raum b::before { content: "↳ "; color: var(--grau); font-weight: normal; }

/* Quick-Ticket */
.quick-raster { display: grid; grid-template-columns: 1fr 1.6fr; gap: 1rem; align-items: start; }
@media (max-width: 700px) { .quick-raster { grid-template-columns: 1fr; } }
.quick-raster.punkt { grid-template-columns: 1fr; }                     /* Begehungspunkte: Foto oben, Text darunter ueber die ganze Breite */
.quick-raster.punkt .quick-fotofeld { min-height: 140px; }
.quick-foto { display: block; cursor: pointer; margin: 0; }
.quick-fotofeld { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem; min-height: 220px; border: 2px dashed var(--linie); border-radius: 10px; background: var(--flaeche); color: var(--grau); text-align: center; padding: .5rem; }
.quick-fotofeld .gross { font-size: 2.6rem; }
.quick-fotofeld img { max-width: 100%; max-height: 320px; border-radius: 6px; object-fit: contain; }
.quick-fotofeld .klein { font-size: .78rem; }
.knopf.gross, button.gross { padding: .7rem 1.1rem; font-size: 1.05rem; min-height: 48px; }
.knopf.aktiv, button.aktiv { background: var(--warn); border-color: var(--warn); color: #fff; }
.quick-sprache .aktionen { flex-wrap: wrap; }
.quick-sprache audio { width: 100%; margin: .4rem 0; }
.quick-adressaten summary { cursor: pointer; padding: .4rem 0; }
#ausgangsliste, #gesendetliste { margin: .3rem 0 .6rem; padding-left: 1.2rem; }
.fotos .audio { display: flex; flex-direction: column; gap: .3rem; min-width: 240px; }
.fotos .audio audio { width: 100%; }

/* Offline-Stufe 2: Bereitstellen-Dialog und Hinweisleiste auf Offline-Kopien */
.offline-box { position: relative; display: inline-block; }
.offline-box summary { list-style: none; }
.offline-box summary::-webkit-details-marker { display: none; }
.offline-box [hidden] { display: none !important; }
.offline-box .offline-dialog { position: absolute; left: 0; top: calc(100% + .4rem); text-align: left; z-index: 20; width: min(560px, 92vw); box-shadow: 0 10px 30px rgba(0,0,0,.18); }
.offline-box .fortschritt { height: 10px; background: var(--flaeche); border: 1px solid var(--linie); border-radius: 999px; overflow: hidden; margin-top: .5rem; }
.offline-box .fortschritt .balken { height: 100%; width: 0; background: var(--akzent); transition: width .2s; }
.offline-leiste { background: #fff4e0; color: #8a5a00; border-bottom: 1px solid #f0d9a8; padding: .5rem 1.2rem; font-size: .92rem; position: sticky; top: 0; z-index: 6; }
.planseite .offline-leiste { position: static; }
@media (max-width: 700px) { .offline-box .offline-dialog { position: fixed; left: 4vw; right: 4vw; top: 10vh; width: auto; } }
.pille.quick { background: #fff4e0; color: #8a5a00; }

/* KI-Auswertung */
.ki-frage { margin: 1rem 0 .3rem; padding: .5rem .8rem; background: var(--akzent-hell); border-radius: 8px; }
.ki-antwort { margin: 0 0 1rem; padding: .2rem .8rem; border-left: 3px solid var(--akzent); }
.ki-text p { margin: .4rem 0; } .ki-text ul { margin: .3rem 0 .3rem 1.2rem; } .ki-text h3 { margin: .6rem 0 .2rem; }
.ki-text table { font-size: .9rem; margin: .4rem 0; }
table.kennzahlen td:last-child { text-align: right; }

/* Quick-Ticket-Knopf: rot, damit er auf der Baustelle sofort ins Auge faellt */
.quickknopf, a.quickknopf { background: var(--warn); border: 1px solid var(--warn); color: #fff; font-weight: 600; border-radius: 6px; padding: .45rem .9rem; display: inline-block; }
.quickknopf:hover { background: #9a1d25; border-color: #9a1d25; color: #fff; text-decoration: none; }
header nav a.quickknopf.klein { padding: .25rem .6rem; }
/* Kopfzeile der Ticketliste: alle Knoepfe gleich hoch und gleich gewichtet (Quick-Ticket = Neues Ticket) */
.ticketkopf .knopf, .ticketkopf summary.knopf, .ticketkopf a.quickknopf { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: .5rem 1.1rem; font-size: 1rem; font-weight: 600; line-height: 1.2; border-radius: 6px; }
.ticketkopf a.quickknopf { min-width: 150px; }
.ticketkopf details.rechts > summary.knopf { min-width: 150px; }

/* Impressum / Datenschutz */
footer.fuss { max-width: 1100px; margin: 1rem auto 0; padding: .8rem 1.2rem 1.4rem; color: var(--grau); font-size: .82rem; text-align: right; }
.planseite footer.fuss { display: none; }
.rechtstext { max-width: 860px; }
.rechtstext h3 { margin: 1.1rem 0 .3rem; }
.rechtstext p, .rechtstext li { line-height: 1.55; }
.rechtstext ul { padding-left: 1.2rem; }

/* Modus-Anzeige in der Kopfzeile */
.netzmodus { display: inline-flex; align-items: center; gap: .35rem; font-size: .78rem; padding: .15rem .55rem; border-radius: 999px; background: var(--flaeche); color: var(--grau); white-space: nowrap; margin-left: .6rem; }
.netzmodus::before { content: ""; width: .55rem; height: .55rem; border-radius: 50%; background: #9aa1ab; }
.netzmodus.online { background: var(--ok-hell); color: var(--ok); } .netzmodus.online::before { background: var(--ok); }
.netzmodus.offline { background: var(--warn-hell); color: var(--warn); font-weight: 600; } .netzmodus.offline::before { background: var(--warn); animation: blinken 1.2s infinite; }
.netzmodus.kopie { background: #fff4e0; color: #8a5a00; font-weight: 600; } .netzmodus.kopie::before { background: #e8762b; }
@keyframes blinken { 50% { opacity: .3; } }
header.top .logo { margin-right: auto; }
header.top .netzmodus { margin-right: auto; margin-left: 0; }
@media (max-width: 600px) { .netzmodus { font-size: .7rem; padding: .1rem .4rem; } }

/* Upload mit Fortschrittsbalken */
.uploadbox { position: fixed; left: 50%; bottom: 1.5rem; transform: translateX(-50%); width: min(480px, 92vw); background: var(--tinte); color: #fff; padding: .8rem 1rem; border-radius: 10px; box-shadow: 0 8px 24px rgba(0,0,0,.3); z-index: 60; }
.uploadbox .uploadtext { font-weight: 600; margin-bottom: .4rem; }
.uploadbalken { height: 10px; background: rgba(255,255,255,.2); border-radius: 999px; overflow: hidden; }
.uploadbalken .balken { height: 100%; width: 0; background: #4fa3ff; transition: width .15s; }
.uploadbox.warten .uploadbalken .balken { width: 100% !important; background: repeating-linear-gradient(45deg, #4fa3ff 0 12px, #1e5aa8 12px 24px); background-size: 34px 100%; animation: laufen 1s linear infinite; }
@keyframes laufen { to { background-position: 34px 0; } }
.uploadbox .uploadklein { margin-top: .3rem; font-size: .8rem; color: rgba(255,255,255,.75); }
.uploadbalken.inline { display: inline-block; width: 160px; vertical-align: middle; background: var(--linie); }
.uploadbalken.inline .balken { background: var(--akzent); }

.empfaengerliste { list-style: none; padding: 0; margin: .4rem 0 .8rem; } .empfaengerliste li { padding: .3rem 0; border-bottom: 1px solid var(--linie); }

/* Ticketauswahl -> Begehung */
.auswahlleiste { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; background: var(--akzent-hell); border: 1px solid var(--akzent); border-radius: 8px; padding: .5rem .8rem; margin: .6rem 0; position: sticky; top: 3.2rem; z-index: 3; }
.auswahlleiste[hidden] { display: none; }   /* sonst gewinnt display:flex gegen das hidden-Attribut */
.auswahlleiste select { width: auto; margin: 0; padding: .3rem 1.8rem .3rem .4rem; font-size: .9rem; }
.auswahlleiste label.inline { margin: 0; }
table.tickettabelle td.wahl, table.tickettabelle th.wahl { width: 1.6rem; text-align: center; }
/* Ticketliste: der Titel bekommt den Platz, Nummer und Datum brechen nicht um, Art und Gewerk klein */
table.tickettabelle td.mono, table.tickettabelle td.grau:nth-child(3) { white-space: nowrap; }
table.tickettabelle td.titel { min-width: 14rem; width: 38%; }   /* schmale Fenster: die Tabelle scrollt seitlich */
table.tickettabelle td.titel > a { font-weight: 600; }
table.tickettabelle td.art, table.tickettabelle td.gewerk { font-size: .85rem; max-width: 9rem; }
.vorschlagsraster { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: .8rem; margin-top: .4rem; }
.vorschlag { background: var(--flaeche); border: 1px solid var(--linie); border-radius: 8px; padding: .6rem .8rem; }
.vorschlag label.inline { font-size: .9rem; margin: .15rem 0; }
.taggruppe { padding: .3rem 0; border-bottom: 1px solid var(--linie); }

/* Unternavigation (Ticket, Begehung, Quick, Auswertung) */
.tabs.unternav { align-items: center; flex-wrap: wrap; gap: .1rem; }
.tabs.unternav .trenner { color: var(--grau); padding: 0 .2rem; }
.tabs.unternav .projektname { font-weight: 600; color: var(--tinte); }
.tabs.unternav .dehn { flex: 1; }
.tabs.unternav .knopf.klein { padding: .25rem .6rem; border-bottom: 1px solid var(--linie); margin-bottom: 0; }
.tabs.unternav .pille { margin: 0 .3rem; }
.personenwahl td.wahl { width: 1.6rem; }

/* Schnellerfassung */
.quick-formular { padding-bottom: .8rem; }
.quick-zeile { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin-top: .7rem; }
.artwahl { display: flex; gap: .35rem; flex-wrap: wrap; }
.artwahl .chip { position: relative; cursor: pointer; margin: 0; }
.artwahl .chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.artwahl .chip span { display: inline-block; padding: .45rem .85rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); font-size: .92rem; min-height: 40px; line-height: 1.5; }
.artwahl .chip input:checked + span { background: var(--akzent); border-color: var(--akzent); color: #fff; font-weight: 600; }
.ortzeile input { flex: 1 1 240px; margin: 0; min-height: 44px; }
.adressatenzeile .chips { display: inline-flex; gap: .35rem; flex-wrap: wrap; flex: 1; }
.adressatenzeile .chip { display: inline-flex; align-items: center; gap: .3rem; padding: .3rem .6rem; border-radius: 999px; background: var(--akzent-hell); color: var(--akzent); font-size: .9rem; cursor: pointer; }
.adressatenzeile .chip.cc { background: var(--flaeche); color: var(--grau); }
.adressatenzeile .chip b { font-weight: 400; opacity: .7; }
.adr-details { margin-top: .4rem; } .adr-details summary { cursor: pointer; }
.quick-skizzen.ersetzt figure { opacity: .4; }
.quick-skizzen.ersetzt::before { content: "Bisherige Lageskizze – wird beim Speichern durch die neue ersetzt"; flex-basis: 100%; font-size: .8rem; color: var(--grau); }
.ticket-titel { cursor: text; border-bottom: 1px dashed transparent; }
.ticket-titel:hover, .ticket-titel:focus { border-bottom-color: var(--grau); outline: none; }
.ticket-titel:hover::after, .ticket-titel:focus::after { content: " ✎"; font-size: .7em; color: var(--grau); }
.titel-bearbeiten { display: inline-flex; gap: .4rem; align-items: center; flex-wrap: wrap; vertical-align: middle; }
.titel-bearbeiten[hidden] { display: none; }
.titel-bearbeiten input { font: inherit; font-size: .8em; width: min(36rem, 70vw); margin: 0; padding: .2rem .4rem; }
.adr-frage { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: .5rem 0; padding: .5rem .7rem; border-radius: 8px; background: #fff7e6; border: 1px solid #f0c36d; }
.adressatenzeile .chip small.neu { background: #2e7d32; color: #fff; border-radius: 6px; padding: 0 .3rem; font-size: .72rem; }
details.mehr { margin-top: .6rem; } details.mehr summary { cursor: pointer; }
.quick-aktionen { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin-top: 1rem; position: sticky; bottom: 0; background: var(--weiss); padding: .6rem 0 .2rem; border-top: 1px solid var(--linie); z-index: 2; }
.leaflet-container { isolation: isolate; }   /* Kachel-Ebenen (z-index 400) nicht ueber feste Leisten legen */
.quick-aktionen .sammeln { background: #fff4e0; border-color: #e8762b; color: #8a5a00; font-weight: 600; }
.quick-aktionen button.gross, .quick-aktionen a.knopf.gross[data-zurueck] { flex: 1 1 160px; justify-content: center; text-align: center; }   /* Speichern und Zurueck gleich breit */
#korbstand { text-decoration: none; }
.karte.sammelkorb { border-color: #e8762b; background: #fffaf3; }
.sammelkorb-liste td.wahl { width: 1.6rem; }
.sammelkorb-liste td.mono { white-space: nowrap; }
.ortscan-treffer { display: flex; gap: .35rem; flex-wrap: wrap; margin-top: .4rem; }
.ortscan-treffer .chip { font: inherit; padding: .4rem .8rem; border-radius: 999px; border: 1px solid var(--akzent); background: var(--akzent-hell); color: var(--akzent); cursor: pointer; }
.ortscan-treffer[hidden] { display: none; }
.papierkorb { padding: .2rem .45rem; border-color: transparent; background: transparent; font-size: 1rem; line-height: 1; opacity: .55; }
.papierkorb:hover { opacity: 1; border-color: var(--warn); background: var(--warn-hell); }
tr:hover .papierkorb { opacity: .9; }
.papierkorb-text { color: var(--warn); }
td.aktionen form { display: inline-block; margin-right: .3rem; }
/* Tuerschild-Scan: Kamera-Symbol neben dem Ort-Feld */
.kamera { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; margin: 0; padding: 0 .5rem; border: 1px solid var(--linie); border-radius: 6px; background: var(--weiss); font-size: 1.25rem; cursor: pointer; color: var(--tinte); }
.kamera:hover { border-color: var(--akzent); background: var(--akzent-hell); }
.kamera .sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.feld { margin: .5rem 0; font-size: .9rem; color: var(--grau); flex: 1 1 240px; }
.feld .feldname { display: block; }
.mit-kamera { display: flex; gap: .4rem; align-items: stretch; }
.mit-kamera input { flex: 1; min-width: 0; margin-top: .15rem; }
.mit-kamera .kamera { margin-top: .15rem; min-height: 0; }   /* so hoch wie das Eingabefeld daneben */
.zeile > label:not(.inline), .zeile > .feld { display: flex; flex-direction: column; justify-content: flex-end; }   /* Felder einer Zeile buendig unten */
.ortzeile .kamera { min-height: 44px; }
/* Ort ? und Auswertung */
.ortsuche .mit-kamera input { min-height: 44px; }
.ortsuche .mit-kamera button.primaer { min-height: 44px; margin-top: .15rem; white-space: nowrap; }
ul.akte { list-style: none; padding: 0; margin: .3rem 0 .8rem; }
ul.akte li { padding: .45rem 0; border-bottom: 1px solid var(--linie); display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
ul.akte li:last-child { border-bottom: 0; }
ul.akte .akte-links { display: inline-flex; gap: .3rem; flex-wrap: wrap; }
ul.akte-fotos img { width: 72px; height: 54px; object-fit: cover; border-radius: 4px; border: 1px solid var(--linie); }
.kennzahlen { display: flex; gap: .5rem; flex-wrap: wrap; margin: .6rem 0 1rem; }
.kennzahlen .kachel.klein { padding: .5rem .8rem; min-width: 7.5rem; text-align: center; color: var(--tinte); }
.kennzahlen .kachel.klein b { display: block; font-size: 1.4rem; color: var(--akzent); }
.kennzahlen .kachel.klein.warn b { color: var(--warn); }
.statusblock { border-bottom: 1px solid var(--linie); padding: .4rem 0; }
.statusblock summary { cursor: pointer; }
.ortscan-stand:empty { display: none; }   /* leerer Status nimmt keine Hoehe weg (Felder einer Zeile bleiben buendig) */
.versandzeile { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin: .3rem 0; }
/* Verortung in der Schnellerfassung */
.verortung { margin-top: .5rem; }
#quickkarte { height: 360px; border: 1px solid var(--linie); border-radius: 6px; margin: .4rem 0; background: #f4f4f4; touch-action: none; }
.planchips .chip { font: inherit; font-size: .9rem; padding: .4rem .8rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); cursor: pointer; }
.planchips .chip.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.quick-aktionen button#abbrechen { flex: 0 0 auto; }
/* Schnellerfassung: mehrere Fotos, groessere Beschriftungen */
.quick-fotos { display: flex; flex-direction: column; gap: .4rem; }
.fotoliste { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: .4rem; }
.fotoliste figure { position: relative; margin: 0; }
.fotoliste img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 6px; border: 1px solid var(--linie); display: block; }
.fotoliste .fotoweg { position: absolute; top: 2px; right: 2px; width: 28px; height: 28px; padding: 0; border-radius: 50%; background: rgba(255,255,255,.92); border: 1px solid var(--linie); line-height: 1; }
.quick-fotofeld { min-height: 160px; }
.feldtext { font-size: 1rem; }
.adr-details summary.feldtext, details.mehr summary.feldtext { font-size: 1rem; padding: .3rem 0; }
/* Foto markieren (Schnellerfassung) */
.fotoliste img { cursor: pointer; }
.fotoliste .markiert { position: absolute; left: 4px; bottom: 4px; background: rgba(224,32,28,.9); color: #fff; border-radius: 4px; font-size: .75rem; padding: 0 .3rem; }
.malen { position: fixed; inset: 0; z-index: 1000; background: #111; display: flex; flex-direction: column; color: #eee; }
.malen-leiste { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; padding: .5rem .7rem; background: #222; }
.malen-leiste .werkzeuge, .malen-leiste .farben, .malen-leiste .aktionen { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; }
.malen-leiste .aktionen { margin-left: auto; }
.malen-leiste .knopf { background: #333; border-color: #555; color: #eee; min-height: 40px; }
.malen-leiste .knopf.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.malen-leiste .farbe { width: 32px; height: 32px; border-radius: 50%; border: 3px solid transparent; padding: 0; cursor: pointer; }
.malen-leiste .farbe.aktiv { border-color: #fff; box-shadow: 0 0 0 2px #000; }
.malen-flaeche { flex: 1; display: flex; align-items: center; justify-content: center; min-height: 0; padding: .4rem; }
#malflaeche { max-width: 100%; max-height: 100%; touch-action: none; background: #000; border-radius: 4px; cursor: crosshair; }
.malen-hinweis { margin: 0; padding: .3rem .7rem .6rem; font-size: .8rem; color: #bbb; }
body.malt { overflow: hidden; }
.malen[hidden] { display: none; }   /* display:flex darf das hidden-Attribut nicht ueberstimmen */
[hidden] { display: none !important; }   /* generell: hidden gewinnt immer, auch gegen display:flex/grid */
button.pille.markieren { font: inherit; font-size: .8rem; cursor: pointer; border: 1px solid var(--akzent); }
/* Ticketlisten: Filter und Sortierung */
.ticketfilter { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; padding: .6rem .8rem; margin: .6rem 0 .2rem; }
.ticketfilter input[type=search] { flex: 2 1 240px; margin: 0; }
.ticketfilter select { flex: 1 1 150px; width: auto; margin: 0; }
.ticketfilter label.inline { margin: 0; white-space: nowrap; }
table.tickettabelle th[data-sort], table.sortierbar th[data-sort] { cursor: pointer; user-select: none; white-space: nowrap; }
table.tickettabelle th[data-sort]:hover, table.sortierbar th[data-sort]:hover { color: var(--akzent); }
table.tickettabelle th[data-sort]::after, table.sortierbar th[data-sort]::after { content: ' ↕'; opacity: .35; font-size: .8em; }
table.tickettabelle th[data-richtung=auf]::after, table.sortierbar th[data-richtung=auf]::after { content: ' ↑'; opacity: 1; color: var(--akzent); }
table.tickettabelle th[data-richtung=ab]::after, table.sortierbar th[data-richtung=ab]::after { content: ' ↓'; opacity: 1; color: var(--akzent); }
button.pille.markieren { background: var(--akzent); color: #fff; }
.fotos figure:has([data-markieren]) a.mitnummer { cursor: crosshair; }
.sammelticket { margin-bottom: .8rem; } .sammelticket.erledigt { opacity: .7; }
.fotos.klein img { width: 110px; height: 82px; object-fit: cover; border-radius: 6px; border: 1px solid var(--linie); }
.fotos figure .markiert { position: absolute; right: 6px; top: 6px; background: rgba(224,32,28,.9); color: #fff; border-radius: 4px; font-size: .8rem; padding: 0 .35rem; z-index: 1; }
.fotos figure a.mitnummer { position: relative; display: block; }
/* Tuerschild-Scan: Suche im Foto sichtbar */
.ortscan-vorschau { margin: .4rem 0; }
.ortscan-vorschau canvas { display: block; max-width: 100%; border: 1px solid var(--linie); border-radius: 6px; }
.ortscan-vorschau .legende { display: flex; gap: .5rem; align-items: center; justify-content: space-between; margin-top: .2rem; }
.ortscan-vorschau .lg { display: inline-block; width: 14px; height: 10px; border: 2px solid; vertical-align: middle; margin: 0 .15rem 0 .3rem; }
.ortscan-vorschau .lg.nr { border-color: #1f9d3a; } .ortscan-vorschau .lg.ok { border-color: #1e5aa8; } .ortscan-vorschau .lg.weg { border-color: #d8362f; border-style: dashed; }
details.beitrag-neu { margin: .8rem 0; } details.beitrag-neu summary { display: inline-block; list-style: none; } details.beitrag-neu summary::-webkit-details-marker { display: none; } details.beitrag-neu[open] summary { margin-bottom: .4rem; }
/* Ticketseite: Status und Aktionen rechts */
.ticket-aktionen h2 { margin-top: 0; }
.ticket-aktionen .reihe { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin-top: .5rem; }
.ticket-aktionen .reihe > button, .ticket-aktionen .reihe > a.knopf { width: 100%; margin: 0; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; text-align: center; }
.ticket-aktionen .reihe > :only-child { grid-column: 1 / -1; }
.ticket-aktionen .loeschzeile { margin-top: .7rem; padding-top: .6rem; border-top: 1px solid var(--linie); text-align: center; }
.ticket-aktionen .loeschzeile button { margin: 0; }
/* Ticketseite: Zurueckziehen mit Rahmen wie die anderen Knoepfe */
.ticket-aktionen .reihe > button.leise { border: 1px solid var(--linie); background: var(--weiss); color: var(--tinte); }
.ticket-aktionen .reihe > button.leise:hover { border-color: var(--warn); color: var(--warn); }
/* Felder einer Zeile gleich hoch (Eingabe und Auswahl), damit Beschriftung und Feld buendig stehen */
.zeile > label:not(.inline) > input:not([type=checkbox]):not([type=radio]), .zeile > label:not(.inline) > select, .zeile > .feld input, .zeile > .feld select { min-height: 2.75rem; box-sizing: border-box; }
/* Raumbezug (Ticketseite) und Planauswahl (Schnellerfassung) */
.raumbezug { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: -.2rem 0 .6rem; }
.raumbezug .raumplan { display: inline-flex; gap: .3rem; align-items: center; }
.raumbezug .raumplan.aktiv .pille { background: var(--akzent); color: #fff; }
.raumbezug form.inline { display: inline; }
.planwahl-raum { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; margin: .3rem 0; }
.planwahl-raum .chip { font: inherit; font-size: .9rem; padding: .35rem .7rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); cursor: pointer; }
.planwahl-raum .chip.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
/* Auswahlfelder in Safari so hoch wie Eingabefelder (eigener Pfeil statt Systemdarstellung) */
select { -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23555' stroke-width='1.6'/></svg>"); background-repeat: no-repeat; background-position: right .6rem center; padding-right: 1.9rem; }
.skizze-zoom { display: flex; gap: .3rem; margin: .25rem 0; } .skizze-zoom button { flex: 1; margin: 0; }
.plan-loeschen { margin-top: .4rem; }
/* Gewerk in der Schnellerfassung */
.gewerkwahl, .priowahl { gap: .35rem; }
.gewerkwahl .chip, .priowahl .chip { position: relative; cursor: pointer; margin: 0; }
.gewerkwahl .chip input, .priowahl .chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.gewerkwahl .chip span, .priowahl .chip span { display: inline-block; padding: .45rem .85rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); font-size: .92rem; min-height: 40px; line-height: 1.5; }
.gewerkwahl .chip input:checked + span { background: #2e7d32; border-color: #2e7d32; color: #fff; font-weight: 600; }
.gewerkwahl .gewerk-neu { padding: .45rem .85rem; border-radius: 999px; border: 1px dashed var(--akzent); background: transparent; color: var(--akzent); font-size: .92rem; min-height: 40px; line-height: 1.5; margin: 0; cursor: pointer; }
.gewerkwahl .chip.neu span { border-style: dashed; }
.quick-zeile.artzeile, .quick-zeile.zielzeile { gap: .35rem; align-items: center; flex-wrap: wrap; }
.zielzeile input[type=date] { width: auto; min-width: 10.5rem; margin: 0 .3rem; }
.gewerkwahl input[name=gewerk_frei] { width: auto; min-width: 180px; margin: 0; min-height: 44px; }
/* Rollen als Pillen (Beteiligte, Mitglieder); gestrichelt = eigene Rolle des Projekts */
.funktionen.rollenwahl { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.rollenwahl .chip { position: relative; cursor: pointer; margin: 0; }
.rollenwahl .chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.rollenwahl .chip span { display: inline-block; padding: .3rem .75rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); font-size: .88rem; line-height: 1.5; }
.rollenwahl .chip span small { color: var(--grau); font-size: .74rem; margin-left: .15rem; }
.rollenwahl .chip input:checked + span { background: #2e7d32; border-color: #2e7d32; color: #fff; font-weight: 600; }
.rollenwahl .chip input:checked + span small { color: #dcefdc; }
.rollenwahl .chip input:focus-visible + span { outline: 2px solid var(--akzent); outline-offset: 2px; }
.rollenwahl .chip.eigen span { border-style: dashed; }
.rollenwahl .rolle-neu { padding: .3rem .75rem; border-radius: 999px; border: 1px dashed var(--akzent); background: transparent; color: var(--akzent); font-size: .88rem; line-height: 1.5; margin: 0; cursor: pointer; }
.rollenwahl input[name=rolle_neu] { width: auto; min-width: 180px; margin: 0; }
table.beteiligte tr.gruppenkopf th { background: var(--flaeche); text-align: left; font-size: .95rem; padding-top: .9rem; border-bottom: 2px solid var(--linie); }
table.beteiligte tr.gruppenkopf small { font-weight: 400; margin-left: .3rem; }
/* Auswertung: Rueckmeldungen je Beteiligtem */
.rueckmeldung td.zahl, .rueckmeldung th.zahl { text-align: right; white-space: nowrap; }
.rueckmeldung tfoot th { border-top: 2px solid var(--linie); }

/* Adressaten: Beteiligte mit passendem Gewerk stehen oben und sind markiert */
.adressaten tr.passend td { background: var(--ok-hell); }
.adressaten tr.passend .gewerkpille { background: var(--ok); color: #fff; }

.auswahlleiste .umbruch { flex-basis: 100%; height: 0; }
.spaltenwahl { border: 1px solid var(--rand); border-radius: 8px; padding: .4rem .8rem .6rem; margin: .4rem 0 .8rem; display: flex; flex-wrap: wrap; gap: .3rem .9rem; align-items: center; }
.spaltenwahl legend { font-weight: 600; padding: 0 .3rem; }
.spaltenwahl label.inline { margin: 0; }

/* Prioritaet: niedrig blau-grau, normal neutral, hoch rot */
.pille.prio-niedrig { background: #e7eef7; color: #3b5b8a; }
.pille.prio-normal { background: var(--flaeche); color: var(--grau); }
.pille.prio-hoch { background: var(--warn-hell); color: var(--warn); font-weight: 600; }
.priowahl .chip.prio-niedrig input:checked + span { background: #3b5b8a; border-color: #3b5b8a; color: #fff; }
.priowahl .chip.prio-normal input:checked + span { background: var(--grau); border-color: var(--grau); color: #fff; }
.priowahl .chip.prio-hoch input:checked + span { background: var(--warn); border-color: var(--warn); color: #fff; }
.prio-select.prio-hoch { border-color: var(--warn); color: var(--warn); font-weight: 600; }
.prio-select.prio-niedrig { border-color: #3b5b8a; color: #3b5b8a; }
tr[data-prioname="hoch"] td.mono a { color: var(--warn); }

.cockpit { margin: .2rem 0 .8rem; }
.cockpit .kachel.akzent { border-color: var(--akzent); color: var(--akzent); }

/* Antwort bewerten */
.stand-karte.nachbesserung { border-left: 4px solid var(--warn); }
.stand-karte.bewertung { border-left: 4px solid var(--ok); }
.stand-karte.nachfrage { border-left: 4px solid #4a7bd0; }
.pille.abschluss { margin-left: auto; }
.abschluss-wahl { border: 1px solid var(--rand, #ddd); border-radius: 8px; padding: .5rem .8rem; margin: .4rem 0 .6rem; }
.abschluss-wahl legend { font-weight: 600; padding: 0 .3rem; }
.abschluss-wahl .radio { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin: .25rem 0; font-weight: normal; }
.abschluss-wahl .radio input[type=date] { width: auto; margin: 0 0 0 .3rem; }
.warnknopf { border-color: var(--warn); color: var(--warn); }
.nachbesserung { margin: .4rem 0 .6rem; padding: .6rem; border: 1px solid var(--warn); border-radius: 8px; background: var(--warn-hell); }
.nachbesserung textarea, .nachbesserung input { background: #fff; }

.vorlagenzeile { display: flex; gap: .6rem; align-items: center; margin-bottom: .4rem; }
.vorlagenzeile select { flex: 1; margin: 0; }
details.vorlage { padding: .5rem 0; border-bottom: 1px solid var(--linie); }
details.vorlage summary { cursor: pointer; }

.ansichtkopf { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; margin-top: 1.2rem; }
.ansichtkopf h2 { margin: 0; }
.ansichtkopf select { width: auto; max-width: 100%; margin: 0; }
.ansicht[hidden] { display: none; }

/* Live-Aktualisierung: Hinweisleiste unten, wenn die Seite nicht automatisch neu laden darf (Eingabe laeuft) */
.live-leiste { position: fixed; left: 50%; bottom: 1rem; transform: translateX(-50%); z-index: 60; background: var(--akzent, #1e5aa8); color: #fff;
  padding: .55rem .9rem; border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.25); display: flex; gap: .7rem; align-items: center; font-size: .92rem; max-width: 92vw; }
.live-leiste button { background: #fff; color: var(--akzent, #1e5aa8); border: 0; }
.live-leiste.kurz { background: var(--ok, #2d8a4e); }
@media print { .live-leiste { display: none; } }

/* Auswertung: Klick auf eine Kennzahl -> betroffene Tickets hervorheben, Rest abblenden */
.kennzahlen .kachel.aktiv { border-color: var(--akzent); background: var(--akzent-hell, #e8f0fb); box-shadow: 0 0 0 2px var(--akzent) inset; }
.auswertung-hervor .akte li.treffer { background: #fff3c4; border-left: 4px solid #e0a030; padding-left: .5rem; border-radius: 4px; }
.auswertung-hervor .akte li.gedimmt { opacity: .35; }
.auswertung-hervor details.statusblock.gedimmt { opacity: .45; }
.auswertung-hervor details.statusblock.treffer > summary { background: #fff3c4; border-radius: 6px; }
.auswertung-hervor tr.treffer td { background: #fff3c4; }
.auswertung-hervor tr.gedimmt td { opacity: .4; }

/* Projektlogo: erzeugt (SVG aus dem Kuerzel) oder hochgeladen; Groessen je Einsatzort */
.projektlogo { width: 28px; height: 28px; border-radius: 6px; object-fit: cover; vertical-align: middle; margin-right: .45rem; background: #fff; }
.tabs .projektlogo { align-self: center; margin-right: .3rem; }
.kachel .kachel-logo { width: 44px; height: 44px; border-radius: 9px; float: right; margin: 0 0 .4rem .6rem; }
.projektlogo.gross { width: 96px; height: 96px; border-radius: 16px; border: 1px solid var(--linie); }
.logo-feld { display: flex; gap: 1rem; align-items: flex-start; margin: .4rem 0 .6rem; }
.logo-feld > label { flex: 1; }
.logo-feld.aus .projektlogo.gross { opacity: .35; filter: grayscale(1); }

/* Auswertung Bautagebuch: einfache Balken */
.balken { background: var(--linie); border-radius: 4px; height: 12px; overflow: hidden; }
.balken span { display: block; height: 100%; background: var(--akzent); border-radius: 4px; }
table.verlauf td { vertical-align: middle; }

/* Beteiligten-Tabelle: Firma schmal mit Umbruch, danach Gewerk, Funktion, Rollen; Name bleibt einzeilig */
table.beteiligte th.name { min-width: 14rem; }
table.beteiligte td.name { white-space: nowrap; }
table.beteiligte th.firma { min-width: 14rem; }
table.beteiligte td.firma { white-space: normal; overflow-wrap: anywhere; line-height: 1.25; }
table.beteiligte th.gewerk { min-width: 7rem; }
table.beteiligte th.funktion { min-width: 11rem; }
table.beteiligte td.funktion { white-space: normal; line-height: 1.25; }
table.beteiligte.fest th { min-width: 0; }
table.beteiligte td.rollen { white-space: nowrap; }

/* Spaltenbreiten per Ziehen (data-spalten="<name>"): Griff am rechten Rand jeder Kopfzelle, Breiten im Browser gemerkt; Doppelklick = zuruecksetzen */
table[data-spalten] th { position: relative; }
table[data-spalten] th .spaltengriff { position: absolute; top: 0; right: -4px; width: 9px; height: 100%; cursor: col-resize; user-select: none; z-index: 2; }
table[data-spalten] th .spaltengriff:hover, table[data-spalten] th .spaltengriff.aktiv { background: var(--akzent); opacity: .35; }
table[data-spalten].fest { table-layout: fixed; }
table[data-spalten].fest td { white-space: normal; }

/* Stammdaten: Projekt-Haken mit Projektrolle daneben */
.projektrolle { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin: .15rem 0; }
.projektrolle label.inline { min-width: 14rem; margin: 0; }
.projektrolle select { width: auto; margin: 0; }

/* Stifteingabe (Schnellerfassung): Schreibflaeche unter dem Textfeld */
.stiftbereich { margin-top: .5rem; border: 1px solid var(--linie); border-radius: 10px; background: var(--weiss); overflow: hidden; }
.stiftbereich[hidden] { display: none; }
.stift-leiste { display: flex; gap: .5rem .8rem; align-items: center; flex-wrap: wrap; padding: .4rem .5rem; background: var(--flaeche); border-bottom: 1px solid var(--linie); }
.stift-leiste > span { display: flex; gap: .3rem; align-items: center; flex-wrap: wrap; }
.stift-leiste .aktionen { margin-left: auto; }
.stift-leiste .farbe { width: 28px; height: 28px; border-radius: 50%; border: 3px solid transparent; padding: 0; cursor: pointer; }
.stift-leiste .farbe.aktiv { border-color: #fff; box-shadow: 0 0 0 2px #333; }
.stift-leiste .staerken .knopf { min-width: 40px; font-weight: bold; }
.stift-leiste .knopf.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.stiftbereich canvas { display: block; width: 100%; touch-action: none; background: #fff; cursor: crosshair; }
.stiftbereich .stift-stand { margin: 0; padding: .3rem .6rem .5rem; min-height: 1.4em; }
.quick-sprache textarea { min-height: 7.5rem; font-size: 1.05rem; }
.quick-raster.punkt .quick-sprache textarea { min-height: 11rem; }

/* Begehung: Punkte-/Ticketliste - Titelspalte bekommt den Platz, Nummer/Datum bleiben schmal */
table.liste th.titelspalte, table.liste td.titelspalte { min-width: 16rem; width: 45%; }   /* nicht "punkt": die Klasse gehoert den Ausgaben-Punktkarten */
table.liste.punkteliste td { vertical-align: top; }                 /* Begehungspunkte: alle Zellen oben buendig */
table.liste.punkteliste td.mono b { font-size: 1.05rem; }
table.liste.punkteliste td .zeile.klein { margin-top: 0; flex-wrap: nowrap; }       /* Verantwortlich: Auswahl und ✓ in einer Zeile */
table.liste.punkteliste td .zeile.klein select { max-width: 13rem; }

/* Skizze aus der Stifteingabe auf der Ticketseite: rechts im Text */
.stand-karte figure.skizze { float: right; width: 40%; max-width: 320px; margin: 0 0 .5rem 1rem; }
.stand-karte figure.skizze img { width: 100%; display: block; border: 1px solid var(--linie); border-radius: 6px; background: #fff; }
.stand-karte figure.skizze figcaption { font-size: .78rem; color: var(--grau); }
.stand-karte .stand::after { content: ""; display: block; clear: both; }

/* Punkt bearbeiten: vorhandene Fotos, zum Entfernen markiert */
.fotoliste.vorhanden { margin-bottom: .6rem; }
.fotoliste figure.weg img { opacity: .3; filter: grayscale(1); }

/* BIM-Viewer */
.bim-leiste { display: flex; gap: .6rem 1rem; align-items: center; flex-wrap: wrap; margin-bottom: .5rem; }
.bim-suche { display: flex; gap: .4rem; align-items: center; flex: 1 1 320px; }
.bim-suche input { flex: 1; margin: 0; min-height: 2.4rem; }
.bim-geschosse { display: flex; gap: .3rem; flex-wrap: wrap; align-items: center; }
.bim-geschosse .bim-alles { font-weight: 600; color: var(--akzent); border-color: var(--akzent); border-radius: 999px; padding: .15rem .7rem; font-size: .8rem; margin-right: .2rem; }
.bim-geschosse .chip { cursor: pointer; border: 1px solid var(--linie); border-radius: 999px; padding: .15rem .55rem; background: var(--weiss); font: inherit; font-size: .76rem; opacity: .55; }
.bim-geschosse .chip.aktiv { opacity: 1; background: var(--akzent); color: #fff; border-color: var(--akzent); }
.bim-optionen { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; font-size: .9rem; }
.bim-optionen label.inline { margin: 0; }
.bim-flaeche { position: relative; height: calc(100vh - 290px); min-height: 420px; border: 1px solid var(--linie); border-radius: 10px; overflow: hidden; background: #f4f6f8; }
.bim-flaeche canvas { width: 100%; height: 100%; display: block; touch-action: none; }
/* Vollbild: echter Fullscreen (requestFullscreen) oder - wo der Browser das nicht kann (iPhone) - fest ueber die ganze Seite */
.bim:fullscreen, .bim.vollbild { position: fixed; inset: 0; z-index: 1000; background: #fff; padding: .5rem .7rem; display: flex; flex-direction: column; margin: 0; max-width: none; }
.bim:fullscreen .bim-flaeche, .bim.vollbild .bim-flaeche { flex: 1 1 auto; height: auto; min-height: 0; }
.bim:fullscreen > p.grau, .bim.vollbild > p.grau { display: none; }
body.bim-vollbild { overflow: hidden; }
#bim-vollbild { font-weight: 600; color: var(--akzent); border: 2px solid var(--akzent); background: var(--akzent-hell); padding-left: .8rem; padding-right: .8rem; }
#bim-vollbild:hover { background: var(--akzent); color: #fff; }
#bim-vollbild.aktiv { background: var(--akzent); color: #fff; border-color: var(--akzent); }
.bim-stand { position: absolute; left: .6rem; bottom: .6rem; background: rgba(255,255,255,.92); border: 1px solid var(--linie); border-radius: 8px; padding: .3rem .6rem; font-size: .85rem; }
.bim-stand[hidden] { display: none; }
/* Virtueller Flug: Hinweis oben im Bild (naechste Richtungsaenderung, Tuer, Treppe, Aufzug, Ziel) */
.flug-hinweis { position: absolute; top: .7rem; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: .7rem; max-width: calc(100% - 2rem);
  background: rgba(17, 24, 39, .86); color: #fff; border-radius: 12px; padding: .5rem 1rem; font-size: 1.05rem; font-weight: 600; box-shadow: 0 4px 16px rgba(0,0,0,.25); pointer-events: none; z-index: 5; }
.flug-hinweis[hidden] { display: none; }
/* Digitale Wegfuehrung: Beschreibung neben dem Modell, Link-Ansicht ohne Werkzeuge */
.weg-panel { position: absolute; right: .6rem; bottom: .6rem; width: min(340px, 85%); max-height: 55%; overflow: auto; background: rgba(255,255,255,.96); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); font-size: .86rem; z-index: 3; }
.weg-titel { padding: .5rem .7rem .15rem; }
.weg-aktuell { display: flex; gap: .45rem; align-items: baseline; padding: .3rem .7rem; margin: .15rem .4rem; border-radius: 8px; background: var(--akzent-hell); font-weight: 600; }
.weg-aktuell[hidden] { display: none; }
.weg-aktuell .weg-zeichen { flex: 0 0 1.4rem; text-align: center; }
.weg-aktuell small { display: block; font-weight: 400; color: var(--grau); font-size: .78rem; }
.weg-startzeile { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; padding: .15rem .7rem; font-size: .82rem; color: var(--grau); }
.weg-startzeile .knopf { margin: 0; padding: .15rem .55rem; font-size: .8rem; cursor: pointer; }
.weg-scan-stand { padding: .15rem .7rem .3rem; }
.weg-scan-stand[hidden] { display: none; }
.weg-scan-stand .chip { margin: .15rem .2rem 0 0; font: inherit; font-size: .8rem; padding: .15rem .55rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); cursor: pointer; }
.weg-steuerung { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; padding: .3rem .7rem .4rem; }
.weg-steuerung .knopf { margin: 0; }
.weg-tempo { display: inline-flex; align-items: center; gap: .25rem; color: var(--grau); font-size: .82rem; }
.weg-tempo button { margin: 0; font: inherit; font-size: .82rem; padding: .15rem .6rem; min-height: 0; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); color: var(--tinte); cursor: pointer; }
.weg-tempo button.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.weg-vorlesen[aria-pressed="true"] { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.weg-vorlesen-hinweis { padding: 0 .7rem .35rem; }
.weg-vorlesen-hinweis[hidden] { display: none; }
.weg-liste summary { padding: .1rem .7rem .4rem; cursor: pointer; color: var(--grau); font-size: .82rem; }
.weg-schritte { margin: 0; padding: 0 .7rem .6rem; list-style: none; }
.weg-schritte li { margin: .25rem 0; display: flex; gap: .4rem; align-items: baseline; }
.weg-schritte li .weg-zeichen { flex: 0 0 1.4rem; text-align: center; }
.weg-schritte li:last-child { font-weight: 600; }
.weg-schritte li.aktiv { color: var(--akzent); font-weight: 700; }
.weg-link-kopf { display: flex; flex-wrap: wrap; gap: .3rem .8rem; align-items: baseline; margin: .2rem 0 .6rem; font-size: 1.05rem; }
/* Weg per Link: nur der Weg - keine Werkzeugleiste, keine Menues, keine freie Kamera */
.bim.nur-weg .bim-leiste, .bim.nur-weg > p.grau.klein { display: none; }
.bim.nur-weg .bim-flaeche { height: calc(100vh - 80px); height: calc(100dvh - 4.2rem); min-height: 320px; }
.bim.nur-weg .bim-stand { top: .5rem; bottom: auto; }
/* Wegfuehrung auf dem Handy: Tafel als schmale Leiste unten (aktueller Schritt, Knoepfe, Liste aufklappbar), Modell in voller Hoehe */
@media (max-width: 700px) {
  .weg-panel { left: .4rem; right: .4rem; bottom: calc(.4rem + env(safe-area-inset-bottom, 0px)); width: auto; max-height: 45%; font-size: .9rem; }
  .weg-titel { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: .85rem; padding-top: .4rem; }
  .weg-steuerung { padding: .25rem .5rem .35rem; gap: .3rem; }
  .weg-panel .nur-breit { display: none; }
  .weg-steuerung .knopf { padding: .35rem .7rem; }
  .weg-tempo button { padding: .3rem .55rem; }
  .flug-hinweis { top: .4rem; max-width: calc(100% - .8rem); gap: .5rem; padding: .45rem .7rem; font-size: .95rem; }
  .flug-hinweis .pfeil { font-size: 1.35rem; }
  .weg-link-kopf { font-size: .92rem; margin: 0 0 .3rem; gap: 0 .6rem; }
  .weg-link-kopf .grau { font-size: .78rem; }
  body:has(.bim.nur-weg) main { padding: .3rem .4rem !important; }
  .bim.nur-weg .bim-flaeche { height: calc(100vh - 56px); height: calc(100dvh - 3.3rem); border-radius: 8px; }
}
.bim.nur-weg canvas { cursor: default; touch-action: none; }
/* Fenster „Wohin möchten Sie?“ */
.wegfenster { max-width: 1000px; margin: 1rem auto; }
.wegfenster .wohin-fenster { padding: 1.4rem 1.6rem; }
.wegfenster .wohin-fenster h2 { font-size: 1.6rem; }
.wegfenster .wohin { display: flex; gap: .6rem; flex-wrap: wrap; align-items: stretch; }
.wegfenster .wohin-start { margin-top: .7rem; }
.wegfenster .wohin-start .feldname { display: block; font-weight: 600; margin-bottom: .2rem; }
.wegfenster .wohin-start .mit-kamera input { font-size: 1.05rem; }
.wegfenster .wohin textarea { flex: 1 1 320px; margin: 0; font-size: 1.25rem; line-height: 1.4; padding: .7rem .9rem; min-height: 4.2rem; resize: vertical; }
.wegfenster .wohin button { margin: 0; font-size: 1.1rem; padding: .7rem 1.3rem; }
.wegfenster .wohin-beispiele { margin-top: .6rem; display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; }
.wegfenster .wohin-beispiele .chip { margin: 0; cursor: pointer; font: inherit; font-size: .85rem; padding: .2rem .75rem; min-height: 0; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); color: var(--tinte); }
.wegfenster .kandidaten .grund { display: block; color: var(--grau); font-size: .85rem; }
.wegfenster .weg-ergebnis h3 { margin: .2rem 0 .3rem; }
.wegfenster .weg-schritte { padding: .2rem 0; font-size: .95rem; }
.wegfenster .kandidaten a { display: block; padding: .3rem 0; }
.wegfenster .weg-warnung { margin: .2rem 0 .7rem; }
.wegfenster .nav-karte summary { cursor: pointer; }
.wegfenster .nav-karte[open] summary { margin-bottom: .6rem; }
.wegfenster .nav-geschosse { display: flex; flex-wrap: wrap; gap: .3rem; margin: .2rem 0 .5rem 1.6rem; }
.wegfenster .nav-geschosse .chip { position: relative; cursor: pointer; margin: 0; }
.wegfenster .nav-geschosse .chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.wegfenster .nav-geschosse .chip span { display: inline-block; padding: .2rem .7rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); font-size: .85rem; }
.wegfenster .nav-geschosse .chip input:checked + span { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.wegfenster .nav-karte textarea[name=raeume] { margin-left: 1.6rem; width: calc(100% - 1.6rem); }
.wegfenster.gast [data-gast-scan-stand] .chip { margin: .2rem .25rem 0 0; font: inherit; font-size: .82rem; padding: .15rem .6rem; border-radius: 999px; border: 1px solid var(--linie); background: var(--weiss); cursor: pointer; }
.wegfenster .weg-warnung .weg-frage { margin: .6rem 0 .4rem; color: var(--tinte); }
.wegfenster .weg-warnung .aktionen .knopf { margin: 0; }
.wegfenster .link-mit-qr { display: flex; gap: 1.2rem; align-items: flex-start; flex-wrap: wrap; }
.wegfenster .link-mit-qr > div { flex: 1 1 260px; min-width: 0; }
.wegfenster .weg-qr { margin: 0; text-align: center; }
.wegfenster .weg-qr img { display: block; width: 180px; height: 180px; image-rendering: pixelated; border: 1px solid var(--linie); border-radius: 8px; background: #fff; }
@media (max-width: 700px) {
  .wegfenster { margin: .3rem auto; }
  .wegfenster .wohin-fenster { padding: 1rem; }
  .wegfenster .wohin-fenster h2 { font-size: 1.3rem; }
  .wegfenster .wohin textarea { flex-basis: 100%; font-size: 1.1rem; }
  .wegfenster .wohin button { flex: 1 1 100%; }
  .wegfenster .weg-ergebnis .aktionen .knopf { flex: 1 1 100%; text-align: center; }
}
.flug-hinweis .pfeil { font-size: 1.7rem; line-height: 1; }
.flug-hinweis small { display: block; font-weight: 400; font-size: .82rem; opacity: .8; }
.bim-info { position: absolute; right: .6rem; top: .6rem; width: min(340px, 90%); max-height: calc(100% - 1.2rem); overflow: auto; background: rgba(255,255,255,.96); border: 1px solid var(--linie); border-radius: 10px; padding: .6rem .8rem; box-shadow: 0 4px 16px rgba(0,0,0,.08); }
.bim-info[hidden] { display: none; }
.bim-schnitt { position: absolute; left: 50%; transform: translateX(-50%); bottom: .6rem; width: min(560px, calc(100% - 1.2rem)); background: rgba(255,255,255,.96); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); padding: .5rem .7rem; font-size: .85rem; display: flex; flex-direction: column; gap: .4rem; z-index: 2; }
.bim-schnitt-arten, .bim-schnitt-zeile { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; }
.bim-schnitt-arten .knopf.aktiv, .bim-schnitt .knopf.aktiv, #bim-schnitt-knopf.aktiv { background: var(--akzent); color: #fff; border-color: var(--akzent); }
.bim-schnitt input[type=range] { flex: 1 1 140px; margin: 0; accent-color: #ff2d55; }
.bim-schnitt output { min-width: 8.5rem; text-align: right; font-variant-numeric: tabular-nums; }
.bim-schnitt-zeile.box b { width: 2.8rem; } .bim-schnitt-zeile.box output { min-width: 11rem; font-size: .8rem; }
.bim-schnitt label.inline { margin: 0; }
.bim-schnitt-name { width: 4.2rem; color: var(--grau); font-size: .8rem; }
.bim-schnitt output.kurz { min-width: 3.5rem; }
.bim-schnitt .dehn { flex: 1; }
.bim-schnitt-farbwahl { display: inline-flex; align-items: center; gap: .3rem; }
.bim-schnitt input.klein-farbe, .bim-schnitt-farbwahl input[type=color] { width: 2rem; height: 1.6rem; padding: 0; border: 1px solid var(--linie); border-radius: 4px; margin: 0; background: none; cursor: pointer; }
.bim-schnitt .farbpunkt { width: 1.1rem; height: 1.1rem; border-radius: 50%; border: 1px solid rgba(0,0,0,.25); padding: 0; cursor: pointer; }
.bim-schnitt input[type=range]:disabled { opacity: .35; cursor: not-allowed; }
.bim-info h3 { margin: 0 2rem .4rem 0; font-size: 1rem; }
.bim-info dl { display: grid; grid-template-columns: minmax(5.5rem, 42%) minmax(0, 1fr); gap: .2rem .7rem; margin: 0; font-size: .82rem; line-height: 1.35; }
.bim-info dt { color: var(--grau); overflow-wrap: anywhere; hyphens: auto; }
.bim-info dd { margin: 0; overflow-wrap: anywhere; }
.bim-info dd.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .78rem; }
.bim-info dl .pset { grid-column: 1 / -1; margin: .55rem 0 .1rem; padding-top: .35rem; border-top: 1px solid var(--linie); font-weight: 600; font-size: .78rem; color: var(--text, #222); }
.bim-info h3 { overflow-wrap: anywhere; }
.bim-info-zu { position: absolute; right: .4rem; top: .4rem; }
.bim-ober { position: absolute; left: .6rem; bottom: .6rem; width: min(320px, 85%); max-height: min(60%, 460px); display: flex; flex-direction: column; background: rgba(255,255,255,.96); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); font-size: .82rem; z-index: 3; }
.bim-ober[hidden] { display: none; }
.bim-ober .bim-treffer-kopf { display: flex; align-items: center; gap: .4rem; padding: .4rem .6rem; border-bottom: 1px solid var(--linie); }
.bim-ober .bim-treffer-kopf button { margin-left: auto; flex: none; }
.bim-ober .bim-treffer-kopf b { flex: none; }
#bim-ober-stand { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bim-ober-modelle { margin: .35rem .6rem 0; line-height: 1.3; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.bim-ober-modelle[hidden] { display: none; }
.bim-ober-knoepfe { display: flex; gap: .3rem; padding: .35rem .6rem; align-items: center; }
.bim-ober-knoepfe input { flex: 1; min-width: 0; font-size: .8rem; padding: .15rem .4rem; }
.bim-ober ul { list-style: none; margin: 0; padding: 0 .3rem; overflow: auto; flex: 1; min-height: 4.5rem; }
.bim-ober > :not(ul) { flex: none; }
.bim-ober li label { display: flex; align-items: center; gap: .45rem; padding: .18rem .3rem; border-radius: 6px; cursor: pointer; }
.bim-ober li label:hover { background: #f1f5f9; }
.bim-ober li i { width: 22px; height: 16px; border-radius: 3px; border: 1px solid rgba(0,0,0,.18); background-size: 22px 22px; background-blend-mode: multiply; flex: none; }
.bim-ober li .n { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.bim-ober li .z { color: var(--grau); font-size: .74rem; }
.bim-ober-fuss { margin: .3rem .6rem .45rem; line-height: 1.3; }
.bim-treffer { position: absolute; left: .6rem; top: .6rem; width: min(300px, 80%); max-height: calc(100% - 3.4rem); display: flex; flex-direction: column; background: rgba(255,255,255,.96); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); font-size: .84rem; }
.bim-treffer[hidden] { display: none; }
.bim-modelle { position: absolute; left: .6rem; top: .6rem; width: min(380px, 88%); max-height: calc(100% - 3.4rem); overflow: auto; background: rgba(255,255,255,.97); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); font-size: .85rem; z-index: 3; }
.bim-modell-zeile { padding: .45rem .7rem; border-bottom: 1px solid var(--linie); display: flex; flex-direction: column; gap: .3rem; }
.bim-modell-zeile .kopf { display: flex; align-items: center; gap: .4rem; font-weight: 600; word-break: break-word; }
.bim-modell-zeile .kopf label { margin: 0; display: flex; gap: .4rem; align-items: flex-start; }
.bim-modell-zeile .opt { display: flex; flex-wrap: wrap; gap: .3rem .6rem; align-items: center; }
.bim-modell-zeile .opt select { width: auto; margin: 0; font-size: .8rem; padding: .15rem .3rem; }
.bim-modell-zeile .opt input[type=range] { width: 7rem; margin: 0; }
.bim-modell-zeile .lage { display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; font-size: .78rem; }
.bim-modell-zeile .lage input { width: 4.6rem; margin: 0; padding: .15rem .3rem; font-size: .8rem; }
.bim-modell-zeile .stand { color: var(--grau); font-size: .78rem; }
.bericht-anlagen { margin: .2rem 0 .5rem 1.2rem; padding: 0; }
.bericht-anlagen li { margin: .15rem 0; word-break: break-word; }
.anlagen-hochladen { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.anlagen-hochladen input[type=file] { flex: 1 1 14rem; margin: 0; }
.bim-speicher-hinweis { margin: 0; padding: .45rem .7rem; background: var(--warn-hell); color: var(--warn); border-bottom: 1px solid var(--linie); font-size: .8rem; }
.bim-speicher-hinweis[hidden] { display: none; }
.bim-modell-zeile .stand.warn { color: #b45309; }
#bim-modelle-knopf.aktiv { background: var(--akzent); color: #fff; border-color: var(--akzent); }
.bim-treffer-kopf { display: flex; align-items: center; justify-content: space-between; gap: .4rem; padding: .35rem .4rem .35rem .7rem; border-bottom: 1px solid var(--linie); }
.bim-treffer ol { list-style: none; margin: 0; padding: .2rem 0; overflow: auto; }
.bim-treffer li button { display: block; width: 100%; text-align: left; background: none; border: 0; border-radius: 0; padding: .3rem .7rem; font: inherit; color: inherit; cursor: pointer; }
.bim-treffer li button:hover { background: #eef2f7; }
.bim-treffer li.aktiv button { background: #ffe4ea; box-shadow: inset 3px 0 0 #ff2d55; }
.bim-treffer li small { display: block; color: var(--grau); }
.bim-treffer { width: min(360px, 85%); }
.bim-treffer-filter { display: flex; flex-wrap: wrap; gap: .3rem; padding: .35rem .5rem; border-bottom: 1px solid var(--linie); }
.bim-treffer-filter select { flex: 1 1 45%; min-width: 0; font-size: .8rem; padding: .2rem .3rem; margin: 0; }
.bim-treffer li.gruppe { display: flex; align-items: center; position: sticky; top: 0; background: #f3f5f8; border-top: 1px solid var(--linie); z-index: 1; }
.bim-treffer li.gruppe .gruppe-kopf { flex: 1; font-weight: 600; padding: .35rem .6rem; }
.bim-treffer li.gruppe .gruppe-kopf span { font-weight: 400; color: var(--grau); margin-left: .25rem; }
.bim-treffer li.gruppe .gruppe-zoom { width: auto; padding: .3rem .55rem; }
.bim-treffer li.mehr button { color: var(--akzent); font-size: .8rem; }
table.liste td.rechts, table.liste th.rechts { text-align: right; }

/* BIM-Upload: Fortschrittsbalken auf heller Karte */
#bim-upload .uploadbalken { background: var(--flaeche); border: 1px solid var(--linie); margin: .4rem 0 .2rem; }
#bim-upload .uploadbalken .balken { background: var(--akzent); }

/* Modellansicht: Viewer als Einblendung (iframe) ueber der Seite */
.modellansicht { position: fixed; inset: 0; z-index: 1000; background: rgba(17,17,17,.6); padding: 1.5vh 1.5vw; }
.modellansicht[hidden] { display: none; }
.modellansicht iframe { width: 100%; height: 100%; border: 0; border-radius: 10px; background: #fff; }
.bim-einbettung { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; margin-bottom: .4rem; }
.bim-einbettung .aktionen { margin-left: auto; display: flex; gap: .4rem; }
.bim.einbettung .bim-flaeche { height: calc(100vh - 150px); min-height: 320px; }

/* Bildunterschrift unter Vorschaubildern (Erfassung) */
.fotoliste input.bildunterschrift { width: 100%; box-sizing: border-box; margin: .25rem 0 0; padding: .2rem .35rem; font-size: .78rem; min-height: 0; border-radius: 5px; }
.fotoliste figure.weg input.bildunterschrift { opacity: .4; }
.fotoliste { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }

.fotoliste figure:has([data-markieren]) img { cursor: crosshair; }

/* Mehrfachauswahl Verantwortliche (Punkteliste) */
td.verantwortliche details.mehrfachwahl { position: relative; }
td.verantwortliche details.mehrfachwahl > summary { list-style: none; display: inline-flex; flex-wrap: wrap; gap: .25rem; align-items: center; text-align: left; max-width: 18rem; }
td.verantwortliche details.mehrfachwahl > summary::-webkit-details-marker { display: none; }
td.verantwortliche details.mehrfachwahl .karte.schwebend { position: fixed; left: 50%; top: 15vh; transform: translateX(-50%); right: auto; width: min(420px, 92vw); text-align: left; white-space: normal; z-index: 20; }   /* wie die Bearbeiten-Dialoge: nie von der Tabelle abgeschnitten */

.raumliste-stand { padding: .45rem 0; border-top: 1px solid var(--linie); }
.raumliste-stand .gruen { color: #15803d; }

/* KI-Suche im Viewer */
.bim-ki-zeile { display: flex; flex-wrap: wrap; gap: .5rem; flex: 1 1 100%; margin: .2rem 0 .1rem; padding: .45rem; align-items: center;
                background: linear-gradient(90deg, var(--akzent-hell), #f3ecfd); border: 1px solid #c9d8f0; border-radius: 12px; }
.bim-ki-zeile input { flex: 1 1 auto; margin: 0; font-size: 1rem; padding: .6rem .85rem; border: 2px solid var(--akzent); border-radius: 9px; background: var(--weiss); }
.bim-ki-zeile input:focus { outline: none; box-shadow: 0 0 0 4px rgba(30, 90, 168, .18); }
.bim-ki-zeile .knopf { font-size: .95rem; padding: .55rem 1.1rem; border-radius: 9px; }
.bim-ki { position: absolute; left: .6rem; top: .6rem; width: min(400px, 88%); max-height: calc(100% - 3.4rem); overflow: auto; background: rgba(255,255,255,.97); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); font-size: .85rem; z-index: 4; }
.bim-ki .antwort { padding: .5rem .7rem; border-bottom: 1px solid var(--linie); }
.bim-ki .ergebnis { padding: .45rem .7rem; border-bottom: 1px solid var(--linie); }
.bim-ki .ergebnis .kopf { display: flex; align-items: center; gap: .45rem; }
.bim-ki .ergebnis .kopf b { flex: 1; }
.bim-ki .ergebnis input[type=color] { width: 1.8rem; height: 1.5rem; padding: 0; border: 1px solid var(--linie); border-radius: 4px; margin: 0; cursor: pointer; }
.bim-ki .ergebnis .zahl { font-size: 1.05rem; font-weight: 700; }
.bim-ki .ergebnis .knopf.aktiv { background: var(--akzent); color: #fff; border-color: var(--akzent); }
.bim-ki .ergebnis ul { list-style: none; margin: .3rem 0 0; padding: 0; max-height: 220px; overflow: auto; }
.bim-ki .ergebnis li button { display: flex; justify-content: space-between; width: 100%; text-align: left; background: none; border: 0; padding: .2rem .3rem; font: inherit; cursor: pointer; border-radius: 4px; }
.bim-ki .ergebnis li button:hover { background: #eef2f7; }
.bim-ki .ergebnis .arten { color: var(--grau); font-size: .78rem; margin-top: .2rem; }
.bim-ki .laedt { padding: .7rem; color: var(--grau); }
.bim-ki .fehler { padding: .7rem; color: #b91c1c; }
.bim-etiketten { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 1; }
.bim-etikett { position: absolute; transform: translate(-50%, -50%); background: rgba(255,255,255,.88); border: 1px solid rgba(0,0,0,.18); border-radius: 4px; padding: 0 .25rem; font-size: .68rem; line-height: 1.25; white-space: nowrap; color: #111; text-align: center; }
.bim-etikett small { display: block; color: #555; font-size: .6rem; max-width: 9rem; overflow: hidden; text-overflow: ellipsis; }
.bim-etikett.ki { border-color: var(--etikett-farbe, #ff2d55); box-shadow: 0 0 0 1px var(--etikett-farbe, #ff2d55); }
.bim-etikett.aks { font-family: ui-monospace, Menlo, monospace; font-size: .62rem; background: rgba(255,248,225,.95); border-color: #c98a00; color: #4a3500; transform: translate(-50%, -100%); }
.bim-treffer-aks { display: block; margin: .2rem .5rem .3rem; }

/* BIM: Fortschrittsfenster beim Einlesen */
.bim-fortschritt { border: 1px solid var(--linie); border-radius: 10px; padding: .6rem .8rem; margin: .5rem 0; background: #f8fafc; }
.bim-fortschritt.laeuft { border-color: var(--akzent); }
.bim-fortschritt .kopf { display: flex; justify-content: space-between; gap: .6rem; flex-wrap: wrap; align-items: baseline; margin-bottom: .35rem; }
.bim-fortschritt .uploadbalken { margin: 0 0 .45rem; }
.bim-fortschritt .balken { transition: width .6s ease; }
.bim-log { max-height: 220px; overflow: auto; margin: 0; padding: .45rem .55rem; background: #0f172a; color: #e2e8f0; border-radius: 6px; font-size: .75rem; line-height: 1.4; white-space: pre-wrap; }
.bim-fortschritt .uploadbalken { background: #dbe3ec; }
.knopf.aus { opacity: .45; pointer-events: none; }

/* BIM: Auswahlliste "volle Details" und Zurueck-Knopf */
.bim-details { position: relative; display: inline-block; }
.bim-details-liste { position: absolute; left: 0; top: calc(100% + .3rem); z-index: 20; min-width: 280px; max-width: 420px; background: #fff; border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 6px 20px rgba(0,0,0,.12); padding: .5rem .7rem; display: flex; flex-direction: column; gap: .35rem; }
.bim-details-liste[hidden] { display: none; }
.bim-details-liste label.inline { margin: 0; display: flex; gap: .4rem; align-items: baseline; word-break: break-word; }
#bim-details-knopf.aktiv { background: var(--akzent); color: #fff; border-color: var(--akzent); }
.bim-zurueck { font-weight: 600; }

/* BIM-Viewer: kompakte Kopfzeile mit den angezeigten Modellen und ihrem Detailgrad */
.bim-kopf { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .4rem; font-size: .9rem; margin: .2rem 0 .5rem; }
.bim-kopf .zurueck { color: var(--grau); }
.bim-modellzeile { display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; }
.bim-mz { display: inline-flex; align-items: center; gap: .3rem; border: 1px solid var(--linie); border-radius: 6px; padding: .1rem .2rem .1rem .45rem; background: #fff; font-size: .8rem; max-width: 100%; }
.bim-mz.basis { font-weight: 600; border-color: var(--akzent); }
.bim-mz .n { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 26rem; }
.bim-mz i { width: .65rem; height: .65rem; border-radius: 50%; display: inline-block; }
.bim-mz .stufe { font: inherit; font-size: .7rem; font-weight: 600; border: 0; border-radius: 4px; padding: .05rem .35rem; background: #e5e7eb; color: #374151; cursor: pointer; }
.bim-mz .stufe.voll { background: var(--akzent); color: #fff; }
.bim-mz .stufe.fest { background: #eef2f7; color: var(--grau); cursor: default; }

/* Schwebende Viewer-Fenster: an der Kopfzeile verschiebbar */
.griff { cursor: move; touch-action: none; user-select: none; }
.bim-griff { color: var(--grau); padding: 0 .2rem; font-weight: 700; letter-spacing: -2px; }
.bim-info h3.griff { padding-right: 1.5rem; }

/* KI-Spracheingabe */
#bim-ki-mikro.aktiv { background: #dc2626; color: #fff; border-color: #dc2626; animation: bim-puls 1.6s ease-in-out infinite; }
@keyframes bim-puls { 0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, .45); } 50% { box-shadow: 0 0 0 6px rgba(220, 38, 38, 0); } }
.bim-ki-hoeren { flex: 1 1 100%; margin: .15rem 0 0; }
.bim-ki-hoeren.bereit { color: #b91c1c; font-weight: 600; }

/* nur fuer Tastatur/Browser: Standardknopf eines Formulars (Eingabetaste) ohne sichtbare Flaeche */
.unsichtbar { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
/* "Neues Ticket" in der Reiterleiste: normaler Primaerknopf (die Reiter-Linkfarbe nicht uebernehmen) */
nav.tabs a.knopf.primaer, nav.tabs a.knopf.primaer:hover { color: #fff; font-weight: 600; text-decoration: none; border-bottom-color: transparent; }
/* Erfassungsfenster "Mehr": Zieldatum so breit wie sein Inhalt, der Titel nimmt den Rest */
details.mehr .zeile label:has(input[type=date]) { flex: 0 0 auto; }
details.mehr .zeile input[type=date] { width: auto; min-width: 10.5rem; }
details.mehr .zeile label:has(input[name=titel]) { flex: 1 1 18rem; }
/* Erfassungsfenster beim Bearbeiten: vorhandene Lageskizzen */
.quick-skizzen { display: flex; flex-wrap: wrap; gap: .8rem; margin: .4rem 0 .2rem; }
.quick-skizzen figure { margin: 0; width: 300px; max-width: 100%; }
.quick-skizzen figure img { width: 100%; border: 1px solid var(--linie, #d7dce3); border-radius: 6px; display: block; }
.quick-skizzen .aktionen { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .3rem; }
.quick-skizzen input { width: 100%; margin-top: .3rem; }
.quick-skizzen figure.weg { opacity: .35; }
/* Erfassungsfenster: Titel und Zieldatum unter dem Fotofeld */
.quick-felder { display: flex; flex-direction: column; gap: .5rem; margin-top: .3rem; }
.quick-felder input[type=date] { width: auto; min-width: 10.5rem; }
/* Erfassungsfenster: Text und Stiftflaeche ueber die ganze Breite */
.quick-text { margin-top: .8rem; display: flex; flex-direction: column; gap: .5rem; }
.quick-text textarea { width: 100%; }
/* Erfassungsfenster: verortete Fotos */
.fotoliste .fotopin { margin-top: .25rem; width: 100%; }
.fotoliste .fotopin.gesetzt { color: var(--ok, #1f7a3a); }
.fotopin-marke { background: #1e5aa8; color: #fff; border: 2px solid #fff; border-radius: 50%; font: 600 11px/18px system-ui, sans-serif; text-align: center; box-shadow: 0 1px 3px rgba(0,0,0,.4); }
/* Portal (bauherrpro.de): Kurzname + Domain in einer Zeile */
.portal-adresse { display: flex; align-items: center; gap: .3rem; }
.portal-adresse input { flex: 1 1 auto; min-width: 0; }
/* Lageskizze im Erfassungsfenster: Foto-Pins als Nummern, Verort-Modus (in die Skizze tippen) */
.quick-skizzen .skizzenbild { position: relative; display: block; }
.quick-skizzen .skizzen-pin { position: absolute; width: 22px; height: 22px; margin: -11px 0 0 -11px; pointer-events: none; }
.quick-skizzen.verorten figure img { outline: 3px solid #1e5aa8; outline-offset: 2px; cursor: crosshair; }
/* Erfassungsfenster in vier Schritten: 1 Ort, 2 Bilder, 3 Bilder verorten, 4 Beschreibung */
.quick-schritt { border-top: 1px solid var(--linie, #e3e6ea); padding-top: .7rem; margin-top: .8rem; }
.quick-schritt:first-of-type { border-top: 0; margin-top: 0; padding-top: 0; }
.quick-schritt > h3 { display: flex; align-items: center; gap: .5rem; margin: 0 0 .5rem; font-size: 1.05rem; }
.quick-schritt .schrittnr { display: inline-flex; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: #1e5aa8; color: #fff; align-items: center; justify-content: center; font-size: .9rem; }
.quick-schritt .quick-sprache { margin-bottom: .5rem; }
.verort-fotos { display: flex; flex-wrap: wrap; gap: .5rem; margin: .3rem 0 .6rem; }
.verort-foto { position: relative; width: 84px; height: 64px; padding: 0; border: 2px solid var(--linie, #d7dce3); border-radius: 8px; overflow: hidden; background: #fff; cursor: pointer; touch-action: manipulation; }
.verort-foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.verort-foto .nr { position: absolute; left: 4px; top: 4px; background: #1e5aa8; color: #fff; border-radius: 50%; width: 20px; height: 20px; font: 600 11px/20px system-ui, sans-serif; text-align: center; }
.verort-foto .ok { position: absolute; right: 4px; bottom: 2px; color: #fff; background: #1f7a3a; border-radius: 4px; padding: 0 4px; font-size: 12px; }
.verort-foto.gewaehlt { border-color: #1e5aa8; box-shadow: 0 0 0 3px rgba(30, 90, 168, .35); }
.quick-skizzen .skizzenbild { cursor: pointer; touch-action: manipulation; -webkit-user-select: none; user-select: none; }
.quick-skizzen .skizzenbild img { -webkit-user-drag: none; pointer-events: none; }
.quick-schritt.punkt textarea { min-height: 11rem; }
/* Anmeldefenster der Kundeninstanz: Organisation klein und dezent unter der Ueberschrift */
.start-login .start-kunde { margin: -.4rem 0 .6rem; font-size: .8rem; color: var(--grau, #6b7280); }
/* Elektronisches Raumbuch */
.rb-tabs { margin: .2rem 0 .8rem; }
.rb-ampel { display: inline-block; width: .8rem; height: .8rem; border-radius: 50%; background: #c9ced6; vertical-align: middle; }
.rb-element { background: #eef0f4; color: #5b6472; border: 1px dashed #aab2bf; font-family: inherit; }
.rb-tabelle tr[data-als_raum="0"] td:not(.wahl) { color: var(--grau); }
.rb-gruppe { background: #e8f0fb; color: #1e5aa8; font-family: inherit; white-space: nowrap; font-size: .72rem; padding: 0 .4rem; }
.rb-vorschlag { border-left: 4px solid var(--akzent); }
.rb-gruppenliste { margin: .3rem 0 0; padding-left: 1.1rem; max-height: 40vh; overflow: auto; }
.rb-ampel.rb-gruen { background: #2d9d5a; } .rb-ampel.rb-gelb { background: #e0a400; } .rb-ampel.rb-rot { background: #c0392b; }
.rb-status-geprueft { background: #e3f1e8; color: #1f7a3a; } .rb-status-freigegeben { background: #1f7a3a; color: #fff; }
.rb-status-abweichend { background: #fbe4e1; color: #b0291c; } .rb-status-ungeprueft { background: #eef0f3; color: #4b5563; }
.rb-tabelle td.zahl, .rb-summen td.zahl, .rb-tabelle th.zahl, .rb-summen th.zahl { text-align: right; white-space: nowrap; }
.rb-summen { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.rb-summen h3 { font-size: 1rem; margin: .2rem 0 .4rem; }
.rb-gruppe { border: 1px solid var(--linie, #e3e6ea); border-radius: 8px; margin: .6rem 0; padding: .4rem .8rem .6rem; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .4rem .8rem; }
.rb-gruppe legend { font-weight: 600; padding: 0 .3rem; }
.rb-attr { display: flex; flex-direction: column; gap: .15rem; font-size: .92rem; }
/* Raumdatenblatt: Felder einer Zeile buendig (Herkunft steht in der Beschriftung), schmale Raumnummer, kein Ueberlauf */
.rb-raumform .zeile > label { min-width: 0; }
.rb-feldkopf { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* einzeilig, damit die Felder buendig stehen */
.rb-feldkopf small { font-size: .78rem; margin-left: .15rem; }
.rb-raumform input[name=name] { text-overflow: ellipsis; }
.rb-raumform .zeile > label:not(.breit) { flex-basis: 140px; }
.rb-raumform .zeile > label.rb-zaehlt { flex: 0 0 14.5rem; }
.rb-raumform .zeile.rb-raster > label.rb-gruppenfeld { grid-column: span 2; }
.rb-raumform .zeile.rb-raster { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }   /* umbrechende Felder behalten die Spaltenbreite */
.fm-stichtag > label.inline { flex: 0 0 auto; }
table.rb-abgleich td { vertical-align: top; }
table.rb-abgleich td:first-child { color: var(--grau); width: 7.5rem; }
table.rb-abgleich td:last-child { overflow-wrap: anywhere; }
.rb-soll { font-weight: 600; }
.rb-ist { margin-top: .2rem; font-size: .85rem; }
.rb-ist.warn b { color: var(--warn); }
.rb-ist.ok { color: #2d9d5a; }
.rb-ist button { white-space: nowrap; overflow-wrap: normal; padding: .05rem .45rem; margin-left: .2rem; }
.rb-attr input[type=checkbox] { width: auto; align-self: flex-start; }
.rb-attr input::placeholder { color: #8a93a0; font-style: italic; }
.rb-nutzer { display: flex; align-items: center; gap: .5rem; margin: .2rem 0; }
.rb-refs { list-style: none; padding: 0; margin: 0 0 .5rem; } .rb-refs li { margin: .25rem 0; }
.klein-kacheln .kachel { min-width: 10rem; }
dl.kv { display: grid; grid-template-columns: auto 1fr; gap: .1rem .8rem; } dl.kv dt { color: #6b7280; } dl.kv dd { margin: 0; }
/* Ticket: Modellbezug & BCF */
.bcf-ansichten { list-style: none; padding: 0; margin: .3rem 0 .6rem; display: grid; gap: .5rem; }
.bcf-ansichten li { display: flex; gap: .6rem; align-items: flex-start; }
.bcf-ansichten img { width: 96px; height: 64px; object-fit: cover; border-radius: 4px; border: 1px solid var(--linie); }
.bcf-exporte { padding-left: 1rem; margin: .4rem 0 0; }
/* Viewer: Schalter beim Sprung zu einem Bauteil (Stoermeldung) */
.bim-fokus { position: absolute; left: .6rem; top: .6rem; z-index: 5; display: flex; flex-wrap: wrap; gap: .3rem .9rem; padding: .35rem .7rem;
             background: rgba(255,255,255,.92); border: 1px solid var(--linie); border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,.08); font-size: .9rem; }
.bim-fokus label { margin: 0; }
.bim-fokus-groesse input[type=range] { width: 8rem; vertical-align: middle; }
.bim-fokus-groesse output { min-width: 4.5rem; display: inline-block; }

/* Zaehlerkonzept: Strangschema */
.strangschema-rahmen { max-height: 75vh; border: 1px solid var(--linie); border-radius: 6px; background: var(--weiss); }
.strangschema text { fill: var(--tinte); }
.strangschema .ss-raster { stroke: var(--linie); stroke-width: .5; }
.strangschema .ss-trenner { stroke: var(--linie); stroke-dasharray: 2 3; }
.strangschema .ss-geschoss, .strangschema .ss-klein { fill: var(--grau); font-size: 9px; }
.strangschema .ss-spalte { font-weight: 600; }
.strangschema a:hover circle { stroke-width: 5; }
tr.zk-virtuell td { background: var(--flaeche); }
form.zk-zuordnen { display: flex; gap: .3rem; flex-wrap: wrap; align-items: center; }
.zk-ablesung input { width: 8rem; text-align: right; padding: .2rem .35rem; }
.zk-ablesung input.kurz { width: 4.5rem; }

/* Raumbuch: Startseite */
.rb-kennzahlen { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-bottom: 1rem; }
.rb-zahl { display: flex; flex-direction: column; background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; padding: .8rem 1rem; color: var(--tinte); }
.rb-zahl:hover { border-color: var(--akzent); text-decoration: none; }
.rb-zahl span { color: var(--grau); font-size: .85rem; }
.rb-zahl b { font-size: 1.7rem; line-height: 1.2; font-variant-numeric: tabular-nums; }
.rb-zahl small { color: var(--grau); }
.rb-start-raster { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 1rem; align-items: start; }
.rb-start-raster .karte { margin: 0; min-width: 0; }
.rb-start-raster table.liste { width: 100%; }
.rb-start-raster table.liste th { white-space: normal; }
.rb-balken { max-height: 22rem; overflow-y: auto; padding-right: .3rem; }
.rb-schritte { list-style: none; margin: 0; padding: 0; }
.rb-schritte li { border-bottom: 1px solid var(--linie); }
.rb-schritte li:last-child { border-bottom: 0; }
.rb-schritte a { display: block; padding: .45rem 0; color: var(--tinte); }
.rb-schritte a:hover { color: var(--akzent); text-decoration: none; }
.rb-schritte b { font-variant-numeric: tabular-nums; }
.ok { color: var(--ok); }
.rb-meter, .rb-balken > div { display: grid; grid-template-columns: 9.5rem 1fr 4.5rem; align-items: center; gap: .6rem; padding: .25rem 0; color: var(--tinte); font-size: .9rem; }
.rb-meter:hover { text-decoration: none; color: var(--akzent); }
.rb-meter b, .rb-balken b { text-align: right; font-weight: 500; font-variant-numeric: tabular-nums; }
.rb-balken > div span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rb-meter-bahn, .rb-balken-bahn { height: 8px; background: var(--flaeche); border-radius: 4px; overflow: hidden; }
.rb-meter-bahn span, .rb-balken-bahn span { display: block; height: 100%; background: var(--akzent); border-radius: 0 4px 4px 0; }
.rb-status { display: flex; gap: 2px; height: 12px; border-radius: 4px; overflow: hidden; background: var(--flaeche); }
.rb-legende { list-style: none; display: flex; flex-wrap: wrap; gap: .3rem 1rem; padding: 0; margin: .5rem 0 0; }
.rb-legende i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: .3rem; vertical-align: -1px; }
.st-ungeprueft { background: #c4c9cf; } .st-geprueft { background: #6b9bd8; } .st-abweichend { background: var(--warn); } .st-freigegeben { background: var(--ok); }
.rb-start-ampel { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.rb-start-ampel a { border-radius: 6px; padding: .6rem; text-align: center; color: var(--tinte); border: 1px solid var(--linie); }
.rb-start-ampel a:hover { text-decoration: none; border-color: var(--akzent); }
.rb-start-ampel b { display: block; font-size: 1.4rem; font-variant-numeric: tabular-nums; }
.rb-start-ampel .rot { background: var(--warn-hell); } .rb-start-ampel .rot b { color: var(--warn); }
.rb-start-ampel .gelb { background: #fdf5e1; } .rb-start-ampel .gelb b { color: #8a5a00; }
.rb-start-ampel .gruen { background: var(--ok-hell); } .rb-start-ampel .gruen b { color: var(--ok); }
.rb-verlauf { list-style: none; padding: 0; margin: 0; }
.rb-verlauf li { padding: .35rem 0; border-bottom: 1px solid var(--linie); overflow-wrap: anywhere; }
.rb-verlauf li:last-child { border-bottom: 0; }
@media (max-width: 560px) { .rb-meter, .rb-balken > div { grid-template-columns: 7rem 1fr 3.8rem; } }

/* Bauteillisten: PDF-Viewer */
.listen-viewer { height: calc(100vh - 13rem); min-height: 420px; border: 1px solid var(--linie); border-radius: 8px; overflow: hidden; background: var(--weiss); }
.listen-viewer iframe { width: 100%; height: 100%; border: 0; display: block; }
/* Zaehlerkonzept: angesprungener Zaehler (Klick im Strangschema / in der Nutzertabelle) */
#zk-tabelle tr { scroll-margin-top: 5rem; }
#zk-tabelle tr:target td { background: #fff3c4; animation: zk-ziel 2.4s ease-out; }
#zk-tabelle tr:target td:first-child { box-shadow: inset 4px 0 0 var(--akzent); }
@keyframes zk-ziel { 0%, 35% { background: #ffe17a; } 100% { background: #fff3c4; } }
.zk-menue { position: fixed; z-index: 30; margin: 0; padding: .35rem 0; min-width: 16rem; box-shadow: 0 6px 24px rgba(0,0,0,.18); }
.zk-menue-titel { padding: .25rem .9rem .4rem; font-size: .8rem; color: var(--grau); border-bottom: 1px solid var(--linie); margin-bottom: .2rem; max-width: 24rem; }
.zk-menue a, .zk-menue span { display: block; padding: .45rem .9rem; font-size: .92rem; }
.zk-menue a:hover, .zk-menue a:focus { background: var(--akzent-hell); text-decoration: none; outline: none; }
.bim-zaehler { align-items: center; max-width: calc(100% - 1.2rem); }
.bim-zaehler i { display: inline-block; width: 12px; height: 12px; border-radius: 2px; margin-right: .3rem; vertical-align: -1px; }
/* Bericht: Zusammenstellung */
.zusammenstellung { margin: .3rem 0 .8rem; border: 1px solid var(--linie); border-radius: 8px; padding: .5rem .8rem; background: var(--flaeche); }
.zusammenstellung > summary { cursor: pointer; }
.zs-gruppe { border: 0; border-top: 1px solid var(--linie); margin: .5rem 0 0; padding: .5rem 0 0; display: flex; flex-wrap: wrap; gap: .5rem 1.2rem; align-items: flex-end; }
.zs-gruppe legend { font-weight: 600; font-size: .9rem; padding: 0 .3rem 0 0; }
.zs-gruppe > label { margin: 0; flex: 0 1 auto; }
.zs-gruppe select { width: auto; max-width: 24rem; }
.zs-haken { display: flex; flex-wrap: wrap; gap: .2rem .9rem; align-items: center; flex-basis: 100%; }
.zs-haken label { margin: 0; }
tr.gruppenzeile td { background: var(--flaeche); border-top: 2px solid var(--linie); }

/* Auswertungen: Werkzeugleiste, Steuerzeilen, Bericht */
.auswertung { padding-top: .4rem; }
.aw-leiste { display: flex; flex-wrap: wrap; align-items: center; gap: .1rem .4rem; border-bottom: 1px solid var(--linie); padding-bottom: .4rem; margin-bottom: .6rem; }
.aw-knopf { background: none; border: 0; font-weight: 600; font-size: 1rem; padding: .35rem .55rem; border-radius: 6px; color: var(--tinte); cursor: pointer; }
.aw-knopf:hover:not([disabled]), .aw-knopf.aktiv { background: var(--akzent-hell); color: var(--akzent); }
.aw-knopf[disabled] { color: var(--grau); opacity: .55; cursor: default; }
.aw-extern { position: relative; display: inline-block; }
.aw-extern > summary { list-style: none; display: inline-block; }
.aw-extern > summary::-webkit-details-marker { display: none; }
.aw-extern .schwebend, .aw-spalten .schwebend { position: absolute; z-index: 20; min-width: 14rem; margin-top: .3rem; padding: .5rem .7rem; }
.aw-extern .schwebend a { display: block; padding: .3rem 0; }
.aw-stand { margin-left: auto; }
.aw-steuerung { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .4rem 1rem; margin: .2rem 0 .5rem; }
.aw-steuerung > label { margin: 0; flex: 0 1 auto; display: flex; align-items: center; gap: .4rem; white-space: nowrap; }
.aw-steuerung select, .aw-steuerung input[type=date] { width: auto; margin: 0; }
.aw-spalten { position: relative; }
.aw-tafel { border: 1px solid var(--linie); border-radius: 8px; padding: .3rem .8rem .6rem; margin: .5rem 0 0; background: var(--flaeche); }
.aw-bericht .aw-berichtskopf { text-align: center; margin: .2rem 0 .8rem; }
.aw-bericht .aw-berichtskopf b { font-size: 1.35rem; }
.aw-tabelle tbody.zu tr:not(.ebene1) { display: none; }
.aw-tabelle tr.ebene1 td { background: var(--akzent-hell); }
.aw-tabelle tr.ebene2 td { background: var(--flaeche); padding-left: 1.6rem; font-weight: 600; }
.aw-tabelle .aw-auf { background: none; border: 0; padding: 0 .2rem; cursor: pointer; font-size: .9rem; }
.aw-tabelle.nur-titel td.titelspalte { width: 100%; }
.aw-tabelle td.aw-antwort { max-width: 28rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.aw-tabelle.antworten-voll td.aw-antwort { white-space: normal; }
dialog.vorlagenwahl { width: min(62rem, 96vw); border: 1px solid var(--linie); border-radius: 10px; padding: 1rem 1.2rem; box-shadow: 0 12px 40px rgba(0,0,0,.25); }
dialog.vorlagenwahl::backdrop { background: rgba(20, 28, 40, .35); }
.vw-kopf { display: flex; justify-content: space-between; align-items: center; }
.vw-kopf h2 { margin: 0; }
.vw-spalten { display: grid; grid-template-columns: 1fr 1.3fr 1.6fr; gap: 1rem; margin: .5rem 0 .8rem; }
.vw-ueber { font-weight: 600; margin-bottom: .3rem; }
.vw-liste { border: 1px solid var(--linie); border-radius: 6px; height: 15rem; overflow: auto; background: var(--weiss); padding: .2rem; }
.vw-liste button { display: block; width: 100%; text-align: left; background: none; border: 0; border-radius: 4px; padding: .35rem .5rem; cursor: pointer; font: inherit; color: var(--tinte); }
.vw-liste button.aktiv { background: var(--akzent); color: #fff; }
.vw-liste button:not(.aktiv):hover { background: var(--akzent-hell); }
.vw-beschreibung > div:last-child { border: 1px solid var(--linie); border-radius: 6px; height: 15rem; overflow: auto; padding: .5rem .7rem; white-space: pre-line; background: var(--flaeche); }
.vw-knoepfe { justify-content: flex-end; }
@media (max-width: 700px) { .vw-spalten { grid-template-columns: 1fr; } .vw-liste, .vw-beschreibung > div:last-child { height: auto; max-height: 10rem; } }
.aw-tabelle td:first-child, .aw-tabelle th:first-child { white-space: nowrap; }

/* BIM-Viewer: Infofenster waehrend des Ladens */
.bim-laden { position: absolute; left: 50%; top: 42%; transform: translate(-50%, -50%); z-index: 6; width: min(26rem, 88%); background: rgba(255,255,255,.96);
  border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 8px 28px rgba(0,0,0,.18); padding: .9rem 1.1rem; }
.bim-laden[hidden] { display: none; }
.bim-laden-schritte { list-style: none; padding: 0; margin: .5rem 0; display: grid; gap: .2rem; font-size: .9rem; }
.bim-laden-schritte li { color: var(--grau); padding-left: 1.4rem; position: relative; }
.bim-laden-schritte li::before { content: "○"; position: absolute; left: 0; }
.bim-laden-schritte li.aktiv { color: var(--tinte); font-weight: 600; }
.bim-laden-schritte li.aktiv::before { content: "◔"; color: var(--akzent); }
.bim-laden-schritte li.fertig::before { content: "✓"; color: var(--ok); }
.bim-laden-bahn { height: 8px; border-radius: 4px; background: var(--flaeche); overflow: hidden; margin: .3rem 0 .4rem; }
.bim-laden-bahn span { display: block; height: 100%; background: var(--akzent); border-radius: 4px; transition: width .15s; }
.bim-laden-bahn.unbestimmt span { width: 30% !important; animation: bim-laden-lauf 1.2s ease-in-out infinite; }
@keyframes bim-laden-lauf { 0% { transform: translateX(-100%); } 100% { transform: translateX(340%); } }

/* BIM-Reiter als Dashboard */
.bim-kennzahlen { margin: .4rem 0 1rem; }
.bim-modelltabelle td.bim-modellname { max-width: 26rem; min-width: 11rem; overflow-wrap: anywhere; }
.bim-modelltabelle tr.aktiv td { background: var(--akzent-hell); }
.bim-modelltabelle td.aktionen { white-space: nowrap; }
.bim-modelltabelle td.aktionen form { display: inline; }
.bim-modelltabelle tr.bim-gruppenkopf td { background: var(--flaeche); border-top: 1px solid var(--linie); padding-top: .35rem; padding-bottom: .35rem; }   /* Kopf je Gewerk */
.bim-modelltabelle tbody.bim-gruppe + tbody.bim-gruppe tr.bim-gruppenkopf td { border-top-width: 2px; }
.bim-gruppe-auf { display: inline-flex; align-items: center; gap: .45rem; background: none; border: 0; padding: .1rem 0; font: inherit; color: var(--tinte); cursor: pointer; }
.bim-gruppe-auf .pille { font-size: .85rem; font-weight: 600; }
.bim-gruppe-pfeil { display: inline-block; width: 1rem; color: var(--grau); transition: transform .15s; }
.bim-gruppe.zu .bim-gruppe-pfeil { transform: rotate(-90deg); }
.bim-gruppe.zu tr.bim-zeile { display: none; }
.bim-listentabs { margin: .8rem 0 .4rem; }
.bim-listentabs a { cursor: pointer; }
.bim-listenfilter { margin-bottom: .3rem; }
.bim-listenfilter select { flex: 0 1 190px; width: auto; }
.bim-listenrahmen { max-height: 560px; overflow: auto; border: 1px solid var(--linie); border-radius: 6px; }
#bim-liste th.sortierbar { cursor: pointer; white-space: nowrap; position: sticky; top: 0; }
.bim-unten { margin-top: 1rem; }
.bim-unten > .karte { margin: 0; }
dialog.bim-upload-dialog { width: min(36rem, 94vw); border: 1px solid var(--linie); border-radius: 10px; padding: 1rem 1.2rem; box-shadow: 0 12px 40px rgba(0,0,0,.25); }
dialog.bim-upload-dialog::backdrop { background: rgba(20, 28, 40, .35); }
dialog.bim-loeschen-dialog { width: min(52rem, 96vw); }
.bim-loeschen-dialog tr.bim-aeltere td { background: #fff7e6; }
button.primaer.gefahr { background: var(--warn, #b4232c); border-color: var(--warn, #b4232c); }
button.primaer.gefahr:disabled { opacity: .45; cursor: not-allowed; }
dialog.ml-dialog { width: min(64rem, 96vw); }            /* Modellabgleich mit dem Projektraum (static/modellabgleich.js) */
.ml-kopf { align-items: center; gap: .6rem; }
.ml-gruppe { margin: .6rem 0; }
.ml-gruppe summary { cursor: pointer; padding: .2rem 0; }
.ml-gruppe table.liste td { vertical-align: top; }
.ml-stand:empty { display: none; }
.ml-datei { border: 1px solid var(--linie); border-radius: 8px; padding: .5rem .7rem; margin: .4rem 0; }
.ml-datei.aktiv { border-color: var(--akzent); background: #f8fafc; }
.ml-balken { background: var(--flaeche); border: 1px solid var(--linie); margin: .35rem 0 .2rem; }
.ml-balken .balken { background: var(--akzent); }
.ml-balken.warten .balken { width: 100% !important; background: repeating-linear-gradient(45deg, #4fa3ff 0 12px, #1e5aa8 12px 24px); background-size: 34px 100%; animation: laufen 1s linear infinite; }
.rb-schritt { margin: .3rem 0; color: var(--grau); }            /* Statusfenster des Raumbuch-Abgleichs (Reiter BIM) */
.rb-schritt.aktiv { color: var(--tinte); font-weight: 600; }
.rb-schritt.fertig { color: var(--tinte); }
.rb-schritt.fertig .rb-schritt-zeichen { color: #2d9d5a; }
.rb-schritt-zeichen { display: inline-block; width: 1.3rem; }
.pille[class*="fach-"] { background: #eef1f5; color: #334155; }
.pille.fach-arc, .pille.fach-arch { background: #f1ece4; color: #6b4f2a; }
.pille.fach-moe { background: #f3e9f6; color: #6e2f83; }
.pille.fach-hzg { background: #fbe9e7; color: #a23a2a; }
.pille.fach-klt { background: #e6f0fb; color: #1e5aa8; }
.pille.fach-san { background: #e3f4f1; color: #136b5e; }
.pille.fach-luf, .pille.fach-rlt { background: #eef6e3; color: #4a6b1f; }
.pille.fach-fls { background: #fde8ee; color: #a3204a; }
.pille.fach-elt, .pille.fach-msr { background: #fdf3d8; color: #8a5a00; }
.karte.warn-rand { border-left: 4px solid #e08a00; }
.bim-ki .ki-bauteile { list-style: none; margin: 0 0 .2rem 1rem; padding: 0; }
.bim-ki .ki-bauteil button { font-size: .85rem; }
.bim-ki .ki-bauteil.aktiv button { background: var(--akzent-hell); }
.bim-ki .ki-besch { color: #4a3500; }
.bim-etikett.aks small { color: #6b4f00; max-width: 14rem; }

/* Berichtsliste im Projekt */
.berichtsliste td { vertical-align: middle; }
.berichtsliste .nowrap, td.nowrap { white-space: nowrap; }
.berichtsliste .berichtstitel { min-width: 14rem; }
.berichtsliste .berichtstitel a { font-weight: 600; }
.berichtsliste .berichtstitel .klein { margin-top: .1rem; }
#begehungen .vorschlaege { margin-top: .8rem; }
.berichtsliste tr.gruppenkopf th { background: var(--weiss); padding: .9rem .3rem .3rem; border-bottom: 2px solid var(--akzent-hell); text-align: left; }
.berichtsliste .gruppe-umschalten { background: none; border: 0; padding: 0; font: inherit; font-weight: 700; font-size: .95rem; color: var(--tinte); cursor: pointer; }
.berichtsliste .gruppe-umschalten .pfeil { display: inline-block; transition: transform .15s; color: var(--akzent); }
.berichtsliste tbody.zu .gruppe-umschalten .pfeil { transform: rotate(-90deg); }
.berichtsliste .gruppe-links { font-weight: 400; margin-left: .8rem; }
/* Raumbuch-Liste: Spalten ein-/ausblendbar */
.rb-spaltenwahl { position: relative; }
.rb-spaltenwahl .karte.schwebend { position: absolute; right: 0; top: 100%; z-index: 10; min-width: 15rem; padding: .5rem .7rem; }
.rb-tabelle.ohne-modell .sp-modell { display: none; }
.rb-tabelle.ohne-name .sp-name { display: none; }
.rb-tabelle.ohne-gebaeude .sp-gebaeude { display: none; }
.rb-tabelle.ohne-stockwerk .sp-stockwerk { display: none; }
.rb-tabelle.ohne-geschoss .sp-geschoss { display: none; }
.rb-tabelle.ohne-bereich .sp-bereich { display: none; }
.rb-tabelle.ohne-typ .sp-typ { display: none; }
.rb-tabelle.ohne-nutzer .sp-nutzer { display: none; }
.rb-tabelle.ohne-flaeche .sp-flaeche { display: none; }
.rb-tabelle.ohne-status .sp-status { display: none; }
.rb-tabelle.ohne-ampel .sp-ampel { display: none; }
/* Raumliste: kompakte Filterleiste, aktive Filter hervorgehoben, Spaltenbreite per Ziehen */
.rb-filter { gap: .4rem; font-size: .9rem; }
.rb-filter input[type=search] { flex: 1 1 170px; padding: .4rem .6rem; }
.rb-filter select { flex: 0 1 auto; font-size: .9rem; background-position: right .45rem center; padding-right: 1.6rem; }
.rb-anzeigen summary.gesetzt { border-color: var(--akzent); background: var(--akzent-hell); color: var(--akzent); font-weight: 600; }
.rb-filter select.gesetzt { border-color: var(--akzent); background-color: var(--akzent-hell); color: var(--akzent); font-weight: 600; }
.rb-filter .rb-filter-ende { display: flex; gap: .5rem; align-items: center; margin-left: auto; }
.rb-tabelle th { position: relative; }
.rb-tabelle .spalten-griff { position: absolute; top: 0; right: -4px; width: 9px; height: 100%; cursor: col-resize; z-index: 2; touch-action: none; }
.rb-tabelle .spalten-griff::after { content: ""; position: absolute; top: 25%; bottom: 25%; left: 4px; border-left: 1px solid var(--linie); }
.rb-tabelle .spalten-griff:hover::after, .rb-tabelle.ziehen .spalten-griff::after { border-left: 2px solid var(--akzent); }
.rb-tabelle.ziehen { cursor: col-resize; user-select: none; }
.rb-tabelle.breiten-fest { table-layout: fixed; }
.rb-tabelle.breiten-fest td { overflow: hidden; text-overflow: ellipsis; }
/* BIM-Viewer: Raumfokus */
.bim-raumfokus { position: absolute; left: .6rem; top: .6rem; width: min(410px, 92%); max-height: calc(100% - 1.2rem); display: flex; flex-direction: column;
                 background: rgba(255,255,255,.97); border: 1px solid var(--linie); border-radius: 12px; box-shadow: 0 6px 22px rgba(0,0,0,.12); font-size: .84rem; z-index: 6; }
.bim-raumfokus .bim-treffer-kopf b { font-size: .95rem; }
.bim-raumfokus .rf-steckbrief { padding: .45rem .75rem .35rem; border-bottom: 1px solid var(--linie); background: linear-gradient(90deg, var(--akzent-hell), #fff); }
.bim-raumfokus .rf-steckbrief b { display: block; font-size: .95rem; }
.bim-raumfokus .rf-steckbrief span { color: var(--grau); font-size: .8rem; }
.bim-raumfokus .rf-zeile { display: flex; gap: .5rem; align-items: flex-start; padding: .4rem .6rem 0; }
.bim-raumfokus .rf-label { flex: 0 0 3.6rem; color: var(--grau); font-size: .74rem; text-transform: uppercase; letter-spacing: .03em; padding-top: .3rem; }
.bim-raumfokus .rf-knoepfe { display: flex; flex-wrap: wrap; gap: .25rem; }
.bim-raumfokus .rf-knoepfe button { font: inherit; font-size: .8rem; padding: .22rem .55rem; border: 1px solid var(--linie); border-radius: 999px; background: var(--weiss); cursor: pointer; color: var(--tinte); }
.bim-raumfokus .rf-knoepfe button:hover { border-color: var(--akzent); }
.bim-raumfokus .rf-knoepfe button.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.bim-raumfokus .rf-knoepfe button span { opacity: .75; }
.bim-raumfokus .rf-reiter { display: flex; gap: .1rem; padding: .5rem .5rem 0; border-bottom: 1px solid var(--linie); }
.bim-raumfokus .rf-reiter button { font: inherit; font-size: .8rem; background: none; border: 0; border-bottom: 2px solid transparent; padding: .3rem .55rem; cursor: pointer; color: var(--grau); border-radius: 0; }
.bim-raumfokus .rf-reiter button.aktiv { color: var(--akzent); border-bottom-color: var(--akzent); font-weight: 600; }
.bim-raumfokus .rf-inhalt { flex: 1 1 auto; overflow: auto; padding: .4rem .75rem .5rem; min-height: 4rem; }
.bim-raumfokus .rf-abschnitt { margin-bottom: .55rem; }
.bim-raumfokus h4 { margin: .35rem 0 .2rem; font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; color: var(--akzent); }
.bim-raumfokus dl { display: grid; grid-template-columns: minmax(7rem, 38%) 1fr; gap: .1rem .6rem; margin: 0; }
.bim-raumfokus dt { color: var(--grau); }
.bim-raumfokus dd { margin: 0; word-break: break-word; }
.bim-raumfokus details { margin: .15rem 0; }
.bim-raumfokus summary { cursor: pointer; padding: .15rem 0; }
.bim-raumfokus details dl { padding: .2rem 0 .3rem .8rem; }
.bim-raumfokus ul, .bim-raumfokus .rf-liste { list-style: none; margin: 0; padding: 0; }
.bim-raumfokus li button { display: block; width: 100%; text-align: left; background: none; border: 0; border-radius: 6px; padding: .22rem .4rem; font: inherit; color: inherit; cursor: pointer; }
.bim-raumfokus li button:hover { background: #eef2f7; }
.bim-raumfokus li button small { color: var(--grau); }
.bim-raumfokus li { padding: .1rem 0; }
.bim-raumfokus .rf-fach { margin-bottom: .4rem; }
.bim-raumfokus .rf-fach-kopf { display: flex; align-items: center; gap: .4rem; width: 100%; background: #f3f5f8; border: 0; border-radius: 6px; padding: .3rem .5rem; font: inherit; cursor: pointer; text-align: left; }
.bim-raumfokus .rf-fach-kopf.aus { opacity: .45; text-decoration: line-through; }
.bim-raumfokus .rf-fach-kopf i, .bim-raumfokus .rf-punkt i, .bim-raumfokus .rf-dot { display: inline-block; width: .7rem; height: .7rem; border-radius: 3px; margin-right: .25rem; vertical-align: -1px; }
.bim-raumfokus .rf-modellname { margin-left: auto; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bim-raumfokus .rf-punkt { white-space: nowrap; margin-right: .5rem; }
.bim-raumfokus .rf-fuss { display: flex; gap: .9rem; flex-wrap: wrap; padding: .4rem .75rem; border-top: 1px solid var(--linie); font-size: .8rem; }
.bim-info .bim-info-aktion { grid-column: 1 / -1; margin: 0 0 .4rem; }
.bim-etikett.klickbar { pointer-events: auto; cursor: pointer; }
.bim-etikett.klickbar:hover { border-color: var(--akzent); box-shadow: 0 0 0 2px rgba(30,90,168,.3); z-index: 2; }
.bim-etikett.raumfokus-ziel { border: 2px solid #ff2d55; font-weight: 700; font-size: .78rem; }
.bim-etikett.raumfokus-gross { font-size: 1rem; font-weight: 700; padding: .15rem .6rem; border: 2px solid #14a2b8; background: rgba(255,255,255,.95); }
.bim-etikett.raumfokus-gross small { font-size: .72rem; max-width: none; }
.bim-etikett.raumfokus-nachbar { border-color: #8e44ad; color: #4a235a; }
.bim-etikett.raumfokus-tuer { background: #fff3e6; border-color: #a0522d; font-family: ui-monospace, Menlo, monospace; font-size: .62rem; }
.bim-etikett.raumfokus-mass { background: #1d2433; color: #fff; border-color: #1d2433; font-weight: 600; }
.bim-etikett.raumfokus-mass small { color: #cfd6e2; }
@media (max-width: 700px) { .bim-raumfokus { width: calc(100% - 1.2rem); max-height: 55%; } }
.rb-modell-knopf { white-space: nowrap; padding: .15rem .5rem; font-size: .78rem; }
td.sp-modell { white-space: nowrap; }
td.sp-modell .rb-modell-knopf + .rb-modell-knopf { margin-left: .3rem; }
/* Hilfe an Spaltenkoepfen: Mauszeiger darueber (oder Tastaturfokus) zeigt den Text aus data-hilfe */
th.mit-hilfe { cursor: help; text-decoration: underline dotted rgba(0,0,0,.3); text-underline-offset: 3px; }
th.mit-hilfe::after { content: attr(data-hilfe); position: absolute; left: 0; top: calc(100% + 4px); z-index: 30; width: max-content; max-width: 22rem;
  white-space: pre-line; text-align: left; font-weight: 400; font-size: .8rem; line-height: 1.4; color: #fff; background: #1d2433; padding: .5rem .65rem;
  border-radius: 8px; box-shadow: 0 6px 18px rgba(0,0,0,.18); opacity: 0; visibility: hidden; transition: opacity .12s .25s; pointer-events: none; text-transform: none; letter-spacing: 0; }
th.mit-hilfe.hilfe-rechts::after { left: auto; right: 0; }
th.mit-hilfe:hover::after, th.mit-hilfe:focus-visible::after { opacity: 1; visibility: visible; }
th.mit-hilfe:focus-visible { outline: 2px solid var(--akzent); outline-offset: -2px; }
/* Flaechenmanagement */
.fm-kopfkarte { padding-bottom: .3rem; }
.fm-stichtag { align-items: center; gap: .6rem; margin-bottom: .4rem; }
.fm-stichtag input[type=date] { width: auto; }
.fm-reiter, .fm-raumreiter { display: flex; flex-wrap: wrap; gap: .15rem; border-bottom: 1px solid var(--linie); margin: .3rem 0 .8rem; }
.fm-reiter a, .fm-raumreiter a { padding: .45rem .7rem; border-bottom: 2px solid transparent; color: var(--grau); text-decoration: none; font-size: .9rem; }
.fm-reiter a.aktiv, .fm-raumreiter a.aktiv { color: var(--akzent); border-bottom-color: var(--akzent); font-weight: 600; }
.fm-sicht { color: var(--grau); margin: -.2rem 0 .5rem; display: flex; flex-wrap: wrap; gap: .3rem .6rem; align-items: center; }
.fm-sicht b { color: var(--tinte); }
.fm-tabelle td, .fm-tabelle th { vertical-align: top; }
.fm-tabelle tfoot th { border-top: 2px solid var(--linie); }
.fm-form { display: flex; flex-direction: column; gap: .4rem; padding: .6rem .7rem; margin: .4rem 0; background: var(--flaeche); border-radius: 8px; }
.fm-form .zeile { gap: .5rem; flex-wrap: wrap; }
.fm-form label { flex: 1 1 10rem; }
.fm-form label.inline { flex: 0 0 auto; }
.fm-form fieldset { border: 1px solid var(--linie); border-radius: 6px; padding: .3rem .6rem; }
.fm-form fieldset label.inline { margin-right: .8rem; }
.fm-neu { margin: .3rem 0 .6rem; }
.fm-bearbeiten > summary { list-style: none; display: inline-block; }
.fm-bearbeiten[open] { min-width: min(46rem, 80vw); }
.fm-bereich { border-top: 1px solid var(--linie); padding: .5rem 0; }
.fm-bereich h4 { margin: .2rem 0; }
.fm-bereich p { margin: .2rem 0; }
.fm-pruefliste { margin: .3rem 0; padding-left: 1.2rem; font-size: .88rem; }
.fm-pruefliste.fehler li, .fm-pruefliste li.fehler { color: var(--warn); }
.fm-inhalt { max-width: 34rem; word-break: break-word; }
.fm-kv { display: grid; grid-template-columns: minmax(10rem, 32%) 1fr; gap: .2rem .8rem; }
.fm-kv dt { color: var(--grau); }
.fm-kv dd { margin: 0; }
.nowrap { white-space: nowrap; }
.rb-fm-filter { position: relative; }
.rb-fm-filter[open] { flex: 1 1 100%; }
.rb-fm-filter-inhalt { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin-top: .4rem; padding: .5rem; background: var(--akzent-hell); border-radius: 8px; }
.rb-fm-filter-inhalt input[type=date] { width: auto; margin: 0; padding: .3rem .4rem; }
.rb-mehrfach { flex-wrap: wrap; gap: .4rem; align-items: center; }
.rb-mehrfach .trenner { color: var(--linie); }
/* Raumliste: Ruecksprung aus dem Viewer markiert die Zeile */
.rb-tabelle tr:target td, .rb-tabelle tr.rb-zurueck td { background: #fff4cc; transition: background 1.5s; }
.rb-tabelle tr { scroll-margin-top: 3rem; }
/* AKS-Verwaltung (kennzeichnung.html): Segmentband des Schluessels, Farben je Ebene, Anlegen mit Vorschau */
.kz-ort { --kz: #2f7d5b; --kz-hell: #e5f3ec; }
.kz-anlage { --kz: #1e5aa8; --kz-hell: #e8f0fb; }
.kz-bauteil { --kz: #8a4fb0; --kz-hell: #f2eafa; }
.kz-dp { --kz: #b26a00; --kz-hell: #fdf1de; }
.kz-band { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .15rem; margin: .3rem 0 .5rem; }
.kz-band .kz-seg { height: 3.4rem; box-sizing: border-box; justify-content: center; gap: .15rem; }   /* alle Felder gleich hoch */
.kz-band .kz-seg small { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.kz-seg { display: inline-flex; flex-direction: column; align-items: center; min-width: 2.2rem; padding: .25rem .35rem; border-radius: 5px;
          background: var(--kz-hell, var(--flaeche)); border: 1px solid var(--kz, var(--linie)); color: var(--kz, var(--tinte)); vertical-align: middle; }
.kz-seg b { font: 600 .95rem/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .05em; }
.kz-seg small { font-size: .68rem; color: var(--grau); max-width: 7rem; text-align: center; line-height: 1.15; }
.kz-legende .kz-seg, td .kz-seg { min-width: .8rem; height: .8rem; padding: 0; display: inline-block; }
.kz-trenner { font: 700 1.1rem/1 ui-monospace, Menlo, monospace; color: var(--grau); }
.kz-legende { color: var(--grau); display: flex; flex-wrap: wrap; gap: .3rem .8rem; align-items: center; }
.kz-einstellungen { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: flex-end; margin-top: .6rem; }
.kz-einstellungen label { display: flex; flex-direction: column; gap: .15rem; }
.kz-ebenen { margin-top: .4rem; }
.kz-felder { display: flex; flex-wrap: wrap; gap: .5rem .7rem; align-items: flex-end; margin: .4rem 0 .7rem; }
.kz-feld { display: flex; flex-direction: column; gap: .15rem; margin: 0; }
.kz-feld > span { font-size: .8rem; color: var(--grau); }
.kz-feld.kz-ort input, .kz-feld.kz-anlage input, .kz-feld.kz-bauteil input, .kz-feld.kz-bauteil select { border-color: var(--kz); }
.kz-feld select { max-width: 22rem; }
.kz-suche { display: flex; align-items: center; gap: .5rem; margin: .5rem 0 0; font-weight: 600; }
.kz-suche input { flex: 1; max-width: 32rem; font-weight: normal; }
.kz-vorschau { border-top: 1px solid var(--linie); margin-top: .8rem; padding-top: .6rem; }
.kz-vorschau table.liste tr.erledigt td { text-decoration: line-through; text-decoration-color: var(--linie); }
.kz-befund { margin: .2rem 0 .5rem; padding-left: 1.2rem; }
.kz-zeilen td select { max-width: 16rem; }
.kz-verzeichnis td.kz-einzug { padding-left: 1.6rem; color: var(--grau); }
.kz-segmente td { padding: .3rem .35rem; }
.kz-segmente td input, .kz-segmente td select { padding: .25rem .35rem; }
.kz-segmente tr.kz-ort-zeile td:first-child { box-shadow: inset 4px 0 #2f7d5b; }
.kz-segmente tr.kz-anlage-zeile td:first-child { box-shadow: inset 4px 0 #1e5aa8; }
.kz-segmente tr.kz-bauteil-zeile td:first-child { box-shadow: inset 4px 0 #8a4fb0; }
.kz-segmente tr.kz-dp-zeile td:first-child { box-shadow: inset 4px 0 #b26a00; }
.kz-segmente tr.kz-neu td { background: var(--flaeche); }
.kz-segmente tr.kz-codes-zeile td { border-top: 0; padding-top: 0; }
.rb-start-raster .kz-breit { grid-column: 1 / -1; }
.kz-nowrap { white-space: nowrap; }
.kz-bez { display: flex; gap: .3rem; align-items: center; margin: 0; }
.kz-bez input { flex: 1; min-width: 7rem; }
.kz-segmente input, .kz-segmente select { width: auto; max-width: none; }
.kz-segmente td:nth-child(1) input { width: 3rem; }
.kz-segmente td:nth-child(2) input { width: 9.5rem; }
.kz-segmente td:nth-child(3) input { width: 13rem; }
.kz-segmente td:nth-child(4) select { width: 8.5rem; }
.kz-segmente td:nth-child(5) select { width: 9.5rem; }
.kz-segmente td:nth-child(7) select { width: 8rem; }
.kz-segmente td:nth-child(8) select { width: 6.5rem; }
.kz-segmente td:nth-child(9) input { width: 11rem; display: block; margin: .1rem 0; }
.kz-segmente tr.kz-codes-zeile td textarea { width: 100%; }
/* AKS-Verwaltung: Ebenenfarben auf allen Seiten (wie im Schluesselband der Uebersicht) */
.kz-k { font: 600 .92rem/1.3 ui-monospace, SFMono-Regular, Menlo, monospace; word-break: break-all; }
.kz-k > span { color: var(--kz, var(--tinte)); }
a .kz-k:hover { text-decoration: underline; }
.kz-feld > span { color: var(--kz, var(--grau)); font-weight: 600; }
.kz-feld > span small { font-weight: normal; }
.kz-feld input, .kz-feld select { border-color: var(--kz, var(--linie)); }
.kz-feld input:disabled { background: var(--kz-hell, var(--flaeche)); color: var(--kz, var(--tinte)); font-weight: 600; opacity: 1; }
.kz-suche { color: var(--kz, var(--tinte)); }
.kz-suche input { border-color: var(--kz, var(--linie)); background: var(--kz-hell, var(--weiss)); }
.tabs.kz-ebenen a::before { content: ""; display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; background: var(--kz); margin-right: .4rem; vertical-align: middle; }
.tabs.kz-ebenen a.aktiv { color: var(--kz); border-bottom-color: var(--kz); }
.kz-zeilen.kz-dp th { color: var(--kz); }
.kz-zeilen.kz-dp select, .kz-zeilen.kz-dp input { border-color: var(--kz); }
table tr.kz-zeile > td:first-child { box-shadow: inset 4px 0 var(--kz); }
.kz-segmente tr.kz-zeile > td { background: var(--kz-hell); }
.kz-segmente tr.kz-neu > td { background: var(--flaeche); }
.kz-pille { background: var(--kz-hell); color: var(--kz); border-color: var(--kz); }
td.kz-wert { color: var(--kz); font-weight: 600; }
/* Vorhandene AKS */
.kz-bestand { position: sticky; top: 3rem; z-index: 3; }
.kz-filter { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.kz-filter select, .kz-filter input { margin: 0; max-width: 15rem; padding: .3rem .45rem; font-size: .88rem; }
.kz-filter .kz-filter-suche { flex: 1 1 16rem; max-width: none; }
.kz-filter select.kz-ort, .kz-filter select.kz-anlage, .kz-filter select.kz-bauteil, .kz-filter select.kz-dp { border-color: var(--kz); color: var(--kz); }
.kz-filter select.gesetzt { background: var(--kz-hell, var(--akzent-hell)); font-weight: 600; }
.kz-filter-ende { display: flex; gap: .6rem; align-items: center; margin-top: .5rem; }
.kz-filter-ende .dehn { flex: 1; }
.kz-bestand-rahmen { max-height: 70vh; overflow: auto; }
.kz-bestand-tabelle thead th { position: sticky; top: 0; z-index: 1; cursor: pointer; white-space: nowrap; user-select: none; }
.kz-bestand-tabelle th.kz-anlage, .kz-bestand-tabelle th.kz-bauteil { color: var(--kz); }
.kz-bestand-tabelle th.sortiert[data-richtung="auf"]::after { content: " ▴"; }
.kz-bestand-tabelle th.sortiert[data-richtung="ab"]::after { content: " ▾"; }
.kz-bestand-tabelle td { vertical-align: top; }
.kz-bestand-tabelle tr.rb-zurueck td { background: #fff4cc; transition: background 1.5s; }
.kz-k > span.kz-roh { color: var(--tinte); }
.kz-bestand-tabelle .kz-k, .kz-verzeichnis .kz-k { white-space: nowrap; word-break: normal; }
.kz-bestand-tabelle td:last-child { white-space: nowrap; }
.kz-bestand-tabelle td.kz-code { white-space: nowrap; max-width: 8.5rem; overflow: hidden; text-overflow: ellipsis; }
.kz-bestand-tabelle td:nth-child(2) { min-width: 9rem; }
/* Betrieb & Wartung (betrieb.html, objekt.html, betrieb_qr.html, wartung.html) */
.bt-start { max-width: 760px; margin: 0 auto; }
.bt-label { font-weight: 600; display: block; margin-bottom: .3rem; }
.bt-zeile { display: flex; gap: .5rem; }
.bt-zeile input { flex: 1; font-size: 1.1rem; padding: .65rem .8rem; margin: 0; }
.bt-knoepfe { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .5rem; margin-top: .8rem; }
.bt-gross { display: flex; align-items: center; justify-content: center; min-height: 3.2rem; font-size: 1rem; text-align: center; cursor: pointer; }
.bt-kamera { margin-top: .6rem; } .bt-kamera video { width: 100%; max-height: 50vh; border-radius: 8px; background: #000; }
.bt-status { margin: .5rem 0 0; font-weight: 600; }
.bt-treffer, .bt-liste { list-style: none; margin: 0; padding: 0; }
.bt-treffer li a { display: flex; gap: .7rem; align-items: center; padding: .55rem .3rem; border-top: 1px solid var(--linie); color: var(--tinte); }
.bt-treffer li:first-child a { border-top: 0; }
.bt-treffer li a:hover { background: var(--flaeche); text-decoration: none; }
.bt-symbol { font-size: 1.3rem; width: 1.8rem; text-align: center; } .bt-symbol.gross { font-size: 2.2rem; width: 3rem; }
.bt-liste li { padding: .3rem 0; border-top: 1px solid var(--linie); } .bt-liste li:first-child { border-top: 0; }
.bt-melden summary { cursor: pointer; } .bt-melde-form { display: grid; gap: .4rem; margin-top: .6rem; }
.bt-chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.bt-kopf { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between; align-items: flex-start; }
.bt-kopf-titel { display: flex; gap: .8rem; align-items: flex-start; min-width: 0; }
.bt-kopf h1 { margin: .1rem 0; font-size: 1.35rem; word-break: break-all; }
.bt-name { font-size: 1.1rem; } .bt-bezug { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .4rem; }
.bt-bezug .pille.kz-ort, .bt-bezug .pille.kz-anlage { color: var(--kz); border-color: var(--kz); background: var(--kz-hell); }
.bt-aktionen { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.bt-aktionen select { width: auto; margin: 0; padding: .3rem; }
.bt-zahlen { margin-top: 1rem; }
.bt-raster { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 1rem; align-items: start; }
.bt-raster .karte { margin: 0; min-width: 0; } .bt-breit { grid-column: 1 / -1; }
.bt-zweispaltig { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; margin-top: .6rem; }
.bt-erledigt { position: relative; display: inline-block; } .bt-erledigt > summary { list-style: none; }
.bt-erledigt .karte.schwebend { position: absolute; right: 0; z-index: 5; width: 300px; display: grid; gap: .35rem; box-shadow: 0 6px 20px rgba(0,0,0,.15); }
table.kz-kv td:first-child { color: var(--grau); white-space: nowrap; width: 1%; }
.bt-qr-filter select { width: auto; max-width: 14rem; margin: 0; }
.wm-pille-ueberfaellig { background: var(--warn-hell); color: var(--warn); border-color: var(--warn); }
.wm-pille-faellig { background: #fff4d6; color: #8a5a00; border-color: #e0b04a; }
.wm-pille-ok { background: var(--ok-hell); color: var(--ok); border-color: var(--ok); }
.wm-pille-inaktiv { color: var(--grau); }
.wm-gw-laeuft { background: var(--ok-hell); color: var(--ok); } .wm-gw-endet { background: #fff4d6; color: #8a5a00; } .wm-gw-abgelaufen { color: var(--grau); }
tr.wm-ueberfaellig > td:first-child { box-shadow: inset 4px 0 var(--warn); } tr.wm-faellig > td:first-child { box-shadow: inset 4px 0 #e0b04a; }
.wm-form textarea.mono { font-size: .88rem; }
.wm-zeitleiste-rahmen { overflow-x: auto; }
.wm-zeitleiste { width: 100%; min-width: 760px; height: auto; font: 11px -apple-system, "Segoe UI", Helvetica, Arial, sans-serif; }
.wm-zeitleiste .gitter { stroke: var(--linie); stroke-width: 1; } .wm-zeitleiste .jahr { fill: var(--grau); }
.wm-zeitleiste .streifen { fill: var(--flaeche); } .wm-zeitleiste .titel { fill: var(--tinte); }
.wm-zeitleiste .heute { stroke: var(--warn); stroke-width: 1.5; stroke-dasharray: 4 3; } .wm-zeitleiste .heute-text { fill: var(--warn); font-weight: 600; }
.wm-zeitleiste .gw-laeuft, .wm-l.gw-laeuft { fill: #8fd0a3; background: #8fd0a3; } .wm-zeitleiste .gw-endet, .wm-l.gw-endet { fill: #f1c56b; background: #f1c56b; }
.wm-zeitleiste .gw-abgelaufen, .wm-l.gw-abgelaufen { fill: #d5d8dd; background: #d5d8dd; }
.wm-zeitleiste .balken[class*="vt-"], .wm-l.vt { fill: #a9c4ea; background: #a9c4ea; }
.wm-zeitleiste .punkt { stroke: #fff; stroke-width: 1.5; }
.wm-zeitleiste .erg-ok, .wm-p.erg-ok { fill: var(--ok); background: var(--ok); } .wm-zeitleiste .erg-maengel, .wm-p.erg-maengel { fill: #e08a00; background: #e08a00; }
.wm-zeitleiste .erg-nicht_moeglich { fill: var(--grau); }
.wm-zeitleiste .plan-ueberfaellig, .wm-p.plan-ueberfaellig { fill: var(--warn); background: var(--warn); } .wm-zeitleiste .plan-faellig { fill: #e0b04a; }
.wm-zeitleiste .plan-ok, .wm-p.plan-ok { fill: #fff; stroke: var(--akzent); stroke-width: 2; background: #fff; border: 2px solid var(--akzent); }
.wm-legende { display: flex; flex-wrap: wrap; gap: .3rem .9rem; align-items: center; color: var(--grau); margin-bottom: .5rem; }
.wm-l { display: inline-block; width: 1.4rem; height: .6rem; border-radius: 3px; } .wm-p { display: inline-block; width: .7rem; height: .7rem; border-radius: 50%; box-sizing: border-box; }
/* Brother P-touch (betrieb_qr.html, objekt.html, betrieb_ptouch_bilder.html) */
.pt-leiste { display: flex; flex-wrap: wrap; gap: .5rem .8rem; align-items: center; margin-top: .7rem; padding-top: .6rem; border-top: 1px solid var(--linie); }
.pt-leiste select { width: auto; margin: 0; padding: .25rem; }
.pt-status { font-weight: 600; } .pt-status.warn { color: var(--warn); } .pt-status.ok { color: var(--ok); }
.pt-bilder { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: .8rem; }
.pt-bilder figure { margin: 0; } .pt-bilder img { max-width: 100%; height: auto; image-rendering: pixelated; border: 1px dashed var(--linie); background: #fff; }
/* Schluessel-Editor (_kz_schluessel.html): Reiter wie die Excel-Blaetter, Uebersicht mit Stellen, Codelisten */
.kz-blaetter { flex-wrap: wrap; }
.kz-blaetter a { border-bottom-color: transparent; }
.kz-blaetter a.kz-ort, .kz-blaetter a.kz-anlage, .kz-blaetter a.kz-bauteil, .kz-blaetter a.kz-dp { color: var(--kz); }
.kz-blaetter a.aktiv { border-bottom: 3px solid var(--kz, var(--akzent)); font-weight: 600; background: var(--kz-hell, transparent); }
.kz-uebersicht-rahmen { overflow-x: auto; }
.kz-uebersicht { border-collapse: collapse; font-size: .85rem; }
.kz-uebersicht td, .kz-uebersicht th { border: 1px solid var(--kz, var(--linie)); background: var(--kz-hell); color: var(--kz); padding: .25rem .45rem; text-align: center; vertical-align: middle; }
.kz-uebersicht th { background: var(--kz); color: #fff; font-weight: 600; min-width: 4.5rem; }
.kz-uebersicht th a { color: #fff; text-decoration: underline dotted; }
.kz-uebersicht .kz-ue-tz { min-width: 0; width: 2.2rem; font-weight: 400; }
.kz-uebersicht .kz-ue-stellen td { font-size: .75rem; }
.kz-uebersicht .kz-ue-wert td { font-weight: 700; font-size: .95rem; }
.kz-uebersicht .kz-ue-klar td { font-size: .72rem; max-width: 9rem; color: var(--tinte); }
.kz-codeliste { border-left: 4px solid var(--kz); }
.kz-codes-kopf { display: flex; flex-wrap: wrap; gap: .4rem .8rem; align-items: center; justify-content: space-between; }
.kz-codes-kopf h3 { margin: 0; }
.kz-codes-kopf input[type=search] { max-width: 18rem; margin: 0; }
.kz-codes-rahmen { max-height: 65vh; overflow: auto; margin-top: .4rem; }
.kz-codes td { padding: .15rem .4rem; vertical-align: middle; }
.kz-codes td:first-child { width: 6rem; color: var(--kz); }
.kz-codes { width: 100%; }
.kz-codes input.kz-code-text { width: 100%; max-width: none; margin: 0; padding: .2rem .35rem; }
.kz-codes td:nth-child(2) { width: 100%; }
.kz-codes tr.kz-code-neu { background: var(--kz-hell); }
.kz-fehlend .pille { cursor: pointer; border: 1px dashed var(--kz); background: var(--kz-hell); color: var(--kz); margin: .1rem; }
.kz-oks { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: .8rem; align-items: start; }
.kz-oks .karte { margin: 0; }
.kz-oks-info { border-left: 4px solid var(--kz); }
.kz-oks-info h3 { margin-top: 0; }
.kz-sl-kopf { padding-top: .7rem; padding-bottom: .7rem; }
/* QR-Auswahl in den AKS-Farben (Raum gruen, Anlage blau, Bauteil violett) */
.bt-qr-auswahl { border-left: 4px solid var(--kz); }
.pt-ios { margin: .5rem 0 0; }
/* Scannen fuers Handy (betrieb_scan.html) */
.bt-scan { max-width: 36rem; margin: 0 auto; }
.bt-scan-knopf { display: flex; flex-direction: column; align-items: center; gap: .35rem; text-align: center; cursor: pointer; margin: .4rem 0 .8rem;
  padding: 1.6rem 1rem; border-radius: 16px; background: var(--akzent, #1e5aa8); color: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.15); }
.bt-scan-knopf b { font-size: 1.2rem; color: #fff; }
.bt-scan-knopf .klein { color: rgba(255,255,255,.85); }
.bt-scan-symbol { font-size: 3rem; line-height: 1; }
.bt-scan-knopf:active { transform: scale(.98); }
.bt-scan-live { width: 100%; margin-bottom: .8rem; }
.bt-scan-eingabe label { margin-top: 0; }
.bt-scan .bt-status { font-weight: 600; }
.bt-scan .bt-status.warn { color: var(--warn); }
/* Dokumente je Objekt (objekt.html, betrieb_dokumente.html) */
.bt-dok-liste td { vertical-align: middle; }
.bt-dok-symbol { width: 1.6rem; font-size: 1.1rem; }
.bt-dok-neu { margin-top: .6rem; }
.bt-dok-neu > form { margin-top: .5rem; }
.bt-dok-typen { display: flex; flex-wrap: wrap; gap: .3rem .8rem; }
.bt-dok-kacheln { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: .8rem; }
.bt-dok-kacheln .karte { margin: 0; }
.bt-platzhalter code { background: var(--flaeche); padding: 0 .25rem; border-radius: 4px; }

/* ===== Ansicht je Geraet (app/geraet.py: <body class="geraet-handy|geraet-tablet|geraet-pc">) ===== */
.menue-knopf, .untere-leiste { display: none; }
.ansicht-wahl { font-size: .78rem; color: var(--grau); text-align: center; padding: .8rem 0 1.2rem; }
.ansicht-wahl a { color: var(--grau); }
.ansicht-wahl a.aktiv { color: var(--tinte); font-weight: 600; }

/* Handy und Tablet: Reiter in einer Zeile zum Wischen statt mehrzeilig, groessere Touch-Flaechen, keine Zoom-Spruenge (iOS ab 16px) */
.geraet-handy .tabs, .geraet-tablet .tabs { flex-wrap: nowrap !important; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.geraet-handy .tabs::-webkit-scrollbar, .geraet-tablet .tabs::-webkit-scrollbar { display: none; }
.geraet-handy .tabs > *, .geraet-tablet .tabs > * { flex: 0 0 auto; white-space: nowrap; }
.geraet-handy .tabs .dehn, .geraet-tablet .tabs .dehn { flex: 0 0 .5rem; }
.geraet-handy .tabs a, .geraet-tablet .tabs a { padding: .65rem .8rem; }
.geraet-handy .knopf, .geraet-handy button, .geraet-tablet .knopf, .geraet-tablet button { min-height: 44px; }
.geraet-handy .knopf.klein, .geraet-handy button.klein, .geraet-tablet .knopf.klein, .geraet-tablet button.klein { min-height: 38px; }
.geraet-handy input:not([type=checkbox]):not([type=radio]), .geraet-handy select, .geraet-handy textarea,
.geraet-tablet input:not([type=checkbox]):not([type=radio]), .geraet-tablet select, .geraet-tablet textarea { font-size: 16px; min-height: 42px; }
.geraet-handy input[type=checkbox], .geraet-handy input[type=radio], .geraet-tablet input[type=checkbox], .geraet-tablet input[type=radio] { width: 1.3rem; height: 1.3rem; }

/* Handy: Menue hinter ☰, schmale Raender, Tabellen wischen, Knoepfe als Kacheln, Leiste unten */
.geraet-handy header.top { padding: .4rem .7rem; position: sticky; }
.geraet-handy .menue-knopf { display: inline-flex; align-items: center; justify-content: center; font-size: 1.4rem; width: 44px; height: 44px; padding: 0; background: none; border: 1px solid var(--linie); border-radius: 8px; color: var(--tinte); }
.geraet-handy header.top nav { display: none; position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; align-items: stretch; background: var(--weiss);
  border-bottom: 1px solid var(--linie); box-shadow: 0 8px 18px rgba(0,0,0,.12); padding: .2rem 0; }
.geraet-handy header.top nav.offen { display: flex; }
.geraet-handy header.top nav a, .geraet-handy header.top nav .wer { padding: .8rem 1.1rem; border-top: 1px solid var(--linie); margin: 0; font-size: 1rem; }
.geraet-handy header.top nav .wer { color: var(--grau); font-size: .85rem; }
.geraet-handy main { padding: .6rem .7rem calc(4.6rem + env(safe-area-inset-bottom)); }
.geraet-handy h1 { font-size: 1.35rem; }
.geraet-handy .karte { padding: .8rem; }
.geraet-handy .kopfzeile { flex-wrap: wrap; gap: .4rem; }
.geraet-handy .kopfzeile > .aktionen { flex-wrap: wrap; max-width: 100%; }   /* viele Knoepfe (BIM-Reiter) brechen um statt seitlich herauszuragen */
.geraet-handy table.liste { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.geraet-handy .nur-gross { display: none !important; }
.geraet-handy .ansicht-wahl { padding-bottom: calc(5rem + env(safe-area-inset-bottom)); }
.geraet-handy .untere-leiste { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
  background: var(--weiss); border-top: 1px solid var(--linie); padding-bottom: env(safe-area-inset-bottom); box-shadow: 0 -4px 14px rgba(0,0,0,.06); }
.untere-leiste a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .1rem; min-height: 54px; font-size: .7rem; color: var(--grau); text-decoration: none; }
.untere-leiste a .sym { font-size: 1.35rem; line-height: 1.1; }
.untere-leiste a.aktiv { color: var(--akzent); font-weight: 600; }
/* Betrieb und Objekt-Dashboard auf dem Handy */
.geraet-handy .bt-knoepfe { grid-template-columns: 1fr 1fr; }
.geraet-handy .bt-gross { min-height: 4.2rem; font-size: .95rem; }
.geraet-handy .bt-aktionen { display: grid; grid-template-columns: 1fr 1fr; gap: .45rem; }
.geraet-handy .bt-aktionen > a, .geraet-handy .bt-aktionen > button, .geraet-handy .bt-aktionen > form { width: 100%; justify-content: center; text-align: center; margin: 0; }
.geraet-handy .bt-aktionen > a, .geraet-handy .bt-aktionen > button { display: flex; align-items: center; box-sizing: border-box; min-height: 48px; font-size: .95rem; }
.geraet-handy .bt-aktionen > .pt-status { grid-column: 1 / -1; }
.geraet-handy .bt-aktionen > .pt-status:empty { display: none; }
.geraet-handy .bt-raster { grid-template-columns: 1fr !important; }
.geraet-handy .rb-kennzahlen { grid-template-columns: 1fr 1fr !important; }
.geraet-handy .bt-kopf h1 .kz-k { font-size: 1rem; }
.geraet-handy .bt-dok-liste td:nth-child(4) { display: none; }

/* Tablet (iPad): mehr Breite, zweispaltig wo sinnvoll, Kopfzeile wischbar statt umbrechend */
.geraet-tablet main { max-width: 1180px; padding: 1rem 1.1rem; }
.geraet-tablet header.top nav { overflow-x: auto; white-space: nowrap; scrollbar-width: none; }
.geraet-tablet header.top nav a { padding: .55rem .5rem; }
@media (max-width: 860px) {
  .geraet-tablet .menue-knopf { display: inline-flex; align-items: center; justify-content: center; font-size: 1.4rem; width: 44px; height: 44px; padding: 0; background: none; border: 1px solid var(--linie); border-radius: 8px; color: var(--tinte); }
  .geraet-tablet header.top nav { display: none; position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; background: var(--weiss); border-bottom: 1px solid var(--linie); box-shadow: 0 8px 18px rgba(0,0,0,.12); }
  .geraet-tablet header.top nav.offen { display: flex; }
  .geraet-tablet header.top nav a, .geraet-tablet header.top nav .wer { padding: .8rem 1.1rem; border-top: 1px solid var(--linie); }
}
.geraet-tablet .bt-knoepfe { grid-template-columns: repeat(3, 1fr); }
.geraet-tablet .bt-gross { min-height: 4rem; }

/* ===== Kopfzeile mit Gruppen (base.html): Start · Projekte ▾ · Scannen · Verwaltung ▾ · Name ▾ ===== */
header nav { gap: .2rem; }
header nav .kopf-link { display: inline-flex; align-items: center; gap: .25rem; padding: .45rem .7rem; border-radius: 8px; color: var(--tinte); cursor: pointer; white-space: nowrap; }
header nav .kopf-link:hover { background: var(--flaeche); text-decoration: none; }
header nav .kopf-link.aktiv { background: var(--flaeche); font-weight: 600; }
header nav details.kopf-gruppe { position: relative; }
header nav details.kopf-gruppe > summary { list-style: none; }
header nav details.kopf-gruppe > summary::-webkit-details-marker { display: none; }
header nav details.kopf-gruppe > summary::after { content: "▾"; font-size: .7rem; color: var(--grau); margin-left: .15rem; }
header nav .kopf-liste { position: absolute; right: 0; top: calc(100% + .3rem); min-width: 15rem; max-height: 70vh; overflow-y: auto; background: var(--weiss);
  border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 10px 28px rgba(0,0,0,.14); padding: .3rem; z-index: 30; display: flex; flex-direction: column; }
header nav .kopf-liste a { padding: .5rem .7rem; border-radius: 6px; color: var(--tinte); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
header nav .kopf-liste a:hover { background: var(--flaeche); text-decoration: none; }
header nav .kopf-liste .kopf-trenn { font-size: .72rem; color: var(--grau); text-transform: uppercase; letter-spacing: .04em; padding: .5rem .7rem .2rem; }
header nav .kopf-liste .kopf-alle { color: var(--akzent); border-top: 1px solid var(--linie); margin-top: .2rem; border-radius: 0 0 6px 6px; }
header nav .kopf-ich > summary { color: var(--grau); }

/* Projekt-Reiter nach Bereichen: duenner Trenner zwischen Bau | Gebaeude | Betrieb | Projekt */
.tabs .nav-gruppe { flex: 0 0 1px; align-self: stretch; margin: .45rem .35rem; background: var(--linie); }

/* ===== Startseite (cockpit.html) ===== */
.ck-kopf { display: flex; flex-wrap: wrap; gap: .8rem 1.2rem; align-items: flex-end; justify-content: space-between; margin: .4rem 0 1rem; }
.ck-gruss h1 { margin: 0 0 .15rem; }
.ck-aktionen { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.ck-aktion { font-weight: 600; }
.ck-neu { position: relative; }
.ck-neu > summary { list-style: none; }
.ck-neu > summary::-webkit-details-marker { display: none; }
.ck-neu > form { right: 0; }
.ck-raster { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 1rem; align-items: start; }
.ck-haupt { display: flex; flex-direction: column; gap: 1.2rem; min-width: 0; }
.ck-leeren { background: none; border: 0; padding: .2rem .3rem; color: var(--grau); font-size: .8rem; cursor: pointer; }
.ck-leeren:hover { color: var(--akzent); text-decoration: underline; }
.ck-kacheln { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .5rem; }
.ck-kacheln a { display: flex; align-items: center; gap: .6rem; padding: .55rem .7rem; border: 1px solid var(--linie); border-radius: 10px; background: var(--weiss); color: var(--tinte); height: 100%; box-sizing: border-box; }
.ck-kacheln a:hover { border-color: var(--akzent); text-decoration: none; }
.ck-k-sym { flex: 0 0 2rem; height: 2rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; background: var(--flaeche); font-size: 1.05rem; }
.ck-k-text { display: flex; flex-direction: column; min-width: 0; }
.ck-k-text span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ck-k-text b { font-size: .92rem; overflow: hidden; overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-height: 1.25; }   /* lange Modellnamen: zwei Zeilen */
.ck-k-text span { font-size: .78rem; }
.ck-unterzeile { color: var(--grau); font-size: .82rem; line-height: 1.35; margin-top: .1rem; }
.ck-unterzeile .pille { margin-left: .2rem; vertical-align: 1px; }
.ck-abschnitt-kopf { display: flex; align-items: center; justify-content: space-between; gap: .8rem; margin-bottom: .5rem; }
.ck-abschnitt-kopf h2, .ck-seite h2 { margin: 0; font-size: 1.05rem; }
.ck-seite h2 { margin-bottom: .5rem; }
.ck-suche { max-width: 16rem; margin: 0; }
.ck-karten { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: .8rem; }
.ck-karte { margin: 0; display: flex; flex-direction: column; gap: .6rem; }
.ck-karte.inaktiv { opacity: .7; }
.ck-karte-kopf { display: flex; align-items: center; gap: .65rem; color: var(--tinte); }
.ck-karte-kopf:hover { text-decoration: none; }
.ck-karte-kopf:hover b { text-decoration: underline; }
.ck-titel { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.ck-titel b { font-size: 1.02rem; overflow-wrap: anywhere; }
.ck-logo { width: 40px; height: 40px; border-radius: 8px; object-fit: contain; flex: 0 0 40px; }
.ck-logo-leer { display: inline-flex; align-items: center; justify-content: center; background: var(--akzent); color: #fff; font-weight: 700; font-size: 1.15rem; }
.ck-rolle { white-space: nowrap; }
.ck-zahlen { display: flex; flex-wrap: wrap; gap: .3rem; }
.ck-zahl { font-size: .8rem; padding: .2rem .55rem; border-radius: 999px; background: var(--flaeche); color: var(--tinte); }
a.ck-zahl:hover { text-decoration: none; filter: brightness(.96); }
.ck-zahl.warn { background: #fdecea; color: var(--warn); }
.ck-bereiche { display: flex; flex-wrap: wrap; gap: .3rem; border-top: 1px solid var(--linie); padding-top: .55rem; margin-top: auto; }
.ck-bereiche a { font-size: .82rem; padding: .3rem .55rem; border: 1px solid var(--linie); border-radius: 8px; color: var(--tinte); background: var(--weiss); }
.ck-bereiche a:hover { border-color: var(--akzent); text-decoration: none; }
.ck-seite { display: flex; flex-direction: column; gap: .8rem; }
.ck-seite .karte { margin: 0; }
.ck-liste { list-style: none; margin: 0; padding: 0; }
.ck-liste li + li { border-top: 1px solid var(--linie); }
.ck-liste a { display: flex; gap: .6rem; align-items: flex-start; padding: .5rem .1rem; color: var(--tinte); }
.ck-liste a:hover { text-decoration: none; background: var(--flaeche); }
.ck-sym { width: 1.5rem; text-align: center; flex: 0 0 1.5rem; }
.ck-liste b.warn { color: var(--warn); }

/* Startseite je Geraet */
@media (max-width: 1000px) { .ck-raster { grid-template-columns: 1fr; } .ck-seite { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); } }
.geraet-tablet .ck-raster { grid-template-columns: 1fr; }
.geraet-tablet .ck-seite { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.geraet-tablet .ck-karten { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.geraet-tablet .ck-bereiche a, .geraet-handy .ck-bereiche a { padding: .5rem .65rem; font-size: .88rem; }
.geraet-handy .ck-kopf { align-items: stretch; flex-direction: column; margin-top: 0; }
.geraet-handy .ck-gruss h1 { font-size: 1.3rem; }
.geraet-handy .ck-aktionen { display: grid; grid-template-columns: 1fr 1fr; }
.geraet-handy .ck-aktion { display: flex; align-items: center; justify-content: center; min-height: 3.4rem; font-size: 1rem; }
.geraet-handy .ck-raster { grid-template-columns: 1fr; display: flex; flex-direction: column-reverse; align-items: stretch; }
.geraet-handy .ck-seite { display: flex; flex-direction: column; }
.geraet-handy .ck-verwaltung { display: none; }
.geraet-handy .ck-karten { grid-template-columns: 1fr; gap: .6rem; }
.geraet-handy .ck-suche { max-width: none; flex: 1; }
.geraet-handy .ck-bereiche { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
.geraet-handy .ck-bereiche a { flex: 0 0 auto; white-space: nowrap; }
.geraet-handy .ck-kacheln { grid-template-columns: 1fr 1fr; gap: .4rem; }
.geraet-handy .ck-kacheln a { padding: .45rem .5rem; gap: .45rem; }
.geraet-handy .ck-k-sym { flex-basis: 1.7rem; height: 1.7rem; }
.geraet-handy .ck-weiter h2 small { display: none; }
.geraet-handy .ck-kacheln li:nth-child(n+5) { display: none; }
.geraet-tablet .ck-kacheln a, .geraet-handy .ck-kacheln a { min-height: 3.2rem; }

/* Kopfzeile auf Handy/Tablet hochkant: Gruppen im ☰-Menue untereinander */
.geraet-handy header nav details.kopf-gruppe, .geraet-handy header nav .kopf-link { width: 100%; }
.geraet-handy header nav .kopf-link { padding: .8rem 1.1rem; border-radius: 0; border-top: 1px solid var(--linie); font-size: 1rem; }
.geraet-handy header nav .kopf-liste { position: static; box-shadow: none; border: 0; border-radius: 0; padding: 0 0 .3rem 1.6rem; max-height: none; min-width: 0; }
.geraet-handy header nav .kopf-liste a { border-top: 0 !important; padding: .55rem .6rem; font-size: .95rem; }
@media (max-width: 860px) {
  .geraet-tablet header nav details.kopf-gruppe, .geraet-tablet header nav .kopf-link { width: 100%; }
  .geraet-tablet header nav .kopf-liste { position: static; box-shadow: none; border: 0; padding: 0 0 .3rem 1.6rem; }
}
/* 3D-Viewer: Details erst auf Knopfdruck (Modelle, Geschosse, Darstellung) */
.bim-aufklapp { white-space: nowrap; }
.bim-aufklapp.offen { background: var(--akzent-hell, #e8f0fb); border-color: var(--akzent); }
.bim-geschosse-chips { display: contents; }
.bim-geschosse-chips[hidden] { display: none; }
.bim-darstellung { display: contents; }
.bim-darstellung[hidden] { display: none; }
.bim-mz-mehr-knopf { font: inherit; font-size: .8rem; border: 1px solid var(--linie); border-radius: 6px; padding: .15rem .55rem; background: var(--weiss); color: var(--akzent); cursor: pointer; white-space: nowrap; }
.bim-mz-mehr-knopf.offen { background: var(--akzent-hell, #e8f0fb); border-color: var(--akzent); }
.bim-mz-mehr { display: contents; }
.bim-mz-mehr[hidden] { display: none; }
.geraet-handy .bim-suche { flex-wrap: wrap; }
.geraet-handy .bim-suche input[type=search] { flex: 1 1 100%; min-width: 0; }
.geraet-handy .bim-suche .knopf { flex: 1 1 auto; }

/* ===== Maengellisten mit QR-Code (maengellisten.html, maengelliste.html) ===== */
.ml-filter { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; margin: .2rem 0 .8rem; }
.ml-filter input[type=search] { max-width: 22rem; margin: 0; }
/* Uebersicht und Dashboard: Listen als Tabelle, ganze Zeile antippbar */
.ml-uebersicht tr[data-href] { cursor: pointer; }
.ml-uebersicht tr[data-href]:hover td { background: var(--flaeche); }
.ml-uebersicht tr.abgeschlossen td { color: var(--grau); }
.ml-uebersicht .ml-u-titel a { font-weight: 600; color: var(--tinte); }
.ml-uebersicht .ml-u-stand { min-width: 9rem; }
.ml-uebersicht td.zahl.akzent { color: var(--akzent); font-weight: 600; }
.ml-uebersicht td.zahl.warn { color: var(--warn); font-weight: 600; }
.ml-balken { display: flex; height: 6px; border-radius: 3px; overflow: hidden; background: var(--flaeche); gap: 2px; }
.ml-balken .offen { background: var(--warn); } .ml-balken .beantwortet { background: var(--akzent); } .ml-balken .erledigt { background: var(--ok); }
.ml-dash .kopfzeile { margin-bottom: .3rem; }
.ml-dash label.knopf { cursor: pointer; }
.ml-marke { margin: .2rem .25rem 0 0; display: inline-block; text-decoration: none; }
/* Scannen: QR-Code oder Tuerschild -> Rueckfrage "vorhandene Liste oder neue" (static/maengelliste.js) */
.ml-scan-karte { padding: .8rem 1rem; }
.ml-scan-knopf { display: flex; gap: .8rem; align-items: center; cursor: pointer; padding: .7rem .9rem; border: 2px dashed var(--akzent); border-radius: 10px; background: var(--akzent-hell); color: var(--tinte); margin: 0; }
.ml-scan-knopf:hover { background: #e6efff; }
.ml-scan-knopf .ml-scan-symbol { font-size: 1.8rem; line-height: 1; }
.ml-scan-knopf b { display: block; }
.ml-scan-stand { margin: .6rem 0 .2rem; font-weight: 600; }
.ml-scan-stand.fehler, [data-pt-stand].fehler { color: var(--warn); }
.ml-scan-orte { margin: .4rem 0; }
.ml-frage-box { margin: .4rem 0 .2rem; }
.ml-frage { border: 1px solid var(--akzent); border-left-width: 4px; border-radius: 8px; padding: .6rem .8rem; background: var(--weiss); }
.ml-frage-kopf { margin: 0 0 .5rem; }
.ml-frage-listen { list-style: none; padding: 0; margin: 0 0 .5rem; display: flex; flex-direction: column; gap: .35rem; }
.ml-frage-listen button, .ml-frage-listen a, .ml-frage-listen .ml-frage-aus { display: flex; gap: .6rem; align-items: center; width: 100%; text-align: left; padding: .55rem .7rem; min-height: 2.75rem;
  border: 1px solid var(--linie); border-radius: 8px; background: var(--flaeche); color: var(--tinte); font: inherit; cursor: pointer; text-decoration: none; }
.ml-frage-listen button:hover, .ml-frage-listen a:hover { border-color: var(--akzent); background: var(--akzent-hell); }
.ml-frage-listen .ml-frage-aus { cursor: default; opacity: .65; }
.ml-frage-titel { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ml-frage-pfeil { font-size: 1.4rem; color: var(--akzent); }
.ml-frage .aktionen { flex-wrap: wrap; gap: .4rem; }
.ml-rueckfrage { border-color: var(--akzent); }
.ml-wahl { display: contents; }
.ml-pille-weg { border: 0; background: none; padding: 0 .1rem 0 .3rem; font: inherit; cursor: pointer; color: var(--grau); min-height: 0; }
.ml-formular { display: grid; grid-template-columns: 1fr 2fr; gap: .4rem 1rem; align-items: end; }
.ml-formular label { display: flex; flex-direction: column; gap: .2rem; margin: 0; }
.ml-formular .feld { margin: 0; }
.ml-formular .breit { grid-column: 1 / -1; }
.ml-scan { background: var(--akzent-hell); border-left: 3px solid var(--akzent); padding: .5rem .8rem; border-radius: 6px; }
.ml-bezug { margin: -.3rem 0 .6rem; }
/* Detailseite: Filterkacheln und die Liste als Tabelle */
.ml-zahlen { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: .8rem; align-items: stretch; }
.ml-zahlen .kachel { padding: .45rem .8rem; min-width: 6.5rem; text-align: center; font: inherit; color: var(--tinte); cursor: pointer; }
.ml-zahlen .kachel b { display: block; font-size: 1.3rem; color: var(--akzent); }
.ml-zahlen .kachel.warn b { color: var(--warn); } .ml-zahlen .kachel.ok b { color: var(--ok); }
.ml-zahlen .kachel.akzent { border-color: var(--akzent); }
.ml-zahlen .kachel.aktiv { border-color: var(--akzent); box-shadow: inset 0 0 0 2px var(--akzent); background: var(--akzent-hell); }
.ml-zahlen .rechts { margin-left: auto; align-self: center; }
/* Eingabe (Bemerkung / Ticket), Umschalter Verlauf/Maengel, Verlauf als Liste */
.ml-eingabe { margin: 0 0 .9rem; padding: .6rem; border: 1px solid var(--linie); border-radius: 10px; background: var(--flaeche); }
.ml-eingabe textarea { width: 100%; min-height: 3.2rem; margin: 0 0 .45rem; box-sizing: border-box; background: var(--weiss); }
.ml-adressat { margin: -.3rem 0 .7rem; }
.ml-gewerk-frist { margin-bottom: .45rem; }
.ml-gewerk-frist label { display: flex; gap: .35rem; align-items: center; margin: 0; }
.ml-gewerk-frist select, .ml-gewerk-frist input, .ml-b-aendern select, .ml-b-aendern input { width: auto; max-width: 100%; min-width: 0; margin: 0; }
.ml-b-aendern { margin-top: .25rem; }
.ml-b-aendern > summary { cursor: pointer; }
.ml-b-aendern form { margin-top: .3rem; }
.ml-adressat-frage { display: flex; flex-wrap: wrap; gap: .3rem .6rem; align-items: center; margin: 0 0 .45rem; font-weight: 600; }
.ml-adressat-frage select { width: auto; max-width: 100%; min-width: 0; margin: 0; flex: 1 1 14rem; font-weight: normal; }
.ml-adressaten { border: 1px solid var(--linie); border-radius: 8px; padding: .4rem .7rem; display: flex; flex-wrap: wrap; gap: .2rem 1rem; }
.ml-adressaten legend { padding: 0 .3rem; }
.ml-eingabe-zeile { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.ml-eingabe-zeile select { width: auto; max-width: 22rem; min-width: 0; margin: 0; flex: 1 1 12rem; }
.ml-ansicht-wahl { display: flex; gap: .3rem; border-bottom: 1px solid var(--linie); margin-bottom: .5rem; }
.ml-ansicht-wahl button { border: 0; border-bottom: 3px solid transparent; background: none; padding: .45rem .8rem; font: inherit; font-weight: 600; color: var(--grau); cursor: pointer; border-radius: 0; min-height: 2.6rem; }
.ml-ansicht-wahl button.aktiv { color: var(--akzent); border-bottom-color: var(--akzent); }
.ml-verlauf-tabelle td { vertical-align: top; }
.ml-verlauf-tabelle .ml-v-zeit { width: 9rem; color: var(--grau); font-size: .9rem; }
.ml-verlauf-tabelle .ml-v-pos { width: 2.5rem; font-weight: 700; }
.ml-v-symbol { display: inline-block; width: 1.3rem; text-align: center; }
.ml-v-ticket { margin-left: .3rem; }
.ml-v-text { margin-top: .15rem; white-space: pre-line; overflow-wrap: anywhere; }
.ml-v-bemerkung td, .ml-v-notiz td { background: #fffbea; }
.ml-v-antwort .ml-v-eintrag, .ml-v-ablage .ml-v-eintrag { border-left: 3px solid var(--akzent); }
.ml-v-bewertung .ml-v-eintrag { border-left: 3px solid var(--ok); }
.ml-v-nachbesserung .ml-v-eintrag { border-left: 3px solid var(--warn); }
.ml-v-angelegt td, .ml-v-abgeschlossen td { color: var(--grau); }
.ml-tabelle th[data-sort] { cursor: pointer; white-space: nowrap; }
.ml-tabelle th[data-richtung=auf]::after { content: " ▲"; font-size: .7em; } .ml-tabelle th[data-richtung=ab]::after { content: " ▼"; font-size: .7em; }
.ml-tabelle td { vertical-align: top; }
.ml-tabelle tr.erledigt td { background: var(--flaeche); color: var(--grau); }
.ml-tabelle .ml-pos { width: 2.5rem; }
.ml-tabelle .ml-mangel { min-width: 14rem; }
.ml-tabelle .ml-bild { float: left; margin: 0 .55rem .2rem 0; }
.ml-tabelle .ml-bild img { width: 52px; height: 52px; object-fit: cover; border-radius: 6px; display: block; }
.ml-tabelle .ml-rueck { min-width: 16rem; max-width: 30rem; }
.ml-ticket-titel { font-weight: 600; color: var(--tinte); }
.ml-beitrag { border-left: 3px solid var(--linie); padding: .15rem .55rem; background: var(--flaeche); border-radius: 0 6px 6px 0; overflow-wrap: anywhere; font-size: .92rem; }
.ml-beitrag.ml-antwort, .ml-beitrag.ml-ablage { border-left-color: var(--akzent); }
.ml-beitrag.ml-bewertung { border-left-color: var(--ok); }
.ml-beitrag.ml-nachbesserung { border-left-color: var(--warn); }
.ml-beitrag.ml-notiz { border-left-color: #d9b400; background: #fffbea; }
.ml-tabelle tr.ml-bemerkung-zeile td { background: #fffbea; }
.ml-verlauf > summary { cursor: pointer; margin-top: .2rem; }
.ml-verlauf .ml-beitrag { margin-top: .3rem; }
.ml-weg button { padding: .1rem .5rem; }
.ml-unten { margin-top: .7rem; }
.ml-suche { display: flex; gap: .5rem; margin-bottom: .6rem; }
.ml-suche input { margin: 0; flex: 1; max-width: 28rem; }
.ml-kandidaten { list-style: none; padding: 0; margin: 0 0 .7rem; display: flex; flex-direction: column; gap: .25rem; }
.ml-kandidaten label { display: flex; gap: .45rem; align-items: baseline; margin: 0; font-weight: normal; }
.ml-etikett-raster { display: grid; grid-template-columns: 200px 1fr; gap: 1.2rem; align-items: start; }
.ml-qr { margin: 0; text-align: center; padding: .6rem; border: 1px dashed var(--linie); border-radius: 8px; background: #fff; }
.ml-qr svg { width: 100%; height: auto; display: block; }
.ml-druck { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: .6rem; }
.ml-druck select { width: auto; margin: 0; }
.ml-druck-weitere { flex-wrap: wrap; gap: .4rem; margin-bottom: .5rem; }
.ml-ptouch { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin: .3rem 0 .5rem; padding: .5rem .6rem; border: 1px solid var(--linie); border-radius: 8px; }
.ml-ptouch p { flex-basis: 100%; margin: .2rem 0 0; }
.ml-url { overflow-wrap: anywhere; }
.ml-blanko p.klein, .ml-codes { padding-left: 0; padding-right: 0; }
.ml-blanko-frei .knopf { margin-left: .4rem; }
/* Blanko-QR-Codes als Fenster aus dem Menü „🖨 Drucken“ (Tickets-Übersicht, Mängellisten) */
.ml-blanko-menue { position: relative; display: inline-block; }
.ml-blanko-menue > summary { list-style: none; }
/* Blanko-Etiketten: Texte frei aenderbar, Vorschau des P-touch-Etiketts (1-Bit-Bild vom Server) */
.ml-blanko-texte { display: grid; grid-template-columns: minmax(0, 1fr); gap: .6rem; align-items: start; border: 1px solid var(--linie); border-radius: 8px; padding: .6rem; margin: .2rem 0 .6rem; }
.ml-blanko-vorschau { margin: 0; display: flex; flex-direction: column; gap: .35rem; }
.ml-blanko-vorschau img { width: 100%; max-width: 560px; align-self: center; height: auto; background: #fff; border: 1px solid #cfd6e0; border-radius: 4px; image-rendering: pixelated; box-shadow: 0 1px 4px rgba(15,23,42,.12); }
.ml-blanko-vorschau select { width: auto; font-size: .8rem; padding-top: .1rem; padding-bottom: .1rem; min-height: 0; }
.ml-blanko-felder { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem .7rem; }
.ml-blanko-felder label { display: flex; flex-direction: column; gap: .1rem; font-size: .8rem; color: var(--grau); }
.ml-blanko-felder p { margin: .1rem 0 0; grid-column: 1 / -1; }
@media (max-width: 640px) { .ml-blanko-felder { grid-template-columns: 1fr; } }
.qr-etikett { flex-wrap: wrap; align-items: center; gap: .35rem .5rem; }
.qr-etikett .qr-nummer { width: 6.5rem; flex: 0 0 auto; }
.qr-etikett .chips:empty { display: none; }
.qr-etikett .chips { display: inline-flex; gap: .35rem; flex-wrap: wrap; }
.qr-etikett .chip { display: inline-flex; align-items: center; gap: .3rem; padding: .3rem .65rem; border-radius: 999px; background: var(--akzent-hell); color: var(--akzent); font-size: .9rem; font-weight: 600; cursor: pointer; }
.qr-etikett .chip small { font-weight: 400; opacity: .85; }
.qr-etikett .chip b { font-weight: 400; opacity: .7; }
.ml-blanko-menue > summary::-webkit-details-marker { display: none; }
.ml-blanko-menue .karte.schwebend { position: fixed; left: 50%; top: 12vh; right: auto; transform: translateX(-50%); width: min(640px, 92vw); max-height: 80vh; overflow: auto; text-align: left; white-space: normal; z-index: 20; }
.ml-blanko-zu { margin: 0 0 .8rem; padding: .6rem .7rem; border: 1px solid var(--linie); border-radius: 8px; }
.ml-blanko-zu-kopf { margin: 0 0 .5rem; display: flex; flex-direction: column; gap: .15rem; }
.ml-blanko-zu .aktionen { flex-wrap: wrap; gap: .5rem; align-items: center; }
.ml-blanko-zu .ml-blanko-nr { display: flex; gap: .4rem; align-items: center; margin: 0; }
.ml-blanko-zu .ml-blanko-nr input { width: 11rem; min-width: 0; flex: 0 1 auto; margin: 0; }
.ml-blanko-zu p.klein, .ml-blanko-zu-kopf .klein { padding-left: 0; padding-right: 0; margin-bottom: 0; }
.ml-etikett { display: flex; flex-direction: column; }
.ml-etikett-kurz { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .6rem; }
.ml-etikett-kurz p { flex-basis: 100%; margin: 0; }
.ml-etikett-kurz .klein { padding: 0; }
.geraet-handy .ml-zahlen > .kachel, .geraet-tablet .ml-zahlen > .kachel { display: none; }   /* iPhone/iPad: keine Zaehl-Kacheln */
.ml-etikett .ml-etikett-kurz + .ml-blanko-zu, .ml-etikett .ml-blanko-zu { margin: .6rem 0 0; }
/* Handy: Tabellenzeilen als Bloecke */
@media (max-width: 700px) {
  .ml-formular { grid-template-columns: 1fr; }
  .ml-etikett-raster { grid-template-columns: 1fr; }
  .ml-qr { max-width: 220px; }
  .ml-zahlen .kachel { min-width: 0; flex: 1 1 28%; padding: .35rem .3rem; }
  .ml-zahlen .rechts { margin-left: 0; flex-basis: 100%; }
  .ml-tabelle thead, .ml-uebersicht thead { display: none; }
  .ml-tabelle, .ml-tabelle tbody, .ml-uebersicht, .ml-uebersicht tbody { display: block; width: 100%; }
  .ml-tabelle tr[data-pos] { display: grid; grid-template-columns: 2rem 1fr auto; gap: .15rem .5rem; padding: .55rem .2rem; border-bottom: 1px solid var(--linie); }
  .ml-tabelle tr[data-pos] td { display: block; border: 0; padding: 0; min-width: 0; max-width: none; }
  .ml-tabelle .ml-pos { grid-column: 1; grid-row: 1 / span 5; }
  .ml-tabelle .ml-mangel { grid-column: 2; grid-row: 1 / span 2; min-width: 0; }
  .ml-tabelle .ml-st { grid-column: 3; grid-row: 1; }
  .ml-tabelle td.wahl { grid-column: 3; grid-row: 2; text-align: right; }
  .ml-tabelle .ml-an, .ml-tabelle .ml-frist, .ml-tabelle .ml-rueck { grid-column: 2 / span 2; font-size: .9rem; }
  .ml-tabelle .ml-an { grid-row: 3; } .ml-tabelle .ml-frist { grid-row: 4; } .ml-tabelle .ml-rueck { grid-row: 5; }
  .ml-tabelle .ml-an.leer { display: none !important; }
  .ml-tabelle .ml-frist::before { content: "Frist: "; color: var(--grau); }
  .ml-tabelle .ml-frist.leer { display: none !important; }
  .ml-tabelle .ml-rueck.leer { display: none !important; }
  .ml-tabelle tr.ml-bemerkung-zeile { background: #fffbea; }
  .ml-eingabe-zeile select { max-width: 100%; width: 100%; flex-basis: 100%; }
  .ml-eingabe-zeile .knopf { flex: 1 1 auto; }
  .ml-verlauf-tabelle thead { display: none; }
  .ml-verlauf-tabelle, .ml-verlauf-tabelle tbody { display: block; width: 100%; }
  .ml-verlauf-tabelle tr.ml-v { display: grid; grid-template-columns: 2rem 1fr auto; gap: .1rem .4rem; padding: .5rem .2rem; border-bottom: 1px solid var(--linie); }
  .ml-verlauf-tabelle tr.ml-v td { display: block; border: 0; padding: 0; width: auto; background: none; }
  .ml-verlauf-tabelle .ml-v-pos { grid-column: 1; grid-row: 1 / span 2; }
  .ml-verlauf-tabelle .ml-v-zeit { grid-column: 2; grid-row: 1; font-size: .8rem; }
  .ml-verlauf-tabelle .ml-v-eintrag { grid-column: 2; grid-row: 2; }
  .ml-verlauf-tabelle td.wahl { grid-column: 3; grid-row: 1 / span 2; }
  .ml-verlauf-tabelle tr.ml-v-bemerkung, .ml-verlauf-tabelle tr.ml-v-notiz { background: #fffbea; }
  .ml-uebersicht tr[data-href] { display: grid; grid-template-columns: 4.2rem 1fr repeat(3, 2.4rem); gap: .1rem .4rem; align-items: center; padding: .5rem .1rem; border-bottom: 1px solid var(--linie); }
  .ml-uebersicht tr[data-href] td { display: block; border: 0; padding: 0; }
  .ml-uebersicht tr[data-href] td.nur-gross { display: none; }
}

.ml-status { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; margin-top: .8rem; }
.ml-im-ticket .pille { margin: .1rem 0; }
.ml-zuordnen { display: inline-block; }
.ml-zuordnen > summary { cursor: pointer; color: var(--akzent); }
.ml-zuordnen form { margin-top: .3rem; flex-wrap: wrap; }
.ml-zuordnen select { width: auto; max-width: 18rem; margin: 0; }
.ml-pille { text-decoration: none; }
.ml-ticket .klein:not(button):not(.pille), .ml-karte .klein:not(.pille), .ml-etikett p.klein, .ml-status .klein, .ml-im-ticket .klein:not(button):not(.pille),
#zuordnen p.klein, #neu p.klein { padding-left: 0; padding-right: 0; }
/* Handy: Liste und Etikett einspaltig, grosse Treffflaechen; das Erfassen ist der Hauptweg */
.geraet-handy .ml-raster { grid-template-columns: 1fr; }
.geraet-handy .ml-formular { grid-template-columns: 1fr; }
.geraet-handy .ml-etikett-raster { grid-template-columns: 1fr; }
.geraet-handy .ml-qr { max-width: 220px; margin: 0 auto; }
.geraet-handy .ml-kopf .aktionen { display: grid; grid-template-columns: 1fr 1fr; gap: .45rem; width: 100%; }
.geraet-handy .ml-kopf .aktionen > a { display: flex; align-items: center; justify-content: center; min-height: 48px; margin: 0; }
.geraet-handy .ml-kopf .aktionen > a.primaer { grid-column: 1 / -1; order: -1; font-size: 1.05rem; min-height: 54px; }
.geraet-handy .ml-bezug { margin-top: .5rem; }
.geraet-handy .ml-ticket .ml-bild { flex-basis: 60px; }
.geraet-handy .ml-ticket .ml-bild img { width: 60px; height: 60px; }
.geraet-handy .ml-ticket-kopf .ml-weg button { min-height: 38px; min-width: 38px; }
.geraet-handy .ml-kandidaten label { padding: .45rem 0; border-bottom: 1px solid var(--linie); }
.geraet-handy .ml-suche { flex-direction: column; }
.geraet-handy .ml-suche input { max-width: none; }
.geraet-tablet .ml-raster { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.geraet-tablet .ml-kandidaten label { padding: .35rem 0; }
@media (max-width: 640px) { .ml-formular, .ml-etikett-raster { grid-template-columns: 1fr; } .ml-qr { max-width: 220px; margin: 0 auto; } }

/* AKS: Nachfrage fehlender Codes (kennzeichnung.html) */
.kz-nachfrage { flex-wrap: wrap; gap: .4rem; margin: .2rem 0 .6rem; align-items: flex-start; }
.kz-import > summary { list-style: none; display: inline-flex; cursor: pointer; }
.kz-import > summary::-webkit-details-marker { display: none; }
.kz-import[open] { flex-basis: 100%; }
.kz-import form { margin: .4rem 0 .2rem; flex-wrap: wrap; gap: .4rem; }
.kz-import input[type=file] { margin: 0; max-width: 100%; }
.kz-import-ergebnis { background: var(--flaeche); border-left: 3px solid var(--akzent); border-radius: 0 6px 6px 0; padding: .5rem .7rem; margin: 0 0 .6rem; font-size: .9rem; }
.kz-import-ergebnis ul { margin: .3rem 0; padding-left: 1.1rem; }
.kz-modelle { font-size: .85em; min-width: 9rem; }
.kz-modelle div { white-space: nowrap; }
.geraet-handy .kz-nachfrage > a, .geraet-handy .kz-import > summary { min-height: 44px; align-items: center; }
/* AKS-Verwaltung: QR-Codes aus "Vorhandene AKS" drucken */
.kz-bestand-tabelle .kz-wahl { width: 2rem; text-align: center; padding-left: .3rem; padding-right: .3rem; }
.kz-bestand-tabelle .kz-wahl input { width: 1.1rem; height: 1.1rem; margin: 0; }
.kz-qr { margin: .6rem 0; }
.kz-qr > summary { cursor: pointer; }
.kz-qr-form { margin-top: .6rem; display: flex; flex-direction: column; gap: .5rem; }
.kz-qr-umfang { display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; align-items: center; }
.kz-qr-a4 { flex-wrap: wrap; gap: .5rem; }
.kz-qr-a4 select { width: auto; margin: 0; }
[data-pt-stand].fehler { color: var(--warn); }
.kz-qr-zeile { display: inline-block; position: relative; }
.kz-qr-zeile > summary { list-style: none; cursor: pointer; }
.kz-qr-zeile > summary::-webkit-details-marker { display: none; }
.kz-qr-menue { position: absolute; right: 0; top: calc(100% + .25rem); z-index: 20; display: flex; flex-direction: column; gap: .35rem; min-width: 12rem;
  padding: .5rem; background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.12); white-space: normal; }
.kz-qr-menue .knopf { text-align: left; }
[data-qr-stand].fehler { color: var(--warn); }

/* Moeblierungsplanung (templates/moeblierung*.html, static/moeblierung.js) */
.mb-einleitung { max-width: 60rem; }
.mb-varianten tr[data-href] { cursor: pointer; }
.mb-varianten tr[data-href]:hover td { background: var(--flaeche); }
.mb-v-zahlen .pille { margin: 0 .2rem .2rem 0; }
.mb-varianten .mb-nur-klein { display: none; }
.pille.mb-p-verschoben { background: #fff1db; color: #8a5200; }
.pille.mb-p-entfernt { background: var(--warn-hell); color: var(--warn); }
.pille.mb-p-kopie, .pille.mb-p-neu { background: var(--ok-hell); color: var(--ok); }
.mb-neu { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem 1rem; }
.mb-neu label { display: flex; flex-direction: column; gap: .25rem; font-weight: 500; }
.mb-neu select, .mb-neu input, .mb-neu textarea { width: 100%; min-width: 0; }
.mb-neu .mb-neu-breit, .mb-neu .aktionen { grid-column: 1 / -1; }
main:has(.mb-editor) { max-width: none; }
.mb-kopf h1 small { display: block; margin-top: .15rem; }
.mb-beschreibung { margin: -.2rem 0 .6rem; }
.mb-menue { position: relative; }
.mb-menue > summary { list-style: none; cursor: pointer; }
.mb-menue > summary::-webkit-details-marker { display: none; }
.mb-menue-inhalt { position: absolute; right: 0; top: calc(100% + .3rem); z-index: 30; width: min(22rem, calc(100vw - 2rem)); display: flex; flex-direction: column; gap: .6rem;
  padding: .7rem; background: var(--weiss); border: 1px solid var(--linie); border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.14); }
.mb-menue-inhalt .knopf { width: 100%; text-align: left; }
.mb-umbenennen { display: flex; flex-direction: column; gap: .4rem; padding-top: .5rem; border-top: 1px solid var(--linie); }
.mb-umbenennen label { display: flex; flex-direction: column; gap: .2rem; font-size: .9rem; }
.mb-umbenennen input, .mb-umbenennen select, .mb-umbenennen textarea { width: 100%; min-width: 0; }
.mb-status { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; justify-content: space-between; margin-bottom: .6rem; }
.mb-zahlen { display: flex; flex-wrap: wrap; gap: .3rem; }
.mb-export { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.mb-export form { margin: 0; }
.mb-editor { display: grid; grid-template-columns: minmax(0, 1fr) 20rem; grid-template-rows: auto minmax(0, 1fr); gap: 0 .8rem;
  height: calc(100vh - 13.5rem); min-height: 28rem; }
.mb-leiste { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; padding: .45rem; background: var(--weiss);
  border: 1px solid var(--linie); border-bottom: 0; border-radius: 8px 8px 0 0; }
.mb-leiste select { max-width: 16rem; }
.mb-gruppe { display: inline-flex; gap: .2rem; }
.mb-leiste .knopf { min-width: 2.4rem; min-height: 2.4rem; }
.mb-raster { display: inline-flex; align-items: center; gap: .3rem; font-size: .9rem; white-space: nowrap; }
.mb-speicher { margin-left: auto; }
.mb-speicher.warn { color: var(--warn); }
.mb-flaeche { position: relative; min-height: 0; background: #fbfbfa; border: 1px solid var(--linie); border-radius: 0 0 0 8px; overflow: hidden; }
#mb-svg { display: block; width: 100%; height: 100%; touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab; }
#mb-svg path { fill: none; vector-effect: non-scaling-stroke; }
#mb-svg .mb-wand { stroke: #1d2433; stroke-width: 1.6; }
#mb-svg .mb-oeffnung { stroke: #5b7fa8; stroke-width: 1; }
#mb-svg .mb-treppe { stroke: #8b93a1; stroke-width: .8; }
#mb-svg .mb-raum { stroke: #c9ced6; stroke-width: .8; }
.mb-raumtext { fill: #6b7280; text-anchor: middle; dominant-baseline: middle; pointer-events: none; font-weight: 600; }
.mb-raumtext .mb-raumname { font-weight: 400; font-size: .9em; }
.mb-m { cursor: move; }
.mb-m > * { fill: rgba(30, 90, 168, .10); stroke: #4a6d99; stroke-width: 1; vector-effect: non-scaling-stroke; }
.mb-m.verschoben > * { fill: rgba(230, 140, 0, .22); stroke: #b26a00; stroke-width: 1.4; }
.mb-m.neu > * { fill: rgba(31, 122, 58, .20); stroke: #1f7a3a; stroke-width: 1.4; }
.mb-m.entfernt > * { fill: rgba(180, 35, 44, .06); stroke: #b4232c; stroke-dasharray: 4 3; }
.mb-m.gewaehlt > * { stroke: #1e5aa8; stroke-width: 2.6; fill-opacity: .9; }
.mb-m.gewaehlt > *:not(.mb-front) { fill: rgba(30, 90, 168, .28); }
.mb-m > .mb-front { stroke-width: 1; fill: none; }
.mb-laden { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(251, 251, 250, .85); color: var(--grau); }
.mb-laden[hidden] { display: none; }
.mb-massstab { position: absolute; left: .7rem; bottom: .6rem; display: flex; align-items: center; gap: .35rem; font-size: .75rem; color: var(--grau); pointer-events: none; }
.mb-massstab span { display: block; height: 5px; border: 1.5px solid #6b7280; border-top: 0; }
.mb-seite { min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: .7rem; padding: .7rem; background: var(--weiss);
  border: 1px solid var(--linie); border-radius: 0 0 8px 0; }
.mb-seite section[hidden] { display: none; }
.mb-seite h3 { margin: 0 0 .3rem; font-size: .95rem; }
.mb-seite p { margin: 0 0 .4rem; font-size: .9rem; }
.mb-auswahl, .mb-katalog { padding-bottom: .7rem; border-bottom: 1px solid var(--linie); }
.mb-auswahl-kopf { display: flex; justify-content: space-between; align-items: flex-start; gap: .5rem; }
.mb-auswahl-werte { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: .35rem; margin: .5rem 0; }
.mb-auswahl-werte label { display: flex; flex-direction: column; font-size: .8rem; color: var(--grau); }
.mb-auswahl-werte input { width: 100%; min-width: 0; }
.mb-auswahl-knoepfe { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem; }
.mb-auswahl-knoepfe .knopf { min-height: 2.4rem; }
.mb-auswahl-knoepfe .knopf[hidden] { display: none; }
#mb-katalog-liste h4 { margin: .6rem 0 .3rem; font-size: .8rem; color: var(--grau); text-transform: uppercase; letter-spacing: .03em; }
.mb-k-eintrag { display: flex; align-items: center; gap: .6rem; width: 100%; padding: .4rem .5rem; margin-bottom: .25rem; background: var(--flaeche);
  border: 1px solid var(--linie); border-radius: 6px; text-align: left; font: inherit; font-size: .9rem; cursor: pointer; color: var(--tinte); }
.mb-k-eintrag:hover { border-color: var(--akzent); }
.mb-k-bild { width: 2.6rem; height: 2rem; flex: 0 0 2.6rem; }
.mb-k-bild * { fill: rgba(31, 122, 58, .2); stroke: #1f7a3a; stroke-width: 1; vector-effect: non-scaling-stroke; }
.mb-legende { list-style: none; margin: .3rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .2rem .6rem; font-size: .8rem; color: var(--grau); }
.mb-legende i { display: inline-block; width: .9rem; height: .7rem; margin-right: .35rem; vertical-align: -1px; border: 1.5px solid #4a6d99; background: rgba(30, 90, 168, .1); }
.mb-legende .mb-l-verschoben { border-color: #b26a00; background: rgba(230, 140, 0, .22); }
.mb-legende .mb-l-neu { border-color: #1f7a3a; background: rgba(31, 122, 58, .2); }
.mb-legende .mb-l-entfernt { border: 1.5px dashed #b4232c; background: none; }
.mb-liste ol { margin: 0; padding-left: 1.3rem; font-size: .9rem; }
.mb-liste-eintrag { background: none; border: 0; padding: .15rem 0; font: inherit; color: var(--akzent); cursor: pointer; text-align: left; }
.mb-liste-eintrag.entfernt { color: var(--warn); text-decoration: line-through; }
main:has(.mb-raumhinweis) .mb-editor { height: calc(100vh - 16rem); }
.mb-editor:has(.mb-raumnav:not([hidden])) { height: calc(100vh - 16.5rem); }
main:has(.mb-raumhinweis) .mb-editor:has(.mb-raumnav:not([hidden])) { height: calc(100vh - 19rem); }
.mb-umschalter { display: inline-flex; }
.mb-umschalter .knopf { border-radius: 0; }
.mb-umschalter .knopf:first-child { border-radius: 6px 0 0 6px; }
.mb-umschalter .knopf:last-child { border-radius: 0 6px 6px 0; margin-left: -1px; }
.mb-umschalter .knopf.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.mb-raumsuche { width: 12rem; min-width: 0; }
.mb-raumnav { flex-basis: 100%; display: flex; align-items: center; gap: .4rem; padding: .3rem .45rem; background: var(--akzent-hell); border-radius: 6px; }
.mb-raumnav[hidden] { display: none; }
.mb-raumnav-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mb-raumnav .knopf[hidden] { display: none; }
.mb-raumhinweis { margin: -.2rem 0 .6rem; padding: .4rem .7rem; background: var(--akzent-hell); border-radius: 6px; font-size: .9rem; }
.mb-3d { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #fff; }
.mb-3d[hidden] { display: none; }
.mb-im-3d [data-mb="rueck"], .mb-im-3d [data-mb="vor"], .mb-im-3d [data-mb="katalog"], .mb-im-3d .mb-zoom, .mb-im-3d [data-mb="einpassen"],
.mb-im-3d .mb-raster, .mb-im-3d .mb-massstab, .mb-im-3d .mb-schwebend, .mb-im-3d .mb-laden,
.mb-im-3d .mb-auswahl, .mb-im-3d .mb-katalog, .mb-im-3d .mb-hilfe { display: none !important; }
#mb-svg .mb-raumfokus { fill: rgba(30, 90, 168, .06); stroke: #1e5aa8; stroke-width: 2; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; }
.mb-m.fern > * { opacity: .28; }
#mb-svg .mb-griff-linie { stroke: #1e5aa8; stroke-width: 1.2; stroke-dasharray: 4 3; vector-effect: non-scaling-stroke; pointer-events: none; }
#mb-svg .mb-griff-feld { fill: transparent; cursor: grab; }
#mb-svg .mb-griff-punkt { fill: #fff; stroke: #1e5aa8; stroke-width: 2; vector-effect: non-scaling-stroke; cursor: grab; }
.mb-im-3d .mb-griff { display: none; }
.mb-k-tabs { display: flex; gap: .25rem; margin: .4rem 0 .3rem; }
.mb-k-tabs button { flex: 1; padding: .35rem .4rem; border: 1px solid var(--linie); background: var(--flaeche); border-radius: 6px; font: inherit; font-size: .85rem; cursor: pointer; color: var(--tinte); }
.mb-k-tabs button.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
#mb-modell-suche { width: 100%; margin-bottom: .3rem; }
#mb-modell-typen h4 { margin: .6rem 0 .3rem; font-size: .8rem; color: var(--grau); text-transform: uppercase; letter-spacing: .03em; }
.mb-k-eintrag span { display: flex; flex-direction: column; min-width: 0; }
.mb-k-eintrag span b { font-weight: 500; overflow: hidden; text-overflow: ellipsis; }
.mb-k-eintrag span small { font-size: .78rem; }
@media (max-width: 899px) {
  .mb-editor { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 62vh auto; height: auto !important; }
  .mb-leiste, .mb-raumnav { min-width: 0; }
  .mb-flaeche { border-radius: 0; }
  .mb-seite { border-radius: 0 0 8px 8px; border-top: 0; overflow: visible; }
  .mb-text { display: none; }
  .mb-auswahl-knoepfe { grid-template-columns: repeat(3, 1fr); }
  .mb-auswahl.mb-schwebend { position: absolute; left: .4rem; right: .4rem; bottom: .4rem; z-index: 3; max-height: 60%; overflow: auto; padding: .5rem .6rem;
    background: rgba(255, 255, 255, .97); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 18px rgba(0, 0, 0, .18); }
  .mb-schwebend .mb-auswahl-werte { margin: .3rem 0; }
  .mb-schwebend .mb-auswahl-werte label { flex-direction: row; align-items: center; gap: .25rem; font-size: .75rem; }
  .mb-schwebend .mb-auswahl-werte input { padding: .2rem .3rem; min-height: 34px; font-size: .9rem; }
  .mb-schwebend #mb-a-art { font-size: .75rem; }
  .mb-schwebend .mb-auswahl-knoepfe { gap: .25rem; }
}
@media (max-width: 599px) {
  .mb-neu { grid-template-columns: 1fr; }
  .mb-varianten .mb-nur-klein { display: block; }
  .mb-varianten thead { display: none; }
  .mb-varianten, .mb-varianten tbody { display: block; width: 100%; }
  .mb-varianten tr[data-href] { display: block; padding: .55rem .2rem; border-bottom: 1px solid var(--linie); }
  .mb-varianten td { display: block; border: 0; padding: .1rem 0; }
  .mb-varianten td.nur-gross { display: none; }
  .mb-editor { grid-template-rows: auto 58vh auto; margin: 0 -.6rem; }
  .mb-leiste { gap: .3rem; padding: .35rem; }
  .mb-leiste select { max-width: 7.5rem; }
  .mb-raumsuche { flex: 1 1 8rem; width: auto; }
  .mb-raster { font-size: .8rem; }
  .mb-speicher { flex-basis: 100%; margin-left: 0; }
  .mb-auswahl-knoepfe { grid-template-columns: 1fr 1fr; }
  .mb-schwebend .mb-auswahl-knoepfe { grid-template-columns: repeat(3, 1fr); }
  .mb-schwebend .mb-auswahl-knoepfe .knopf { font-size: .82rem; padding-left: .2rem; padding-right: .2rem; }
  .mb-kopf h1 { font-size: 1.2rem; }
  .mb-kopf h1 small { font-size: .8rem; }
  .mb-zoom { display: none; }
  .mb-leiste .knopf { min-width: 2.3rem; padding-left: .45rem; padding-right: .45rem; }
  .mb-status { gap: .35rem; margin-bottom: .45rem; }
  .mb-export { width: 100%; gap: .3rem; }
  .mb-export .knopf, .mb-export button.knopf, .mb-export a.knopf { padding: .3rem .55rem; font-size: .85rem; }
  .mb-export-stand { flex-basis: 100%; }
  .mb-export-stand:empty { display: none; }
}
.knopf.gefahr { color: var(--warn); }
.bim-mb-hinweis { margin: 0 0 .4rem; padding: .3rem .6rem; background: #fff4e0; border-radius: 6px; font-size: .85rem; }
/* Wartung: Formular in Abschnitten, Gruppen nach Gewerk, Termin (Hausmeister), Monteur-Zugang (app/wartung_termine.py) */
.wm-abschnitt { border: 1px solid var(--linie); border-radius: 8px; padding: .5rem .8rem .3rem; margin: 0 0 .8rem; }
.wm-abschnitt legend { font-weight: 600; padding: 0 .3rem; }
.wm-wahl { display: flex; flex-wrap: wrap; gap: .2rem 1rem; align-items: center; }
.wm-wahl .radio { margin: .15rem 0; white-space: nowrap; font-weight: normal; }
.wm-wahl-spalten { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: .1rem 1rem; }
.wm-wahl-spalten .radio { white-space: normal; }
.wm-gruppe { padding: .3rem .8rem; } .wm-gruppe > summary { cursor: pointer; padding: .4rem 0; font-size: 1.02rem; }
.wm-gruppe[open] > summary { margin-bottom: .4rem; } .wm-gruppe table.liste { margin-bottom: .4rem; }
.wm-monat h3 { text-transform: none; }
.wm-t-erinnert { background: var(--akzent-hell); color: var(--akzent); } .wm-t-vor_ort, .wm-t-fertig { background: #fff4d6; color: #8a5a00; }
.wm-t-abgeschlossen { background: var(--ok-hell); color: var(--ok); } .wm-t-abgesagt { color: var(--grau); text-decoration: line-through; }
.wm-termin-kopf { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
.wm-termin-datum { display: flex; flex-direction: column; padding: .4rem .8rem; border-radius: 8px; background: var(--flaeche); }
.wm-termin-datum b { font-size: 1.15rem; } .wm-termin-datum span { color: var(--grau); }
.wm-knopfreihe { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; } .wm-knopfreihe form { margin: 0; }
.wm-hausmeister .wm-knopfreihe .knopf.gross { min-width: 12rem; justify-content: center; }
.wm-abschluss { margin-top: .7rem; } .wm-abschluss > summary { list-style: none; display: inline-flex; cursor: pointer; }
.wm-abschluss form { margin-top: .6rem; }
.wm-zwei { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: 0 1rem; }
.wm-monteur { max-width: 640px; margin: 0 auto; }
.wm-punktliste { list-style: none; margin: 0; padding: 0; }
.wm-punktliste li a { display: flex; gap: .7rem; align-items: center; padding: .6rem .2rem; border-top: 1px solid var(--linie); color: var(--tinte); text-decoration: none; min-height: 44px; }
.wm-punktliste li a > span:nth-child(2) { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.wm-punktliste li.erledigt a { opacity: .75; }
.wm-nr { flex: none; width: 1.9rem; height: 1.9rem; border-radius: 50%; background: var(--flaeche); display: inline-flex; align-items: center; justify-content: center; font-weight: 600; }
.wm-zustand { flex: none; }
.wm-ergebnis-wahl { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; margin: .2rem 0 .7rem; }
.wm-ergebnis-wahl label { display: flex; align-items: center; justify-content: center; gap: .4rem; padding: .8rem; border: 2px solid var(--linie); border-radius: 10px; font-size: 1.1rem; font-weight: 600; cursor: pointer; }
.wm-ergebnis-wahl .wm-ok:has(input:checked) { border-color: var(--ok); background: var(--ok-hell); color: var(--ok); }
.wm-ergebnis-wahl .wm-nicht-ok:has(input:checked) { border-color: var(--warn); background: var(--warn-hell); color: var(--warn); }
.geraet-handy .wm-hausmeister .wm-knopfreihe > form, .geraet-handy .wm-hausmeister .wm-knopfreihe .knopf.gross { flex: 1 1 100%; width: 100%; }
.geraet-handy .wm-abschnitt { padding: .4rem .5rem .2rem; } .geraet-handy .wm-wahl-spalten { grid-template-columns: 1fr; }
.geraet-handy .wm-gruppe { padding: .2rem .5rem; }
/* Wartungskalender: Monatsraster (PC/Tablet), Tagesliste (Handy), Termin im Fenster */
.wm-kal-kopf { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin: .4rem 0 .6rem; }
.wm-kal-kopf h2 { margin: 0 .3rem; min-width: 10rem; text-align: center; }
.wm-kal-legende { margin-left: auto; display: flex; gap: .3rem; flex-wrap: wrap; } .wm-kal-legende .wm-kal-t { display: inline-block; }
.wm-kalender { display: grid; grid-template-columns: 3.2rem repeat(7, minmax(0, 1fr)); border: 1px solid var(--linie); border-radius: 8px; overflow: hidden; background: var(--weiss); }
.wm-kal-wt { padding: .35rem .5rem; font-size: .82rem; font-weight: 600; color: var(--grau); background: var(--flaeche); border-left: 1px solid var(--linie); }
.wm-kal-kw { padding: .35rem .3rem; background: var(--flaeche); border-top: 1px solid var(--linie); font-size: .72rem; }
.wm-kalender > .wm-kal-kw:first-child { border-top: 0; }
.wm-kal-tag { min-height: 6.5rem; max-height: 12rem; overflow-y: auto; padding: .25rem .3rem .35rem; border-top: 1px solid var(--linie); border-left: 1px solid var(--linie); display: flex; flex-direction: column; gap: .18rem; }
.wm-kal-tag.frei { background: #fafbfc; } .wm-kal-tag.aus { background: var(--flaeche); } .wm-kal-tag.aus .wm-kal-nr { color: var(--grau); opacity: .6; }
.wm-kal-tag.heute { box-shadow: inset 0 0 0 2px var(--akzent); } .wm-kal-tag.heute .wm-kal-nr { color: var(--akzent); font-weight: 700; }
.wm-kal-nr { font-size: .85rem; font-weight: 600; }
.wm-kal-t { display: block; font-size: .76rem; line-height: 1.25; padding: .12rem .3rem; border-radius: 4px; background: #eef2f7; color: var(--tinte); text-decoration: none;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid var(--akzent); }
.wm-kal-t:hover { filter: brightness(.95); } .wm-kal-t.wm-t-abgesagt { opacity: .6; }
.wm-kal-t.wm-t-abgeschlossen { border-left-color: var(--ok); } .wm-kal-t.wm-t-vor_ort, .wm-kal-t.wm-t-fertig { border-left-color: #e0a000; }
.wm-kal-t.ueber { background: var(--warn-hell); color: var(--warn); border-left-color: var(--warn); }
.wm-kal-zeit { font-variant-numeric: tabular-nums; color: var(--grau); }
.wm-kal-agenda { display: none; }
.wm-kal-zeile { display: flex; gap: .6rem; align-items: center; padding: .55rem 0; border-top: 1px solid var(--linie); color: var(--tinte); text-decoration: none; min-height: 44px; }
.wm-kal-zeile > span:nth-child(2) { flex: 1; min-width: 0; } .wm-kal-zeile .wm-kal-zeit { width: 2.8rem; flex: none; }
.geraet-handy .wm-kalender { display: none; } .geraet-handy .wm-kal-agenda { display: block; } .geraet-handy .wm-kal-legende { display: none; }
.geraet-tablet .wm-kalender { grid-template-columns: 2.4rem repeat(7, minmax(0, 1fr)); } .geraet-tablet .wm-kal-t { font-size: .72rem; }
dialog.wm-fenster { width: min(640px, calc(100vw - 2rem)); max-height: calc(100vh - 3rem); padding: 1rem 1.2rem; border: 0; border-radius: 12px; box-shadow: 0 12px 40px rgba(0,0,0,.25); }
dialog.wm-fenster::backdrop { background: rgba(20, 30, 45, .35); }
.wm-fenster-zu { position: sticky; top: 0; float: right; margin: -.3rem -.4rem 0 0; }
.wm-fenster-inhalt h3 { font-size: .95rem; margin: .8rem 0 .25rem; } .wm-fenster-inhalt ul { margin: .2rem 0; padding-left: 1.1rem; }
.wm-fenster-punkte li { margin: .1rem 0; }
.geraet-handy dialog.wm-fenster { width: 100vw; max-width: 100vw; max-height: 92vh; margin: auto 0 0; border-radius: 14px 14px 0 0; padding: .9rem; }

/* Verwaltung im Betrieb: Kacheln zu den vorhandenen Funktionen */
.bt-verwaltung .kachel { display: flex; flex-direction: column; gap: .4rem; }
.bt-verwaltung .kachel .titel { color: var(--tinte); }
.bt-verwaltung .kachel a.titel:hover { color: var(--akzent); }
.bt-verwaltung .kachel p { margin: 0; color: var(--grau, #666); font-size: .92rem; line-height: 1.45; }
.bt-verwaltung .kachel.kommt, .bt-verwaltung .kachel.stamm { border-style: dashed; background: transparent; }
.bt-verwaltung .kachel.kommt .titel { color: var(--grau, #666); }
.bt-v-links { display: flex; flex-wrap: wrap; gap: .3rem .9rem; margin-top: auto; padding-top: .2rem; font-size: .9rem; }

/* Mängelmanagement: Kacheln statt der Reiter Tickets, Berichte, Beteiligte, Auswertung */
.mm-kacheln .kachel { display: flex; flex-direction: column; gap: .35rem; }
.mm-kacheln .kachel p { margin: 0; color: var(--grau); font-size: .92rem; line-height: 1.4; }
.mm-zahl { margin-top: auto; padding-top: .3rem; font-size: .9rem; color: var(--grau); }
.mm-zahl b { color: var(--akzent); font-size: 1.15rem; }
.mm-pfad { margin: 0 0 .6rem; font-size: .9rem; color: var(--grau); }
.mm-kacheln .kachel.stamm { border-style: dashed; background: transparent; }

/* 3D-Viewer: Konstruktionsmodus (2D wie im CAD) - Werkzeugleiste oben mittig, Masse als SVG ueber dem Canvas (je Ansichtsfenster
   ein svg), Schnittansicht unten mit eigener Leiste, Massstab unten links in der Hauptansicht */
.bim.konstruktion .bim-flaeche { background: #fff; }
.bim.konstruktion .bim-flaeche canvas { cursor: grab; }
.bim.konstruktion .bim-flaeche canvas:active { cursor: grabbing; }
.bim-kon { position: absolute; top: .6rem; left: 50%; transform: translateX(-50%); z-index: 5; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .3rem .7rem;
  max-width: calc(100% - 1.2rem); width: max-content; background: rgba(255,255,255,.96); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); padding: .35rem .55rem; font-size: .85rem; }
.bim-kon-gruppe { display: inline-flex; align-items: center; gap: .25rem; }
.bim-kon-gruppe[hidden] { display: none; }
.bim-kon-gruppe select { font-size: .82rem; padding: .2rem .3rem; max-width: 11rem; }
.bim-kon-titel { color: var(--grau); font-size: .8rem; margin-right: .1rem; }
.bim-kon .knopf.aktiv, #bim-kon-knopf.aktiv { background: var(--akzent); border-color: var(--akzent); color: #fff; }
.bim-kon-hinweis { flex: 1 1 100%; text-align: center; color: var(--grau); font-size: .78rem; line-height: 1.3; }
.bim-kon-hinweis:empty { display: none; }
.bim-kon-einst { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .4rem .8rem; padding: .3rem 0 .1rem; border-top: 1px solid var(--linie); font-size: .8rem; }
.bim-kon-einst[hidden] { display: none; }
.bim-kon-einst input { width: 4.5rem; }
.bim-kon-schnittleiste { position: absolute; left: 0; right: 0; z-index: 3; display: flex; align-items: center; gap: .35rem; padding: .25rem .5rem; background: rgba(248,250,252,.97);
  border-top: 2px solid var(--akzent); border-bottom: 1px solid var(--linie); font-size: .82rem; cursor: row-resize; touch-action: none; }
.bim-kon-schnittleiste[hidden] { display: none; }
.bim-kon-schnittleiste select { font-weight: 600; font-size: .82rem; width: auto; max-width: 12rem; flex: 0 0 auto; }
.bim-kon-schnittleiste button, .bim-kon-schnittleiste select { cursor: pointer; }
.bim-kon-griff { color: var(--grau); font-weight: 700; padding: 0 .2rem; }
.bim-kon-schnitt-tipp { margin-left: auto; }
.bim-masse { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; overflow: visible; }
.bim-masse line { stroke: #0b57d0; stroke-width: 1; vector-effect: non-scaling-stroke; }
.bim-masse line.hl { stroke-width: .8; opacity: .75; }
.bim-masse line.st { stroke-width: 1.8; }
.bim-masse line.strich { stroke-dasharray: 5 4; }
.bim-masse text { font-family: system-ui, -apple-system, sans-serif; font-weight: 600; fill: #0a3a8c; paint-order: stroke; stroke: #fff; stroke-width: 3px; stroke-linejoin: round; }
.bim-masse .gewaehlt line { stroke: #e8590c; }
.bim-masse .gewaehlt line.ml { stroke-width: 2; }
.bim-masse .gewaehlt text { fill: #b54708; }
.bim-masse .loeschgriff { pointer-events: auto; cursor: pointer; }
.bim-masse .loeschgriff circle { fill: #e03131; stroke: #fff; stroke-width: 2; }
.bim-masse .loeschgriff path { stroke: #fff; stroke-width: 2.2; stroke-linecap: round; fill: none; }
.bim-masse .vorschau line { stroke: #e8590c; }
.bim-masse .vorschau text { fill: #b54708; }
.bim-masse .fang { fill: none; stroke: #e8590c; stroke-width: 2; }
.bim-masse .fang.frei line { stroke: #e8590c; stroke-width: 1.5; }
.bim-masse .schnittlinie line { stroke: #c92a2a; stroke-width: 1.4; }
.bim-masse .schnittlinie line.sl { stroke-dasharray: 14 4 2 4; }
.bim-masse .schnittlinie line.sle { stroke-width: 2.6; stroke-linecap: round; }
.bim-masse .schnittlinie text { fill: #c92a2a; font-weight: 700; }
.bim-masse .schnittlinie.aktiv line { stroke: #e03131; }
.bim-masse .hoehen line { stroke: #333; stroke-width: 1; }
.bim-masse .hoehen text, .bim-masse .gr text { fill: #333; font-weight: 500; }
.bim-masse .gr line { stroke: #e8590c; stroke-dasharray: 6 4; stroke-width: 1; }
.bim-masse .fokus { fill: none; stroke: var(--akzent); stroke-width: 2; opacity: .55; }
.bim-masse .bezug { fill: #fff; stroke: #e8590c; stroke-width: 1.6; }
.bim-masse .bezug.gewaehlt, .bim-masse .punktwahl { fill: rgba(232,89,12,.25); stroke: #e8590c; stroke-width: 2; }
.bim-kon-status { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 6; display: flex; align-items: center; gap: .7rem; min-width: min(360px, 90%); max-width: 90%;
  background: #fff; border: 1px solid var(--linie); border-radius: 12px; box-shadow: 0 10px 34px rgba(0,0,0,.18); padding: .8rem 1rem; font-size: .9rem; }
.bim-kon-status[hidden] { display: none; }
.bim-kon-status .klein { color: var(--grau); overflow-wrap: anywhere; margin-top: .15rem; }
.bim-kon-status-sym { flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%; border: 3px solid #d0d7e2; border-top-color: var(--akzent); animation: bim-kon-dreh .8s linear infinite; }
.bim-kon-status.fertig .bim-kon-status-sym { animation: none; border: 0; background: #2f9e44; }
.bim-kon-status.fehler .bim-kon-status-sym { animation: none; border: 0; background: #e03131; }
.bim-kon-status.laeuft [data-st-zu] { display: none; }
@keyframes bim-kon-dreh { to { transform: rotate(360deg); } }
.bim-kon-rahmen { position: absolute; z-index: 2; border: 1.5px dashed var(--akzent); background: rgba(30,111,217,.08); pointer-events: none; }
.bim-massstab { position: absolute; left: .7rem; bottom: .7rem; z-index: 1; display: flex; align-items: center; gap: .4rem; pointer-events: none; font-size: .75rem; color: #222; }
.bim-massstab span { display: block; height: 6px; border: 1.5px solid #222; border-top: 0; }
.bim-massstab b { font-weight: 600; background: rgba(255,255,255,.85); padding: 0 .2rem; border-radius: 3px; }
/* im Konstruktionsmodus steuern Geschosswahl, Schnittlinie und ⚙ den Schnitt - die Schnitt-Tafel ist ausgeblendet */
.bim.konstruktion .bim-schnitt, .bim.konstruktion #bim-schnitt-knopf { display: none !important; }
.bim-masse .wolke polyline { fill: none; stroke: var(--wf); stroke-width: 2; stroke-linejoin: round; }
.bim-masse .wolke line { stroke: var(--wf); stroke-width: 1.2; }
.bim-masse .wolke text { fill: var(--wf); font-weight: 600; }
.bim-masse .wolke.gewaehlt polyline { stroke-width: 3; }
.bim-masse .textrahmen { fill: none; stroke: #e8590c; stroke-width: 1; stroke-dasharray: 4 3; }
.bim-kon-dialog { position: absolute; inset: 0; z-index: 7; display: flex; align-items: center; justify-content: center; background: rgba(15,23,42,.18); padding: 1rem; }
.bim-kon-dialog[hidden] { display: none; }
.bim-kon-dialog-box { width: min(440px, 100%); background: #fff; border-radius: 12px; box-shadow: 0 12px 40px rgba(0,0,0,.25); padding: 1rem 1.1rem; display: flex; flex-direction: column; gap: .55rem; }
.bim-kon-dialog-box p { margin: 0; }
.bim-kon-dialog-box textarea { width: 100%; font: inherit; resize: vertical; }
.bim-kon-dialog-farben { display: flex; gap: .4rem; flex-wrap: wrap; }
.bim-kon-dialog-farben .farbpunkt { width: 1.7rem; height: 1.7rem; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 0 0 1px var(--linie); cursor: pointer; }
.bim-kon-dialog-farben .farbpunkt.aktiv { box-shadow: 0 0 0 2px #111; }
.bim-kon-dialog-box .aktionen { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: flex-end; margin-top: .2rem; }
.geraet-handy .bim-kon { top: .4rem; gap: .25rem .4rem; padding: .3rem .4rem; }
.kon-mehr-knopf { display: none; }
.geraet-handy .bim-kon .kon-mehr-knopf { display: inline-flex; }
.geraet-handy .bim-kon:not(.offen) .kon-mehr { display: none; }
.geraet-handy .bim-kon:not(.offen) .kon-mehr-knopf { background: #fff; }
.geraet-handy .bim-kon:not(.werkzeug):not(.offen) .bim-kon-hinweis { display: none; }
.geraet-handy .bim-kon .knopf.klein { min-width: 2.1rem; min-height: 2.2rem; padding-left: .3rem; padding-right: .3rem; }
.geraet-handy .bim-kon-gruppe select { max-width: 5.5rem; }
.geraet-handy .bim-kon .wort, .geraet-handy .bim-kon-titel, .geraet-handy .bim-optionen .wort, .geraet-handy .bim-kon-schnitt-tipp { display: none; }
.geraet-handy .bim-kon-hinweis { font-size: .72rem; }
.geraet-handy .bim-kon-schnittleiste .knopf.klein { min-width: 2.3rem; min-height: 2.1rem; }
/* Konstruktion: Werkzeugleiste mit Griff - oben/unten waagerecht, links/rechts senkrecht (zweispaltig), frei an abgelegter Stelle */
.bim-kon-griff { cursor: grab; color: var(--grau); font-size: 1.05rem; line-height: 1; padding: .2rem .15rem; touch-action: none; user-select: none; -webkit-user-select: none; }
.bim-kon.zieht { opacity: .85; box-shadow: 0 8px 26px rgba(0,0,0,.2); }
.bim-kon.zieht .bim-kon-griff { cursor: grabbing; }
.bim-kon.dock-unten { top: auto; bottom: .6rem; }
.bim-kon.dock-frei { transform: none; }
.bim-kon.dock-links, .bim-kon.dock-rechts { top: .6rem; transform: none; display: grid; grid-template-columns: repeat(2, 2.4rem); align-items: center; justify-items: center; gap: .25rem; width: auto; max-width: none; padding: .35rem .3rem; }
.bim-kon.dock-links { left: .6rem; }
.bim-kon.dock-rechts { left: auto; right: .6rem; }
.bim-kon.dock-links .bim-kon-gruppe, .bim-kon.dock-rechts .bim-kon-gruppe { display: contents; }
.bim-kon.dock-links .bim-kon-gruppe[hidden], .bim-kon.dock-rechts .bim-kon-gruppe[hidden] { display: none; }
.bim-kon.dock-links .wort, .bim-kon.dock-rechts .wort, .bim-kon.dock-links .bim-kon-titel, .bim-kon.dock-rechts .bim-kon-titel { display: none; }
.bim-kon.dock-links .bim-kon-griff, .bim-kon.dock-rechts .bim-kon-griff, .bim-kon.dock-links select, .bim-kon.dock-rechts select,
.bim-kon.dock-links .bim-kon-hoehe, .bim-kon.dock-rechts .bim-kon-hoehe { grid-column: span 2; text-align: center; }
.bim-kon.dock-links select, .bim-kon.dock-rechts select { max-width: 5rem; font-size: .72rem; }
.bim-kon.dock-links .knopf.klein, .bim-kon.dock-rechts .knopf.klein { width: 2.3rem; padding-left: 0; padding-right: 0; justify-content: center; }
.bim-kon.dock-links .bim-kon-hoehe, .bim-kon.dock-rechts .bim-kon-hoehe { display: flex; flex-direction: column; align-items: center; }
.bim-kon.dock-links .bim-kon-hoehe input, .bim-kon.dock-rechts .bim-kon-hoehe input { width: 5rem; }
.bim-kon.dock-links .bim-kon-hinweis, .bim-kon.dock-rechts .bim-kon-hinweis, .bim-kon.dock-links .bim-kon-einst, .bim-kon.dock-rechts .bim-kon-einst {
  position: absolute; top: 0; width: 17rem; background: rgba(255,255,255,.97); border: 1px solid var(--linie); border-radius: 8px; padding: .35rem .5rem; box-shadow: 0 4px 16px rgba(0,0,0,.08); text-align: left; }
.bim-kon.dock-links .bim-kon-hinweis, .bim-kon.dock-links .bim-kon-einst { left: calc(100% + .4rem); }
.bim-kon.dock-rechts .bim-kon-hinweis, .bim-kon.dock-rechts .bim-kon-einst { right: calc(100% + .4rem); }
.bim-kon.dock-links .bim-kon-einst, .bim-kon.dock-rechts .bim-kon-einst { top: 3rem; flex-direction: column; align-items: flex-start; }
.bim-kon-hoehe { display: inline-flex; align-items: center; gap: .25rem; margin-left: .2rem; }
.bim-kon-hoehe input { width: 7rem; }
.bim-kon-hoehe output { font-size: .75rem; color: var(--grau); min-width: 4.5rem; white-space: nowrap; }
.bim-kon-farben { display: flex; flex-wrap: wrap; gap: .3rem .8rem; align-items: center; }
.bim-kon-farben input[type=color] { width: 1.8rem; height: 1.4rem; padding: 0; border: 1px solid var(--linie); vertical-align: middle; }
#bim-kon-raumstempel { font-size: .8rem; max-width: 9.5rem; }
/* Konstruktion im Vollbild: nur Zeichnung und Werkzeugleiste (Geschosse, Suche usw. stehen in der Leiste bzw. nach dem Vollbild) */
.bim.konstruktion.vollbild .bim-leiste, .bim.konstruktion.vollbild .bim-mb-hinweis { display: none !important; }
.bim-masse .raumstempel text { fill: #222; font-weight: 500; }
.bim-masse .raumstempel text.nr { font-weight: 700; }
/* Konstruktion: Prüfen - Tafel und Markierungen */
.bim-kon-pruefen { flex-direction: column; align-items: stretch; text-align: left; gap: .35rem; max-height: min(60vh, 32rem); overflow: auto; }
.bim-kon-pruefen fieldset { border: 1px solid var(--linie); border-radius: 6px; padding: .2rem .5rem .35rem; margin: 0; display: flex; flex-direction: column; gap: .15rem; }
.bim-kon-pruefen legend { font-size: .75rem; color: var(--grau); padding: 0 .2rem; }
.bim-kon-pruefen input[type=number] { width: 4.2rem; }
.bim-pr-ergebnis ol { margin: .2rem 0 0; padding-left: 1.6rem; font-size: .78rem; }
.bim-pr-ergebnis li { cursor: pointer; margin: .1rem 0; }
.bim-pr-ergebnis li::marker { color: var(--pf); font-weight: 700; }
.bim-pr-ergebnis li:hover { text-decoration: underline; }
.bim-pr-ergebnis p { margin: .2rem 0; font-size: .8rem; }
.bim-masse .pruefung line { stroke-width: 1.6; }
.bim-masse .pruefung circle { fill: rgba(255,255,255,.65); stroke-width: 2.2; }
.bim-masse .pruefung text { font-weight: 700; }
.bim-kon-pruefen label { display: flex; align-items: center; gap: .35rem; justify-content: flex-start; width: auto; font-size: .8rem; }
.bim-kon-pruefen fieldset { align-items: flex-start; }
.bim-kon-pruefen .aktionen { display: flex; gap: .4rem; }
.bim-kon:not(.dock-links):not(.dock-rechts) .bim-kon-pruefen { position: absolute; top: calc(100% + .35rem); left: 50%; transform: translateX(-50%); width: min(34rem, 92vw);
  background: rgba(255,255,255,.98); border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 6px 22px rgba(0,0,0,.12); padding: .5rem .7rem; border-top: 1px solid var(--linie); }
.bim-kon.dock-unten .bim-kon-pruefen { top: auto !important; bottom: calc(100% + .35rem); }
.bim-kon.dock-links .bim-kon-pruefen, .bim-kon.dock-rechts .bim-kon-pruefen { width: 22rem; }
.bim-masse .gr line { stroke-width: 1.6; }
.bim-masse .gr.zieht line { stroke-width: 2.4; stroke-dasharray: none; }
.bim-pr-werte { display: flex; flex-wrap: wrap; gap: .1rem .8rem; padding-left: 1.4rem; }
.bim-pr-werte select { font-size: .78rem; }
/* Konstruktion: Bediengröße (--kon-s, ⚙ bzw. Griff ◢) - Leiste, Tafeln, Schnittleiste, Dialoge in em, kompakte Vorgabe */
.bim { --kon-s: .9; }
.bim-kon { font-size: calc(14px * var(--kon-s)); padding: .3em .5em .45em; gap: .25em .55em; border-radius: .7em; }
.bim-kon .knopf.klein { font-size: 1em; padding: .2em .55em; min-height: 2em; line-height: 1.3; }
.bim-kon select, .bim-kon input[type=number], .bim-kon output, #bim-kon-raumstempel { font-size: .92em; }
.bim-kon-gruppe select { max-width: 11em; padding: .15em .3em; }
.bim-kon-hinweis { font-size: .88em; }
.bim-kon-titel { font-size: .9em; }
.bim-kon-hoehe input { width: 7em; }
.bim-kon-hoehe output { font-size: .85em; min-width: 5em; }
.bim-kon input[type=checkbox] { width: auto; height: auto; margin: 0; flex: 0 0 auto; }
.bim-kon-einst, .bim-kon-pruefen { font-size: 1em; resize: both; overflow: auto; }
.bim-kon-einst label, .bim-kon-pruefen label, .bim-kon-pruefen .klein { font-size: .92em; }
.bim-kon .bim-kon-pruefen input[type=number], .bim-kon .bim-kon-einst input[type=number] { width: 4.6em !important; min-width: 0; padding: .1em .3em; min-height: 0; flex: 0 0 auto; }
.bim-kon .bim-kon-pruefen select { width: auto; max-width: 18em; }
.bim-kon:not(.dock-links):not(.dock-rechts) .bim-kon-pruefen { width: min(30em, 92vw); max-height: min(70vh, 42em); min-width: 18em; min-height: 8em; }
.bim-pr-ergebnis ol, .bim-pr-ergebnis p { font-size: .92em; }
.bim-kon-skalieren { position: absolute; right: 3px; bottom: 1px; cursor: nwse-resize; color: var(--grau); font-size: .85em; line-height: 1; padding: 2px; touch-action: none; user-select: none; -webkit-user-select: none; }
.bim-kon.dock-links, .bim-kon.dock-rechts { grid-template-columns: repeat(2, 2.6em); }
.bim-kon.dock-links .knopf.klein, .bim-kon.dock-rechts .knopf.klein { width: 2.4em; }
.bim-kon.dock-links .bim-kon-hinweis, .bim-kon.dock-rechts .bim-kon-hinweis, .bim-kon.dock-links .bim-kon-einst, .bim-kon.dock-rechts .bim-kon-einst { width: 17em; }
/* Konstruktion: Werkzeugleiste - Gruppen als helle Schalen, flache Knoepfe mit Liniensymbolen (Symbolsatz ki-* in bim.html), aktives Werkzeug in Akzentfarbe */
.ki-satz { position: absolute; width: 0; height: 0; overflow: hidden; }
.ki { width: 1.25em; height: 1.25em; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.bim-kon { background: rgba(255,255,255,.97); border-color: #e2e8f0; box-shadow: 0 1px 2px rgba(15,23,42,.06), 0 10px 28px rgba(15,23,42,.12); gap: .35em .4em; padding: .35em .4em; border-radius: .9em; }
.bim-kon-gruppe { gap: .12em; padding: .15em; background: #f1f4f8; border-radius: .65em; flex-wrap: wrap; justify-content: center; }
.bim-kon-gruppe .knopf.klein { display: inline-flex; align-items: center; justify-content: center; gap: .4em; white-space: nowrap; min-height: 2.2em; min-width: 2.2em; padding: 0 .45em;
  border: 0; border-radius: .5em; background: transparent; color: #334155; font-weight: 500; box-shadow: none; transition: background-color .12s, color .12s, box-shadow .12s; }
.bim-kon-gruppe .knopf.klein:has(.wort) { padding: 0 .7em 0 .55em; }
.bim-kon-gruppe .knopf.klein:hover { background: #fff; color: #0f172a; box-shadow: 0 1px 3px rgba(15,23,42,.14); }
.bim-kon-gruppe .knopf.klein:focus-visible { outline: 2px solid var(--akzent); outline-offset: 1px; }
.bim-kon-gruppe .knopf.klein.aktiv, .bim-kon-gruppe .knopf.klein[aria-pressed="true"] { background: var(--akzent); color: #fff; box-shadow: 0 1px 4px rgba(30,111,217,.35); }
.bim-kon-gruppe .knopf.klein.leise:not(.aktiv) { color: #64748b; }
.bim-kon-gruppe .knopf.klein.kon-export { font-weight: 600; letter-spacing: .02em; }
.bim-kon-gruppe select { height: 2.2em; min-height: 0; width: auto; max-width: 11em; margin: 0 .1em; border: 0; border-radius: .5em; background-color: #fff; color: #1e293b;
  box-shadow: inset 0 0 0 1px #dfe5ee; padding: 0 1.8em 0 .65em; background-position: right .55em center; font-size: .92em; cursor: pointer; }
.bim-kon-gruppe select:hover { box-shadow: inset 0 0 0 1px #b8c3d3; }
.bim-kon-titel { font-size: .7em; font-weight: 600; text-transform: uppercase; letter-spacing: .07em; color: #8a96a8; padding: 0 .4em 0 .45em; margin: 0; }
.bim-kon-hoehe { gap: .3em; margin: 0 .1em 0 .35em; }
.bim-kon-hoehe input[type=range] { accent-color: var(--akzent); width: 6.5em; }
.bim-kon-hoehe output { font-variant-numeric: tabular-nums; color: #475569; min-width: 3.6em; }
.bim-kon-griff { display: inline-flex; align-items: center; color: #9aa6b8; padding: .2em .05em; }
.bim-kon-griff:hover { color: #475569; }
.bim-kon-hinweis { color: #64748b; padding: .1em .4em 0; }
.bim-kon.dock-links .bim-kon-gruppe .knopf.klein, .bim-kon.dock-rechts .bim-kon-gruppe .knopf.klein { padding: 0; }
.bim-kon-gruppe .knopf.klein.kon-mehr-knopf { display: none; }
.geraet-handy .bim-kon-gruppe .knopf.klein.kon-mehr-knopf { display: inline-flex; }
.geraet-handy .bim-kon:not(.offen) .bim-kon-gruppe .knopf.klein.kon-mehr-knopf { background: #fff; box-shadow: 0 1px 3px rgba(15,23,42,.14); }
.bim-kon-schnittleiste { font-size: calc(13px * var(--kon-s)); padding: .2em .45em; gap: .3em; }
.bim-kon-schnittleiste .knopf.klein, .bim-kon-schnittleiste select { font-size: 1em; padding: .15em .5em; min-height: 1.9em; }
.bim-kon-dialog-box, .bim-kon-status { font-size: calc(14px * var(--kon-s)); }
.bim-kon-dialog-box .knopf { font-size: 1em; }
.bim-kon-legende { position: absolute; right: .6rem; bottom: .6rem; z-index: 4; display: flex; flex-direction: column; gap: .15em; background: rgba(255,255,255,.92);
  border: 1px solid var(--linie); border-radius: 6px; padding: .3em .55em; font-size: calc(12px * var(--kon-s)); pointer-events: none; }
.bim-kon-legende[hidden] { display: none; }
.bim-kon-legende span { display: flex; align-items: center; gap: .45em; white-space: nowrap; }
.bim-kon-legende i { display: inline-block; width: 1.6em; height: 3px; border-radius: 2px; }
/* Konstruktion: Bauteil-Info ueber der Werkzeugleiste, in der Bediengroesse */
.bim.konstruktion .bim-info { z-index: 4; font-size: calc(16px * var(--kon-s)); top: auto; bottom: .6rem; right: auto; left: .6rem; max-height: min(60%, 34em); }
.bim.konstruktion .bim-info dl { font-size: .82em; }
.bim.konstruktion .bim-info h3 { font-size: 1em; }
/* Konstruktion, Stapelfolge: Zeichnung/Masse 1-2, Schnittleiste 3, Legende und Bauteil-Info 4, Werkzeugleiste (mit ⚙/Pruefen) 5, Status 6, Dialog 7 */
/* Schnitt-Fenster (3D): an der Kopfzeile verschiebbar, an der Ecke in der Groesse aenderbar */
.bim-schnitt { resize: both; overflow: auto; min-width: 280px; min-height: 90px; max-width: calc(100% - .6rem); }
.bim-schnitt .bim-schnitt-arten { cursor: move; touch-action: none; }
.bim-schnitt .bim-schnitt-arten .knopf { cursor: pointer; }
.bim-schnitt #bim-schnitt-griff { font-size: 1.15em; letter-spacing: 0; padding: 0 .3rem 0 0; }
/* Konstruktion: Hinweis verschwindet nach ein paar Sekunden (neue Meldung zeigt ihn wieder) */
.bim-kon .bim-kon-hinweis.weg { display: none; }
/* Pruefen-Tafel: Kopf mit Start/Entfernen/Schliessen oben fest, Ergebnisse direkt darunter, deckend */
.bim-kon .bim-kon-pruefen { background: #fff !important; padding-top: 0; justify-content: flex-start !important; flex-wrap: nowrap !important; }   /* zentriert rutschte der Kopf nach oben weg, mit Umbruch die Liste in eine unsichtbare zweite Spalte */
.bim-pr-kopf { position: sticky; top: 0; z-index: 1; display: flex; flex-wrap: wrap; align-items: center; gap: .35em; background: #fff; padding: .4em 0 .35em; border-bottom: 1px solid var(--linie); }
.bim-pr-kopf b { margin-right: auto; }
.bim-pr-kopf .bim-pr-zu { order: 0; }
.bim-kon.dock-links .bim-pr-kopf .knopf.klein, .bim-kon.dock-rechts .bim-pr-kopf .knopf.klein { width: auto; padding: .2em .55em; }
.bim-pr-kopf { cursor: move; touch-action: none; }
.bim-pr-kopf .knopf { cursor: pointer; }
/* Konstruktion: mehrere Schnitte unten im Raster - Rahmen und Name je Fenster */
.bim-masse .schnittrahmen { fill: none; stroke: #c3c9d2; stroke-width: 1; }
.bim-masse .schnittname { font-size: calc(12px * var(--kon-s, .9) / .9); font-weight: 600; fill: #2b3445; paint-order: stroke; stroke: #fff; stroke-width: 3px; }
.bim-masse .pruefung line.prb { stroke-width: 1.3; opacity: .9; }   /* Kontur beanstandeter Bauteile */
/* Konstruktion: Schnitttiefe - gestrichelte Begrenzung im Grundriss, Feld in der Schnittleiste */
.bim-masse .schnittlinie .st { stroke: #cc1a1a; stroke-width: 1.1; stroke-dasharray: 6 4; pointer-events: none; }
.bim-masse .schnittlinie .stt { fill: #cc1a1a; font-weight: 600; }
.bim-kon-tiefe input { width: 4.2em; font-size: .95em; padding: .1em .3em; }

/* Ticket erfassen/bearbeiten, Schritt 3 Verorten: eine Planansicht fuer Ort und Fotos (static/quick.js) */
.verort-foto.verort-ort { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; color: #b4232c; font-weight: 600; }
.verort-foto.verort-ort .ort-sym { font-size: 1.3rem; line-height: 1; }
.verort-foto.verort-ort .ort-text { font-size: .85rem; }
.verort-planzeile { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin: .2rem 0; }
.planknopf { max-width: 100%; text-align: left; white-space: normal; }
.planknopf small { display: block; font-size: .72rem; overflow-wrap: anywhere; }
.planliste { display: flex; flex-wrap: wrap; gap: .35rem; margin: .3rem 0 .5rem; max-height: 16rem; overflow-y: auto; }
.planliste .chip { font: inherit; display: flex; flex-direction: column; align-items: flex-start; text-align: left; padding: .35rem .7rem; border-radius: 10px; border: 1px solid var(--linie); background: var(--weiss); cursor: pointer; max-width: 100%; }
.planliste .chip b { font-size: .88rem; font-weight: 600; }
.planliste .chip small { font-size: .72rem; color: var(--grau); overflow-wrap: anywhere; }
.planliste .chip.aktiv { border-color: var(--akzent); box-shadow: 0 0 0 2px var(--akzent); }
.verort-unten { display: flex; justify-content: space-between; align-items: center; gap: .4rem; flex-wrap: wrap; }
.verort-unten .aktionen { display: flex; gap: .3rem; flex-wrap: wrap; }
.skizzen-gespeichert { display: flex; flex-direction: column; gap: .3rem; margin-top: .4rem; }
.skizze-gespeichert { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.skizze-gespeichert input { flex: 1 1 14rem; min-width: 0; }
.skizze-gespeichert.ersetzt input { opacity: .5; }
.geraet-handy #quickkarte { height: 300px; }

/* Ticket erfassen/bearbeiten: jeder Schritt eine Karte - Kopf mit Nummer, Titel und Stand, antippen klappt ein/aus (quick.js);
   eine Fotoliste mit durchgehenden Nummern; Knopfleiste unten immer gleich: Hauptaktion(en) links, „‹ Zurück“ rechts */
.quick-formular .quick-schritt, .quick-formular .quick-schritt:first-of-type { border: 1px solid var(--linie, #e3e6ea); border-radius: 10px; padding: .6rem .8rem .8rem; margin: .7rem 0 0; background: var(--weiss, #fff); }
.quick-formular .quick-schritt:first-of-type { margin-top: 0; }
.quick-schritt > .schritt-kopf { cursor: pointer; -webkit-user-select: none; user-select: none; min-width: 0; }
.schritt-kopf .schritt-titel { flex: 0 0 auto; }
.schritt-kopf .schritt-stand { flex: 1 1 auto; min-width: 0; font-weight: 400; font-size: .85rem; color: var(--grau); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.schritt-kopf .schritt-stand:not(:empty)::before { content: "· "; }
.schritt-kopf .schritt-pfeil { flex: 0 0 auto; margin-left: auto; color: var(--grau); transition: transform .15s; }
.quick-schritt.zu > .schritt-kopf { margin-bottom: 0; }
.quick-schritt.zu > .schritt-kopf .schritt-pfeil { transform: rotate(-90deg); }
.quick-schritt.zu > :not(.schritt-kopf) { display: none !important; }
.schritt-kopf:focus-visible { outline: 2px solid var(--akzent); outline-offset: 3px; border-radius: 4px; }
.fotoliste .fotonr { position: absolute; left: 4px; top: 4px; background: #1e5aa8; color: #fff; border-radius: 50%; width: 20px; height: 20px; font: 600 11px/20px system-ui, sans-serif; text-align: center; pointer-events: none; }
.quick-fotofeld.klein { min-height: 70px; flex-direction: row; gap: .6rem; margin-top: .5rem; }
.quick-fotofeld.klein .gross { font-size: 1.6rem; }
#fotos-weg-hinweis { margin: .3rem 0 0; }
.quick-aktionen { box-shadow: 0 -4px 10px rgba(0,0,0,.06); margin-left: -.2rem; margin-right: -.2rem; padding-left: .2rem; padding-right: .2rem; }
.quick-aktionen .gross { flex: 1 1 150px; justify-content: center; text-align: center; }
.quick-aktionen .gross.zurueck, .quick-aktionen button#abbrechen.zurueck { flex: 0 1 auto; margin-left: auto; }
.quick-aktionen #sendestand { flex: 1 1 100%; order: 9; }
.quick-aktionen #sendestand:empty { display: none; }
.geraet-handy .quick-formular .quick-schritt { padding: .5rem .6rem .7rem; }
.geraet-handy .quick-aktionen .gross { flex-basis: 120px; padding-left: .5rem; padding-right: .5rem; }
@media (max-width: 640px) {
  .quick-formular.karte { padding: 0; border: 0; background: transparent; box-shadow: none; }
  .quick-formular .quick-schritt { padding: .5rem .6rem .7rem; }
  .quick-aktionen .gross { flex-basis: 100px; padding-left: .4rem; padding-right: .4rem; font-size: 1rem; }
}
.verort-nr { font: inherit; font-size: .9rem; padding: .4rem .75rem; border-radius: 999px; border: 2px solid var(--linie, #d7dce3); background: #fff; cursor: pointer; touch-action: manipulation; }
.verort-nr.verort-ort { color: #b4232c; font-weight: 600; }
.verort-nr.gesetzt { border-color: #1f7a3a; }
.verort-nr.gewaehlt { border-color: #1e5aa8; box-shadow: 0 0 0 3px rgba(30, 90, 168, .35); }
.fotoliste .fotopin-ok { position: absolute; left: 26px; top: 3px; font-size: .85rem; pointer-events: none; }
#planeditor-zeile { margin: .3rem 0; }
.planliste a.chip { text-decoration: none; color: inherit; }
#planliste-neu { margin-top: .4rem; }
.pille.fach-dbv { background: #fff0e6; color: #b3460a; }
.bim-masse .durchbruch line { stroke: #e8590c; stroke-width: 1.8; }
.bim-masse .durchbruch text { fill: #e8590c; font-weight: 600; }
.bim-pr-ergebnis .db-liste { color: #b3460a; }
.bim-pr-anzeige { display: flex; flex-wrap: wrap; align-items: center; gap: .2rem .7rem; margin: .2rem 0 .3rem; }

/* Elektroplanung im Konstruktionsmodus (bim-elektro.js): Symbole, Vorschau, Tafel rechts (Handy: unten) */
.bim-masse g.el polyline, .bim-masse g.el line { fill: none; stroke: var(--ef, #d9480f); stroke-width: 1.6; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.bim-masse g.el text { fill: var(--ef, #d9480f); font-weight: 700; }
.bim-masse g.el text.sk { fill: #1971c2; font-weight: 600; }
.bim-masse g.el.vorschau polyline, .bim-masse g.el.vorschau line { stroke-dasharray: 4 3; opacity: .85; }
.bim-masse g.el.vorschau rect { fill: #fff; stroke: #d9480f; stroke-width: 1.4; }
.bim-masse circle.el-wahl { fill: rgba(224, 49, 49, .08); stroke: #e03131; stroke-width: 1.2; stroke-dasharray: 3 2; }
.bim-el-tafel { position: absolute; right: .5rem; top: 3.6rem; z-index: 6; width: min(29rem, calc(100% - 1rem)); max-height: calc(100% - 4.2rem); overflow: auto;
  background: #fff; border: 1px solid var(--linie); border-radius: 10px; box-shadow: 0 6px 24px rgba(0, 0, 0, .18); padding: .5rem .7rem .7rem; font-size: .85rem; }
.bim-el-tafel[hidden] { display: none; }
.bim-el-tafel .el-kopf { display: flex; align-items: center; gap: .4rem; position: sticky; top: -.5rem; background: #fff; padding: .3rem 0 .4rem; margin-top: -.3rem; border-bottom: 1px solid var(--linie); z-index: 1; }
.bim-el-tafel .el-kopf b { white-space: nowrap; }
.bim-el-tafel .el-reiter { display: flex; gap: .2rem; flex: 1; flex-wrap: wrap; }
.bim-el-tafel .el-reiter .aktiv { background: #fff4e6; border-color: #f08c00; color: #a34a00; }
.bim-el-tafel .el-gruppe { margin: .5rem 0; }
.bim-el-tafel .el-gr-titel { display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: var(--grau, #667); margin-bottom: .2rem; }
.bim-el-tafel .el-typ { display: inline-flex; align-items: center; gap: .3rem; margin: 0 .25rem .25rem 0; padding: .2rem .45rem .2rem .2rem; border: 1px solid var(--linie); border-radius: 8px; background: #fff; font: inherit; cursor: pointer; min-height: 2.4rem; }
.bim-el-tafel .el-typ:hover { border-color: #f08c00; }
.bim-el-tafel .el-typ.aktiv { border-color: #d9480f; background: #fff4e6; color: #222; box-shadow: inset 0 0 0 1px #d9480f; }
.bim-el-tafel .el-typ[disabled] { opacity: .6; cursor: default; }
.el-mini { width: 1.9rem; height: 1.75rem; flex: none; }
.el-mini polyline, .el-mini line { fill: none; stroke: #d9480f; stroke-width: 1.4; stroke-linejoin: round; stroke-linecap: round; }
.el-mini line.wand { stroke: #343a40; stroke-width: 2.2; }
.bim-el-tafel .el-form { display: flex; flex-direction: column; gap: .45rem; margin-top: .5rem; }
.bim-el-tafel .el-form fieldset { border: 0; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .45rem; min-width: 0; }
.bim-el-tafel .el-form p { margin: 0; }
.bim-el-tafel .el-form label { display: flex; flex-direction: column; gap: .1rem; font-size: .78rem; color: #444; flex: 1; min-width: 0; }
.bim-el-tafel .el-form label.inline { flex-direction: row; align-items: center; gap: .35rem; }
.bim-el-tafel .el-form input:not([type=checkbox]), .bim-el-tafel .el-form select, .bim-el-tafel .el-form textarea { font-size: .9rem; padding: .3rem .4rem; width: 100%; box-sizing: border-box; }
.bim-el-tafel .el-zeile { display: flex; gap: .5rem; }
.bim-el-tafel .el-attr { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem .5rem; margin-top: .35rem; }
.bim-el-tafel details summary { cursor: pointer; font-size: .8rem; }
.bim-el-tafel .el-knoepfe { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .3rem; }
.bim-el-tafel .el-vt { margin: .6rem 0; }
.bim-el-tafel .el-vt-kopf { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-bottom: .25rem; }
.bim-el-tafel .el-vt-kopf input { font-weight: 700; width: 6rem; }
.bim-el-tafel .el-sk-liste { border: 0; padding: 0; margin: 0; min-width: 0; }
.bim-el-tafel table.el-sk { width: 100%; border-collapse: collapse; font-size: .78rem; }
.bim-el-tafel table.el-sk th { text-align: left; font-weight: 600; color: #667; padding: 0 .15rem; }
.bim-el-tafel table.el-sk td { padding: .1rem .15rem; border-top: 1px solid #eee; white-space: nowrap; }
.bim-el-tafel table.el-sk td input, .bim-el-tafel table.el-sk td select { font-size: .78rem; padding: .15rem .25rem; width: 100%; min-width: 2.6rem; box-sizing: border-box; }
.bim-el-tafel table.el-sk td input[data-f=name] { min-width: 8.5rem; }
.bim-el-tafel table.el-sk td input[data-f=leitung] { min-width: 5.5rem; }
.bim-el-tafel table.el-sk td.zahl { text-align: right; }
.bim-el-tafel table.el-sk tr.aktiv td { background: #e7f5ff; }
.bim-el-tafel ul.el-bib { list-style: none; padding: 0; margin: .4rem 0; }
.bim-el-tafel ul.el-bib button { display: flex; align-items: center; gap: .4rem; width: 100%; text-align: left; background: none; border: 0; border-bottom: 1px solid #eee; padding: .25rem .1rem; font: inherit; cursor: pointer; }
.bim-el-tafel ul.el-bib button:hover { background: #fff4e6; }
.bim-el-tafel ul.el-bib li.aus { opacity: .55; }
@media (max-width: 700px) {
  .bim-el-tafel { left: .3rem; right: .3rem; top: auto; bottom: .3rem; width: auto; max-height: 48%; }
  .bim-el-tafel .el-attr { grid-template-columns: 1fr; }
}
