*{box-sizing:border-box;margin:0;padding:0}
/* Farbtafel. Alle Farben stehen hier – im Rest der Datei wird nur noch auf
   diese Namen verwiesen. Der dunkle Anstrich weiter unten tauscht nur diese
   Werte aus; kein einziges Gestaltungsregelwerk muss doppelt gepflegt werden. */
:root{
  /* Signalfarbe: warnt vor Überschneidungen in der Zeiterfassung. Soll
     später im Erscheinungsbild wählbar sein (Benutzer, 22.09.2026) – dann
     nur diese eine Angabe überschreiben. */
  --signal:#ff2d55;
  /* „Heute" im Zeitraster: warmes Sand statt Blau, damit sich die Spalte von
     den (blauen) nicht zugeordneten Einträgen abhebt (Benutzer, 22.09.2026). */
  --heute:#fbf6e9; --heute-rand:#e6d9b8;
  --bg:#f4f6fa; --karte:#fff; --flaeche2:#eef1f7; --feld:#fff;
  --text:#1c2431; --leise:#66748c; --rand:#e2e7f0; --rand2:#b9c8e6;
  /* Kopfzeile und Menüleiste, bis die Farben des Büros geladen sind (markeAnwenden):
     Vorgabe Schwarz wie marke_kopf in app.py (#330, vorher Marineblau) */
  --dunkel:#000000; --dunkel2:#171717;
  --blau:#3f6fe0; --gruen:#1f9d55; --gelb:#c98a00; --rot:#d64545; --orange:#d9700a;
  /* weiche Einfärbungen für Marken, Hinweise und Vergleiche */
  --blau-weich:#e8edf9; --blau-weich2:#eef3ff; --blau-text:#33508f; --blau-text2:#2b4c99;
  --gelb-weich:#fff2d6; --gelb-weich2:#fff8e6; --gelb-text:#8a5f00; --gelb-rand:#f0dca8;
  --rot-weich:#ffe3e0; --rot-weich2:#fdecec; --rot-text:#a33; --rot-rand:#f6cfcc;
  --gruen-weich:#dff3e6; --gruen-weich2:#e9f7ee; --gruen-text:#166b3a; --gruen-rand:#c5e8d3;
  --grauknopf:#e6eaf2; --grauknopf-text:#33405a;
  /* Hinweisblasen (Striche der Chatleiste, „Kopiert“): Tinte auf Papier wie die
     Blätter (#328) – vorher Marineblau aus der klassischen Ansicht. Dunkel:
     warmes Dunkelgrau im Block der dunklen Blätter (.vblase steht dort mit). */
  --balken:#c5cfdf; --balken2:#8298bb; --tipp:var(--tinte); --tippschrift:var(--tinte-auf);
  --marke-zahl:rgba(0,0,0,.08);
  /* Papier: Blätter und die Fenster, die über dem Raum aufgehen (#298 Stufe 4).
     Hell genau die Werte, die vorher fest in den Regeln standen; die dunkle
     Fassung setzt body[data-blattthema="dunkel"] weiter unten – nur an .blatt
     und an diesen Fenstern, nie hier. --ton ist ein RGB-Dreier für Hauchflächen
     und feine Linien: rgba(var(--ton),.08) ist hell schwarz, dunkel weiß. */
  --ton:0,0,0;
  --papier:#fbfaf7; --blattgrund:rgba(252,251,248,.97); --papiertext:#26221d;
  --tinte:#3b352c; --tinte-auf:#fbfaf7; --tinte-hover:#26221d;
  --text2:#5b5348; --leise2:#8a8175; --warm:#a0672f; --zurueck:#a9722f;
  --sand-weich:#fffaf2; --auf-blau:#fff; --marke-zahl-an:rgba(255,255,255,.25);
  --ring-ruht:#6b6357; --blattrand:rgba(255,255,255,.5); --blattgrund-telefon:#fcfbf8;
  --schwebeknopf:rgba(252,251,248,.94); --strich:rgba(60,50,38,.28); --strich-stark:rgba(60,50,38,.6);
  --beschriftung:#5e564b; --knauf:#fff; --hinweistext:#6f665a; --ton-gegen:255,255,255;
  --meldung-ok-bg:#eef3e8; --meldung-ok-text:#3d5a2c; --meldung-fehler-bg:#fbeae7; --meldung-fehler-text:#9b2c20;
  --papierleise:#6b6357; --papierrand:#e3ddd2; --papierrand2:#d9d1c4; --papierlinie:#eee7dc;
  --fremde-blase:#ece6dc; --leiste-bg:#f3efe8; --zeile-aktiv:#e6dccb; --reiter-an:#fff; --wahl-bg:#efe2cf;
  --hinweis-bg:#f4ecdc; --hinweis-text:#6b5a3c; --hinweis-rand:#e6d8bd; --warn:#b3261e; --warn-rand:#e3b7b3;
  --fehlerrot:#c0392b; --eingelegt:rgba(255,255,255,.55);
  --papierfenster:rgba(252,251,248,.98); --ladegrund:rgba(252,251,248,.9); --ladelicht:#fff;
  --auszug:#4a443b; --ok-rand:#cfe0c0; --codegrund:#f6f4ef;
  --knopf-an:#fff; --signal-weich:#fdecef; --warm-hauch:rgba(160,103,47,.1); --tabellenkopf:#faf8f4;
  --kartengrund:#e8e4dc; --ich-grund:#efe7db; --ich-text:#3b2e1c; --ich-rand:#e3d8c6;
  /* Auswahl- und Fokusring (Explorer #188, Mediathek, Baukasten, Suche, Emoji),
     Favoritenstern, Schatten als RGB-Dreier (rgba(var(--schatten),.08); dunkel
     schwarz statt braun) */
  --wahl:#c98b4b; --stern:#d8a31a; --schatten:40,30,15;
  /* Diagrammfarben des Verbrauchs (#29): 5 Modell-Plätze in fester Reihenfolge –
     1 Blau, 2 Grünblau, 3 Ocker, 4 Violett, 5 Rosé (Datenfarben, vom Benutzer
     freigegeben 07.10.2026). Geprüft auf Farbschwäche: in dieser Reihenfolge haben
     Nachbarn und Übernächste ΔE ≥ 9,8 (Rot-Grün-Schwäche) und ≥ 15,1 (normal), hell
     und dunkel. Ein 6. Modell bekommt keine Farbe, es steht unter „Andere“
     (--diagramm-rest, hell); --diagramm-suche (dunkel) ist die Websuche, --diagramm-gpu
     (warmes Mittelgrau) die GPU-Miete von Aloa (#337). Ocker liegt
     hell unter 3 : 1 – die Werte stehen darum immer auch als Text daneben. */
  --diagramm-1:#2f6fa8; --diagramm-2:#2a9d78; --diagramm-3:#d69a1a; --diagramm-4:#5b4aa8; --diagramm-5:#c8608e;
  --diagramm-rest:#b3aa9d; --diagramm-suche:#6b6357; --diagramm-gpu:#93826b; --gesicht-schrift:#fbfaf7; --wahl-hauch:rgba(201,139,75,.18);
  /* Urlaubsplan (#388, Vorschau abgenommen 10.10.2026): nur warme Töne. Fest = voll,
     beantragt = hell mit gestricheltem Rand; je Art ein Ton nur für die Verwaltung;
     --up-ueber hellt Wochenende/Feiertag IM Balken auf („kostet keinen Urlaub“). */
  --up-we:rgba(120,100,70,.09); --up-ft:rgba(214,160,60,.22); --up-ueber:rgba(251,250,247,.45);
  --up-fest:#8a6a3c; --up-fest-text:#fff; --up-beantragt:#efe2cf; --up-beantragt-rand:#8a6a3c; --up-jetzt:#c0582a;
  --up-urlaub:#8a6a3c; --up-sonderurlaub:#b88a3e; --up-unbezahlt:#7d6a5a; --up-zeitausgleich:#c47a4c;
  --up-krank:#9a4a3a; --up-abwesend:#9a8f83; --up-neutral:#4a443e;
  --up-leiste-fest:#8a6a3c; --up-leiste-beantragt:#d9c3a0; --up-fenster:rgba(138,106,60,.12);
  --kopfhoehe:52px; --schrift:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}

/* Dunkler Anstrich – NUR für das Menü hinter der Tür (#32; das Ticketfenster
   gibt es seit #407 nicht mehr – Tickets sind Blätter). Jede Person wählt ihn in
   „Mein Zugang“; app.js setzt dafür data-thema="dunkel" an #menuschicht. Der Tisch
   (Frontoffice) und der Eingang bleiben immer im Anstrich, den das Büro
   vorgibt – nie am <html> schalten, sonst dunkeln dort etwa die
   Bildlaufleisten mit. */
/* Flächen, Schrift und Ränder sind neutral grau, nicht mehr blaugrau (#152,
   Wunsch des Benutzers 27.09.2026) – gleiche Helligkeit wie vorher, damit
   alle Abstufungen stimmen. Firmenfarben und die weichen Einfärbungen der
   Hinweise (blau/gelb/rot/grün) bleiben farbig. */
.menuschicht[data-thema="dunkel"]{
  --heute:#2a2519; --heute-rand:#4a4130;
  --bg:#161616; --karte:#1f1f1f; --flaeche2:#2a2a2a; --feld:#242424;
  --text:#e8e8e8; --leise:#a3a3a3; --rand:#363636; --rand2:#4d4d4d;
  --dunkel:#0f0f0f; --dunkel2:#1a1a1a;
  --blau:#4b7ded; --gruen:#2fa96a; --gelb:#d99b28; --rot:#e05c5c; --orange:#f0913a;
  --blau-weich:#1d2c4b; --blau-weich2:#1a2740; --blau-text:#a9c4ff; --blau-text2:#a9c4ff;
  --gelb-weich:#3a2e14; --gelb-weich2:#2f2611; --gelb-text:#f0c76b; --gelb-rand:#5a4820;
  --rot-weich:#3d2022; --rot-weich2:#331c1e; --rot-text:#f0a3a3; --rot-rand:#5d2f31;
  --gruen-weich:#153224; --gruen-weich2:#12291d; --gruen-text:#7ed6a4; --gruen-rand:#255239;
  --grauknopf:#333333; --grauknopf-text:#d6d6d6;
  --balken:#474747; --balken2:#6b83a8; --tipp:#333333; --tippschrift:#f2f2f2;
  --marke-zahl:rgba(255,255,255,.14);
  --fremde-blase:#2e2e2e;
}
/* Bildlaufleisten, Auswahlfelder und Kalender: überall hell, auch wenn das
   Gerät dunkel eingestellt ist – nur im dunklen Menü dunkeln sie mit. */
:root{color-scheme:light}
/* Die Schriftfarbe erbt sonst den fertigen (hellen) Wert vom body – deshalb
   hier neu aus den eigenen Farben setzen. */
.menuschicht[data-thema="dunkel"]{color-scheme:dark;color:var(--text)}
/* Feste Scrollbalken wie am Mac (#322). Wo das Gerät die Leisten fest
   hinstellt (Windows, Linux), wären sie breit, grau und mit Pfeilen – in
   dunklen Blättern ein heller Streifen. index.html misst das beim Laden und
   setzt dann .feste-scrollbalken an <html> („Ansicht testen“ → Windows ebenso).
   Dann gilt: schmaler runder Griff ohne Spur und ohne Pfeile, unter der Maus
   etwas breiter – wie am Mac. Farbe = Schriftfarbe der Stelle mit wenig
   Deckkraft (currentColor): passt so zu hell und dunkel, zu jedem Blatt und
   Fenster, ohne Variable. :where() hält die Gewichtung bei null – Stellen mit
   scrollbar-width:none bleiben ohne Leiste. Am Mac (auch mit „Scrollbalken
   immer anzeigen“) und wo die Leisten schweben (Tablet, Android), bleibt die
   Leiste des Geräts.
   Firefox kennt ::-webkit-scrollbar nicht: dort die schmale Standardleiste in
   derselben Farbe. Kein scrollbar-color außerhalb davon – Chrome ließe sonst
   die Regeln hier fallen (lokal_scrollbalken.py). */
:where(.feste-scrollbalken)::-webkit-scrollbar,
:where(.feste-scrollbalken) ::-webkit-scrollbar{width:12px;height:12px;background:transparent}
:where(.feste-scrollbalken)::-webkit-scrollbar-thumb,
:where(.feste-scrollbalken) ::-webkit-scrollbar-thumb{
  background:color-mix(in srgb,currentColor 35%,transparent) padding-box;
  border:3px solid transparent;border-radius:6px}
:where(.feste-scrollbalken)::-webkit-scrollbar-thumb:vertical,
:where(.feste-scrollbalken) ::-webkit-scrollbar-thumb:vertical{min-height:32px}
:where(.feste-scrollbalken)::-webkit-scrollbar-thumb:horizontal,
:where(.feste-scrollbalken) ::-webkit-scrollbar-thumb:horizontal{min-width:32px}
:where(.feste-scrollbalken)::-webkit-scrollbar-thumb:hover,
:where(.feste-scrollbalken) ::-webkit-scrollbar-thumb:hover{
  border-width:2px;background-color:color-mix(in srgb,currentColor 55%,transparent)}
:where(.feste-scrollbalken)::-webkit-scrollbar-thumb:active,
:where(.feste-scrollbalken) ::-webkit-scrollbar-thumb:active{
  border-width:2px;background-color:color-mix(in srgb,currentColor 65%,transparent)}
:where(.feste-scrollbalken)::-webkit-scrollbar-track,
:where(.feste-scrollbalken) ::-webkit-scrollbar-track,
:where(.feste-scrollbalken)::-webkit-scrollbar-corner,
:where(.feste-scrollbalken) ::-webkit-scrollbar-corner{background:transparent}
@supports not selector(::-webkit-scrollbar){
  :where(.feste-scrollbalken), :where(.feste-scrollbalken) *{scrollbar-width:thin;
    scrollbar-color:color-mix(in srgb,currentColor 35%,transparent) transparent}
}
body{font-family:var(--schrift);background:var(--bg);color:var(--text);font-size:15px;line-height:1.55}
.verborgen{display:none!important}
button{font:inherit;cursor:pointer;border:0;border-radius:8px}
input,textarea,select{font:inherit;color:inherit;background:var(--feld);border:1px solid var(--rand);border-radius:8px;padding:9px 11px;width:100%}
input:focus,textarea:focus,select:focus{outline:2px solid var(--blau);outline-offset:-1px}
/* Auswahlfelder: eigener Pfeil statt dem des Browsers – der klebte (v. a. in
   Safari) am rechten Rand. Zwei Dreiecke in der Schriftfarbe ergeben den
   Winkel, passt so zu hell und dunkel. Abstand zum Rand: --pfeilrand (kleine
   Felder setzen weniger). Die hohe Gewichtung (:not) sorgt dafür, dass
   Regeln wie „.x select{padding:…;background:…}“ Pfeil und Platz nicht löschen.
   Breiten im Menü (einheitlich): allein in einer Karte bzw. unter einer
   Überschrift max-width:280px, mit langen Einträgen (Modelle) 420px, in einer
   Zeile neben Knöpfen/Text (Filter, Sortierung) width:auto. */
select:not([multiple]):not([size]){-webkit-appearance:none;appearance:none;
  padding-right:calc(var(--pfeilrand,12px) * 2 + 10px)!important;
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),
                   linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - var(--pfeilrand,12px) - 5px) 50%,calc(100% - var(--pfeilrand,12px)) 50%;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.teamversuch select,.suchwahl,.bvwahl select,.teamkontaktzeile select{--pfeilrand:8px}
/* Häkchenfelder immer in der Signalfarbe des Büros (Erscheinungsbild), nicht
   in der Akzentfarbe von System oder Browser (#107). Steht hier einmal für
   alle – auch künftige Felder brauchen nichts Eigenes. */
input[type="checkbox"]{accent-color:var(--signal)}
/* Ankreuz- und Auswahlfelder nie auf volle Breite ziehen (die allgemeine
   input-Regel oben tut das) – sonst steht das Kästchen mitten in der Zeile. */
input[type="checkbox"],input[type="radio"]{width:auto}
textarea{resize:vertical;min-height:90px;font-family:var(--schrift)}
a{color:var(--blau)}

/* Anmeldung */
.anmeldung{min-height:100dvh;display:grid;place-items:center;background:var(--dunkel);padding:20px}

/* ---------- Der Eingang ----------
   Kein Kasten auf farbigem Grund, sondern ein Raum, in dem Leute sitzen. Erst
   wer Platz nimmt, bekommt Name und Passwort zu sehen. */
/* Das Standbild liegt als Grund darunter: Es ist sofort da, und wo der Film
   nicht laufen darf (etwa bei „Bewegung reduzieren"), bleibt der Raum trotzdem. */
.anmeldung.eingang{position:fixed;inset:0;padding:0;place-items:stretch;overflow:hidden;
  color:#f6f1e9;background:#241c14 url("/static/versuch/eingang.jpg") center/cover no-repeat}
.raumfilm{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  /* Der Film ist Kulisse, keine Bedienung: nicht anklickbar, nicht anwählbar */
  pointer-events:none}
/* Ein Schleier, sonst steht helle Schrift auf hellem Fensterlicht */
.eingangschleier{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 35%,rgba(0,0,0,.06),rgba(0,0,0,.5))}

.eingangmarke{position:absolute;top:30px;left:38px;z-index:3;pointer-events:none;max-width:min(46vw,320px)}
.eingangmarke .markenname{display:block;font-family:"Iowan Old Style",Georgia,serif;
  font-style:italic;font-weight:500;font-size:29px;text-shadow:0 2px 14px rgba(0,0,0,.55)}
.eingangmarke .anmeldelogo{display:none}          /* der Name allein genügt hier */
.eingangmarke .anmeldelogo img{max-height:34px;vertical-align:middle}
.eingangmarke .anmeldelogo:has(img){display:block;margin-bottom:4px}
.eingangzeile{display:block;font-size:13px;opacity:.72;margin-top:3px;
  text-shadow:0 1px 10px rgba(0,0,0,.65)}

.eingangmitte{position:absolute;left:50%;bottom:9vh;transform:translateX(-50%);z-index:4;
  width:min(420px,92vw);display:grid;justify-items:center;gap:16px}
.einladung{margin:0;text-align:center;font-family:"Iowan Old Style",Georgia,serif;
  font-style:italic;font-size:clamp(19px,2.4vw,25px);line-height:1.35;
  text-shadow:0 2px 16px rgba(0,0,0,.6)}
.anmeldung .platzknopf{border:0;border-radius:999px;padding:13px 34px;font-size:15px;cursor:pointer;
  background:rgba(252,250,246,.94);color:#2b2620;font-weight:500;
  box-shadow:0 10px 34px rgba(0,0,0,.35);transition:transform .15s ease,background .15s ease}
.anmeldung .platzknopf:hover{background:#fff;transform:translateY(-1px)}

/* Das Anmeldeblatt liegt zusammengefaltet, bis jemand Platz nimmt */
.anmeldeblatt{display:none;width:100%;gap:11px;
  background:rgba(252,250,246,.96);color:#2b2620;border-radius:16px;padding:22px 22px 18px;
  box-shadow:0 20px 60px rgba(0,0,0,.45)}
.anmeldung.sitzt .anmeldeblatt{display:grid;animation:aufblaettern .28s ease}
.anmeldung.sitzt .platzknopf{display:none}
@keyframes aufblaettern{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.anmeldeblatt .hinweis{color:#6b6357;font-size:13.5px;margin:0}
.anmeldeblatt input{background:rgba(0,0,0,.045);border:1px solid rgba(0,0,0,.09);color:#2b2620}
.anmeldung .anmeldeblatt button[type=submit]{background:#2b2620;color:#fff;border-radius:10px;padding:11px;font-weight:600}
.anmeldeblatt .auge{background:transparent;color:#6b6357}
.anmeldeblatt .fehler{margin:0}
/* Anstrich umschalten ergibt hier keinen Sinn – der Raum ist ein Foto. */
.anmeldung.eingang .sprachknopf{background:rgba(252,250,246,.22);color:#fff;backdrop-filter:blur(6px)}
/* Früher war der Film hier ausgeblendet, wenn im Betriebssystem „Bewegung
   reduzieren" eingeschaltet ist. Das hat am 12.09.2026 dazu geführt, dass
   auf dem iPhone nur das Standbild zu sehen war – die Einstellung ist dort
   oft an, ohne dass man es weiß. Der Eingang IST der Film; ohne ihn fehlt
   dem Haus die Tür. Er läuft daher immer. Rücksicht bleibt insofern, als
   er stumm ist, nichts blinkt und nichts springt. */
@media(max-width:560px){
  .eingangmarke{top:22px;left:22px}
  .eingangmitte{bottom:6vh;width:min(420px,94vw)}
}
.anmeldung .karte{background:var(--karte);padding:32px;border-radius:14px;width:min(360px,100%);display:grid;gap:12px}
.anmeldung h1{font-size:26px}
.anmeldung .hinweis{color:var(--leise);font-size:14px;margin-bottom:4px}
.anmeldung button{background:var(--blau);color:#fff;padding:11px;font-weight:600}
.fehler{color:var(--rot);font-size:14px;min-height:20px}

/* Rahmen */
.buero{display:grid;grid-template-columns:var(--spaltenbreite,230px) 1fr;grid-template-rows:auto 1fr;height:100dvh;overflow:hidden}
/* Die Seitenleiste geht über die volle Fensterhöhe, der Kopf sitzt rechts daneben */
.spalte{grid-column:1;grid-row:1/-1}
.kopf{grid-column:2;grid-row:1;display:flex;align-items:center;gap:12px;background:var(--dunkel);color:#fff;padding:10px 16px;min-height:var(--kopfhoehe);position:sticky;top:0;z-index:30}
.inhalt{grid-column:2;grid-row:2}
.marke{font-weight:700}
.kopfmarke{display:none}
.wachstum{flex:1}
.freigabezaehler{background:var(--gelb);color:#fff;padding:3px 10px;border-radius:20px;font-size:13px;font-weight:600}
.kopf .klein{background:rgba(255,255,255,.15);color:#fff;padding:6px 12px;font-size:13px}
.menuknopf{display:none;background:rgba(255,255,255,.15);color:#fff;padding:5px 11px;font-size:17px}

/* Menüspalte */
.spalte{background:var(--dunkel2);color:#c9d5ea;padding:0 10px 14px;display:flex;flex-direction:column;gap:6px;overflow:hidden}

/* Markenblock ganz oben in der Seitenleiste */
.markenblock{flex:0 0 auto;display:flex;align-items:center;gap:9px;min-height:var(--kopfhoehe);
  margin:0 -10px 8px;padding:0 10px;border-bottom:1px solid rgba(255,255,255,.1)}
.markenknopf{position:relative;flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;
  background:transparent;color:#fff;font-size:19px;line-height:1;padding:0;pointer-events:none}
/* eigene Fläche fürs Logo – hier lässt sich das Emoji später gegen ein <img> tauschen */
.markenlogo{display:grid;place-items:center;width:26px;height:26px;font-size:19px;line-height:1}
.markenlogo img{width:100%;height:100%;object-fit:contain;display:block}
.markenauf{display:none;font-size:17px;line-height:1}
.markentext{font-weight:700;color:#fff;flex:1 1 auto;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.zuknopf{flex:0 0 auto;width:28px;height:28px;display:grid;place-items:center;font-size:15px;line-height:1;
  background:rgba(255,255,255,.09);color:#c9d5ea;padding:0}
.zuknopf:hover{background:rgba(255,255,255,.2);color:#fff}
#agentennav{flex:1;min-height:40px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}
.navpunkt{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:8px;cursor:pointer;font-size:14px;color:#c9d5ea;text-decoration:none}
.navpunkt:hover{background:rgba(255,255,255,.08)}
.navpunkt.aktiv{background:var(--blau);color:#fff;font-weight:600}
.navtitel{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:#7b8db0;margin:14px 0 4px 11px}
.navblock{display:flex;flex-direction:column;gap:2px}
.navblock.unten{margin-top:6px;padding-top:14px;border-top:1px solid rgba(255,255,255,.1);flex:0 0 auto}
.agentkopf{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:8px;cursor:pointer;font-weight:600;color:#e6edf9}
.agentkopf:hover{background:rgba(255,255,255,.08)}
.punkt{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.unterpunkte{margin:2px 0 8px 14px;border-left:1px solid rgba(255,255,255,.14);padding-left:6px;display:flex;flex-direction:column;gap:1px}
.unterpunkt{padding:6px 10px;border-radius:6px;font-size:13.5px;cursor:pointer;color:#a9b8d2}
.unterpunkt:hover{background:rgba(255,255,255,.07)}
.unterpunkt.aktiv{background:var(--blau);color:#fff;font-weight:600}
.pille{background:var(--gelb);color:#fff;border-radius:20px;padding:0 7px;font-size:11.5px;font-weight:700;margin-left:auto}
.notaus{background:#5c2222;color:#ffb4b4;padding:9px;font-size:13.5px;font-weight:600;width:100%}
.notaus:hover{background:var(--rot);color:#fff}
.schatten{display:none}

/* Knopf mit dem Namen des angemeldeten Benutzers – er öffnet das Fenster */
.nutzerknopf{background:rgba(255,255,255,.07);width:100%;text-align:left;color:#c9d5ea;font-weight:600}
.nutzerknopf .navtext{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nutzerknopf .nutzerpfeil{font-size:11px;opacity:.6;flex:0 0 auto}
.nutzerknopf:hover{background:rgba(255,255,255,.16);color:#fff}
.nutzerknopf.aktiv{background:var(--blau);color:#fff}
.buero.schmal .nutzerknopf .nutzerpfeil{display:none}

/* Eigenes Fenster für Verwaltung, Profil und Einstellungen */
.menuschicht{position:fixed;inset:0;background:rgba(20,14,8,.55);z-index:95;
  display:grid;place-items:center;padding:18px}
/* Das Fenster wächst mit dem Bildschirm und füllt ihn bis auf einen schmalen
   Rand. Die Grenze bei 2000px ist keine Bescheidenheit, sondern Erfahrung:
   Darüber steht auf einem sehr großen Schirm mehr Rand als Inhalt. Damit die
   Fließtexte darin nicht zu langen Zeilen werden, sind sie eigens begrenzt
   (siehe .menukoerper .karte>p weiter unten). */
.menublatt{background:var(--karte);border-radius:14px;
  width:min(2000px,100%);height:min(1200px,100%);
  display:grid;grid-template-columns:238px 1fr;overflow:hidden;
  box-shadow:0 18px 60px rgba(var(--schatten),.4)}
.menuspalte{background:var(--dunkel);padding:14px 10px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}
.menuspaltekopf{display:flex;align-items:center;gap:9px;color:#fff;font-weight:700;
  padding:6px 8px 12px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:8px}
.menuavatar{width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.14);
  display:grid;place-items:center;font-size:15px;flex:0 0 auto}
.menuwer{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menupunkt{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:8px;
  cursor:pointer;font-size:14px;color:#c9d5ea}
.menupunkt:hover{background:rgba(255,255,255,.08)}
.menupunkt.aktiv{background:var(--blau);color:#fff;font-weight:600}
.menutitel{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:#7b8db0;
  margin:14px 0 4px 11px;min-height:6px}
.menuinhalt{position:relative;overflow-y:auto;background:var(--bg)}
.menukoerper{padding:14px 26px 22px}
/* Erklärtexte bleiben lesbar, auch wenn das Fenster sehr breit ist: Über etwa
   100 Zeichen je Zeile findet das Auge beim Umbruch die nächste Zeile nicht
   mehr zuverlässig. Tabellen und Formulare nutzen die Breite weiterhin ganz. */
.menukoerper .karte>p,.menukoerper>.unterzeile{max-width:105ch}
/* Kopfzeile des Fensters: Überschrift links, Schließen-x rechts. Sie klebt
   oben und scrollt nicht mit – bei langen Seiten bleibt das x erreichbar
   (#106). Die Überschrift kommt aus menueTitel(); die <h2> der Seiten ist
   deshalb im Fenster ausgeblendet (sonst stünde der Titel doppelt da). */
.menukopfleiste{position:sticky;top:0;z-index:4;display:flex;align-items:center;
  justify-content:space-between;gap:10px;padding:16px 26px 12px;
  background:var(--bg);border-bottom:1px solid var(--rand)}
.menuueberschrift{font-size:21px;font-weight:700;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menukoerper>h2, .menukoerper>.chattitel>h2{display:none}
.menuzu{width:32px;height:32px;display:grid;place-items:center;
  background:var(--grauknopf);color:var(--grauknopf-text);font-size:15px;padding:0}
.menuzu:hover{background:var(--rand2);color:#fff}
.menutabs{display:none}
.menuwahl{display:none}

/* Tablet hochkant: das Fenster füllt den Schirm, das Menü liegt als Zeile oben */
@media(max-width:820px){
  .menuschicht{padding:0}
  .menublatt{width:100%;height:100%;border-radius:0;grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .menuspalte{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px;padding:10px}
  .menuspaltekopf{border-bottom:0;margin:0;padding:0 8px 0 0;flex:0 0 auto}
  .menupunkt{padding:7px 10px;font-size:13.5px}
  .menukopfleiste{padding:12px 14px 10px}
  .menukoerper{padding:12px 14px 18px}
}

/* Handy: feste Leiste am unteren Rand, wie in einer App.
   Sie bleibt immer stehen – gescrollt wird nur der Inhalt darüber. */
@media(max-width:700px){
  .menuschicht{padding:0;height:100dvh}
  .menublatt{display:flex;flex-direction:column;width:100%;height:100%;border-radius:0;position:relative;
    --tabhoehe:calc(56px + var(--sicher-unten,env(safe-area-inset-bottom,0px)))}
  .menuspalte{display:none}                    /* die Seitenspalte weicht der Leiste unten */
  .menuinhalt{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column}
  .menukopfleiste{position:sticky;top:0;right:auto;z-index:4;display:flex;align-items:center;
    justify-content:space-between;gap:10px;padding:11px 12px;background:var(--dunkel);color:#fff;
    border-bottom:0;flex:0 0 auto}
  .menuueberschrift{display:block;font-size:16px;font-weight:700;color:#fff;
    text-transform:none;letter-spacing:0;margin:0;padding:0;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .menuzu{background:rgba(255,255,255,.14);color:#fff;flex:0 0 auto}
  .menuzu:hover{background:rgba(255,255,255,.28)}
  .menukoerper{padding:14px 12px 18px}
  .menuinhalt{overflow-x:hidden}
  .menukoerper .karte{overflow-x:auto}         /* breite Tabellen scrollen in ihrer Karte */
  .menukoerper td .reihe{flex-wrap:wrap;justify-content:flex-start;gap:5px}
  .menukoerper table{min-width:520px}          /* lieber seitwärts schieben als alles quetschen */
  .menutabs{display:flex;flex:0 0 auto;background:var(--dunkel);border-top:1px solid rgba(255,255,255,.12);
    padding-bottom:var(--sicher-unten,env(safe-area-inset-bottom,0px))}
  .menutab{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    background:transparent;color:#a9b8d2;padding:9px 4px 8px;border-radius:0;min-height:56px;font-size:11px}
  .menutab .tabsymbol{font-size:19px;line-height:1;position:relative}
  /* Zahl offener Artikel am Einkaufs-Knopf (#125) */
  .menutab .tabzahl{position:absolute;top:-6px;right:-12px;min-width:16px;height:16px;padding:0 4px;
    border-radius:8px;background:var(--blau);color:#fff;font-size:10.5px;font-weight:700;line-height:16px;text-align:center}
  .menutab .tabtext{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
  .menutabs.eng .menutab{padding:9px 1px 8px;font-size:10px}
  .menutabs.eng .tabtext{letter-spacing:-.03em}
  .menutab.aktiv{color:#fff;font-weight:700;box-shadow:inset 0 2px 0 var(--blau)}
  .menutab:active{background:rgba(255,255,255,.08)}
  /* Auswahl der Einstellungsseiten – fährt über der Leiste herein */
  /* Das Blatt endet über der Leiste – die bleibt immer sichtbar und bedienbar */
  .menuwahl{display:block;position:absolute;left:0;right:0;top:0;bottom:var(--tabhoehe);
    background:rgba(10,16,28,.5);z-index:6}
  .menuwahl.verborgen{display:none!important}
  .menuwahlblatt{position:absolute;left:0;right:0;bottom:0;background:var(--karte);
    border-radius:14px 14px 0 0;padding:10px 10px 12px;
    box-shadow:0 -10px 40px rgba(10,20,40,.4)}
  .menuwahltitel{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--leise);
    padding:6px 10px 8px}
  .menuwahlpunkt{display:flex;align-items:center;gap:10px;padding:13px 10px;border-radius:9px;
    font-size:15px;color:var(--text);cursor:pointer}
  .menuwahlpunkt.aktiv{background:var(--blau-weich);color:var(--blau-text);font-weight:600}
  .wahlhaken{margin-left:auto;color:var(--blau)}
}

/* Inhalt */
/* Der Inhalt nutzt immer die volle verfügbare Breite */
.inhalt{padding:22px 26px;overflow-y:auto;width:100%}
h2{font-size:21px;margin-bottom:3px}
h3{font-size:16px;margin-bottom:8px}
.unterzeile{color:var(--leise);font-size:14px;margin-bottom:18px;max-width:110ch}
.karte{background:var(--karte);border:1px solid var(--rand);border-radius:12px;padding:16px;margin-bottom:14px}
.gitter{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.leise{color:var(--leise);font-size:13.5px}
.kachel{background:var(--karte);border:1px solid var(--rand);border-radius:12px;padding:15px}
.kachel .zahl{font-size:27px;font-weight:700;line-height:1.2}
.reihe{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.knopf{background:var(--blau);color:var(--auf-blau);padding:9px 15px;font-weight:600;font-size:14px}
.knopf.grau{background:var(--grauknopf);color:var(--grauknopf-text)}
.knopf.gruen{background:var(--gruen);color:#fff}
.knopf.rot{background:var(--rot);color:#fff}
.knopf.mini{padding:5px 11px;font-size:13px;font-weight:500}
.marke2{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600}
.m-offen{background:var(--blau-weich);color:var(--blau-text)}
.m-arbeit{background:var(--gelb-weich);color:var(--gelb-text)}
.m-freigabe{background:var(--rot-weich);color:var(--rot-text)}
.m-fertig{background:var(--gruen-weich);color:var(--gruen-text)}
.ampel{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px}
.ampel::before{content:"";width:11px;height:11px;border-radius:50%}
.a-gruen::before{background:var(--gruen)} .a-gruen{color:var(--gruen)}
.a-gelb::before{background:var(--gelb)} .a-gelb{color:var(--gelb)}
.a-rot::before{background:var(--rot)} .a-rot{color:var(--rot)}
.zeile{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--rand);align-items:flex-start}
.zeile:last-child{border-bottom:0}
.zeit{color:var(--leise);font-size:12.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.pruefliste{list-style:none;font-size:13.5px}
.pruefliste li{padding:3px 0 3px 22px;position:relative}
.pruefliste li::before{content:"✓";position:absolute;left:0;color:var(--gruen);font-weight:700}
.pruefliste li.warn::before{content:"!";color:var(--gelb)}
.pruefliste li.warn{color:var(--gelb-text);font-weight:600}

/* Chat */
.chatfenster{display:flex;flex-direction:column;height:100%;min-height:0}
.verlauf{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:4px 46px 18px 2px}
.blase{max-width:min(78%,960px);padding:9px 13px;border-radius:13px;font-size:14.5px;white-space:pre-wrap;word-break:break-word}
.b-ich{align-self:flex-end;background:var(--blau);color:#fff;border-bottom-right-radius:4px}
/* Zeit in Schriftfarbe der Blase (#157) – die Blase ist mal hell, mal dunkel. */
.b-ich .zeit{color:inherit}
/* Links im Chat (#91): unterstrichen, lange Adressen brechen um; in der
   eigenen, farbigen Blase in Schriftfarbe statt Blau auf Blau. */
.blase a{text-decoration:underline;overflow-wrap:anywhere}
/* Formatierte Antworten (#92): mitFormat() baut Absätze und Listen selbst,
   deshalb hier kein „pre-wrap" – sonst kämen Leerzeilen doppelt. */
.blase .mdtext{white-space:normal}
.mdtext p{margin:0 0 .55em}
.mdtext p:last-child,.mdtext ul:last-child,.mdtext ol:last-child{margin-bottom:0}
.mdtext ul,.mdtext ol{margin:.2em 0 .6em;padding-left:1.35em}
.mdtext li{margin:.12em 0}
.mdtext .mdtief{display:block;margin-left:1em}
.mdtext .mdkopf{font-weight:700;margin:.5em 0 .3em}
.mdtext .mdkopf:first-child{margin-top:0}
.mdtext .mdkopf.k1{font-size:1.15em}
.mdtext .mdkopf.k2{font-size:1.07em}
.mdtext code{font-family:ui-monospace,Menlo,monospace;font-size:.9em;
  background:rgba(var(--ton),.07);border-radius:4px;padding:0 .25em}
.mdtext pre{white-space:pre-wrap;background:rgba(var(--ton),.06);border-radius:8px;
  padding:7px 9px;margin:.3em 0 .6em;overflow-x:auto}
.mdtext pre code{background:none;padding:0}
.mdtext hr{border:0;border-top:1px solid rgba(var(--ton),.15);margin:.6em 0}
/* Links in Menschen-Blasen in deren Schriftfarbe, unterstrichen (#157):
   blasenStil() in app.js setzt sie passend zur Blasenfarbe. */
.b-ich a,.b-andere a{color:inherit}
.linkziel{font-size:.82em;opacity:.7;white-space:nowrap}
.b-system .zeit{display:none}
.b-agent{align-self:flex-start;background:var(--karte);border:1px solid var(--rand);border-bottom-left-radius:4px}
.b-system{align-self:center;background:var(--flaeche2);color:var(--leise);font-size:13px;text-align:center}
.blase .wer{font-size:11.5px;opacity:.8;display:block;margin-bottom:2px;font-weight:600}
/* Antwort eines Kollegen auf eine Weitergabe, zurück beim Fragenden (#249) */
.blase.rueckantwort{border-left:3px solid var(--rand)}
.blase .rueckkopf{font-size:12px;color:var(--leise);margin-bottom:4px}
.eingabe{display:flex;gap:8px;padding-top:10px;border-top:1px solid var(--rand)}
.eingabe textarea{min-height:44px;max-height:130px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.chip{background:var(--blau-weich);color:var(--blau-text);border-radius:20px;padding:4px 11px;font-size:13px;cursor:pointer;font-weight:600}

table{width:100%;border-collapse:collapse;font-size:14px}
/* Büro in der Löschfrist (#406 Stufe 6b): eine Seite über allem, nur Herunterladen und Abmelden */
.loeschseite{position:fixed;inset:0;z-index:95;background:var(--hintergrund, #f4efe8);display:flex;
  align-items:center;justify-content:center;padding:16px;box-sizing:border-box;overflow:auto}
.loeschblatt{background:var(--karte);color:var(--text);border-radius:14px;padding:24px 26px;
  width:min(560px,100%);box-sizing:border-box;box-shadow:0 10px 40px rgba(0,0,0,.18)}
.loeschblatt h2{margin:0 0 12px;font-size:20px;line-height:1.3}
.loeschblatt p{margin:0;line-height:1.55}
/* Herunterladen ist ein Link (download) im Kleid eines Knopfs – ohne Unterstrich */
.loeschblatt a.knopf,.karte a.knopf{text-decoration:none;display:inline-block}
/* Seite „Büros“ (#406 Stufe 4): Rahmen je Büro als schmale Zeile unter dem Büro */
tr.mitrahmen > td{border-bottom:0}
tr.buerorahmen > td{padding-top:0;font-size:12.5px;line-height:1.5;color:var(--leise)}
/* Die Tabelle ist wegen der Knöpfe breiter als die Karte – die Zeile bricht vorher um */
tr.buerorahmen > td > div{max-width:min(600px, calc(100vw - 80px));white-space:normal}
th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--rand);vertical-align:top}
th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--leise)}
/* Passt eine Tabelle einmal doch nicht in ihre Karte – etwa in einem schmalen
   Fenster –, dann schiebt man sie seitwärts, statt dass sie über den Rand
   ragt. Am Handy war das schon lange so; es gilt jetzt überall. */
.menukoerper .karte{overflow-x:auto}
/* Felder fließen nebeneinander und dehnen sich, bis die Zeile voll ist –
   so bleibt auf breiten Bildschirmen kein Platz ungenutzt. */
.formular{display:flex;flex-wrap:wrap;gap:11px 18px;width:100%}
.formular>.feld{flex:1 1 300px;min-width:0}
.formular>.feld:has(textarea){flex-basis:100%}
.formular>.reihe,.formular>button,.formular>.pwfeld{flex:1 1 100%}
.feld label{display:block;font-size:13px;font-weight:600;margin-bottom:4px}
.feld .tipp{font-weight:400;color:var(--leise);font-size:12.5px}
.warnkarte{background:var(--gelb-weich2);border-color:var(--gelb-rand)}
.angehalten-hinweis{background:#5c2222;color:#ffd7d7;padding:9px 14px;border-radius:9px;margin-bottom:14px;font-weight:600;font-size:14px}

@media(max-width:860px){
  .buero{grid-template-columns:1fr;height:100dvh}
  .kopf{grid-column:1;grid-row:1}
  .inhalt{grid-column:1;grid-row:2}
  .menuknopf{display:block}
  /* auf dem Handy steht die Marke im Kopf, die Schublade braucht sie dann nicht */
  .kopfmarke{display:block;white-space:nowrap}
  .markenblock{display:none}
  .spalte{position:fixed;top:0;left:0;bottom:0;width:250px;z-index:50;transform:translateX(-100%);transition:transform .2s;padding:14px 10px}
  .spalte.offen{transform:none}
  .schatten.an{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:40}
  .inhalt{padding:15px}
}

/* --- Chat: Prompt-Verlauf und Scrollknoepfe --- */
.werbinich{font-size:12.5px;opacity:.65;margin-right:4px}
.chatlayout{display:grid;grid-template-columns:1fr 30px;gap:12px;align-items:stretch}

/* Im Chat scrollt nur der Verlauf – kein zweiter Balken am Fensterrand,
   und die Eingabe bleibt fest am unteren Rand stehen. */
.inhalt.chatansicht{overflow:hidden;display:flex;flex-direction:column;min-height:0}
.inhalt.chatansicht>h2,.inhalt.chatansicht>.unterzeile,.inhalt.chatansicht>.karte,
.inhalt.chatansicht>.anwesend,.inhalt.chatansicht>.reihe{flex:0 0 auto}
.inhalt.chatansicht .chatlayout{flex:1 1 auto;min-height:0}
.inhalt.chatansicht .eingabefeld,.inhalt.chatansicht .chips,
.inhalt.chatansicht .bildvorschau{flex:0 0 auto}
.verlaufrahmen{position:relative;flex:1;min-height:0;display:flex;overflow:hidden}
.verlaufrahmen .verlauf{flex:1}
.scrollknoepfe{position:absolute;right:6px;bottom:14px;display:flex;flex-direction:column;gap:6px;z-index:5}
.rundknopf{width:34px;height:34px;border-radius:50%;background:var(--karte);border:1px solid var(--rand);
  color:var(--text);font-size:16px;line-height:1;box-shadow:0 2px 8px rgba(20,35,60,.14)}
.rundknopf:hover{background:var(--blau);color:#fff;border-color:var(--blau)}
.blase.hervor{animation:blitz 1.6s ease-out}
@keyframes blitz{0%{box-shadow:0 0 0 3px #ffd66b}60%{box-shadow:0 0 0 3px #ffd66b}100%{box-shadow:0 0 0 3px transparent}}

/* Schmale Balkenleiste: je eigener Eingabe ein Balken, oben alt, unten neu */
.balkenleiste{background:var(--karte);border:1px solid var(--rand);border-radius:10px;
  display:flex;flex-direction:column;align-items:center;width:30px;padding:3px 0 5px;
  max-height:100%;overflow:hidden}
.bltitel{font-size:13px;opacity:.55;padding:2px 0 4px;cursor:default;flex:0 0 auto}
.blinhalt{width:100%;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;
  align-items:center;gap:4px;scrollbar-width:none}
.blinhalt::-webkit-scrollbar{display:none}
.blleer{color:var(--leise);font-size:13px}
.vbalken{flex:0 0 auto;width:13px;height:5px;border-radius:3px;background:var(--balken);cursor:pointer;
  transition:width .12s ease, background .12s ease}
.vbalken:hover{width:22px;background:var(--balken2)}
.vbalken.jetzt{width:24px;height:6px;background:var(--blau)}
/* Hängt an <body> (sonst schnitte die schmale Leiste sie ab) und erbt deshalb
   nichts vom Blatt: hell die Farben von :root, dunkel der Block der dunklen
   Blätter (#328). Schatten warm wie die Blätter, im Dunkeln ein feiner Rand. */
.vblase{position:fixed;display:none;z-index:60;max-width:280px;background:var(--tipp);color:var(--tippschrift);
  font-size:12.5px;line-height:1.4;padding:7px 10px;border-radius:8px;pointer-events:none;
  box-shadow:0 6px 20px rgba(var(--schatten),.3),0 0 0 1px rgba(var(--ton),.08)}
.nurklein{display:none}

@media(max-width:900px){
  .chatlayout{grid-template-columns:1fr}
  .nurklein{display:inline-block}
  .balkenleiste{position:fixed;right:10px;left:auto;bottom:96px;top:auto;max-height:52dvh;
    z-index:35;box-shadow:0 8px 30px rgba(15,25,45,.28);display:none}
  .balkenleiste.offen{display:flex}
}

@media(max-width:560px){ .werbinich{display:none} .freigabezaehler{font-size:12px;padding:2px 8px} }
/* Am Handy ist die Kopfzeile knapp. Der Freigabe-Zähler steht ohnehin als
   Pille in der Menüleiste – hier darf er weichen, damit „Abmelden“ passt. */
@media(max-width:700px){ .kopf{gap:8px;flex-wrap:nowrap;overflow:hidden} .freigabezaehler{display:none} }

/* --- Passwortfeld mit Auge --- */
.pwfeld{position:relative;display:flex;align-items:center}
.pwfeld input{padding-right:44px}
.pwfeld .auge{position:absolute;right:4px;width:auto;background:transparent;color:var(--text);
  padding:6px 8px;font-size:17px;font-weight:400;line-height:1;opacity:.55;border-radius:6px}
.pwfeld .auge:hover{opacity:1;background:var(--flaeche2)}
.pwfeld .auge.an{opacity:1}

/* --- Geraete-Vorschau --- */
.vorschaubuehne{display:flex;justify-content:center;overflow:hidden}
.geraet{position:relative;box-sizing:content-box;transform-origin:top center;background:#000;flex:0 0 auto;
  border:9px solid #222b3a;box-shadow:0 12px 40px rgba(15,25,45,.3);
  display:flex;flex-direction:column;overflow:hidden}
.geraet iframe{width:100%;flex:1 1 auto;min-height:0;border:0;background:var(--karte);display:block}
/* iPhone-Ränder (#112): liegen über dem Inhalt, Klicks gehen hindurch */
/* iPhone 17 / iOS 27.0 (#86): 62 Punkte hoch, Dynamic Island 126 × 37 */
.geraet .statusleiste{flex:0 0 62px;display:grid;grid-template-columns:1fr 126px 1fr;align-items:center;
  padding:0 26px 4px 30px;color:#fff;font:600 17px/1 -apple-system,system-ui,sans-serif;letter-spacing:-.02em}
.geraet .statusleiste > span:first-child{justify-self:center}
.geraet .statusleiste i{width:126px;height:37px;border-radius:19px;background:#000;
  box-shadow:inset 0 0 0 1px #1c1c1c}
.geraet .statusleiste .statussymbole{justify-self:center;display:flex;align-items:center;gap:6px}
.geraet .statusleiste svg{fill:currentColor;display:block}
.geraet .wischbalken{position:absolute;left:50%;bottom:8px;width:134px;height:5px;margin-left:-67px;
  border-radius:3px;background:rgba(20,20,20,.85);box-shadow:0 0 0 1px rgba(255,255,255,.5);pointer-events:none}
.geraet .kamerainsel{position:absolute;left:10px;top:50%;width:36px;height:124px;margin-top:-62px;
  border-radius:18px;background:#000;pointer-events:none}

/* --- Bild im Chat --- */
.chatbild{display:block;max-width:100%;max-height:280px;border-radius:9px;margin-bottom:6px;cursor:zoom-in}
/* Bildname statt Kennung in Agententexten (#122 Stufe 4) – die Kennung steht im Tooltip */
.bildkennung{cursor:help}
.bildvorschau{display:flex;align-items:center;gap:11px;background:var(--karte);border:1px solid var(--rand);
  border-radius:10px;padding:8px 11px;margin-bottom:8px}
.bildvorschau img{width:52px;height:52px;object-fit:cover;border-radius:7px;flex:0 0 auto}
.bildvorschau>div{flex:1;min-width:0;font-size:13.5px}
/* Bild oder Anfangsbuchstaben einer Person */
.benutzerbild{border-radius:50%;object-fit:cover;display:inline-grid;place-items:center;
  flex:0 0 auto;color:#fff;font-weight:700;vertical-align:middle;line-height:1;
  border:1px solid var(--rand)}
.benutzerbild.initialen{letter-spacing:.02em}
.blase .wer .benutzerbild{margin-right:5px;border:0}
.blase .wer.wer-ich{margin-bottom:1px}
.anwesender{display:inline-flex;align-items:center;gap:4px;margin-right:8px}
.anwesender .benutzerbild{border:0}
#nutzersymbol .benutzerbild,#menuavatar .benutzerbild{border:0}

/* Budgetbalken */
.budgetbalken{height:10px;border-radius:6px;background:var(--flaeche2);overflow:hidden;
  border:1px solid var(--rand)}
.budgetbalken span{display:block;height:100%;transition:width .2s}

/* Rollenübersicht */
.rollenkarte.meine{border-color:var(--blau);box-shadow:0 0 0 1px var(--blau) inset}

/* Die fertige Anweisung zum Kopieren – im Baukasten (.bketeil.anweisung) */
.anweisung{white-space:pre-wrap;background:var(--flaeche2);border:1px solid var(--rand);
  border-radius:9px;padding:12px;font-size:14px;max-height:260px;overflow-y:auto}
}

/* Umschalter zwischen Gesprächszweigen */
.zweigleiste{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px;
  padding:7px 10px;background:var(--flaeche2);border:1px solid var(--rand);border-radius:9px}
.blase.bearbeiten{background:var(--karte);color:var(--text);border:1px solid var(--blau);
  max-width:min(92%,960px);width:min(92%,960px)}
.blase.bearbeiten textarea{width:100%;min-height:70px}

/* Knöpfe unter einer Chatnachricht: nur beim Darüberfahren sichtbar */
.blasenhuelle{position:relative;display:flex;flex-direction:column;align-items:flex-start}
.blasenhuelle.h-ich{align-items:flex-end}
.blasenhuelle.h-system{align-items:center}
/* Die Knöpfe hängen unter der Blase, ohne Platz zu verbrauchen – sonst würde
   der Verlauf für lauter unsichtbare Knopfreihen auseinandergezogen. */
.blasenknoepfe{position:absolute;top:100%;margin-top:1px;z-index:4;
  display:flex;gap:4px;opacity:0;transform:translateY(-2px);
  transition:opacity .12s ease, transform .12s ease;pointer-events:none}
.blasenknoepfe.k-ich{right:0}
.blasenhuelle:hover .blasenknoepfe,
.blasenhuelle:focus-within .blasenknoepfe{opacity:1;transform:none;pointer-events:auto}
.blasenknopf{display:inline-flex;align-items:center;gap:4px;background:var(--flaeche2);
  color:var(--leise);border:1px solid var(--rand);border-radius:7px;padding:2px 7px;
  font-size:12px;line-height:1.5}
.blasenknopf:hover{background:var(--grauknopf);color:var(--text)}
.blasenknopf span{display:none}
.blasenknopf svg{width:13px;height:13px;flex:none}
/* Formular-Karte einer Dokumentvorlage (#401 Stufe 2, formular.js) – Farben nur über Variablen */
.formkarte{margin-top:8px;border:1px solid var(--papierrand2);border-radius:12px;padding:10px 12px;
  background:var(--flaeche2);display:flex;flex-direction:column;gap:10px;max-width:640px}
.formkarte .fmkopf{display:flex;align-items:center;gap:8px}
.formkarte .fmkopf svg{width:16px;height:16px;flex:none}
.formkarte .fmformat{margin-left:auto;font-size:12px;color:var(--papierleise)}
.formkarte .fmfelder{display:flex;flex-direction:column;gap:8px}
.formkarte .fmfeld{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--papierleise)}
.formkarte .fmfeld i{font-style:normal;opacity:.8}
.formkarte input,.formkarte textarea{width:100%;box-sizing:border-box;border:1px solid var(--papierrand2);
  border-radius:8px;padding:6px 9px;font:inherit;font-size:14px;color:var(--text);background:var(--feld);margin:0}
.formkarte textarea{resize:vertical;line-height:1.4}
.formkarte input:focus,.formkarte textarea:focus{outline:2px solid var(--wahl);outline-offset:-1px}
.formkarte .fmpos{overflow-x:auto}
.formkarte table{width:100%;border-collapse:collapse;font-size:13px;min-width:460px}
.formkarte th{text-align:left;font-weight:600;font-size:12px;color:var(--papierleise);padding:2px 4px;
  text-transform:none;letter-spacing:0;white-space:nowrap}
.formkarte td textarea{min-height:34px;height:34px}
.formkarte td{padding:2px 4px;vertical-align:top}
.formkarte td.fm-menge{width:56px}
.formkarte td.fm-einheit{width:90px}
.formkarte td.fm-preis{width:92px}
.formkarte .fmzahl{text-align:right;white-space:nowrap;padding-top:8px}
.formkarte .fmweg{border:none;background:none;color:var(--papierleise);cursor:pointer;padding:6px;font:inherit}
.formkarte .fmweg:focus-visible{outline:2px solid var(--wahl)}
.formkarte .fmsummen{text-align:right;font-size:13px;margin-top:6px}
.formkarte .fmfuss{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.formkarte .fmmeldung{flex:1;font-size:12.5px;color:var(--papierleise);min-width:160px}
@media(max-width:700px){.formkarte input,.formkarte textarea{font-size:16px}}
        /* Zeichen „Als PDF“ (#401) */
.chatdatei svg{width:14px;height:14px;vertical-align:-2px}  /* PDFs des Assistenten (#401) */
.blasenknopf:hover span{display:inline}
.kurzhinweis{position:absolute;right:0;bottom:100%;background:var(--tipp);color:var(--tippschrift);
  font-size:12px;padding:3px 8px;border-radius:7px;margin-bottom:4px;z-index:5}
/* Am Handy gibt es kein Darüberfahren – dort stehen die Knöpfe einfach da */
@media(hover:none){
  .blasenknoepfe{opacity:1;transform:none;pointer-events:auto}
}
.tippen .blasenknoepfe{opacity:1;transform:none;pointer-events:auto}  /* Ansicht testen (#112) */

/* Freigabe-Karte (#297, freigabe.js) – im Chat am Tisch und im Korb dieselbe.
   Immer Papier (wie das Blatt), auch im dunklen Menü. Eigene Namen „fg…“:
   „.bildvergleich“ ist der Vollbild-Vergleich (#154) – derselbe Name legte
   schon einmal Bilder als Vollbild über den Korb (#248). Nichts hier ist
   position:fixed. */
.fgkarte{white-space:normal;margin-top:10px;background:#fbfaf7;color:#2c2822;border:1px solid #e6e1d8;
  border-radius:12px;padding:12px 14px 12px;font-size:13.5px;line-height:1.4;text-align:left}
.fgkarte.fgleer{font-size:13px;opacity:.7;padding:8px 12px}
.fgkarte.fgalt .fgvorschau{opacity:.55}
.karte.fgkorb{padding:0;border:0;background:none;box-shadow:none}
.fgkorb .fgkarte{margin-top:0}
.fgmeta{font-size:12px;opacity:.75;margin-bottom:6px}
.fgtitel{font-family:"Iowan Old Style",Georgia,serif;font-style:italic;font-size:18px;line-height:1.25;margin:0 0 2px}
.fgunter{font-size:12.5px;opacity:.58;margin:0 0 10px}
.fgwas{margin:0 0 10px;font-size:13.5px}
.fgbetroffen{margin:-4px 0 10px;font-size:12.5px;opacity:.75;word-break:break-word}
/* Inhalt der Datendateien (#325): vorher/nachher je Feld, Wort für Wort. Die
   Karte ist im Korb immer Papier – darum eigene Farben an der Karte, dunkel
   nur im Blatt umgestellt (Block der dunklen Blätter). */
.fgkarte{--fgd-weg:#fbe1dd;--fgd-weg-text:#9b2c20;--fgd-neu:#d9f0df;--fgd-neu-text:#17603a;
  --fgd-warn:#fff0cc;--fgd-warn-text:#7a5300;--fgd-linie:#e6e1d8;--fgd-leise:#6b6357}
.fgdaten{margin:0 0 10px;padding:8px 10px;border:1px solid var(--fgd-linie);border-radius:10px;font-size:13px}
.fgdkopf{margin:0 0 6px;font-size:12.5px}
.fgdkopf span{color:var(--fgd-leise);word-break:break-word}
.fgdeintrag{padding:6px 0;border-top:1px solid var(--fgd-linie)}
.fgdeintrag:first-of-type{border-top:0}
.fgdtitel{margin:0 0 4px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;word-break:break-word}
.fgdpfad{font-size:12px;color:var(--fgd-leise)}
.fgdmarke{border-radius:999px;padding:1px 8px;font-size:11.5px;background:rgba(var(--ton),.07);white-space:nowrap}
.fgdmarke.fgd-neu{background:var(--fgd-neu);color:var(--fgd-neu-text)}
.fgdmarke.fgd-weg{background:var(--fgd-weg);color:var(--fgd-weg-text)}
.fgdmarke.fgd-warn{background:var(--fgd-warn);color:var(--fgd-warn-text);font-weight:600}
.fgdfeld{margin:4px 0 0}
.fgdname{display:block;font-size:11.5px;color:var(--fgd-leise);font-family:ui-monospace,Menlo,monospace}
.fgdfeld.fgd-ungefragt .fgdname::after{content:" !";color:var(--fgd-warn-text);font-weight:700}
.fgdzeile{display:grid;grid-template-columns:4.6em 1fr;gap:6px;align-items:baseline;line-height:1.45}
.fgdzeile.fgd-nur{grid-template-columns:1fr}
.fgdzeile i{font-style:normal;font-size:11px;color:var(--fgd-leise)}
.fgdzeile span{white-space:pre-line;overflow-wrap:anywhere}
.fgdzeile del{background:var(--fgd-weg);color:var(--fgd-weg-text);text-decoration:line-through;border-radius:3px;padding:0 1px}
.fgdzeile ins{background:var(--fgd-neu);color:var(--fgd-neu-text);text-decoration:none;border-radius:3px;padding:0 1px;font-weight:600}
.fgdzeile.fgd-nur ins{background:none;color:inherit;font-weight:inherit}
.fgdzeile em{font-style:italic;color:var(--fgd-leise)}
.fgnotiz{white-space:pre-wrap;background:#fff;border:1px solid #e6e1d8;border-radius:10px;padding:10px 12px;margin:0 0 8px}
/* Vorschlag einer Dokumentvorlage (#401 Stufe 3): der ganze Text, lange Texte rollen in der Karte */
.fgvorlage{font-size:13px;line-height:1.5;max-height:420px;overflow:auto;overflow-wrap:anywhere}
.fghinweis{font-size:12.5px;opacity:.75;margin:8px 0 0}
.fghinweis.fgwarn{opacity:1;color:#8a5a00}
.fgvorschau{border:1px solid #e6e1d8;border-radius:10px;overflow:hidden;background:#fff;transition:box-shadow .3s}
.fgvorschau.live{box-shadow:0 0 0 3px rgba(31,157,85,.45)}
.fgleiste{display:flex;align-items:center;gap:6px;height:28px;padding:0 8px;background:#f1eee8;border-bottom:1px solid #e6e1d8}
.fgleiste>i{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:#d3ccc0}
.fgadresse{flex:1;min-width:0;margin:0 8px;height:18px;line-height:18px;border-radius:6px;background:#fff;
  font-size:11px;color:#6b6357;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fgart{border:0;background:transparent;font-size:13px;line-height:1;opacity:.45;cursor:pointer;padding:3px 4px;border-radius:6px}
.fgart.an{opacity:1;background:#fff}
.fgfenster{position:relative;height:300px;background:#fff;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:ew-resize}
.fgfenster.ohneregler{cursor:default}
.fgfenster.gross{height:min(70vh,640px)}
.fgfenster.handy{height:380px;max-width:250px;margin:0 auto;border-left:1px solid #e6e1d8;border-right:1px solid #e6e1d8}
.fgfenster.handy.gross{height:min(75vh,700px);max-width:320px}
.fgrollen{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;touch-action:pan-y}
.fgrollen::-webkit-scrollbar{display:none}
.fgstapel{display:grid}
.fgstapel{touch-action:pan-y}
.fgstapel>img,.fgnachher img{display:block;width:100%;height:auto;pointer-events:none;-webkit-user-drag:none}
.fgstapel>img{grid-area:1/1;align-self:start}
/* Nachher als eigene Ebene mit weißem Grund über die ganze Höhe – ist die Seite
   kürzer geworden, scheint unten kein Vorher durch (/pruefen 05.10.2026) */
.fgnachher{grid-area:1/1;align-self:stretch;background:#fff;pointer-events:none}
.fglinie{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:#fff;box-shadow:0 0 8px rgba(0,0,0,.35);pointer-events:none}
.fgknauf{position:absolute;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;padding:0;border:0;border-radius:50%;
  background:#fff;color:#3b352c;font-size:14px;line-height:32px;box-shadow:0 3px 12px rgba(0,0,0,.35);pointer-events:auto;cursor:ew-resize;
  touch-action:none}
.fgknauf:focus-visible{outline:3px solid rgba(201,139,75,.7);outline-offset:2px}
/* Waagrechte Trennlinie (#306): oben Vorher, unten Nachher; ziehen nur am Knauf */
.fgfenster.fgou{cursor:default}
.fgfenster.fgou .fglinie{left:0;right:0;bottom:auto;width:auto;height:2px;margin:-1px 0 0}
.fgfenster.fgou .fgknauf{cursor:ns-resize}
.fgfenster.fgou .fgmarke.links{top:8px;bottom:auto}
.fgtrenner{flex:0 0 auto;width:1px;height:14px;margin:0 2px;background:#d3ccc0}
.fgmarke{position:absolute;bottom:8px;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;color:#fff;
  background:rgba(20,14,8,.62);pointer-events:none}
.fgmarke.links{left:8px}
.fgmarke.rechts{right:8px}
.fglive{position:absolute;right:10px;bottom:8px;display:flex;align-items:center;gap:6px;border-radius:999px;padding:3px 10px;
  background:#1f9d55;color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em;pointer-events:none}
.fglive i{display:block;width:7px;height:7px;border-radius:50%;background:#fff}
.fgfuss{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:6px;font-size:12px;opacity:.8}
.fglink{border:0;background:none;padding:0;font:inherit;font-size:12px;color:#7a5a30;text-decoration:underline;cursor:pointer}
.fgchips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}
.fgleise{font-size:12.5px;opacity:.6;margin-right:4px}
.fgchip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 10px;background:rgba(0,0,0,.06);font-size:12.5px}
.fgchip b{font-weight:700}
.fgchip.fg-ok b,.fgliste li.fg-ok::before{color:#1f9d55}
.fgchip.fg-gelb{background:rgba(201,138,0,.14)}
.fgchip.fg-gelb b,.fgliste li.fg-gelb::before{color:#a87300}
.fgchip.fg-rot{background:rgba(214,69,69,.13)}
.fgchip.fg-rot b,.fgliste li.fg-rot::before{color:#c23a3a}
.fgliste{list-style:none;margin:8px 0 0;padding:0;font-size:12.5px}
.fgliste li{position:relative;padding:2px 0 2px 18px}
.fgliste li::before{content:"·";position:absolute;left:4px;font-weight:700;opacity:.6}
.fgliste li.fg-ok::before{content:"✓";left:0;opacity:1}
.fgliste li.fg-gelb::before{content:"!";left:3px;opacity:1}
.fgliste li.fg-rot::before{content:"✖";left:0;opacity:1}
.fgampel{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px}
.fgampel i{display:block;width:11px;height:11px;border-radius:50%;background:#1f9d55;box-shadow:0 0 0 4px rgba(31,157,85,.18)}
.fgampel.a-gelb i{background:#c98a00;box-shadow:0 0 0 4px rgba(201,138,0,.2)}
.fgampel.a-rot i{background:#d64545;box-shadow:0 0 0 4px rgba(214,69,69,.2)}
.fgknoepfe{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.fgknopf{border:0;border-radius:999px;padding:8px 16px;font:inherit;font-size:13px;background:rgba(0,0,0,.07);color:#3b352c;cursor:pointer}
.fgknopf.fgja{background:#2b2722;color:#fbfaf7}
.fgknopf.fgfertig{background:#1f9d55;color:#fff;font-weight:600;cursor:default}
.fgknopf.fgnein{background:rgba(214,69,69,.12);color:#8f2b2b}
.fgknopf:disabled{opacity:.6;cursor:default}
/* Wartet aufs Guthaben des Büros (#260): „Jetzt laufen lassen“ grau, bis aufgeladen ist */
.knopf.wartetguthaben:disabled{opacity:.45;cursor:default}
.fgfrage{font-size:12.5px}
.fgwann{font-size:12px;opacity:.6;margin:6px 0 0}
.fggrund{margin:6px 0 0;font-size:13px}
.fgstand{margin:10px 0 0;font-size:13px}
.fgfehler{margin-top:8px;color:#b03030;font-size:13px}
.fgfehler ul{margin:4px 0 0 18px}
.fgablehnen{margin-top:12px}
.fgablehnen textarea{width:100%;box-sizing:border-box;border:1px solid #d9d2c6;border-radius:10px;padding:8px 10px;
  font:inherit;font-size:13.5px;background:#fff;color:#2c2822;resize:vertical}
.blattinhalt .blase.mitfreigabe,.blase.mitfreigabe{max-width:min(100%,760px)}
@media(max-width:700px){
  .fgfenster{height:240px}
  .fgfenster.handy{height:360px}
  .fgablehnen textarea{font-size:16px}
}

.bildgross{position:fixed;inset:0;background:rgba(20,14,8,.88);z-index:100;display:grid;place-items:center;
  padding:22px;cursor:zoom-out}
.bildgross img{max-width:100%;max-height:100%;border-radius:9px;box-shadow:0 10px 50px rgba(0,0,0,.5)}
.bildgross .zu{position:absolute;top:14px;right:16px;background:rgba(255,255,255,.16);color:#fff;
  font-size:19px;padding:5px 13px}
.bildknopf{display:grid;place-items:center;width:44px;height:44px;flex:0 0 auto;cursor:pointer;
  border:1px solid var(--rand);border-radius:8px;background:var(--karte);font-size:18px}
.bildknopf:hover{background:var(--blau-weich2);border-color:var(--blau)}

/* --- Auswahlliste bei @ --- */
.eingabefeld{position:relative}
/* Dieselbe Liste für die Textbausteine nach „/“ (#1, textbausteine.js) */
.nennliste,.tbliste{display:none;position:absolute;bottom:100%;left:0;right:0;margin-bottom:6px;z-index:20;
  background:var(--karte);border:1px solid var(--rand);border-radius:10px;overflow:hidden;
  box-shadow:0 8px 26px rgba(var(--schatten),.18);max-height:230px;overflow-y:auto}
.nennliste.offen,.tbliste.offen{display:block}
.nenneintrag{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;font-size:14px;
  border-bottom:1px solid var(--rand)}
.nenneintrag:last-child{border-bottom:0}
.nenneintrag:hover,.nenneintrag.aktiv{background:var(--blau-weich2)}
.nenneintrag.aktiv{box-shadow:inset 3px 0 0 var(--blau)}

/* --- Agent denkt nach --- */
.blase.denkt{color:var(--leise);font-style:italic}
.denkpunkte{display:inline-flex;gap:4px;vertical-align:middle;margin-right:4px}
.denkpunkte i{width:6px;height:6px;border-radius:50%;background:var(--blau);display:block;
  animation:huepf 1.1s infinite ease-in-out}
.denkpunkte i:nth-child(2){animation-delay:.15s}
.denkpunkte i:nth-child(3){animation-delay:.3s}
@keyframes huepf{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}

/* --- Rollen --- */
.rollenmarke{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:2px 8px;border-radius:20px;background:rgba(255,255,255,.16);margin-right:6px}
.rollenmarke.admin{background:var(--blau)}
.m-admin{background:var(--blau-weich);color:var(--blau-text2)}
.m-user{background:var(--flaeche2);color:var(--leise)}
@media(max-width:560px){ .rollenmarke{display:none} }
.nurlesen{white-space:pre-wrap;word-break:break-word;background:var(--flaeche2);border:1px solid var(--rand);
  border-radius:9px;padding:12px;font-family:ui-monospace,Menlo,monospace;font-size:13px;max-height:420px;overflow:auto}

/* --- Mehrbenutzer: Anwesenheit --- */
.anwesend{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13.5px;
  background:var(--karte);border:1px solid var(--rand);border-radius:9px;padding:7px 12px;margin-bottom:12px}
.anwesend .punkt{width:8px;height:8px}
.tippt{color:var(--blau);font-style:italic;margin-left:6px;animation:pulsieren 1.4s infinite}
@keyframes pulsieren{0%,100%{opacity:1}50%{opacity:.45}}

/* --- Auswahlkarten in der Konfiguration --- */
.wahl{display:grid;gap:10px}
.wahlkarte{display:flex;gap:11px;align-items:flex-start;border:2px solid var(--rand);border-radius:11px;
  padding:13px 15px;cursor:pointer;background:var(--karte)}
.wahlkarte:hover{border-color:var(--rand2)}
.wahlkarte.an{border-color:var(--blau);background:var(--blau-weich2)}
.wahlkarte input{width:auto;margin-top:3px;flex:0 0 auto;accent-color:var(--blau)}
.wahlkarte b{display:block;margin-bottom:3px}

/* --- Menüleiste: schmal machen und Breite ziehen --- */
.navsymbol{flex:0 0 auto;width:19px;text-align:center;font-size:15px}
.navtext{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ziehgriff{display:none}
/* Kürzel des Agenten – nur in der schmalen Leiste sichtbar */
.agentkuerzel{display:none}

@media(min-width:861px){
  .spalte{position:relative}
  /* Ziehgriff an der rechten Kante der Menüleiste */
  .ziehgriff{display:block;position:absolute;top:0;right:0;bottom:0;width:5px;
    cursor:col-resize;z-index:60;background:transparent}
  .ziehgriff:hover,.ziehgriff.zieht{background:var(--blau)}
  /* zusammengeklappte Leiste: nur noch Symbole */
  .buero.schmal{grid-template-columns:56px 1fr}
  .buero.schmal .spalte{padding:0 4px 14px;align-items:stretch}
  .buero.schmal .navtext{display:none}
  .buero.schmal .navtitel{display:none}
  .buero.schmal .navpunkt,
  .buero.schmal .agentkopf,
  .buero.schmal .notaus{position:relative;justify-content:center;padding-left:0;padding-right:0;gap:0}
  /* eingeklappt: nur das Logo, es wird beim Darüberfahren zum Öffnen-Knopf */
  .buero.schmal .markenblock{margin:0 -4px 8px;padding:0;justify-content:center;gap:0}
  .buero.schmal .markentext,
  .buero.schmal .zuknopf{display:none}
  .buero.schmal .markenknopf{pointer-events:auto;cursor:pointer;border-radius:8px}
  .buero.schmal .markenknopf:hover,
  .buero.schmal .markenknopf:focus-visible{background:rgba(255,255,255,.18)}
  .buero.schmal .markenknopf:hover .markenlogo,
  .buero.schmal .markenknopf:focus-visible .markenlogo{display:none}
  .buero.schmal .markenknopf:hover .markenauf,
  .buero.schmal .markenknopf:focus-visible .markenauf{display:block}
  .buero.schmal .unterpunkte{display:none}
  .buero.schmal .pille{position:absolute;top:1px;right:2px;margin-left:0;padding:0 5px;font-size:10px}
  .buero.schmal .agentkopf .punkt{position:absolute;top:6px;left:6px}
  .buero.schmal .agentkopf span[data-pfeil]{display:none}
  .buero.schmal .agentkuerzel{display:block;font-size:11.5px;font-weight:700;color:#e6edf9;width:34px}
}

/* --- Portraits der Agenten --- */
.portrait{border-radius:8px;display:block;flex:0 0 auto;background:var(--flaeche2);object-fit:cover}
.portrait.mini{width:26px;height:26px;border-radius:6px}
.portrait.winzig{width:20px;height:20px;border-radius:5px;vertical-align:-4px;margin-right:5px;display:inline-block}
.portrait.klein{width:44px;height:44px}
/* großes Bild in voller Kartenform 5:7 – hier wird nichts beschnitten */
.portrait.gross{width:200px;height:280px;border-radius:12px;object-fit:contain;
  box-shadow:0 6px 22px rgba(15,25,45,.18)}
.navbild{position:relative;display:inline-flex;flex:0 0 auto}
.eckpunkt{position:absolute;right:-2px;bottom:-2px;border:2px solid var(--dunkel2)}
.steckbriefreihe{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start}
.portraitfeld{flex:0 0 auto;width:200px}
.farbtupfer{width:26px;height:26px;border-radius:50%;cursor:pointer;border:2px solid var(--karte);
  box-shadow:0 0 0 1px var(--rand2)}   /* rand2: auch helle Töne (Hintergrund, #146) sichtbar */
.farbtupfer:hover{transform:scale(1.12)}
.buero.schmal .portrait.mini{width:30px;height:30px}

/* --- Ältere Nachrichten nachladen --- */
.nachladen{display:flex;align-items:center;justify-content:center;gap:10px;padding:6px 0 12px;
  border-bottom:1px dashed var(--rand);margin-bottom:8px;flex:0 0 auto}
.nachladen .leise{font-size:12.5px}

/* --- Suche im Logbuch --- */
.logsuche{gap:8px;flex-wrap:wrap}
.logsuche input{border-radius:20px;padding-left:14px}
.fehler.hinweiston{color:var(--gelb-text);background:var(--gelb-weich2);border:1px solid var(--gelb-rand);border-radius:8px;
  padding:8px 10px;font-size:13.5px;min-height:0}

/* --- Änderungsliste --- */
.hinweisknopf{position:relative;background:rgba(255,255,255,.15);color:#fff;font-size:15px;
  padding:5px 10px;border-radius:8px;line-height:1}
.hinweisknopf:hover{background:rgba(255,255,255,.3)}
.neuzaehler{position:absolute;top:-5px;right:-5px;background:var(--gelb);color:#fff;
  border-radius:20px;min-width:17px;height:17px;font-size:11px;font-weight:700;
  display:grid;place-items:center;padding:0 4px}
.hinweisschicht{position:fixed;inset:0;background:rgba(10,16,28,.55);z-index:90;
  display:flex;justify-content:flex-end;padding:14px}
.hinweisblatt{background:var(--karte);border-radius:14px;width:min(460px,100%);max-height:100%;
  display:flex;flex-direction:column;box-shadow:0 14px 50px rgba(10,20,40,.35);cursor:default}
.hinweiskopf{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:15px 16px;border-bottom:1px solid var(--rand);flex:0 0 auto}
.hinweisinhalt{overflow-y:auto;padding:6px 16px 16px}
.aenderung{padding:12px 0;border-bottom:1px solid var(--rand)}
.aenderung:last-child{border-bottom:0}
.aenderung.neu{background:var(--gelb-weich2);margin:0 -10px;padding:12px 10px;border-radius:9px}
.aenderung ul{margin:6px 0 0 18px;font-size:14px;line-height:1.5}
.aenderung li{margin-bottom:3px}
@media(max-width:560px){ .hinweisschicht{padding:0} .hinweisblatt{width:100%;border-radius:0} }

/* --- Schalter für das Sprachmodell --- */
.kischalter{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;
  background:rgba(255,255,255,.14);padding:4px 10px 4px 6px;border-radius:20px}
.kischalter.gesperrt{cursor:default;opacity:.7}
.kischalter input{position:absolute;opacity:0;width:0;height:0}
.kischalter .schieber{position:relative;width:34px;height:18px;border-radius:20px;
  background:var(--gruen);transition:background .15s;flex:0 0 auto}
.kischalter .schieber::after{content:"";position:absolute;top:2px;left:18px;width:14px;height:14px;
  border-radius:50%;background:var(--karte);transition:left .15s}
.kischalter.aus .schieber{background:rgba(255,255,255,.35)}
.kischalter.aus .schieber::after{left:2px}
.kitext{font-size:12px;font-weight:700;letter-spacing:.05em;color:#fff}
.kischalter.aus .kitext{opacity:.6}
@media(max-width:560px){ .kitext{display:none} }
tr.freigegeben{background:var(--blau-weich2)}
tr.freigegeben td b{color:var(--blau)}

/* --- Modelltabelle: Eignung --- */
.modelltabelle td.wofuer{max-width:430px}
.faehig{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px}
.kannmarke{background:var(--blau-weich);color:var(--blau-text2);border-radius:20px;padding:1px 8px;font-size:11.5px;font-weight:600}
.kannmarke.nicht{background:var(--rot-weich2);color:var(--rot-text)}
.beschreibung{font-size:12.5px;line-height:1.45}
.warnmarke{display:inline-block;background:var(--gelb-weich);color:var(--gelb-text);border-radius:6px;
  padding:1px 7px;font-size:11.5px;font-weight:600;margin-top:3px}

/* ---------- Schnellfilter für Modelle ---------- */
.schnellfilter{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:8px}
.sftitel{margin-right:2px}
.sfmarke{background:var(--karte);border:1px solid var(--rand);color:var(--text);border-radius:20px;
  padding:5px 11px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;gap:6px;align-items:center}
.sfmarke:hover{border-color:var(--blau);color:var(--blau)}
.sfmarke.an{background:var(--blau);border-color:var(--blau);color:#fff}
.sfmarke.leerlauf{opacity:.45}
.sfmarke.leeren{border-style:dashed;font-weight:500;color:var(--leise)}
.sfzahl{background:var(--marke-zahl);border-radius:20px;padding:0 6px;font-size:11.5px;font-weight:700}
.sfmarke.an .sfzahl{background:var(--marke-zahl-an)}
.sfhinweis{margin:0 0 12px;font-size:13px}

/* ---------- Kleiner Knopf in der Kopfzeile (früher auch hell/dunkel, #32) ---------- */
.kopfknopf{background:rgba(255,255,255,.15);color:#fff;font-size:15px;line-height:1;
  padding:5px 10px;border-radius:8px;flex:0 0 auto}
.kopfknopf:hover{background:rgba(255,255,255,.3)}
.kopfknopf span{display:block;transition:transform .25s}
.kopfknopf:hover span{transform:rotate(-18deg) scale(1.12)}
/* auf der Anmeldeseite gibt es keine Kopfzeile – dort schwebt der Sprachknopf oben rechts */
.kopfknopf.frei{position:fixed;top:14px;right:16px;z-index:5}
@media(max-width:560px){ .kopfknopf{padding:5px 8px} }

/* ---------- Erscheinungsbild des Hauses ---------- */
.markenlogo img,.anmeldelogo img{width:100%;height:100%;object-fit:contain;display:block}
.anmeldelogo{display:inline-grid;place-items:center;width:32px;height:32px;vertical-align:-6px}
.anmeldung h1{display:flex;align-items:center;gap:9px;font-size:24px}
.kopfmarke{display:none;align-items:center;gap:8px}
.kopfmarke .markenlogo{width:22px;height:22px;font-size:17px}
.rollenmarke.inhaber{background:var(--gelb);color:#fff}
.logovorschau{width:88px;height:88px;display:grid;place-items:center;font-size:38px;flex:0 0 auto;
  background:var(--flaeche2);border:1px solid var(--rand);border-radius:12px;overflow:hidden}
.logovorschau img{width:100%;height:100%;object-fit:contain}
.farbvorschlaege{display:flex;gap:6px;flex-wrap:wrap}
/* Farbrad im Erscheinungsbild (#150) – reines CSS, gleich in allen Browsern.
   Rad links, daneben Helligkeit, Vorschau/Code/Standard und der Verlauf.
   Am Telefon rutscht die Seite unter das Rad. */
.farbrad-block{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.farbrad{position:relative;width:170px;height:170px;border-radius:50%;flex:0 0 auto;
  cursor:crosshair;touch-action:none;user-select:none;-webkit-user-select:none;
  background:radial-gradient(closest-side,#fff,rgba(255,255,255,0)),
             conic-gradient(#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00);
  box-shadow:0 0 0 1px var(--rand2)}
.farbrad-dunkel{position:absolute;inset:0;border-radius:50%;background:#000;pointer-events:none}
.farbrad-punkt{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;
  border:3px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.45),0 1px 4px rgba(0,0,0,.4);pointer-events:none}
.farbrad-seite{display:grid;gap:8px;flex:1;min-width:220px}
.farbrad-hell{-webkit-appearance:none;appearance:none;width:100%;max-width:280px;height:14px;
  border-radius:7px;border:1px solid var(--rand2);padding:0;accent-color:auto}
.farbrad-hell::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;
  background:#fff;border:1px solid rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.35);cursor:pointer}
.farbrad-hell::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#fff;
  border:1px solid rgba(0,0,0,.4);cursor:pointer}
.farbrad-vorschau{width:40px;height:40px;border-radius:8px;flex:0 0 auto;box-shadow:0 0 0 1px var(--rand2)}
.farbtupfer.aktiv{box-shadow:0 0 0 2px var(--text)}
@media(max-width:860px){ .kopfmarke{display:flex} }

/* ---------- Chatfarbe je Person ----------
   Die eigenen Nachrichten stehen rechts, die der Kollegen links. Die Farbe
   kommt vom Server, damit alle dieselbe Person in derselben Farbe sehen. */
/* Blasen der anderen: Papier, der Name in ihrer Farbe (#24, wie in Gesprächen #158) –
   --gn/--gn-d setzt namensStil() in app.js, lesbar auf hellem und dunklem Grund. */
.b-andere{align-self:flex-start;background:var(--fremde-blase);color:var(--text);border-bottom-left-radius:4px}
.b-andere .wer{font-weight:700;color:var(--gn,var(--text))}
body[data-blattthema="dunkel"] .blatt .b-andere .wer,
.menuschicht[data-thema="dunkel"] .b-andere .wer{color:var(--gn-d,var(--text))}
.b-andere .zeit{color:inherit}

/* ---------- Suche ---------- */
.trefferliste{display:flex;flex-direction:column;gap:2px}
.treffer{display:flex;gap:12px;padding:11px 10px;border-radius:9px;cursor:pointer;
  border-bottom:1px solid var(--rand)}
.treffer:hover{background:var(--flaeche2)}
.treffer:last-child{border-bottom:0}
.trsymbol{flex:0 0 auto;font-size:19px;width:26px;text-align:center;line-height:1.4}
.trinhalt{flex:1;min-width:0}
.trkopf{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.trtext{font-size:13.5px;color:var(--leise);line-height:1.5;word-break:break-word}
mark{background:var(--gelb-weich);color:var(--gelb-text);border-radius:3px;padding:0 2px}

/* ---------- Add-On Baukasten (#286): Karten als Blatt am Tisch ----------
   Gleiche Papier-Sprache wie die Mediathek (Suchfeld .medsuchfeld, Marken
   .medmarke, Knöpfe .medknopf); eigen sind nur Kachel und Karte. */
.blatt.bkblatt .blattinhalt{padding-top:0}
.bkkopfsymbol{background:#5d5446!important;font-size:17px!important;font-weight:400!important}
.bkfilter{margin-top:2px}
.bkkarten{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));padding-bottom:14px}
.bkkachel{border:1px solid rgba(var(--ton),.08);border-radius:12px;padding:8px 8px 10px;display:flex;flex-direction:column;
  gap:4px;text-align:left;background:var(--karte);cursor:pointer;font:inherit;color:var(--text);min-width:0}
.bkkachel:hover{border-color:rgba(var(--ton),.2);box-shadow:0 4px 14px rgba(40,30,15,.08)}
.bkkachel:focus-visible{outline:2px solid var(--wahl);outline-offset:1px}
.bkkachel.vorlage{border-color:rgba(201,139,75,.55);background:var(--sand-weich)}
.bkbild{position:relative;display:grid;place-items:center;height:118px;border-radius:8px;overflow:hidden;
  background:var(--flaeche2);margin-bottom:4px}
.bkbild img,.bkbild video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.bkbild video{object-fit:cover;background:#2f2b26}
.bkbild i{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;color:#fff;
  font-size:22px;text-shadow:0 1px 6px rgba(0,0,0,.55);pointer-events:none}
.bksymbol{font-size:42px;line-height:1}
.bkart{font-size:11.5px;color:var(--leise2);letter-spacing:.02em}
.bkname{font-size:14px;line-height:1.3}
.bkkurz{font-size:12.5px;line-height:1.4;color:var(--text2);display:-webkit-box;-webkit-line-clamp:3;
  -webkit-box-orient:vertical;overflow:hidden}
.bkstand{font-size:11px;color:var(--leise2);margin-top:auto}
.bkkarte{outline:none;padding:14px 0 18px}
.bkkartegross{max-width:860px}
.bkgross{margin-bottom:12px;border-radius:10px;overflow:hidden;background:var(--flaeche2)}
.bkgross video{display:block;width:100%;max-height:min(40vh,360px);background:#2f2b26}
.bkgross .medgrossbild img{max-height:min(30vh,260px);padding:10px 0}
.bktitelgross{font-family:"Iowan Old Style",Georgia,serif;font-size:21px;line-height:1.25;margin:2px 0 6px;color:var(--text)}
.bkkurzgross{font-size:14px;line-height:1.5;color:var(--tinte);margin-bottom:6px}
.bkworte{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0 4px}
.bkwortmarke{border:0;background:rgba(var(--ton),.05);color:var(--papierleise);border-radius:999px;padding:3px 9px;
  font-size:11.5px;cursor:pointer}
.bkwortmarke:hover{background:rgba(var(--ton),.1)}
.bkanweisung{margin:14px 0 6px;padding:12px 14px;border-radius:12px;background:var(--sand-weich);
  border:1px solid rgba(201,139,75,.45)}
.bkanweisungkopf{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
.bkanweisungtext{margin:8px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;max-height:340px;overflow:auto;
  font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--feld);border-radius:8px;padding:10px 12px;
  border:1px solid rgba(var(--ton),.06);color:var(--text)}
.bkabschnitt{margin-top:16px}
.bkabschnitt h3{font-size:14.5px;margin:0 0 6px;color:var(--tinte);display:flex;align-items:center;gap:8px}
.bkabschnitt .bmd{font-size:13.5px;line-height:1.5;color:var(--text)}
.bkabschnitt .bmd ul,.bkabschnitt .bmd ol{margin:0 0 .7em 1.3em}
.bkabschnitt .bmd code{font-size:12px;background:rgba(var(--ton),.05);border-radius:4px;padding:0 3px}
.bkdateien{display:flex;flex-direction:column;gap:4px}
.bkdatei{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;background:rgba(var(--ton),.03)}
.bkdateiname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text)}
.bkdatei a.medknopf{text-decoration:none;color:inherit}
/* Stufe 2: Knöpfe an der Karte, Formular, Fassungen, Papierkorb */
.bkaktionen{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 2px}
.bkdateiname.bknormal{font-family:inherit;font-size:13.5px}
.bkdatei button:disabled,.bkefuss button:disabled{opacity:.45;cursor:default}
.bkeditor,.bkauftrag{display:flex;flex-direction:column;gap:12px;max-width:860px}
.bkeditor .bktitelgross,.bkauftrag .bktitelgross{margin-bottom:0}
.bkereihe{display:flex;flex-wrap:wrap;gap:12px}
.bkereihe > *{flex:1 1 220px;min-width:0}
.bkefeld{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--papierleise)}
.bkefeld[hidden],.bkebausteine[hidden],.bkedokument[hidden]{display:none}
.bkeditor input:not([type=checkbox]):not([type=radio]),.bkeditor select,.bkeditor textarea,
.bkauftrag input:not([type=checkbox]):not([type=radio]),.bkauftrag textarea{width:100%;
  box-sizing:border-box;border:1px solid rgba(var(--ton),.14);border-radius:10px;padding:8px 11px;font:inherit;
  font-size:14px;color:var(--text);background:var(--feld);margin:0;min-height:0}
.bkeditor input:focus,.bkeditor select:focus,.bkeditor textarea:focus,
.bkauftrag input:focus,.bkauftrag textarea:focus{border-color:rgba(var(--ton),.32);outline:none}
.bkeditor textarea,.bkauftrag textarea{resize:vertical;line-height:1.45}
.bkeditor .bkecode{font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.bkeditor fieldset,.bkauftrag fieldset{border:1px solid rgba(var(--ton),.1);border-radius:12px;padding:8px 12px 10px;margin:0;min-width:0}
.bkeditor legend{font-size:12.5px;color:var(--papierleise);padding:0 4px}
.bkebausteine{display:flex;flex-direction:column;gap:8px}
.bkedokument{display:flex;flex-direction:column;gap:8px}   /* Dokumentvorlage (#401 Stufe 2) */
.bkegruppe{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center}
.bkegruppe .bkart{flex-basis:100%}
.bkewahl{font-size:13px;color:var(--text);display:inline-flex;gap:5px;align-items:center}
.bkeueber{font-size:14.5px;margin:6px 0 -6px;color:var(--tinte)}
.bketeile{display:flex;flex-direction:column;gap:10px}
.bketeil{border:1px solid rgba(var(--ton),.08);border-radius:12px;padding:10px;background:var(--karte);display:flex;
  flex-direction:column;gap:6px}
.bketeil.anweisung{background:var(--sand-weich);border-color:rgba(201,139,75,.45)}
.bketeilkopf{display:flex;gap:8px;align-items:center}
.bketeilkopf input{flex:1}
.bketeilkopf b{flex:1;font-size:14px;color:var(--text)}
.bketeilknoepfe{display:flex;gap:4px;flex:none}
.bketeilknoepfe button{border:0;background:rgba(var(--ton),.06);border-radius:8px;width:30px;height:30px;
  cursor:pointer;color:var(--tinte);font-size:14px;padding:0}
.bketeilknoepfe button:hover:not(:disabled){background:rgba(var(--ton),.12)}
.bketeilknoepfe button:disabled{opacity:.3;cursor:default}
.bkeknoepfe{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:4px}
/* Bis an den unteren Rand (über den Innenabstand von .blattinhalt) – sonst schaut Text darunter hervor */
.bkefuss{position:sticky;bottom:-16px;z-index:1;display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  justify-content:flex-end;padding:10px 0 26px;margin-bottom:-16px;background:var(--bg);border-top:1px solid rgba(var(--ton),.06)}
.bkemeldung{margin-right:auto;font-size:12.5px;color:var(--papierleise)}
.bkemt:empty{display:none}
.bkemtkasten{border:1px solid rgba(var(--ton),.1);border-radius:12px;padding:10px;display:flex;flex-direction:column;
  gap:8px;background:var(--karte)}
.bkemtliste{max-height:300px;overflow:auto}
.bkemtkasten .medsuchfeld{flex:none}   /* sonst wird flex-basis 180px der Mediathek-Leiste hier zur Höhe */
.bkfassungen{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.bkfassung{display:flex;flex-direction:column;gap:2px;text-align:left;border:1px solid rgba(var(--ton),.08);
  border-radius:10px;padding:8px 12px;background:var(--karte);font:inherit;color:var(--text);cursor:pointer}
.bkfassung.jetzt{cursor:default;background:var(--meldung-ok-bg);border-color:var(--ok-rand)}
.bkfassung:not(.jetzt):hover{border-color:rgba(var(--ton),.2)}
/* Stufe 3: Auftrag holen – Formular wie beim Bearbeiten; je Zeile der Anweisung
   mit Lücken ein Kasten (die Zeile zum Einordnen, darunter die Felder) */
.bkschritte{margin:0;padding-left:1.4em;font-size:13.5px;line-height:1.55;color:var(--tinte)}
.bkluecken{display:flex;flex-direction:column;gap:10px}
.bkzeile{border:1px solid rgba(var(--ton),.08);border-radius:12px;padding:10px 12px;background:var(--karte);display:flex;
  flex-direction:column;gap:8px}
.bkzusammenhang{margin:0;font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text2);
  white-space:pre-wrap;overflow-wrap:anywhere}
.bkwahl{display:flex;flex-wrap:wrap;gap:5px;margin-top:-4px}
.bkweitere{margin-top:4px}
.bkweitere summary{cursor:pointer;font-size:13px;color:var(--tinte);padding:4px 0}
.bkweitere .bkegruppe{margin-top:8px}
.bkauftrag .bkebausteine{gap:6px}
.bkalsvorlage{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:8px 0 0}   /* #292 */
@media (max-width:700px){
  #tischbaukasten .wzw{display:none}
  /* Filter in einer Zeile zum Wischen – sonst füllen sie den halben Schirm */
  .bkblatt .bkfilter{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-18px;padding-right:18px}
  .bkblatt .bkfilter::-webkit-scrollbar{display:none}
  .bkblatt .bkfilter .medmarke{flex:none}
  .bkkarten{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .bkbild{height:96px}
}

/* ---------- Mediathek als Blatt am Tisch (#196) ----------
   Gleiche Sprache wie das Such-Blatt: Papier, runde Marken, oben eine Leiste,
   die beim Rollen stehen bleibt (Suchfeld, Hochladen, Ordnung, Ansicht). Die
   Farben kommen aus der Papier-Palette von .blatt – auch im dunklen Anstrich. */
.blatt.medblatt .blattinhalt{padding-top:0}
.medkopfsymbol{background:#4f5d6b!important;font-size:17px!important;font-weight:400!important}
.mednachladen{font-size:15px!important}
.mednachladen.dreht{animation:meddreht 1s linear infinite}
@keyframes meddreht{to{transform:rotate(360deg)}}
.medoben{position:sticky;top:0;z-index:2;display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  margin:0 -18px;padding:14px 18px 8px;background:var(--bg)}
.medsuchfeld{flex:1 1 180px;min-width:0;border:1px solid rgba(var(--ton),.14);border-radius:999px;
  padding:8px 15px;font-size:14.5px;background:var(--feld);color:var(--text);outline:none;min-height:0;
  font-family:inherit;margin:0}
.medsuchfeld:focus{border-color:rgba(var(--ton),.32)}
.medsuchfeld[hidden],.medfilterknopf[hidden]{display:none}
.medfilterknopf{display:none;border:0;border-radius:999px;padding:7px 12px;font-size:12.5px;cursor:pointer;
  background:rgba(var(--ton),.06);color:var(--tinte);white-space:nowrap}
.medfilterknopf.an{background:var(--tinte);color:var(--tinte-auf)}
.medwerkzeug{display:flex;gap:8px;align-items:center;margin-left:auto;flex-wrap:wrap}
.medwerkzeug:empty{display:none}
.medwahl{width:auto!important;font-size:12.5px;padding:4px 8px;border-radius:8px;margin:0;
  border:1px solid rgba(var(--ton),.14);background:var(--feld);color:var(--text);--pfeilrand:8px}
.medansichten{display:inline-flex;background:rgba(var(--ton),.06);border-radius:999px;padding:2px;gap:2px}
.medansicht{border:0;background:transparent;border-radius:999px;width:32px;height:28px;cursor:pointer;
  font-size:15px;line-height:1;color:var(--tinte);padding:0}
.medansicht.an{background:var(--knopf-an);box-shadow:0 1px 3px rgba(0,0,0,.16)}
.medfilterbereich.zu{display:none}
.medquellen{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 8px}
.medquellen:empty{display:none}
.medmarke{border:0;border-radius:999px;padding:6px 12px;font-size:12.5px;cursor:pointer;
  background:rgba(var(--ton),.06);color:var(--tinte);display:inline-flex;align-items:center;gap:5px}
.medmarke:hover{background:rgba(var(--ton),.12)}
.medmarke span{font-size:11px;background:rgba(var(--ton),.08);border-radius:999px;padding:1px 7px;
  font-variant-numeric:tabular-nums}
.medmarke.an{background:var(--tinte);color:var(--tinte-auf)}
.medmarke.an span{background:rgba(var(--ton-gegen),.22)}
.medmarke.klein{padding:4px 10px;font-size:12px}
.medfilter{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:6px}
.medfilter:empty{display:none}
.medmarken{display:flex;flex-wrap:wrap;gap:6px}
.medagentwahl{font-size:12.5px;color:var(--papierleise);display:inline-flex;align-items:center;gap:6px}
.medhinweis{font-size:12.5px;color:var(--leise2);line-height:1.45;margin:2px 2px 10px}
.medhinweis:empty{display:none}
.medmeldung{font-size:13px;margin:4px 2px 10px;padding:7px 11px;border-radius:10px;background:var(--meldung-ok-bg);color:var(--meldung-ok-text)}
.medmeldung.laeuft{background:rgba(var(--ton),.05);color:var(--papierleise)}
.medmeldung.fehler{background:var(--meldung-fehler-bg);color:var(--meldung-fehler-text)}
.medmeldung.bkevorschlag{background:var(--gelb-weich);color:var(--gelb-text)}   /* #401 Stufe 3 */
.medinhalt{padding-bottom:12px;transition:opacity .2s}
.medinhalt.laeuft{opacity:.5}
.medzahl{font-size:12px;color:var(--leise2);margin:0 2px 8px}
.medleer{padding:22px 4px 10px}
.medleer .medknopf{margin-top:12px}
.medklein{font-size:11.5px;color:var(--leise2);line-height:1.4}
.medname{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.medname mark,.medgrossname mark{background:rgba(255,196,0,.38);color:inherit;border-radius:3px;padding:0 1px}
.medsymbol{font-size:40px;line-height:1}
/* Video als Standbild mit ▶ (#230) – in Kachel, Liste und Tabelle */
.medvideo{position:relative;display:block;width:100%;height:100%}
.medvideo img{width:100%;height:100%;object-fit:cover;display:block}
.medvideo i{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;color:#fff;
  font-size:22px;text-shadow:0 1px 6px rgba(0,0,0,.55)}
.medsymbol.klein{font-size:19px}
.medsymbol.riesig{font-size:84px}
/* Gliederung: Monate oder Vorgänge */
.medmonat{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:14px 2px 8px;
  font-family:"Iowan Old Style",Georgia,serif;font-size:15px;font-weight:600;color:var(--tinte)}
.medmonat:first-child{margin-top:4px}
.medvorgangwer{font-family:inherit;font-size:12px;font-weight:400;color:var(--leise2)}
.medmonatzahl{font-family:-apple-system,system-ui,sans-serif;font-size:11px;font-weight:400;
  background:rgba(var(--ton),.06);border-radius:999px;padding:1px 7px;color:var(--papierleise)}
.medmonat .medwoher{font-family:-apple-system,system-ui,sans-serif;font-size:12px;font-weight:400;margin-left:auto}
.medmehr{display:block;margin:12px auto 0;border:1px dashed rgba(var(--ton),.2);background:transparent;
  border-radius:999px;padding:7px 16px;font-size:12.5px;cursor:pointer;color:var(--tinte)}
.medmehr:hover{background:rgba(var(--ton),.05)}
/* Kacheln: nur Bild und Name – alles Weitere in der großen Ansicht */
.medkacheln{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
/* Galerie (#230): Zeilen wie im Fotoalbum. Jedes Bild wächst im Verhältnis
   seines Formats (--v = Breite/Höhe) – so bleiben alle Bilder einer Zeile
   gleich hoch; ::after schluckt den Rest der letzten Zeile. Wachsen höchstens
   2-fach: weniger ließ am Telefon rechts Lücken (gemessen, Prüfung #230). */
.medgalerie{display:flex;flex-wrap:wrap;gap:6px;--zeile:190px}
.medgalerie::after{content:"";flex-grow:1000000}
.medgbild{position:relative;flex:var(--v) 1 calc(var(--v) * var(--zeile));
  max-width:calc(var(--v) * var(--zeile) * 2);padding:0;border:0;border-radius:8px;
  overflow:hidden;background:var(--flaeche2);cursor:pointer;font:inherit}
.medgbild img{display:block;width:100%;aspect-ratio:var(--v);object-fit:cover}
.medgbild.film{background:#2f2b26}
.medgbild.ohnemass img{object-fit:contain}   /* Maße unbekannt: ganz zeigen statt beschneiden */
.medgbild .medgplay{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;
  color:#fff;font-size:26px;text-shadow:0 1px 6px rgba(0,0,0,.55)}
.medgbild:hover img{filter:brightness(1.06)}
.medgbild:focus-visible{outline:2px solid var(--wahl);outline-offset:2px}
.medgalerieandere{margin:12px 2px 0;font-size:12px;text-align:center}
/* Stapel „Vorlage + Fassungen“ (#230 Stufe 4): Zahl oben rechts (unten rechts sitzt das Schloss), eine Karte
   dahinter angedeutet (innen, damit die Zeilen gleich hoch bleiben) */
.medgbild.stapel::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 0 0 3px rgba(255,255,255,.85),inset 0 0 0 4px rgba(0,0,0,.18)}
.medgbild .medgstapel{position:absolute;right:6px;top:6px;padding:2px 8px;border-radius:10px;font-style:normal;
  background:rgba(20,16,12,.72);color:#fff;font-size:12px;line-height:1.5;pointer-events:none}
.medgbild .medgvorlage{position:absolute;left:6px;top:6px;padding:1px 7px;border-radius:6px;font-style:normal;
  background:rgba(255,255,255,.92);color:#3a3128;font-size:11px;font-weight:600;line-height:1.6;pointer-events:none}
.medstapelkopf{margin-top:14px}
.medstapelkopf + .medgalerie{padding:8px;border-radius:12px;background:rgba(201,139,75,.08);margin-bottom:10px}

/* Vollfläche (#230 Stufe 3, vollflaeche.js): dunkel über dem ganzen Schirm.
   Über den Blättern (die steigen beim Nach-vorn-Holen immer höher), unter dem
   Bildvergleich (⇆ öffnet ihn darüber). Sichere Ränder fürs iPhone. */
/* Immer dunkel: warmes Fast-Schwarz und warmes Weiß wie die dunklen Blätter
   (#330 – vorher kühl mit Blaustich); ebenso Bildvergleich und „Ganz groß“. */
.medvoll{position:fixed;inset:0;height:100dvh;z-index:99000;display:flex;flex-direction:column;
  background:rgba(12,10,8,var(--mvdeck,1));color:#f2eee8;font-size:14px;outline:none;overscroll-behavior:contain;
  padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) var(--sicher-unten,env(safe-area-inset-bottom,0px))
    env(safe-area-inset-left,0px)}
.mvkopf{display:flex;align-items:center;gap:10px;padding:8px 10px 8px 16px;min-height:56px;flex:0 0 auto}
.mvpos{opacity:.6;font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums}
.mvname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.mvknoepfe{display:flex;gap:4px;flex:0 0 auto}
.mvknopf{display:inline-grid;place-items:center;min-width:40px;height:40px;padding:0 10px;border:0;border-radius:10px;
  background:rgba(255,255,255,.08);color:inherit;font:inherit;font-size:17px;line-height:1;cursor:pointer;text-decoration:none}
.mvknopf:hover{background:rgba(255,255,255,.18)}
.mvknopf.an,.mvknopf.haupt{background:#f2eee8;color:#1c1b19}
.medvoll :focus-visible{outline:2px solid var(--wahl);outline-offset:2px}
.mvbuehne{position:relative;flex:1;min-height:0;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
.medvoll.gezoomt .mvbuehne{cursor:grab}
.medvoll.gezoomt .mvbuehne:active{cursor:grabbing}
.mvzoom{position:absolute;left:50%;top:50%;width:100%;height:100%;transform:translate(-50%,-50%);transform-origin:50% 50%}
.mvzoom.federt{transition:transform .22s ease}
/* Diashow (#230 Stufe 4): das alte Bild verblasst über dem neuen; Kopf,
   Streifen und Pfeile treten zurück (jede Berührung holt sie wieder) */
.mvalt{pointer-events:none;transition:opacity .8s ease}
.mvalt.weg{opacity:0}
.mvkopf,.mvstreifen,.mvpfeil{transition:opacity .4s ease}
.medvoll.show .mvkopf,.medvoll.show .mvstreifen,.medvoll.show .mvpfeil,.medvoll.show .mvstufe{opacity:0;pointer-events:none}
.medvoll.show .mvbuehne{cursor:none}
.mvzoom img,.mvzoom video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;-webkit-user-drag:none}
.mvzoom img{pointer-events:none}
.mvzoom .mvbild{opacity:0;transition:opacity .15s}
.mvzoom.geladen .mvbild{opacity:1}
.mvzoom.geladen .mvvor,.mvzoom .mvvor.weg{visibility:hidden}
.mvzoom video{background:#000}
.mvpfeil{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:72px;border:0;border-radius:12px;
  background:rgba(0,0,0,.35);color:#fff;font-size:30px;line-height:1;cursor:pointer;opacity:.55}
.mvpfeil:hover,.mvpfeil:focus-visible{opacity:1}
.mvpfeil[disabled]{display:none}
.mvlinks{left:10px}.mvrechts{right:10px}
@media (hover:none){ .mvpfeil{display:none} }   /* Finger wischen */
.mvstufe{position:absolute;left:50%;top:10px;transform:translateX(-50%);border:0;border-radius:14px;padding:5px 12px;
  background:rgba(0,0,0,.6);color:#fff;font:inherit;font-size:13px;cursor:pointer}
.mvangaben{position:absolute;top:0;right:0;bottom:0;width:min(340px,100%);overflow:auto;padding:14px 16px;
  background:rgba(28,27,25,.96);border-left:1px solid rgba(255,255,255,.1);touch-action:pan-y;
  user-select:text;-webkit-user-select:text;overscroll-behavior:contain}
.mvangaben h3{margin:0 0 12px;font-size:15px;overflow-wrap:anywhere}
.mvangaben .medsteckbrief dt,.mvangaben .medexif dt{color:rgba(242,238,232,.55)}
.mvangaben .medwoher{color:#e0a86c}
.mvangaben .mvverwalten{height:auto;min-height:40px;padding:8px 14px;margin-top:4px;font-size:14px;text-align:left}
.mvangaben .medexifort{background:rgba(255,196,80,.12);color:#ffd9a0;border-color:rgba(255,196,80,.3)}
.mvmeldung{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 28px)}
.mvmeldung p,.mvfrage{margin:0;padding:10px 14px;border-radius:12px;background:rgba(38,37,34,.95);
  box-shadow:0 6px 24px rgba(0,0,0,.45);text-align:center}
.mvfrage p{margin:0 0 10px}
.mvfrage div{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.mvfrage .mvknopf{font-size:14px}
.mvstreifen{position:relative;display:flex;gap:4px;overflow-x:auto;flex:0 0 auto;scroll-snap-type:x mandatory;
  padding:8px 12px;scrollbar-width:none;overscroll-behavior-x:contain}
.mvstreifen[hidden]{display:none}     /* eine einzige Datei: kein Streifen */
.mvstreifen::-webkit-scrollbar{display:none}
.mvklein{position:relative;flex:0 0 52px;height:52px;padding:0;border:0;border-radius:6px;overflow:hidden;
  background:#2f2d2a;opacity:.5;cursor:pointer;scroll-snap-align:center}
.mvklein:hover{opacity:.85}
.mvklein.an{opacity:1;box-shadow:inset 0 0 0 2px #fff}
.mvklein img{display:block;width:100%;height:100%;object-fit:cover}
.mvklein.an img{padding:2px;border-radius:6px}
.mvklein.weg img{display:none}
.mvklein.film::after{content:"▶";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:13px;
  text-shadow:0 1px 3px rgba(0,0,0,.7)}
@media (max-width:700px){
  .mvkopf{padding:6px 8px 6px 12px;gap:8px;min-height:50px}
  .mvknopf{min-width:36px;height:36px;padding:0 8px;font-size:16px}
  .mvklein{flex-basis:44px;height:44px}
  .mvangaben{top:auto;left:0;width:auto;max-height:60%;border-left:0;border-top:1px solid rgba(255,255,255,.12);
    border-radius:14px 14px 0 0}
}
.medkachel{border:1px solid rgba(var(--ton),.08);border-radius:12px;padding:7px;display:flex;
  flex-direction:column;gap:2px;background:var(--karte);overflow:hidden;min-width:0;text-align:left;
  cursor:pointer;font:inherit;color:inherit}
.medkachel:hover{border-color:rgba(var(--ton),.2);box-shadow:0 4px 14px rgba(40,30,15,.08)}
.medkachel:focus-visible,.medzeile:focus-visible{outline:2px solid var(--wahl);outline-offset:1px}
.medbild{position:relative;height:118px;display:grid;place-items:center;background:var(--flaeche2);
  border-radius:8px;overflow:hidden;margin-bottom:4px;width:100%}
.medkachel.film .medbild{background:#2f2b26}
.medbild img{width:100%;height:100%;object-fit:cover;display:block}
.medschlossmarke{position:absolute;right:5px;bottom:5px;font-style:normal;font-size:12px;
  background:rgba(255,255,255,.85);border-radius:999px;padding:1px 5px}
/* Schild „In Benutzung“ (#275): Avatar, Hintergrund, Eingang, Logo – eine Zeile, Rest im Tooltip */
.medschild{display:block;max-width:100%;margin-top:3px;font-size:11px;line-height:1.35;color:var(--text2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.medtname .medschild{display:inline;margin:0 0 0 6px}
/* Liste: eine Zeile je Datei, der Name darf umbrechen (#147) */
.medzeilen{display:flex;flex-direction:column;gap:6px}
.medzeile{display:flex;align-items:center;gap:11px;padding:8px 10px;border:1px solid rgba(var(--ton),.08);
  border-radius:12px;background:var(--karte);width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer}
.medzeile:hover{border-color:rgba(var(--ton),.2)}
.medzeilebild{flex:0 0 auto;width:44px;height:44px;border-radius:8px;overflow:hidden;
  background:var(--flaeche2);display:grid;place-items:center}
.medzeilebild img{width:100%;height:100%;object-fit:cover;display:block}
.medzeiletext{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.medzeiletext .medname{white-space:normal;overflow-wrap:anywhere}
.medzeilemass{flex:0 0 auto;text-align:right;white-space:nowrap}
/* Details: Tabelle mit Spalten (#229) – lieber seitwärts schieben als quetschen */
.medtabellehuelle{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid rgba(var(--ton),.08);
  border-radius:12px;background:var(--karte)}
.medtabelle{width:100%;min-width:520px;border-collapse:collapse;font-size:12.5px}
.medtabelle th,.medtabelle td{padding:6px 8px;text-align:left;border-bottom:1px solid rgba(var(--ton),.06);vertical-align:middle}
.medtabelle thead th{font-weight:600;color:var(--papierleise);white-space:nowrap;background:var(--tabellenkopf)}
.medspalte{border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer}
.medspalte:hover,.medspalte.an{color:var(--tinte)}
.medtabelle td{color:var(--papierleise)}
.medtzeile{cursor:pointer}
.medtzeile:hover{background:rgba(var(--ton),.03)}
.medtzeile.hervor{background:rgba(201,139,75,.12)}
.medtbild{width:34px}
.medtbild img,.medtbild .medsymbol{width:30px;height:30px;border-radius:6px;object-fit:cover;display:grid;place-items:center}
.medtname{min-width:160px}
.medtnamek{border:0;background:none;padding:0;font:inherit;font-weight:600;color:var(--tinte);text-align:left;
  cursor:pointer;overflow-wrap:anywhere}
.medtnamek:focus-visible{outline:2px solid var(--wahl);outline-offset:2px}
.medtzahl,.medtzeit{white-space:nowrap}
.medtkurz{display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.medtgruppe th{background:var(--tabellenkopf);padding:8px}
.medtgruppe .medmonat{margin:0}
.medunsichtbar{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.medkorbzeile{cursor:default;flex-wrap:wrap}
.medkorbzeile .medzeiletext{flex:1 1 220px}
.medkorbkopf{display:flex;justify-content:flex-end;margin-bottom:8px}
/* Unten: Aus dem Büro (im Raum) und das Seltene */
.medbuerogruppe{margin:14px 0 4px;border-top:1px solid rgba(var(--ton),.08);padding-top:10px}
.medbuerogruppe summary{cursor:pointer;font-size:13px;color:var(--papierleise);margin-bottom:10px}
.medbuerogruppe summary span{font-size:11px;background:rgba(var(--ton),.06);border-radius:999px;padding:1px 7px}
.medseltenes{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;font-size:12px;color:var(--leise2);
  margin:14px 2px 6px}
.medseltenes:empty{display:none}
.medleise{border:0;background:none;padding:0;font:inherit;color:var(--leise2);cursor:pointer;text-decoration:underline;
  text-decoration-color:rgba(var(--ton),.2);text-underline-offset:3px}
.medleise:hover{color:var(--tinte)}
/* Knöpfe */
.medwoher{border:0;background:none;padding:0;font:inherit;color:var(--warm);cursor:pointer;text-align:left}
.medwoher:hover{text-decoration:underline}
.medknoepfe{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}
.medknopf{border:0;border-radius:999px;padding:6px 12px;font-size:12.5px;cursor:pointer;
  background:rgba(var(--ton),.06);color:var(--tinte);white-space:nowrap;text-decoration:none;display:inline-flex;
  align-items:center;gap:4px;font-family:inherit;line-height:1.3}
.medknopf:hover{background:rgba(var(--ton),.12)}
.medknopf.haupt{background:var(--tinte);color:var(--tinte-auf)}
.medknopf.haupt:hover{background:var(--tinte-hover)}
.medknopf.rot{background:rgba(178,52,40,.1);color:#9b2c20}
.medknopf.rot:hover{background:rgba(178,52,40,.18)}
.medhochknopf{padding:5px 12px}
/* Mehrfachauswahl (#225): In der Auswahl trägt jede Datei oben links einen
   Kreis, gewählt gefüllt in der Signalfarbe mit ✓ (echte Häkchen sind
   Signalfarbe, #107). Nur Klassen am Inhalt – das HTML der Liste bleibt.
   Die Leiste steht unten im Blatt und bleibt beim Rollen stehen. */
.medwaehlknopf{padding:5px 12px}
.medinhalt.waehlt .medkachel,.medinhalt.waehlt .medzeile,.medinhalt.waehlt .medtzeile .medtbild{position:relative}
.medinhalt.waehlt .medkachel::before,.medinhalt.waehlt .medgbild::before,.medinhalt.waehlt .medzeile::before,
.medinhalt.waehlt .medtzeile .medtbild::before{content:"";position:absolute;top:8px;left:8px;z-index:3;
  width:24px;height:24px;box-sizing:border-box;border-radius:50%;border:2px solid #fff;
  background:rgba(38,34,29,.3);box-shadow:0 1px 4px rgba(0,0,0,.35);pointer-events:none;
  color:#fff;font:700 13px/20px system-ui,-apple-system,sans-serif;text-align:center}
.medinhalt.waehlt .medtzeile .medtbild::before{top:1px;left:1px;width:20px;height:20px;font-size:11px;line-height:16px}
.medinhalt.waehlt .medkachel.gewaehlt::before,.medinhalt.waehlt .medgbild.gewaehlt::before,
.medinhalt.waehlt .medzeile.gewaehlt::before,.medinhalt.waehlt .medtzeile.gewaehlt .medtbild::before{
  content:"✓";background:var(--signal)}
.medinhalt.waehlt .medkachel.gewaehlt,.medinhalt.waehlt .medzeile.gewaehlt{border-color:var(--signal);
  box-shadow:0 0 0 2px var(--signal)}
.medinhalt.waehlt .medgbild.gewaehlt{outline:3px solid var(--signal);outline-offset:-3px}
.medinhalt.waehlt .medgbild .medgvorlage{left:38px}
.medinhalt.waehlt .medtzeile.gewaehlt td{background:var(--signal-weich)}
.medwahlleiste{position:sticky;bottom:0;z-index:3;margin:14px -18px -16px;
  padding:10px 18px calc(12px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));
  background:var(--bg);border-top:1px solid rgba(var(--ton),.1);box-shadow:0 -6px 18px rgba(40,30,15,.08)}
.medwahlleiste[hidden]{display:none}
/* Auch bei wenigen Dateien ganz unten (wie im Fotoalbum), nicht mitten im Blatt */
.medgeruest:has(> .medwahlleiste:not([hidden])){display:flex;flex-direction:column;min-height:100%}
.medgeruest:has(> .medwahlleiste:not([hidden])) > .medwahlleiste{margin-top:auto}
.blatt:has(.medwahlleiste:not([hidden])) .blattscroll{display:none!important}
.medwahloben .medfrage,.medwahloben .medmeldung{margin:0 0 10px}
.medwahlhinweis{margin:0 0 8px;font-size:13px;color:var(--papierleise)}
.medwahlknoepfe{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.medwahlknoepfe .medknopf[disabled]{opacity:.45;cursor:default}
@media (max-width:700px){
  .medwahlknoepfe .medknopf{flex:1 1 auto;justify-content:center}
}
/* Eine Datei groß im Blatt */
.meddatei{outline:none;padding:12px 0 16px}
.meddateikopf{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.medpos{margin-left:auto;font-size:12px;color:var(--leise2);font-variant-numeric:tabular-nums}
.medblaettern{border:0;border-radius:999px;width:34px;height:34px;cursor:pointer;font-size:19px;line-height:1;
  background:rgba(var(--ton),.06);color:var(--tinte)}
.medblaettern:hover:not(:disabled){background:rgba(var(--ton),.12)}
.medblaettern:disabled{opacity:.3;cursor:default}
.medgross{display:grid;place-items:center;background:var(--flaeche2);border-radius:12px;min-height:180px;
  max-height:min(60vh,520px);overflow:hidden;touch-action:pan-y}
.medgross video{max-width:100%;max-height:min(60vh,520px);display:block}
.medgrossbild{border:0;padding:0;background:none;cursor:zoom-in;display:block;width:100%;height:100%}
.medgrossbild img{max-width:100%;max-height:min(60vh,520px);object-fit:contain;display:block;margin:0 auto}
.medgrossname{font-family:"Iowan Old Style",Georgia,serif;font-size:19px;font-weight:600;margin:14px 2px 8px;
  overflow-wrap:anywhere;color:var(--text)}
.medsteckbrief,.medexif{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:0 2px 10px;font-size:13px}
.medsteckbrief dt,.medexif dt{color:var(--leise2)}
.medsteckbrief dd,.medexif dd{margin:0;min-width:0;overflow-wrap:anywhere}
.medkamera:empty{display:none}
.medkamera{border-top:1px solid rgba(var(--ton),.07);padding-top:10px;margin-bottom:10px}
.medexifort{margin:8px 2px;padding:7px 10px;border-radius:8px;font-size:13px;
  background:var(--gelb-weich);color:var(--gelb-text);border:1px solid var(--gelb-rand)}
.medexifort a{color:inherit;margin-left:6px}
.medaktionen{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;align-items:center}
/* „Wo wird die Datei benutzt?“ (#236): zum Aufklappen, je Stelle eine Zeile –
   mit einem Ort am Tisch als Knopf dorthin (auch in der Rückfrage beim Löschen) */
.medwo:empty{display:none}
.medwo{border-top:1px solid rgba(var(--ton),.07);padding-top:8px;margin:0 2px 10px}
.medwoknopf{border:0;background:none;padding:2px 0;font:inherit;font-size:13px;color:var(--warm);cursor:pointer;text-align:left}
.medwoknopf:hover{text-decoration:underline}
.medwoinhalt{margin-top:6px}
.medwoliste{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.medwozeile{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box;padding:6px 8px;
  border:0;border-radius:8px;background:rgba(var(--ton),.035);color:inherit;font:inherit;font-size:13px;
  line-height:1.4;text-align:left}
button.medwozeile{cursor:pointer}
button.medwozeile:hover{background:var(--warm-hauch)}
.medwozeichen{flex:none;width:1.4em;text-align:center}
.medwotext{flex:1;min-width:0;overflow-wrap:anywhere;display:flex;flex-direction:column;gap:1px}
.medwopfeil{flex:none;color:var(--warm);font-weight:600}
.medfrage .medwoliste{margin:0}
.mvangaben .medwo{border-top-color:rgba(255,255,255,.12);margin:4px 0 10px}
.mvangaben .medwoknopf,.mvangaben .medwopfeil{color:#e0a86c}
.mvangaben .medwozeile{background:rgba(255,255,255,.06)}
.mvangaben button.medwozeile:hover{background:rgba(224,168,108,.16)}
.mvangaben .medklein{color:rgba(242,238,232,.6)}
.medschutz{cursor:help;font-size:14px;opacity:.7}
/* Rückfrage im Blatt (statt eines Fensters des Browsers) */
.medfrage{background:var(--karte);border:1px solid rgba(var(--ton),.12);border-radius:12px;padding:12px 14px;margin:8px 0 12px;
  box-shadow:0 6px 20px rgba(40,30,15,.08);font-size:13.5px;display:flex;flex-direction:column;gap:8px}
.medfrage p{margin:0;line-height:1.45}
.medfrage label{display:flex;flex-direction:column;gap:5px;font-size:13px}
.medfeld{border:1px solid rgba(var(--ton),.16);border-radius:9px;padding:8px 11px;font-size:14px;font-family:inherit;
  background:var(--bg);color:var(--text);margin:0}
.medfrageknoepfe{display:flex;gap:8px;flex-wrap:wrap}
.medkorbkopf .medfrage{margin:0;flex:1}
/* Anstelle eines gelöschten Bildes – überall, wo es gezeigt wurde */
.bildweg{display:inline-flex;align-items:center;justify-content:center;min-width:140px;
  min-height:44px;padding:8px 12px;border-radius:9px;font-size:13px;
  background:var(--flaeche2);color:var(--leise);border:1px dashed var(--rand2)}
@media(max-width:700px){
  /* Telefon: oben nur Suche und „Filter“ – Herkunft, Art, Agent, Ordnung und
     Ansicht klappen darunter auf (#196). Zwei Kacheln nebeneinander. */
  .medkacheln{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .medgalerie{--zeile:120px;gap:4px}
  .medbild{height:104px}
  .medoben{padding-top:10px}
  .medfilterknopf{display:inline-block}
  .medwerkzeug{margin-left:0;width:100%}
  .medoben:has(.medfilterknopf[aria-expanded="false"]) .medwerkzeug .medwahl,
  .medoben:has(.medfilterknopf[aria-expanded="false"]) .medwerkzeug .medansichten{display:none}
  .medzeilemass{display:none}
  .medgross{max-height:48vh}
  .medgrossbild img,.medgross video{max-height:48vh}
}

/* ---------- Suche innerhalb eines Gesprächs ----------
   Die Lupe sitzt oben rechts neben der Überschrift. Beim Anklicken wächst das
   Eingabefeld nach links aus ihr heraus – geschlossen kostet es keinen Platz. */
.chattitel{display:flex;align-items:center;gap:10px;margin-bottom:3px}
.chattitel h2{margin-bottom:0}
.chatsuche-kopf{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.chatsuche-kopf form{display:flex;overflow:hidden}
.chatsuchfeld{width:0;padding:0;border-width:0;opacity:0;border-radius:20px;
  transition:width .22s ease, opacity .18s ease, padding .22s ease;font-size:14px}
.chatsuche-kopf.offen .chatsuchfeld{width:min(320px,52vw);opacity:1;padding:7px 14px;border-width:1px}
.lupenknopf{width:36px;height:36px;border-radius:50%;flex:0 0 auto;
  background:var(--flaeche2);color:var(--text);font-size:16px;line-height:1;
  display:grid;place-items:center;border:1px solid var(--rand)}
.lupenknopf:hover{background:var(--blau);color:#fff;border-color:var(--blau)}
.lupenknopf.an{background:var(--blau);color:#fff;border-color:var(--blau)}
.suchzahl{background:var(--blau);color:#fff;border-radius:20px;padding:1px 9px;
  font-size:12px;font-weight:700;flex:0 0 auto}
.suchzahl.leer{background:var(--grauknopf);color:var(--grauknopf-text)}
.chatsuche-treffer{background:var(--karte);border:1px solid var(--rand);border-radius:9px;
  padding:8px 11px;margin-bottom:10px;flex:0 0 auto}
.ctreffer{max-height:180px;overflow-y:auto}
.ctreffer-zeile{display:flex;gap:9px;align-items:baseline;padding:6px;border-radius:7px;
  cursor:pointer;font-size:13.5px}
.ctreffer-zeile:hover{background:var(--flaeche2)}
.ctext{color:var(--leise);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
@media(max-width:560px){
  .chatsuche-kopf.offen .chatsuchfeld{width:min(200px,46vw)}
  .chattitel h2{font-size:19px}
}
/* ---------- Suche innerhalb eines Gesprächs ---------- */
.chatsuche{background:var(--karte);border:1px solid var(--rand);border-radius:9px;
  padding:8px 11px;margin-bottom:10px;flex:0 0 auto}
.chatsuche .csymbol{font-size:15px;opacity:.6}
.chatsuche input{border-radius:20px}
.ctreffer{max-height:190px;overflow-y:auto;border-top:1px solid var(--rand);margin-top:6px;padding-top:4px}
.ctreffer-zeile{display:flex;gap:9px;align-items:baseline;padding:6px 6px;border-radius:7px;
  cursor:pointer;font-size:13.5px}
.ctreffer-zeile:hover{background:var(--flaeche2)}
.ctext{color:var(--leise);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.m-inhaber{background:var(--gelb-weich);color:var(--gelb-text)}

/* Sortierbare Spaltenköpfe in der Zugangsliste. Der Pfeil steht im Kopf und
   nicht daneben, damit die Spalte beim Umschalten nicht springt. */
.sortierbar{cursor:pointer;user-select:none;white-space:nowrap}
.sortierbar:hover{color:var(--blau)}
.sortpfeil{display:inline-block;min-width:12px;font-size:11px;opacity:.8}

/* ===========================================================================
   Der Tisch – die neue Oberfläche
   Der Raum liegt hinter allem; die klassische Ansicht wird dabei nur
   ausgeblendet, nicht entfernt. Die Verwaltung hinter der Tür benutzt sie
   weiter, deshalb bleibt sie im Dokument stehen.
   =========================================================================== */
body.tisch-an .kopf,
body.tisch-an nav.spalte,
body.tisch-an #inhalt,
body.tisch-an .schatten,
body.tisch-an .ziehgriff{display:none}
body.tisch-an #buero{display:block;background:transparent;height:100dvh;overflow:hidden}

.tisch{position:fixed;inset:0;z-index:1;color:#f4efe7;overflow:hidden;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
/* Das Raumbild steht an genau EINER Stelle. Sowohl der Raum als auch der Grund,
   der beim Laden schon zu sehen ist (body[data-start="buero"], weiter unten),
   lesen es von hier. Bis zum 18.09.2026 stand an beiden Stellen noch das
   Bildschirmfoto aus der Vorlage, und das echte Bild war nur über das
   Erscheinungsbild darübergelegt – beim Neuladen blitzte deshalb das alte auf.
   Wer das Bild für ein Büro tauschen will, setzt nur die Variable:
       :root{ --raumbild:url("/anhang/<datei>"); }                         */
:root{--raumbild:url("/static/raum/loft/nachmittag-ausgangsbild.jpg")}
.tischraum{position:absolute;inset:0;
  background:#241c14 var(--raumbild) center/cover no-repeat}
/* Tageslicht (#63): Beim Wechsel der Stimmung blendet diese Ebene das neue
   Bild ein; danach übernimmt --raumbild und sie wird wieder durchsichtig.
   Sie liegt unter dem Schleier (::after) – der gilt für beide Bilder. */
.tischlicht{position:absolute;inset:0;opacity:0;pointer-events:none;will-change:opacity;
  background:center/cover no-repeat}
.tischraum::after{content:"";position:absolute;inset:0;
  background:radial-gradient(120% 90% at 50% 40%,rgba(0,0,0,.05),rgba(0,0,0,.45))}

.tischmarke{position:absolute;top:26px;left:34px;z-index:3;pointer-events:none;max-width:min(40vw,300px)}
.tischmarke b{display:block;font-family:"Iowan Old Style",Georgia,serif;font-style:italic;
  font-weight:500;font-size:26px;text-shadow:0 2px 14px rgba(0,0,0,.55)}
.tischmarke span{display:block;font-size:12.5px;opacity:.72;margin-top:2px;
  text-shadow:0 1px 9px rgba(0,0,0,.65)}
/* Guthaben des Büros aufgebraucht (#260) – nur für Inhaber/Verwalter mit kosten_alle,
   führt in den Freigabe-Korb. Die Marke selbst lässt Klicks durch, der Knopf nicht. */
.tischmarke .guthabenhinweis{display:inline-block;margin-top:8px;border:0;cursor:pointer;
  pointer-events:auto;font:inherit;font-size:12px;font-weight:600}
.tischmarke .guthabenhinweis[hidden]{display:none}
/* Die Uhr sitzt in der Ecke oben rechts (siehe .tischecke). Hier steht
   bewusst KEINE eigene Position mehr: Solange sie eine hatte, lag sie bei einer
   halb erneuerten Seite plötzlich hinter dem Abmelden-Knopf – die alte Angabe
   zeigte genau dorthin (gemeldet am 11.09.2026). */
.tischuhr{font-size:15px;opacity:.7;text-shadow:0 1px 9px rgba(0,0,0,.65);
  pointer-events:none;white-space:nowrap}
.tischfrage{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);z-index:2;
  font-family:"Iowan Old Style",Georgia,serif;font-style:italic;
  font-size:clamp(17px,2vw,23px);opacity:.85;text-align:center;pointer-events:none;
  text-shadow:0 2px 14px rgba(0,0,0,.6)}
/* Der eigene Platz steht über den Knöpfen unten links (bis 65 px über dem Rand;
   bei vielen Knöpfen reichen sie über die Mitte) und über der Ablage (bis 68 px).
   Bei 58 px lag „Ihr Platz“ halb unter den Knöpfen (Wunsch des Benutzers, 06.10.2026). */
.tischplatz{position:absolute;left:50%;bottom:84px;transform:translateX(-50%);z-index:2;
  text-align:center;pointer-events:none;text-shadow:0 2px 10px rgba(0,0,0,.6)}
.tischplatz b{font-family:"Iowan Old Style",Georgia,serif;font-style:italic;font-size:17px;opacity:.85}
.tischplatz span{display:block;font-size:12px;opacity:.6}
/* Ein Klick auf die Schrift öffnet „Mein Zugang“ (#298); der Rest der Fläche lässt
   den Klick weiter durch auf den Tisch */
.tischplatz b,.tischplatz span{pointer-events:auto;cursor:pointer}

/* ---------- Die Leute am Rand ---------- */
/* Die Ebene der Portraits liegt über dem ganzen Raum (inset:0). Ohne
   „pointer-events:none" fängt sie jeden Klick ab, der eigentlich einem Ding im
   Raum gilt – Dinge im Raum wären dadurch nicht anklickbar (10.09.2026).
   Die Portraits selbst nehmen ihre Klicks ausdrücklich wieder an. */
.tischleute{position:absolute;inset:0;z-index:4;pointer-events:none}
.tischperson{pointer-events:auto}
.tischperson{position:absolute;display:flex;flex-direction:column;align-items:center;
  cursor:pointer;transition:transform .18s ease;touch-action:none;-webkit-user-select:none;
  user-select:none}
.tischperson:hover{transform:translateY(-3px) scale(1.04)}
/* Selbst hingestellt: die Marke ist die Mitte des Portraits, nicht seine Kante.
   Deshalb muss jede Regel mit transform die Verschiebung mitnehmen. */
.tischperson.gesetzt{transform:translateX(-50%)}
.tischperson.gesetzt:hover{transform:translateX(-50%) translateY(-3px) scale(1.04)}
.tischperson.wandert{transition:none;cursor:grabbing;z-index:6}
.tischperson.wandert .ring{box-shadow:0 18px 44px rgba(0,0,0,.55)}
.tischperson.gesetzt.wandert{transform:translateX(-50%) scale(1.04)}
.tischperson .ring{display:block;width:88px;height:88px;border-radius:50%;padding:3px;
  box-shadow:0 10px 30px rgba(0,0,0,.45)}
.tischperson img,.tischperson .initialenbild{width:100%;height:100%;border-radius:50%;
  object-fit:cover;object-position:50% 30%;display:grid;place-items:center;
  font-size:26px;font-weight:600;color:#fff;background:#3b4658}
/* Der Ring beantwortet die wichtigste Frage: Maschine oder Mensch?
   Agenten warm (Messing), Menschen kühl (Grünblau). */
.tischperson.agent .ring{background:linear-gradient(160deg,#e0b070,#a9722f)}
.tischperson.mensch .ring{background:linear-gradient(160deg,#7fd2c4,#2f7f86)}
.tischperson.ruht .ring{background:#6b6357;opacity:.65}
.tischperson.denkt .ring{animation:tischatmen 2.2s ease-in-out infinite}
/* Hinweis-Punkt am Bild: Pia hat eine Entscheidung vorbereitet (#159) */
.tischperson .ring{position:relative}
.tischpunkt{position:absolute;top:0;right:0;min-width:22px;height:22px;padding:0 6px;
  box-sizing:border-box;border-radius:11px;background:#d64545;color:#fff;border:2px solid #fff;
  font-size:12px;font-weight:700;line-height:18px;text-align:center;
  box-shadow:0 2px 6px rgba(0,0,0,.4);pointer-events:none}
@keyframes tischatmen{0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,0),0 10px 30px rgba(0,0,0,.45)}
                      50%{box-shadow:0 0 0 8px rgba(255,255,255,.2),0 10px 30px rgba(0,0,0,.45)}}
.tischschild{margin-top:-11px;background:rgba(250,248,244,.94);color:#2c2822;border-radius:9px;
  padding:4px 11px 5px;text-align:center;box-shadow:0 6px 18px rgba(0,0,0,.28);max-width:150px}
.tischschild b{display:block;font-family:"Iowan Old Style",Georgia,serif;font-size:14.5px}
.tischschild span{display:block;font-size:11px;opacity:.6;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}

/* ---------- Werkzeug und Tür ---------- */
/* Die Reihe endet vor dem Symbol „Verbrauch“ unten rechts (#29). Passt sie nicht in
   eine Zeile vor Ablage und Symbol, zeigt sie nur die Zeichen (.knapp, #321 –
   werkzeugEinpassen in tisch.js). Bricht sie dann noch um, wächst sie nach oben
   (wrap-reverse – die ersten Knöpfe bleiben unten auf ihrer Linie). */
.tischwerkzeug{position:absolute;left:26px;bottom:22px;z-index:5;display:flex;gap:8px;
  flex-wrap:wrap-reverse;max-width:calc(100% - 26px - 26px - 52px - 12px - var(--eckplus,0px))}
.tischwerkzeug button,.tischverbrauch,.tischwebstatistik{border:0;border-radius:999px;padding:9px 15px;font-size:13px;cursor:pointer;
  background:rgba(250,248,244,.9);color:#2c2822;box-shadow:0 6px 20px rgba(0,0,0,.3)}
.tischwerkzeug button:hover,.tischverbrauch:hover,.tischwebstatistik:hover{background:#fff}
.tischwerkzeug button.an,.tischverbrauch.an,.tischwebstatistik.an{background:#c98b4b;color:#fff}
/* Zeichen und Wort (#321, werkzeugInhalt): Zeichen wie in der Leiste am Telefon. Auch in der
   Gruppe für beide Tafeln (#tischgemeinsam) – dorthin wandern drei Knöpfe der Reihe (tafeln.js);
   ohne diese Regeln wurden ihre Zeichen dort riesig (09.10.2026). */
:is(.tischwerkzeug,.tischgemeinsam) button{position:relative;display:inline-flex;align-items:center;gap:6px;line-height:16px;white-space:nowrap}
:is(.tischwerkzeug,.tischgemeinsam) .wzz{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;
  font-size:14px;line-height:1}
:is(.tischwerkzeug,.tischgemeinsam) .wzz svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linejoin:round;stroke-linecap:round}
:is(.tischwerkzeug,.tischgemeinsam) .wzz :is(.knopfsymbol,.tischassistentbild){margin-right:0;vertical-align:0}
:is(.tischwerkzeug,.tischgemeinsam) .wzz .knopfsymbol{height:16px}
:is(.tischwerkzeug,.tischgemeinsam) .wzz .tischassistentbild{width:18px;height:18px}
#tischmehr{padding:9px 13px;font-weight:700;letter-spacing:1px}
#tischmehr .wzz{font-size:15px}
/* Nur Zeichen: das Wort als Blase darüber (Maus, Tastatur); Zahlen als Punkt am Knopf */
.tischwerkzeug.knapp button{padding:9px 11px}
.tischwerkzeug.knapp .wzw{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
  padding:5px 9px;border-radius:8px;font-size:12px;background:var(--tipp);color:var(--tippschrift);
  pointer-events:none;opacity:0;transition:opacity .15s ease}
.tischwerkzeug.knapp button:hover .wzw,.tischwerkzeug.knapp button:focus-visible .wzw{opacity:1}
.tischwerkzeug.knapp .tischzahl,.tischwerkzeug.knapp .gespraechzahl{position:absolute;top:-6px;right:-6px;margin:0}
/* Verbrauch (#29): gestaltet wie die Knöpfe der Reihe (keine eigenen Farben), über
   den Personen am Tisch. Das Wort klappt nur auf, wenn links Platz ist (verbrauch.js
   setzt .klappt); sonst steht es als Blase darüber. Am Telefon nicht (Reiter im Menü). */
.tischverbrauch{position:absolute;right:26px;bottom:22px;z-index:5;display:flex;align-items:center;
  padding:9px 12px;line-height:16px;font-family:inherit;white-space:nowrap}
.tischverbrauch[hidden]{display:none}
.tischverbrauch svg{width:16px;height:16px;flex:0 0 auto;display:block}
.tischverbrauch svg rect{fill:currentColor;transform-box:fill-box;transform-origin:bottom}
.tischverbrauch .eckwort{max-width:0;overflow:hidden;opacity:0;
  transition:max-width .35s cubic-bezier(.22,1,.36,1),opacity .2s ease,margin .35s cubic-bezier(.22,1,.36,1)}
.tischverbrauch.klappt .eckwort{max-width:240px;opacity:1;margin-left:8px}
/* Zeigen oder Fokus: die drei Balken hüpfen nacheinander (#29 Stufe C) */
@media (hover:hover){
  .tischverbrauch:hover rect:nth-child(1){animation:vbhopsen .55s cubic-bezier(.22,1,.36,1)}
  .tischverbrauch:hover rect:nth-child(2){animation:vbhopsen .55s cubic-bezier(.22,1,.36,1) .07s}
  .tischverbrauch:hover rect:nth-child(3){animation:vbhopsen .55s cubic-bezier(.22,1,.36,1) .14s}
}
.tischverbrauch:focus-visible rect:nth-child(1){animation:vbhopsen .55s cubic-bezier(.22,1,.36,1)}
.tischverbrauch:focus-visible rect:nth-child(2){animation:vbhopsen .55s cubic-bezier(.22,1,.36,1) .07s}
.tischverbrauch:focus-visible rect:nth-child(3){animation:vbhopsen .55s cubic-bezier(.22,1,.36,1) .14s}
@keyframes vbhopsen{0%,100%{transform:scaleY(1)}45%{transform:scaleY(1.35)}}
@media (prefers-reduced-motion:reduce){
  .tischverbrauch rect{animation:none!important}
  .tischverbrauch .eckwort{transition:opacity .2s ease}
}
/* Webseite (#399, webstatistik.js): Knopf links neben dem Verbrauch, nur Inhaber im Büro mit
   dem Add-On. Das Wort steht als Blase darüber (#vbblase wie beim Verbrauch, über allen
   Blättern) – aufklappen ginge nur über den Verbrauch hinweg. 74 px = 26 px Rand + Verbrauch
   (40 px) + 8 px. Ist der Knopf da, setzt
   webstatistikKnopfAuffrischen #tisch.mit-webstatistik: --eckplus rückt Ablage und Reihe
   um seine Breite nach links. Am Telefon nicht (Reiter „Webseite“ im Menü). */
.tischwebstatistik{position:absolute;right:74px;bottom:22px;z-index:5;display:flex;align-items:center;
  padding:9px 12px;line-height:16px;font-family:inherit;white-space:nowrap}
.tischwebstatistik[hidden]{display:none}
.tischwebstatistik svg{width:16px;height:16px;flex:0 0 auto;display:block}
.wssym{width:1.05em;height:1.05em;vertical-align:-.17em;flex:none}
#tisch.mit-webstatistik{--eckplus:48px}
/* Die unauffällige Tür: die ganze Verwaltung liegt dahinter. */
.tuer{position:absolute;right:26px;top:22px;z-index:5;width:38px;height:38px;border:0;
  border-radius:12px;cursor:pointer;font-size:17px;
  background:rgba(250,248,244,.2);color:#fff;backdrop-filter:blur(6px)}
.tuer:hover{background:rgba(250,248,244,.42)}

/* ---------- Ablage ---------- */
/* Unten rechts, links vom Symbol „Verbrauch“ (#321) – in der Mitte lag sie bei jeder
   Breite über einem Knopf der Reihe. 78 px = 26 px Rand + Symbol + 12 px Abstand; dazu
   --eckplus, wenn der Knopf „Webseite“ daneben steht (#399). */
.ablage{position:absolute;right:calc(78px + var(--eckplus,0px));bottom:14px;z-index:6;
  display:flex;gap:8px;align-items:center;padding:7px 9px;border-radius:999px;
  background:rgba(28,22,16,.55);backdrop-filter:blur(8px);box-shadow:0 8px 26px rgba(0,0,0,.35)}
.ablage:empty{display:none}
.ablagestueck{width:40px;height:40px;border-radius:50%;border:2px solid rgba(255,255,255,.6);
  padding:0;overflow:hidden;cursor:pointer;background:#5d5446;color:#fff;
  display:grid;place-items:center}
/* Strichzeichen eines Blatts (data-ablage="", #357/#386 uc-5): hell auf warmem Grund */
.ablagestueck svg{width:20px;height:20px}
.ablagestueck svg rect{fill:currentColor}
.ablagestueck img{width:100%;height:100%;object-fit:cover}
/* Das eigene Foto aus „Mein Zugang“ (#298) bringt seine Größe im style mit */
.ablagestueck .benutzerbild{width:100%!important;height:100%!important;border:0}
.ablagestueck.arbeitet{border-color:#e0b070;animation:tischatmen 2.2s ease-in-out infinite}

/* ---------- Blätter ---------- */
.blatt{position:fixed;z-index:40;display:flex;flex-direction:column;
  background:var(--blattgrund);color:var(--text);border-radius:16px;overflow:hidden;
  box-shadow:0 26px 70px rgba(20,12,4,.45);border:1px solid var(--blattrand)}
.blatt.wandert{opacity:.96}

/* --- Rollhilfe im Blatt (17.09.2026) ---
   Die Sprungknöpfe liegen über dem Gespräch, nicht daneben: Im Blatt ist kein
   Platz für eine eigene Spalte. Sie sind still, bis gerollt wird, und gehen
   nach kurzer Ruhe wieder. Die Strichleiste rechts sitzt am Rand des
   Blattinhalts und ist schmal genug, um nichts zu verdecken. */
.blattscroll{position:absolute;right:13px;bottom:74px;z-index:6;
  display:flex;flex-direction:column;gap:6px;
  opacity:0;pointer-events:none;transition:opacity .18s ease}
.blattscroll.sichtbar{opacity:1;pointer-events:auto}
.blattscroll button{width:30px;height:30px;border-radius:50%;cursor:pointer;
  background:var(--schwebeknopf);color:var(--tinte);border:1px solid rgba(var(--ton),.12);
  font-size:15px;line-height:1;display:grid;place-items:center;padding:0;
  box-shadow:0 3px 10px rgba(20,12,4,.18)}
.blattscroll button:hover:not(:disabled){background:#fff;color:#000}
.blattscroll button:disabled{opacity:.3;cursor:default}

.blattbalken{position:absolute;right:4px;top:54px;bottom:66px;z-index:5;
  width:26px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:4px;overflow:hidden;pointer-events:auto}
/* Versteckt heißt weg: sonst fing die leere Leiste am rechten Rand Klicks ab (✕ am Streifen, #375) */
.blattbalken[hidden]{display:none}
.blattbalken .vbalken{flex:0 0 auto;width:11px;height:4px;border-radius:3px;
  background:var(--strich);cursor:pointer;
  transition:width .12s ease,background .12s ease,opacity .12s ease}
.blattbalken .vbalken:hover{width:20px;background:var(--strich-stark)}
/* Eingaben anderer Menschen tragen deren Chatfarbe – dieselbe wie in ihren
   Sprechblasen. Gedämpft, damit die Leiste ruhig bleibt; beim Zeigen und an
   der Stelle, die gerade zu sehen ist, kommt die Farbe voll heraus. */
.blattbalken .vbalken.fremd{background:var(--werfarbe,var(--strich));opacity:.45}
.blattbalken .vbalken.fremd:hover{background:var(--werfarbe,var(--strich-stark));opacity:1}
.blattbalken .vbalken.jetzt{width:22px;height:5px;background:#c98b4b}
.blattbalken .vbalken.fremd.jetzt{background:var(--werfarbe,#c98b4b);opacity:1}
/* Ist die Liste lang, werden die Striche dünner statt abgeschnitten. */
.blattbalken:has(.vbalken:nth-child(28)) .vbalken{height:3px;gap:2px}
/* Ist die Leiste da, rückt der Text nach innen – sonst läge sie darüber. */
.blatt:has(.blattbalken:not([hidden])) .blattinhalt{padding-right:34px}

/* Die angesprungene Nachricht kurz hervorheben – dasselbe Signal wie in der
   klassischen Ansicht, damit man die Stelle findet. */
.blattinhalt .hervor{animation:blatthervor 1.4s ease}
@keyframes blatthervor{
  0%,100%{box-shadow:none}
  18%{box-shadow:0 0 0 3px rgba(201,139,75,.55)}
  70%{box-shadow:0 0 0 3px rgba(201,139,75,.2)}
}
.blatt.legt{transition:left .16s ease,top .16s ease,width .16s ease,height .16s ease}
.blattkopf{display:flex;align-items:center;gap:11px;padding:11px 13px;cursor:grab;
  border-bottom:1px solid rgba(var(--ton),.08);user-select:none;flex:0 0 auto}
.blattkopf img,.blattkopf .initialenbild{width:38px;height:38px;border-radius:50%;object-fit:cover;
  display:grid;place-items:center;color:#fff;font-size:14px;font-weight:600;flex:0 0 auto}
.blattwer{min-width:0}
.blattwer b{display:block;font-family:"Iowan Old Style",Georgia,serif;font-size:16px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blattwer span{display:block;font-size:11.5px;opacity:.55;margin-top:-2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blattknoepfe{margin-left:auto;display:flex;gap:2px;flex:0 0 auto}
.blattknoepfe button{border:0;background:transparent;color:var(--tinte);font-size:14px;
  padding:6px 9px;border-radius:8px;cursor:pointer}
.blattknoepfe button:hover{background:rgba(var(--ton),.08)}
.blattinhalt{flex:1;overflow:auto;padding:16px 18px;background:var(--bg)}
.blatteinstieg{font-family:"Iowan Old Style",Georgia,serif;font-style:italic;font-size:19px;margin:0 0 4px}
.blattunter{margin:0;font-size:13px;opacity:.5}
/* Der Fuß richtet sich unten aus: Wächst das Textfeld nach oben, bleibt der
   Sendeknopf da, wo die Hand ihn sucht – auf der Grundlinie. */
.blattfuss{display:flex;align-items:flex-end;gap:10px;padding:11px 13px;
  border-top:1px solid rgba(var(--ton),.08);flex:0 0 auto}
.blattfuss textarea{flex:1;border:0;background:transparent;font-size:14.5px;color:var(--text);
  outline:none;font-family:inherit;line-height:1.45;resize:none;overflow-y:hidden;
  padding:8px 0 7px;margin:0;max-height:100%;display:block;
  /* Der Grundstil gibt jeder textarea 90 Pixel Mindesthöhe mit. Hier bestimmt
     der Text die Höhe – mit 90 Pixeln fiele das leere Feld nie auf eine Zeile
     zurück und nähme dem Gespräch dauerhaft Platz weg. */
  min-height:0;height:auto}
.blattfuss textarea::placeholder{color:var(--text);opacity:.45}
.blattsenden{width:38px;height:38px;border-radius:50%;border:0;background:rgba(var(--ton),.08);
  cursor:pointer;font-size:16px;color:var(--tinte);flex:0 0 auto}
.blattsenden:hover{background:rgba(var(--ton),.15)}
/* „ohne-eingabe" heißt hier nur: kein Schreibfeld. Früher stand an dieser
   Stelle die Klasse „nurlesen" aus der klassischen Ansicht – die ist dort ein
   Quelltextkasten und brachte Schreibmaschinenschrift, einen grauen Rahmen und
   eine Höhengrenze von 420 Pixeln mit ins Blatt. Daher kam die „technische"
   Schrift, die am 09.09.2026 gemeldet wurde. */
.blatt.ohne-eingabe .blattfuss{display:none}
/* ---------- Schriftgröße der Blätter (#298 Stufe 2, 06.10.2026) ----------
   Klasse am body aus Mein Zugang (schriftAnwenden in app.js). Vergrößert werden nur
   Kopf und Inhalt der Blätter, dazu die Gesprächsliste im Nachrichten-Blatt – nie
   das Blatt selbst, sonst rechneten Lage und Ziehen (left/top) mit. Schreibfeld,
   Anhangleiste und Antwortvorschläge bleiben bewusst gleich (eigene Höhenrechnung
   beim Ziehen des Felds). Ebenen, die aus Blättern aufgehen (Markieren,
   Bildvergleich, Vollfläche, Vollansicht des Betrachters), hängen an body und bleiben,
   wie sie sind. Was im Blatt selbst mit der Maus rechnet (Streckenkarte in der
   Mediathek), rechnet Rechteck und Zeiger in seine eigenen Pixel um (karte.js lage). „Klein“ erst ab 701 px Breite – am Telefon nie: Eingabefelder unter 16
   Punkten ließen das iPhone beim Antippen die Seite vergrößern (#211).
   Die Variable heißt --blattzoom: --schrift ist die Schriftart (:root). */
body.schrift-gross{--blattzoom:1.15}
@media (min-width:701px){ body.schrift-klein{--blattzoom:.9} }
body.schrift-klein .blatt > .blattkopf,body.schrift-klein .blatt > .blattinhalt,
body.schrift-klein .gespraechleisteinhalt,
body.schrift-gross .blatt > .blattkopf,body.schrift-gross .blatt > .blattinhalt,
body.schrift-gross .gespraechleisteinhalt{zoom:var(--blattzoom,1)}
/* Das Zeiten-Blatt hängt zwei Ebenen direkt ans Blatt (#387 uc-11): Streifen des
   Assistenten und Eintragsfenster des Rasters – sie wachsen mit wie der Inhalt */
body.schrift-klein .zeitblatt > .zbassistent,body.schrift-klein .zeitblatt > .zbfenster,
body.schrift-gross .zeitblatt > .zbassistent,body.schrift-gross .zeitblatt > .zbfenster{zoom:var(--blattzoom,1)}
/* Der Rand für die Gesprächsleiste wüchse sonst mit – die Leiste selbst wächst nicht */
body.schrift-klein .blatt.mitleiste > .blattinhalt,
body.schrift-gross .blatt.mitleiste > .blattinhalt{margin-left:calc(var(--gleiste,0px) / var(--blattzoom,1))}
body.schrift-klein .blattbalken,body.schrift-gross .blattbalken{top:calc(54px * var(--blattzoom,1))}
/* Antwortvorschläge des Agenten (Ticket #116). Mit Pfeiltasten genügt der
   graue Platzhalter im Feld; ohne sie (Telefon, Tablet) gibt es die
   Vorschläge zusätzlich zum Antippen. */
.weiterleiste{display:none;gap:6px;flex-wrap:wrap;padding:8px 13px 0;flex:0 0 auto}
.eingabefeld .weiterleiste{padding:0 0 8px}
@media (hover: none){ .weiterleiste:not([hidden]){display:flex} }
.weiterleiste[hidden],.blatt.ohne-eingabe .weiterleiste{display:none!important}
.weiterchip{border:1px solid rgba(var(--ton),.14);background:rgba(var(--ton),.04);color:inherit;
  border-radius:16px;padding:5px 11px;font-size:13px;font-family:inherit;cursor:pointer;
  max-width:100%;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Griffe zum Größerziehen an allen vier Kanten und Ecken (23.09.2026, #92).
   Die obere Kante ist ein schmaler Streifen über dem Kopf – darunter bleibt
   der Kopf zum Verschieben. Ecken liegen über den Kanten. */
.blatt .griff{position:absolute;z-index:4}
.blatt .griff.o{top:0;left:10px;right:10px;height:6px;cursor:ns-resize}
.blatt .griff.u{bottom:0;left:10px;right:10px;height:8px;cursor:ns-resize}
.blatt .griff.l{left:0;top:10px;bottom:10px;width:8px;cursor:ew-resize}
.blatt .griff.r{right:0;top:10px;bottom:10px;width:8px;cursor:ew-resize}
.blatt .griff.lo,.blatt .griff.ro,.blatt .griff.lu,.blatt .griff.ru{width:16px;height:16px;z-index:5}
.blatt .griff.lo{left:0;top:0;cursor:nwse-resize}
.blatt .griff.ru{right:0;bottom:0;cursor:nwse-resize}
.blatt .griff.ro{right:0;top:0;cursor:nesw-resize}
.blatt .griff.lu{left:0;bottom:0;cursor:nesw-resize}
.blatt.klein .griff{display:none}
/* Die Chatblasen aus der alten Ansicht passen hier ohne Umbau hinein. */
.blattinhalt .blase{max-width:88%}
/* Im Blatt stehen die Blasen nicht in einer Flexbox mit Lücke wie im alten
   Verlauf – ohne Abstand klebten zwei Nachrichten derselben Person zu einer
   zusammen (#157, besonders auf Windows-Bildschirmen). */
.blattinhalt .blasenhuelle + .blasenhuelle{margin-top:8px}

.andockvorschau{position:fixed;z-index:35;border-radius:16px;display:none;
  background:rgba(255,255,255,.2);border:2px solid rgba(255,255,255,.6);pointer-events:none;
  transition:left .12s ease,top .12s ease,width .12s ease,height .12s ease}

@media(max-width:820px){
  .tischperson .ring{width:64px;height:64px}
  .tischschild{max-width:112px;padding:3px 8px 4px}
  .tischschild b{font-size:13px}
  /* Nicht in der zweiten Tafel (#301 S2): Der Rahmen ist innen oft 701–820 px breit, seine
     Blätter liegen trotzdem in der Tafel wie am Rechner */
  html:not(.in-tafel) .blatt{left:0!important;top:0!important;width:100vw!important;height:100dvh!important;
    border-radius:0}
  .tischwerkzeug{left:12px;bottom:12px;max-width:calc(100% - 12px - 12px - 52px - 12px - var(--eckplus,0px))}
  .tischverbrauch{right:12px;bottom:12px}
  .tischwebstatistik{right:60px;bottom:12px}
  .ablage{right:calc(64px + var(--eckplus,0px));bottom:4px}
}

/* Ein Blatt ist immer Papier – auch wenn das Büro im dunklen Anstrich läuft.
   Deshalb bekommt es die helle Palette mit, damit die Chatblasen aus der alten
   Ansicht darin lesbar bleiben. Ebenso die Blase „Woran?“ der Stempeluhr (#357):
   Sie hängt an <body> und wäre sonst blau statt warm. */
.blatt,.woranblase .woranfenster{
  --bg:#fbfaf7; --karte:#fff; --flaeche2:#f1eee8; --feld:#fff;
  --text:#26221d; --leise:#6b6357; --rand:#e6e1d8; --rand2:#cfc7ba;
  --blau:#8a6a3c; --blau-weich:#efe7db; --blau-text:#5c452a;
  --blau-weich2:#f6efe4; --blau-text2:#5c452a; --balken:#d9cfc1; --balken2:#a58f72;
  --grauknopf:#eae5dc; --grauknopf-text:#3b352c;
  --marke-zahl:rgba(0,0,0,.07);
  color:var(--text)
}
.blatt .blase{color:var(--text)}
.blatt .b-ich{background:var(--ich-grund);color:var(--ich-text);border:1px solid var(--ich-rand)}

/* ---------- Dunkle Blätter (#298 Stufe 4, 06.10.2026) ----------
   Wer in Mein Zugang „Dunkel“, „Nach dem Licht“ (Abend, Nacht) oder „Wie mein
   Gerät“ (Gerät dunkel) wählt, bekommt body[data-blattthema="dunkel"]
   (anstrichAnwenden in app.js). Getauscht werden hier nur Variablen – an .blatt
   und an den Fenstern, die über dem Raum aufgehen und selbst an <body> hängen
   (Rückfragen, Kontextmenü, Hilfe, Emoji-Auswahl …). Nie an body oder <html>:
   Der Raum am Tisch (Bild, Leiste, Ecke, Namensschilder, Ringe) bleibt, wie das
   Büro ihn vorgibt (Test beide_anstrich.py). Neue Regel im Blatt → Farben über
   diese Variablen (rgba(var(--ton),…) für Hauch und Linien), nie fest.
   Warmes Dunkelgrau als Gegenstück zum Papier; Kontraste nach WCAG gemessen
   (Schrift ≥ 4,5 : 1 auf Grund, Karte und Feld).
   Fenster: Rückfragen und Teilen (.blattfrageinhalt), Code- und Bildwahl
   (.codeinhalt), Kontextmenü (.tischmenue), Hilfe und Feedback (.feedbackklappe),
   Suchkasten der Ecke, Plätze wählen (Telefon), Ladezeichen, Einsatzart der
   Namensfindung, Emoji-Auswahl und Lesestand, die Blase an den Strichen der
   Chatleiste (.vblase, #328); dazu „Ganz groß“ des Betrachters
   (selbst immer dunkel – hier nur für Text, Tabellen und Code darin). Was wie
   Papier über dem Raum liegt, folgt den Blättern; der Raum selbst nicht.
   Bildansicht, Bildvergleich und Vollfläche der Mediathek sind ohnehin dunkel. */
body[data-blattthema="dunkel"] .blatt,
body[data-blattthema="dunkel"] .blattfrageinhalt,
body[data-blattthema="dunkel"] .codeinhalt,
body[data-blattthema="dunkel"] .tischmenue,
body[data-blattthema="dunkel"] .feedbackklappe,
body[data-blattthema="dunkel"] .tischsuchkasten,
body[data-blattthema="dunkel"] .hwblatt,
body[data-blattthema="dunkel"] .ladezeichen,
body[data-blattthema="dunkel"] dialog.einsatzwahl,
body[data-blattthema="dunkel"] .emojiwahl,
body[data-blattthema="dunkel"] .vblase,
body[data-blattthema="dunkel"] .vbblase,
body[data-blattthema="dunkel"] .woranfenster,
body[data-blattthema="dunkel"] .bvoll{
  color-scheme:dark;
  --ton:255,255,255;
  --papier:#1c1b19; --blattgrund:rgba(28,27,25,.97); --papiertext:#ebe6de;
  --bg:#1c1b19; --karte:#262522; --flaeche2:#2f2d2a; --feld:#22211e;
  --text:#ebe6de; --text2:#cfc8bc; --leise:#a8a094; --leise2:#9a9286;
  --rand:#3a3834; --rand2:#55514a;
  --blau:#c9a06a; --auf-blau:#1c1b19;
  --blau-weich:#3a3024; --blau-weich2:#33291e; --blau-text:#e3c79d; --blau-text2:#e3c79d;
  --tinte:#e6e0d5; --tinte-auf:#1c1b19; --tinte-hover:#fffaf2;
  --grauknopf:#34312c; --grauknopf-text:#e0dace;
  --marke-zahl:rgba(255,255,255,.14); --marke-zahl-an:rgba(0,0,0,.2);
  --warm:#e0a86c; --zurueck:#d0a060; --sand-weich:#2b241a;
  --heute:#2a2519; --heute-rand:#4a4130;
  --gruen:#2fa96a; --gelb:#d99b28; --rot:#ec7070; --orange:#f0913a;
  --gelb-weich:#3a2e14; --gelb-weich2:#2f2611; --gelb-text:#f0c76b; --gelb-rand:#5a4820;
  --rot-weich:#3d2022; --rot-weich2:#331c1e; --rot-text:#f0a3a3; --rot-rand:#5d2f31;
  --gruen-weich:#153224; --gruen-weich2:#12291d; --gruen-text:#7ed6a4; --gruen-rand:#255239;
  --balken:#474747; --balken2:#8f7c62; --tipp:#3a3834; --tippschrift:#f2f2f2;
  --ring-ruht:#9a9286; --blattrand:rgba(255,255,255,.08); --blattgrund-telefon:#1c1b19;
  --schwebeknopf:rgba(52,49,44,.94); --strich:rgba(255,255,255,.3); --strich-stark:rgba(255,255,255,.65);
  --beschriftung:#b8b1a6; --knauf:#4d4944; --hinweistext:#a8a094; --ton-gegen:0,0,0;
  --meldung-ok-bg:#12291d; --meldung-ok-text:#7ed6a4; --meldung-fehler-bg:#331c1e; --meldung-fehler-text:#f0a3a3;
  --papierleise:#a8a094; --papierrand:#3a3834; --papierrand2:#55514a; --papierlinie:#34322e;
  --fremde-blase:#34302a; --leiste-bg:#232220; --zeile-aktiv:#3a3226; --reiter-an:#3d3a35; --wahl-bg:#3a3024;
  --hinweis-bg:#332b1d; --hinweis-text:#e6d3ae; --hinweis-rand:#5a4a30; --warn:#f0a3a3; --warn-rand:#5d2f31;
  --fehlerrot:#f0a3a3; --eingelegt:rgba(255,255,255,.04);
  --papierfenster:rgba(36,35,32,.98); --ladegrund:rgba(46,44,41,.9); --ladelicht:rgba(255,255,255,.15);
  --auszug:#d6cfc3; --ok-rand:#255239; --codegrund:#2a2825;
  --knopf-an:#45423d; --signal-weich:rgba(255,45,85,.16); --warm-hauch:rgba(224,168,108,.16); --tabellenkopf:#23221f;
  --kartengrund:#2f2d2a; --ich-grund:#3a3024; --ich-text:#ebe6de; --ich-rand:#55514a;
  --wahl:#c9a06a; --stern:#e3b341; --schatten:0,0,0;
  --diagramm-1:#4f8fd0; --diagramm-2:#2a9c7a; --diagramm-3:#bf8a1a; --diagramm-4:#8f80e0; --diagramm-5:#c4618d;
  --diagramm-rest:#6b665e; --diagramm-suche:#b0a89c; --diagramm-gpu:#8f7f6a; --gesicht-schrift:#fbfaf7; --wahl-hauch:rgba(201,160,106,.22);
  --up-we:rgba(255,255,255,.07); --up-ft:rgba(217,155,40,.16); --up-ueber:rgba(28,27,25,.5);
  --up-fest:#c9a06a; --up-fest-text:#1c1b19; --up-beantragt:#3a3024; --up-beantragt-rand:#c9a06a; --up-jetzt:#f0913a;
  --up-urlaub:#c9a06a; --up-sonderurlaub:#d9b56a; --up-unbezahlt:#a8957f; --up-zeitausgleich:#e0946a;
  --up-krank:#d27a66; --up-abwesend:#8f867b; --up-neutral:#d6cfc5;
  --up-leiste-fest:#c9a06a; --up-leiste-beantragt:#6b5a40; --up-fenster:rgba(201,160,106,.14);
}
/* Einzelne Stellen, die eine Variable nicht abdeckt: tiefere Schatten, kräftigere
   Kartenränder, Hover, die heller statt dunkler werden, und feine helle Ränder um
   farbige Kreise und Muster (Chat-, Buch-, Agentenfarben heben sich vom dunklen
   Grund oft nur 1,6–3,7 : 1 ab). */
body[data-blattthema="dunkel"] .blatt .blattscroll button{box-shadow:0 3px 10px rgba(0,0,0,.5)}
body[data-blattthema="dunkel"] .blatt .blattscroll button:hover:not(:disabled){background:#4a4640;color:#fff}
body[data-blattthema="dunkel"] .blatt .anhangdokzeichen{background:rgba(255,255,255,.06)}
/* Erklärsatz oben im Blatt: hell .5 (3,1 : 1), dunkel .6 = 6,1 : 1 */
body[data-blattthema="dunkel"] .blatt .blattunter{opacity:.6}
/* Fundwörter: der gelbe Hauch ist dunkel kräftiger – weniger Deckkraft, damit die
   Schrift darauf ≥ 5,8 : 1 hat */
body[data-blattthema="dunkel"] .blatt .suchtrtext mark,
body[data-blattthema="dunkel"] .blatt .medname mark,
body[data-blattthema="dunkel"] .blatt .medgrossname mark{background:rgba(255,196,0,.22)}
/* Code in Blasen mit Chatfarbe: weiße Schrift auf der Farbe – der Hauch bleibt
   dunkel (weißer Hauch hellte den Grund unter weißer Schrift auf) */
body[data-blattthema="dunkel"] .blatt .blase[style*="background"] .mdtext code,
body[data-blattthema="dunkel"] .blatt .blase[style*="background"] .mdtext pre{background:rgba(0,0,0,.12)}
body[data-blattthema="dunkel"] .blatt .blase[style*="background"] .mdtext hr{border-top-color:rgba(0,0,0,.18)}
body[data-blattthema="dunkel"] .blatt .blattbalken .vbalken.fremd:not(.jetzt):not(:hover){opacity:.75}
body[data-blattthema="dunkel"] .blatt .blattkopf img,
body[data-blattthema="dunkel"] .blatt .blattkopf .initialenbild,
body[data-blattthema="dunkel"] .blatt .assistentbild,
body[data-blattthema="dunkel"] .blatt .gbild .benutzerbild,
body[data-blattthema="dunkel"] .blatt .gespraechzeile .initialenbild,
body[data-blattthema="dunkel"] .blatt .zgpunkt{box-shadow:0 0 0 1px rgba(255,255,255,.2)}
body[data-blattthema="dunkel"] :is(.blatt,.blattfrageinhalt,.codeinhalt,.tischmenue,.feedbackklappe,.tischsuchkasten,.hwblatt,dialog.einsatzwahl,.emojiwahl,.bvoll) :is(input,textarea)::placeholder{color:var(--leise);opacity:1}
/* Fokusrahmen: Chrome zeichnet ihn sonst am Rechner fast schwarz (#101010 auf #1c1b19 = 1,1 : 1).
   :where hält die Regel leicht – eigene Fokusregeln (input:focus, .medkachel:focus-visible …)
   und outline:none gewinnen weiter; Gold auf Grund 7,2 : 1, auf Karte 6,4 : 1 */
:where(body[data-blattthema="dunkel"] :is(.blatt,.blattfrageinhalt,.codeinhalt,.tischmenue,.feedbackklappe,.tischsuchkasten,.hwblatt,dialog.einsatzwahl,.emojiwahl,.bvoll)) :where(:not([tabindex="-1"])):focus-visible{outline:2px solid var(--blau);outline-offset:2px}
/* Zeit unter Agenten-Antworten und Datum unter Gruppenhinweisen: hell .7 (inline bzw. CSS),
   dunkel .9 = 5,1 : 1 auf der Karte */
body[data-blattthema="dunkel"] .blatt .blase.b-agent .zeit{opacity:.9!important}
body[data-blattthema="dunkel"] .blatt .gruppenhinweis small{opacity:.9}
body[data-blattthema="dunkel"] .blatt .zgknauf{box-shadow:0 1px 4px rgba(0,0,0,.55)}
body[data-blattthema="dunkel"] .blatt .teamknopf:hover:not([disabled]),
body[data-blattthema="dunkel"] .blatt .kkknopf:hover{filter:brightness(1.2)}
/* Signalknöpfe: weiße Schrift braucht ein tieferes Rot/Grün als die Schriftfarbe */
body[data-blattthema="dunkel"] .blatt .knopf.rot{background:#b83c3c}
body[data-blattthema="dunkel"] .blatt .knopf.gruen{background:#1f8a4c}
body[data-blattthema="dunkel"] .blatt .kontaktkarte{box-shadow:0 12px 32px rgba(0,0,0,.45)}
body[data-blattthema="dunkel"] .blatt .kkbild{box-shadow:0 3px 10px rgba(0,0,0,.5)}
body[data-blattthema="dunkel"] .blatt .kkband{background:linear-gradient(120deg,var(--dunkel) 0%,var(--dunkel2) 45%,#6b4f2c 100%)}
body[data-blattthema="dunkel"] .blatt .teamgespeichert{color:var(--gruen-text)}
body[data-blattthema="dunkel"] .blatt .hinweisbox{background:var(--gelb-weich);border-color:var(--gelb-rand);color:var(--gelb-text)}
body[data-blattthema="dunkel"] .blatt .giltfuer.warnung{color:#e0b070}
body[data-blattthema="dunkel"] .blatt .blase.b-agent .vergleich{background:rgba(255,255,255,.04)}
body[data-blattthema="dunkel"] .blatt .suchsymbol{background:#4d463c!important}
body[data-blattthema="dunkel"] .blatt .bkkopfsymbol{background:#6b604f!important}
body[data-blattthema="dunkel"] .blatt .medknopf.rot{background:rgba(236,112,112,.14);color:var(--rot-text)}
body[data-blattthema="dunkel"] .blatt .medknopf.rot:hover{background:rgba(236,112,112,.24)}
body[data-blattthema="dunkel"] .blatt .medfrage,
body[data-blattthema="dunkel"] .blatt .medwahlleiste{box-shadow:0 6px 20px rgba(0,0,0,.4)}
/* Karten heben sich dunkel kaum vom Grund ab (1,1 : 1) – der Rand trägt die Form */
body[data-blattthema="dunkel"] .blatt .medkachel,
body[data-blattthema="dunkel"] .blatt .medzeile,
body[data-blattthema="dunkel"] .blatt .medtabellehuelle,
body[data-blattthema="dunkel"] .blatt .medfrage,
body[data-blattthema="dunkel"] .blatt .suchtreffer,
body[data-blattthema="dunkel"] .blatt .bkkachel,
body[data-blattthema="dunkel"] .blatt .bketeil,
body[data-blattthema="dunkel"] .blatt .bkzeile,
body[data-blattthema="dunkel"] .blatt .bkfassung:not(.jetzt){border-color:var(--rand)}
body[data-blattthema="dunkel"] .blatt .medkachel:hover,
body[data-blattthema="dunkel"] .blatt .medzeile:hover,
body[data-blattthema="dunkel"] .blatt .suchtreffer:hover,
body[data-blattthema="dunkel"] .blatt .bkkachel:hover,
body[data-blattthema="dunkel"] .blatt .bkfassung:not(.jetzt):hover{border-color:var(--rand2)}
body[data-blattthema="dunkel"] .blatt .bkkachel.vorlage{border-color:rgba(201,139,75,.55)}
body[data-blattthema="dunkel"] .blatt .bketeil.anweisung{border-color:rgba(201,139,75,.45)}
/* Ringe im Team-Blatt und in „Plätze wählen“ (#172): die dunklen Enden der Verläufe
   heben sich auf dunklem Grund zu wenig ab – nur hier heller (4,0–4,6 : 1), am Tisch
   bleiben sie; ruhende Agenten bleiben grau (--ring-ruht) */
body[data-blattthema="dunkel"] .blatt .teamring.projektagent:not(.ruht),
body[data-blattthema="dunkel"] .hwblatt .teamring.projektagent:not(.ruht){background:linear-gradient(160deg,#c9a4ec,#9470cc)}
body[data-blattthema="dunkel"] .blatt .teamring.addonagent:not(.ruht),
body[data-blattthema="dunkel"] .hwblatt .teamring.addonagent:not(.ruht){background:linear-gradient(160deg,#9fb8d8,#6385bb)}
body[data-blattthema="dunkel"] .blatt .teamring.dirigent:not(.ruht),
body[data-blattthema="dunkel"] .hwblatt .teamring.dirigent:not(.ruht){background:linear-gradient(160deg,#e8845a,#c75a30)}
/* Namensfindung: Gretas Muster und Wortmarken haben eigene (oft dunkle) Gründe */
body[data-blattthema="dunkel"] .blatt .namenwm svg,
body[data-blattthema="dunkel"] .blatt .namensignet,
body[data-blattthema="dunkel"] .blatt .namenfarben i{box-shadow:0 0 0 1px var(--rand2)}
body[data-blattthema="dunkel"] .blatt .namenkarte-vk,
body[data-blattthema="dunkel"] .blatt .namenkopf-hp,
body[data-blattthema="dunkel"] .blatt .namenmuster-etikett,
body[data-blattthema="dunkel"] .blatt .namenmuster-symbol .sym,
body[data-blattthema="dunkel"] .blatt .namenmuster-plakat,
body[data-blattthema="dunkel"] .blatt .namenmuster-schild,
body[data-blattthema="dunkel"] .blatt .namenmuster-store{box-shadow:0 0 0 1px rgba(255,255,255,.16),0 2px 8px rgba(0,0,0,.5)}
body[data-blattthema="dunkel"] .blatt .namenmuster-store .leise{color:inherit;opacity:.7}
/* Fenster */
body[data-blattthema="dunkel"] .codeinhalt{color:var(--text)}
body[data-blattthema="dunkel"] .tischmenue,
body[data-blattthema="dunkel"] .feedbackklappe,
body[data-blattthema="dunkel"] .tischsuchkasten{box-shadow:0 18px 50px rgba(0,0,0,.55)}
body[data-blattthema="dunkel"] .emojiwahl{box-shadow:0 10px 30px rgba(0,0,0,.6)}
body[data-blattthema="dunkel"] .emojiwahl .lesepunkt:not(.leer){box-shadow:0 0 0 1.5px var(--karte)}
body[data-blattthema="dunkel"] .feedbackklappe .fbmeldung.fehler{color:var(--rot-text)}
body[data-blattthema="dunkel"] .blatt .btext:focus-visible,
body[data-blattthema="dunkel"] .bvoll .btext:focus-visible{outline-color:var(--blau)}
body[data-blattthema="dunkel"] .blatt .gebtage button.an{background:var(--blau);color:var(--auf-blau)}
/* Freigabe-Karte im Chat (#297): im Korb des Menüfensters bleibt sie Papier,
   deshalb nur hier im Blatt – Bilder der Website (Fenster, Regler, Marken) bleiben */
body[data-blattthema="dunkel"] .blatt .fgkarte{background:var(--karte);color:var(--text);border-color:var(--rand)}
body[data-blattthema="dunkel"] .blatt .fgnotiz{background:var(--feld);border-color:var(--rand)}
body[data-blattthema="dunkel"] .blatt .fgkarte{--fgd-weg:var(--rot-weich);--fgd-weg-text:var(--rot-text);
  --fgd-neu:var(--gruen-weich);--fgd-neu-text:var(--gruen-text);--fgd-warn:var(--gelb-weich);--fgd-warn-text:var(--gelb-text);
  --fgd-linie:var(--rand);--fgd-leise:var(--leise)}
body[data-blattthema="dunkel"] .blatt .fghinweis.fgwarn,
body[data-blattthema="dunkel"] .blatt .fgchip.fg-gelb b,
body[data-blattthema="dunkel"] .blatt .fgliste li.fg-gelb::before{color:var(--gelb-text)}
body[data-blattthema="dunkel"] .blatt .fgvorschau{border-color:var(--rand)}
body[data-blattthema="dunkel"] .blatt .fgleiste{background:var(--flaeche2);border-bottom-color:var(--rand)}
body[data-blattthema="dunkel"] .blatt .fgleiste>i{background:var(--rand2)}
body[data-blattthema="dunkel"] .blatt .fgadresse,
body[data-blattthema="dunkel"] .blatt .fgart.an{background:var(--feld);color:var(--leise)}
body[data-blattthema="dunkel"] .blatt .fgfenster.handy{border-color:var(--rand)}
body[data-blattthema="dunkel"] .blatt .fglink{color:var(--blau-text)}
body[data-blattthema="dunkel"] .blatt .fgchip{background:rgba(255,255,255,.08)}
body[data-blattthema="dunkel"] .blatt .fgchip.fg-ok b,
body[data-blattthema="dunkel"] .blatt .fgliste li.fg-ok::before{color:var(--gruen-text)}
body[data-blattthema="dunkel"] .blatt .fgchip.fg-rot b,
body[data-blattthema="dunkel"] .blatt .fgliste li.fg-rot::before,
body[data-blattthema="dunkel"] .blatt .fgfehler{color:var(--rot-text)}
body[data-blattthema="dunkel"] .blatt .fgknopf{background:rgba(255,255,255,.08);color:var(--tinte)}
body[data-blattthema="dunkel"] .blatt .fgknopf.fgja{background:var(--tinte);color:var(--tinte-auf)}
body[data-blattthema="dunkel"] .blatt .fgknopf.fgfertig{background:#1f8a4c;color:#fff}
body[data-blattthema="dunkel"] .blatt .fgknopf.fgnein{background:rgba(236,112,112,.14);color:var(--rot-text)}
body[data-blattthema="dunkel"] .blatt .fgablehnen textarea{border-color:var(--rand2);background:var(--feld);color:var(--text)}

/* Uhr, Tür und Abmelden liegen zusammen in der oberen rechten Ecke – dort
   sucht man beides. Die Uhr zeigt die Zeit des Büros, nicht die des Rechners. */
/* Die Knöpfe stehen in einer Reihe, die Uhr rechtsbündig darunter. So bleibt
   die Uhr an derselben Stelle, egal wie viele Knöpfe dazukommen – vorher rutschte
   sie bei jedem neuen Knopf weiter nach links (gemeldet am 11.09.2026). */
.tischecke{position:absolute;top:20px;right:24px;z-index:5;display:flex;
  flex-direction:column;align-items:flex-end;gap:5px}
.eckknoepfe{display:flex;align-items:center;gap:10px}
.tischecke .tischuhr{position:static;font-size:14px;opacity:.7;padding-right:4px;
  text-shadow:0 1px 9px rgba(0,0,0,.65)}
/* In der Ecke ordnet der Flex-Container die Knöpfe – die Angaben aus der
   Grundregel (.tuer ist sonst absolut platziert) müssen hier ausdrücklich
   zurückgenommen werden. Sonst wirkt „top:22px" bei relativer Lage als
   Verschiebung nach unten, und der Knopf rutscht über die Uhr darunter
   (gemeldet am 11.09.2026). */
.tischecke .tuer{position:relative;top:auto;right:auto;left:auto;bottom:auto}
.blattknopfreihe{display:flex;gap:8px;margin-top:18px}
.blattknopf{border:0;border-radius:999px;padding:8px 16px;font-size:13px;cursor:pointer;
  background:rgba(var(--ton),.07);color:var(--tinte)}
.blattknopf:hover{background:rgba(var(--ton),.13)}

/* ---------- Projektraum ----------
   Man soll sehen, dass man woanders ist: der Raum wird dunkler (nur dunkler –
   bis #330 auch kühler mit Blaustich; Wunsch des Benutzers 07.10.2026), oben
   hängt ein Schild mit „⌂ Büro“ zurück und dem Namen (#188). Der Knopf
   steht links: rechts ragt ein langes Schild schon bei 1024–1440 px unter die
   Ecke oben rechts (.tischecke, z-index 8), die dort jeden Klick fängt. Die
   Ellipse steht am Namen, nicht am ganzen Schild – sonst schnitte sie den Knopf ab. */
body.projekt-an .tischraum{filter:brightness(.6)}
body.projekt-an .tischraum::after{
  background:linear-gradient(180deg,rgba(20,14,8,.55),rgba(20,14,8,.75))}
.projektschild{position:absolute;top:24px;left:50%;transform:translateX(-50%);z-index:5;
  display:flex;align-items:center;gap:10px;
  background:rgba(20,14,8,.72);border:1px solid rgba(255,255,255,.18);border-radius:999px;
  padding:5px 18px 5px 6px;font-size:13px;backdrop-filter:blur(6px);max-width:70vw;white-space:nowrap}
.projektschildname{min-width:0;overflow:hidden;text-overflow:ellipsis}
.projektschildbuero{position:relative;flex:0 0 auto;border:0;border-radius:999px;padding:4px 12px;
  font:inherit;font-size:12.5px;font-weight:600;line-height:1.3;background:rgba(255,255,255,.92);color:#241c14;cursor:pointer}
.projektschildbuero:hover{background:#fff}
.projektschildbuero:focus-visible{outline:2px solid #fff;outline-offset:2px}
.projektleute{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.projektmitglied{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;
  background:rgba(var(--ton),.05);border-radius:999px;padding:3px 6px 3px 10px}
.projektmitglied .weg{border:0;background:transparent;cursor:pointer;font-size:11px;
  opacity:.5;padding:0 4px}
.projektmitglied .weg:hover{opacity:1;color:var(--rot)}

/* ---------- Raum-Explorer (#188) ----------
   raeume.js. Wie der Finder: links Orte, in der Mitte Räume (Kacheln/Liste),
   rechts Informationen. Wie viel Platz da ist, sagt die Breite des BLATTS
   (@container rx), nicht die des Bildschirms – so passt es auch angedockt und
   später in eine halbe Fläche (#301). Die Stufe schreibt das CSS in --rxbreite;
   raeume.js liest sie nur (rxBreiteBeobachten). Den Grundwert „breit“ gibt es
   nur, wo Container-Abfragen gehen – ohne sie bleibt --rxbreite leer, raeume.js
   rechnet selbst und setzt data-breite, das der Ausweg weiter unten nutzt.
   In diesem Block kein @media mit Breiten. Farben nur über die Variablen des
   Papiers (#298 Stufe 4: --tinte, --leise2, --wahl, --stern, --schatten,
   rgba(var(--ton),…) …), damit der dunkle Anstrich mitwechselt. Fest sind
   nur: das Kopfsymbol (wie .medkopfsymbol) und die Raumfarbe der Bänder samt
   Schrift, ★ und Hauch darauf (in beiden Anstrichen gleich, wie ein Bild). */
.blatt.rxblatt .blattinhalt{padding:0;overflow:hidden;display:flex;flex-direction:column;
  container-type:inline-size;container-name:rx}
.blatt.rxblatt .blattscroll{display:none!important}     /* ↑↓ der Chats – hier nicht */
.rxkopfsymbol{background:#3d4a63!important;font-size:17px!important;font-weight:400!important}
.rxgeruest{position:relative;flex:1;min-height:0;display:grid;
  grid-template-columns:190px minmax(0,1fr) 280px;grid-template-rows:auto auto minmax(0,1fr) auto;
  grid-template-areas:"oben oben oben" "meldung meldung meldung" "seite haupt info" "fuss fuss fuss"}
.rxgeruest.info-zu{grid-template-columns:190px minmax(0,1fr) 0}
.rxgeruest.info-zu .rxinfo{display:none}
.rxoben{grid-area:oben;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 14px;
  border-bottom:1px solid var(--rand);background:var(--bg)}
.rxortknopf,.rxinfozu{display:none}
.rxortknopf{border:0;border-radius:999px;padding:7px 12px;font-size:12.5px;background:rgba(var(--ton),.06);
  color:var(--tinte);white-space:nowrap;align-items:center;gap:4px;max-width:45%;overflow:hidden;text-overflow:ellipsis}
.rxordnen{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--leise)}
.rxmeldung{grid-area:meldung;margin:0;padding:7px 14px;font-size:13px;background:var(--meldung-ok-bg);
  color:var(--meldung-ok-text);border-bottom:1px solid var(--rand)}
.rxmeldung.fehler{background:var(--meldung-fehler-bg);color:var(--meldung-fehler-text)}
.rxmeldung:empty{display:none}
.rxseite{grid-area:seite;overflow:auto;padding:8px 8px 14px;border-right:1px solid var(--rand);background:var(--leiste-bg)}
.rxhaupt{grid-area:haupt;overflow:auto;min-width:0;min-height:0;padding:12px 16px 16px}
.rxinfo{grid-area:info;position:relative;overflow:auto;border-left:1px solid var(--rand);background:var(--karte);
  -webkit-user-select:text;user-select:text}
.rxfuss{grid-area:fuss;display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:34px;padding:6px 14px;
  border-top:1px solid var(--rand);background:var(--bg);font-size:12.5px;color:var(--leise)}
.rxlink{border:0;background:none;padding:0 2px;font:inherit;color:var(--warm);text-decoration:underline;border-radius:4px}
/* Breite: drei Teile ab 960 px; darunter Infobereich als Schublade über der
   Mitte; unter 700 px die Orte hinter einem Knopf. Der Grundwert steht VOR den
   @container-Regeln (gleiche Spezifität – die spätere gewinnt). */
@supports (container-type:inline-size){.rxgeruest{--rxbreite:breit}}
@container rx (max-width:959.98px){
  .rxgeruest{--rxbreite:mittel}
  .rxgeruest,.rxgeruest.info-zu{grid-template-columns:180px minmax(0,1fr);
    grid-template-areas:"oben oben" "meldung meldung" "seite haupt" "fuss fuss"}
  .rxinfo,.rxgeruest.info-zu .rxinfo{display:block;position:absolute;grid-area:haupt;top:0;right:0;bottom:0;
    width:min(300px,92%);z-index:3;border-left:1px solid var(--rand);transform:translateX(105%);visibility:hidden;
    transition:transform .18s ease,visibility 0s .18s;box-shadow:-12px 0 30px rgba(var(--schatten),.18)}
  .rxgeruest.schublade-auf .rxinfo{transform:none;visibility:visible;transition:transform .18s ease}
  .rxinfozu{display:grid}
}
@container rx (max-width:699.98px){
  .rxgeruest{--rxbreite:schmal}
  .rxgeruest,.rxgeruest.info-zu{grid-template-columns:minmax(0,1fr);grid-template-areas:"oben" "meldung" "haupt" "fuss"}
  .rxseite{display:none}
  .rxortknopf{display:inline-flex}
}
/* Ausweg für Browser ohne Container-Abfragen (Safari < 16): dieselben Regeln
   über data-breite, das raeume.js aus der Breite rechnet */
@supports not (container-type:inline-size){
  .rxgeruest[data-breite="mittel"],.rxgeruest.info-zu[data-breite="mittel"]{grid-template-columns:180px minmax(0,1fr);
    grid-template-areas:"oben oben" "meldung meldung" "seite haupt" "fuss fuss"}
  .rxgeruest[data-breite="schmal"],.rxgeruest.info-zu[data-breite="schmal"]{grid-template-columns:minmax(0,1fr);
    grid-template-areas:"oben" "meldung" "haupt" "fuss"}
  .rxgeruest:not([data-breite="breit"]) .rxinfo{display:block;position:absolute;grid-area:haupt;top:0;right:0;bottom:0;
    width:min(300px,92%);z-index:3;transform:translateX(105%);visibility:hidden;
    transition:transform .18s ease,visibility 0s .18s;box-shadow:-12px 0 30px rgba(var(--schatten),.18)}
  .rxgeruest:not([data-breite="breit"]).schublade-auf .rxinfo{transform:none;visibility:visible;transition:transform .18s ease}
  .rxgeruest:not([data-breite="breit"]) .rxinfozu{display:grid}
  .rxgeruest[data-breite="schmal"] .rxseite{display:none}
  .rxgeruest[data-breite="schmal"] .rxortknopf{display:inline-flex}
}
/* Seitenleiste */
.rxseitentitel{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--leise2);
  font-weight:700;margin:14px 8px 4px}
.rxort{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:5px 8px;border:0;border-radius:8px;
  background:transparent;font-size:13px;color:var(--tinte)}
.rxort:hover{background:rgba(var(--ton),.05)}
.rxort[aria-current]{background:var(--tinte);color:var(--tinte-auf)}
.rxort:focus-visible{outline:2px solid var(--wahl);outline-offset:-2px}
.rxortsym{width:18px;text-align:center;flex:0 0 auto;font-size:12.5px}
.rxortname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxortzahl{font-size:11px;color:var(--leise2);font-variant-numeric:tabular-nums}
.rxort[aria-current] .rxortzahl{color:rgba(var(--ton-gegen),.7)}
.rxortkopf{margin-top:2px;font-weight:600}
.rxbuero{font-weight:600;margin-bottom:6px;box-shadow:inset 0 -1px 0 var(--rand);border-radius:8px 8px 0 0}
.rxortraum{padding-left:14px;font-size:12.5px}
.rxortraum.zu .rxortname{opacity:.62}
.rxortraum.gewaehlt{box-shadow:inset 0 0 0 1.5px var(--wahl)}
.rxpunkt{display:inline-block;width:10px;height:10px;border-radius:50%;flex:0 0 auto}
/* Kacheln: Auswahl, Fokus, geschlossen – nie nur Farbe (🔒 + Wort, ⚑ mit title) */
.rxgruppe{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--leise2);margin:4px 2px 8px;font-weight:700}
.rxkacheln{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));margin-bottom:18px}
/* Langes Drücken (Menü) ohne „Bild sichern“ oder Textauswahl – auch an den Zeilen des Telefons */
.rxkachel,.rxtzeile,.rxort,.rxtelzeile,.rxtelhaupt,.rxtelkachel{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.rxkachel{position:relative;display:flex;flex-direction:column;border:1px solid var(--rand);border-radius:12px;
  background:var(--karte);overflow:hidden;cursor:default;outline:none}
.rxkachel:hover{border-color:var(--rand2);box-shadow:0 4px 14px rgba(var(--schatten),.08)}
.rxkachel[aria-selected="true"]{border-color:var(--wahl);box-shadow:0 0 0 2px var(--wahl)}
/* Datei auf einen Raum ziehen (#300): der Raum, der sie annimmt */
.rxkopieziel{outline:3px dashed var(--signal);outline-offset:-3px;background:var(--signal-weich)}
.rxkachel:focus-visible{outline:2px solid var(--wahl);outline-offset:3px}
.rxkachel.zu .rxband,.rxkachel.zu .rxkoerper{opacity:.62}
/* Raumfarbe (buchFarbe, raeume.js setzt --rxfarbe/--rxfarbe2 immer inline): wie ein
   Bild in beiden Anstrichen gleich, Schrift, ⋯ und ☆ darauf weiß – eine Regel für
   alle Bänder. Ohne Raumfarbe (sollte nicht vorkommen) das leise Grau des Papiers. */
.rxband,.rxinfoband,.rxtelband,.rxtelsym{color:#fff;
  background:linear-gradient(160deg,var(--rxfarbe,var(--papierleise)),var(--rxfarbe2,var(--rxfarbe,var(--papierleise))))}
.rxband{position:relative;height:56px;display:grid;place-items:center}
.rxkuerzel{font-family:"Iowan Old Style",Georgia,serif;font-size:20px;letter-spacing:.08em;opacity:.92}
.rxstern{position:absolute;left:6px;top:4px;font-size:16px;line-height:1;padding:3px 5px;color:#ffd34d;border-radius:6px}
.rxstern[data-rx],.rxmehr{cursor:pointer}
.rxstern[data-rx]:not(.an){color:inherit;opacity:0}         /* ☆ erst beim Darüberfahren bzw. gewählt */
.rxkachel:hover .rxstern,.rxkachel[aria-selected="true"] .rxstern{opacity:1}
/* Unsichtbar heißt auch nicht klickbar: ohne Maus (iPad) schaltete ein Tipp in die Ecke
   sonst den Favoriten, statt den Raum zu wählen – erst gewählt ist ☆ zu sehen und zu treffen */
.rxkachel:not(:hover):not([aria-selected="true"]) .rxstern[data-rx]:not(.an){pointer-events:none}
.rxstern[data-rx]:hover,.rxmehr:hover{background:rgba(255,255,255,.22)}
.rxmehr{position:absolute;right:5px;bottom:3px;font-size:16px;line-height:1;padding:2px 6px;border-radius:6px;opacity:.85}
.rxschloss{position:absolute;left:9px;bottom:5px;font-size:12px}
.rxneu{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;
  background:var(--rot);color:var(--auf-blau);font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
/* --auf-blau: hell weiß; dunkel ist --rot heller – dort dunkle Schrift (5,8 : 1 statt 2,9 : 1) */
.rxband .rxneu{position:absolute;right:8px;top:7px}
.rxneu.klein{min-width:18px;height:18px;font-size:11px}
.rxkoerper{padding:8px 10px 9px;display:flex;flex-direction:column;gap:2px;min-height:100px}
.rxmarken{display:flex;gap:4px;flex-wrap:wrap}
.rxmarken:empty{display:none}
.rxmarke{font-size:10.5px;border-radius:999px;padding:1px 8px;white-space:nowrap;background:rgba(var(--ton),.06);color:var(--leise)}
.rxmarke.fremd{background:var(--gelb-weich);color:var(--gelb-text)}
.rxmarke.hier{background:var(--tinte);color:var(--tinte-auf)}
.rxname{font-family:"Iowan Old Style",Georgia,serif;font-size:15.5px;line-height:1.25;overflow:hidden;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rxkunde{font-size:12px;color:var(--leise);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxkfuss{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:6px;gap:6px}
.rxzeit{font-size:11.5px;color:var(--leise2);white-space:nowrap}
/* Bildchen der Mitglieder, ⚑ an der Leitung */
.rxleute{display:inline-flex;align-items:center}
.rxbildh{position:relative;display:inline-flex;border-radius:50%;box-shadow:0 0 0 2px var(--karte)}
.rxleute .rxbildh+.rxbildh{margin-left:-7px}
.rxflagge{position:absolute;right:-4px;bottom:-4px;width:13px;height:13px;display:grid;place-items:center;font-size:8px;
  line-height:1;border-radius:50%;border:1px solid var(--karte);background:var(--tinte);color:var(--stern)}
/* Dunkel ist --tinte hell – der Stern bräuchte dort dunklen Grund */
body[data-blattthema="dunkel"] .blatt .rxflagge{background:var(--grauknopf)}
.rxmehrleute{font-size:11px;color:var(--leise);margin-left:4px}
.rxleitung{color:var(--tinte)}
/* Liste: Tabelle der Mediathek, lieber seitwärts schieben als quetschen */
.rxtabelle{min-width:720px}
.rxtabelle td{white-space:nowrap}
.rxtabelle td.rxtname{white-space:normal;min-width:200px}
.rxtzeile{cursor:default;outline:none}
.rxtzeile:hover{background:rgba(var(--ton),.03)}
.rxtzeile[aria-selected="true"]{background:var(--wahl-bg)}
.rxtzeile[aria-selected="true"] td:first-child{box-shadow:inset 3px 0 0 var(--wahl)}
.rxtzeile:focus-visible td{box-shadow:inset 0 2px 0 var(--wahl),inset 0 -2px 0 var(--wahl)}
.rxtzeile.zu td{opacity:.62}
.rxtname b{color:var(--text);font-weight:600}
.rxtname .rxpunkt{margin-right:7px;vertical-align:-1px}
.rxtname .rxmarke{margin-left:4px}
.rxtsternzelle{width:24px;color:var(--stern)}
.rxtstern,.rxtmehr{border:0;background:none;font:inherit;line-height:1;padding:3px 6px;border-radius:6px;cursor:pointer}
.rxtstern{font-size:15px;color:var(--stern)}
.rxtstern:not(.an){color:var(--leise2);opacity:.55}
.rxtmehr{font-size:16px;color:var(--leise2)}
.rxtstern:hover,.rxtmehr:hover{background:rgba(var(--ton),.06);opacity:1}
.rxtmehrzelle{width:32px;text-align:right}
.rxtleute{display:inline-flex;align-items:center;white-space:nowrap}
.rxtzahl{font-size:12px;margin-left:6px}
.rxtgruppe th{background:var(--tabellenkopf);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--leise2);
  font-weight:700;padding:5px 8px}
/* Infobereich (in der mittleren Breite die Schublade) */
.rxinfozu{position:absolute;right:8px;top:8px;z-index:2;width:28px;height:28px;border:0;border-radius:50%;
  place-items:center;background:var(--schwebeknopf);color:var(--tinte);font-size:13px;padding:0}
.rxinfoband{height:62px;display:grid;place-items:center;font-family:"Iowan Old Style",Georgia,serif;
  font-size:22px;letter-spacing:.08em}
.rxinfoinnen{padding:12px 14px 18px}
.rxinfoname{font-family:"Iowan Old Style",Georgia,serif;font-size:18px;line-height:1.25;margin:0 0 8px;font-weight:600;
  overflow-wrap:anywhere}
.rxinfoname:focus{outline:none}
.rxinfo h3,.rxtelinfo h3{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--leise2);margin:16px 0 6px;font-weight:700}
.rxzahl{margin-left:6px;letter-spacing:0}
.rxangaben{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:13px;margin:0}
.rxangaben dt{color:var(--leise)}
.rxangaben dd{margin:0;min-width:0;overflow-wrap:anywhere}
.rxmitglieder{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px}
.rxmitglieder li{display:flex;align-items:center;gap:8px;min-width:0}
.rxbreit{width:100%;justify-content:center;padding:8px 12px;font-size:13.5px;margin-top:6px}
.rxleise{font-size:12.5px;color:var(--leise2);line-height:1.45;margin:6px 0 0}
.rxneuknopf{padding:6px 12px;font-size:12.5px;white-space:nowrap}
.rxfav[aria-pressed="true"] span{color:var(--stern)}
.rxhinweis{background:var(--gelb-weich);color:var(--gelb-text);padding:6px 9px;border-radius:8px}
.rxmitglied .rxmbild{display:inline-flex;flex:0 0 auto}
.rxmtext{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.rxmname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxmname .rxleise{margin:0;font-size:11.5px}
.rxmrolle{font-size:11.5px;color:var(--leise2)}
.rxweg{flex:0 0 auto;width:26px;height:26px;border:0;border-radius:50%;background:none;color:var(--leise2);font-size:12px;padding:0;cursor:pointer}
.rxweg:hover{background:rgba(var(--ton),.07);color:var(--rot)}
.rxeinstellen{display:flex;flex-direction:column}
.rxeinstellen .rxleise{margin-top:10px}
/* Fenster des Explorers (Einladen, Leitung, Neuer Raum, Umbenennen, Kunde) – sie hängen am body */
/* Außerhalb des Blatts gilt --leise/--text von :root (blaugrau) – darum die Papierfarben */
.rxfeld{display:block;margin:10px 0 4px;font-size:13px;color:var(--papierleise)}
.rxfeld select,.rxfeld input{display:block;width:100%;margin-top:4px;font-size:14px;color:var(--papiertext)}
/* Neuer Raum, Umbenennen, Kunde (#188 1b): Häkchen-Listen, Hinweis bei gleichem Namen */
.rxanlegenkopf{margin-top:0}
.rxanlegenliste{max-height:40vh;overflow:auto;margin:4px 0 8px;padding:4px 10px;border:1px solid var(--papierrand);border-radius:8px}
.rxanlegenliste .rxleise{margin:5px 0;font-size:13px;color:var(--papierleise)}
.rxwahl{display:flex;align-items:center;gap:8px;min-height:30px;font-size:14px;color:var(--papiertext)}
.rxwahl input{flex:0 0 auto;margin:0}
.rxwarnung{margin:4px 0 0;font-size:12.5px;color:var(--papierleise)}
.rxwarnung::before{content:"⚠ "}
/* ---- Telefon: Ebenen wie die Dateien-App (.rxtelefon, gesetzt bei istHandy()) ----
   Hier rollt .blattinhalt selbst – rollte eine Liste darin für sich, finge
   „nach unten ziehen = neu laden“ (handy.js) jedes Zurückrollen ab. Ohne
   Container (container-type:normal) greift keine @container-Regel in den
   Ebenen. Die Ebene steht in .rxtel, die Teile des Rechners sind leer und weg. */
.rxtel{display:none}
.blatt.rxblatt.rxtelefon .blattinhalt{display:block;overflow:auto;container-type:normal;background:var(--flaeche2)}
.rxtelefon .rxgeruest{display:flex;flex-direction:column;min-height:100%}
.rxtelefon .rxseite,.rxtelefon .rxhaupt,.rxtelefon .rxinfo,.rxtelefon .rxfuss,.rxtelefon .rxoben{display:none}
.rxtelefon .rxgeruest[data-ebene="orte"] .rxoben,.rxtelefon .rxgeruest[data-ebene="raeume"] .rxoben{display:flex;
  position:sticky;top:0;z-index:2;padding:8px 16px;border:0;background:var(--flaeche2)}
.rxtelefon .rxsuche{flex:1 1 100%}
/* Gesucht wird nur auf „Orte“ (in allen Räumen) – auf „Räume“ nur Ansicht und Ordnen (Konzept) */
.rxtelefon .rxgeruest[data-ebene="raeume"] .rxsuche{display:none}
.rxtelefon .rxwerkzeug{flex:1 1 100%;margin-left:0;gap:6px 16px}
.rxtelefon .rxmeldung{padding:8px 16px}
.rxtelefon .rxtel{display:flex;flex-direction:column;flex:1 0 auto;
  padding-bottom:calc(24px + var(--sicher-unten,env(safe-area-inset-bottom,0px)))}
.rxtelefon .rxgeruest[data-ebene="raum"] .rxtel,.rxtelefon .rxgeruest[data-ebene="neu"] .rxtel{padding-bottom:0}
.rxtel>.rxtelgruppe:first-child,.rxtel>.rxkacheln:first-child{margin-top:12px}
.rxtelgtitel{margin:0;padding:14px 32px 6px;font-size:12.5px;font-weight:600;text-transform:uppercase;
  letter-spacing:.06em;color:var(--leise)}
.rxtelgruppe{margin:0 16px 8px;background:var(--karte);border-radius:12px;overflow:hidden}
.rxtelzeile{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:7px 14px;border:0;border-radius:0;
  border-bottom:1px solid var(--rand);background:transparent;color:var(--text);font-size:16px;text-align:left;
  -webkit-tap-highlight-color:transparent}
.rxtelgruppe>.rxtelzeile:last-child{border-bottom:0}
div.rxtelzeile{padding:0}
.rxtelzeile.zu .rxtelhaupt,.rxtelkachel.zu .rxtelkhaupt{opacity:.62}
.rxtelhaupt,.rxtelkhaupt{border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:left;
  -webkit-tap-highlight-color:transparent}
.rxtelhaupt{flex:1;min-width:0;display:flex;align-items:center;gap:12px;min-height:52px;padding:7px 4px 7px 14px;font-size:16px}
.rxtelmehr{flex:0 0 44px;align-self:stretch;min-height:44px;border:0;border-radius:0;background:transparent;
  font-size:18px;color:var(--leise);-webkit-tap-highlight-color:transparent}
button.rxtelzeile:active,.rxtelhaupt:active,.rxtelkhaupt:active,.rxtelmehr:active{background:rgba(var(--ton),.05)}
.rxtelsym{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto;
  font-size:12px;font-weight:700}          /* Raumfarbe und Schrift: Regel der Bänder oben */
.rxtelsym.grau{background:var(--flaeche2);color:var(--tinte);font-size:15px;font-weight:400}
.rxtelbuero .rxtelsym{background:var(--tinte);color:var(--tinte-auf);font-size:16px;font-weight:400}
.rxteltext{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.rxteltext b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxteltext small{font-size:13px;color:var(--leise);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxtelfav{color:var(--stern)}
.rxtelzahl{font-size:15px;color:var(--leise2);font-variant-numeric:tabular-nums}
.rxtelpfeil{color:var(--rand2);font-size:22px;line-height:1}
.rxtelleer{margin:0;padding:12px 14px;font-size:14px;line-height:1.45;color:var(--leise)}
.rxtelhinweis{margin:0;padding:4px 32px 12px;font-size:13px;color:var(--leise)}
.rxtelefon .medleer{padding:24px 16px}
/* Kacheln am Telefon: zwei nebeneinander, ⋯ unten rechts (44 × 44 px) */
.rxtelkacheln{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 16px;margin-bottom:12px}
.rxtelkachel{position:relative;display:flex;flex-direction:column;border:1px solid var(--rand);border-radius:12px;
  background:var(--karte);overflow:hidden}
.rxtelkhaupt{display:flex;flex-direction:column;gap:3px;width:100%;min-height:124px;padding:0 0 10px}
.rxtelkhaupt .rxband{width:100%;height:60px}
.rxtelkhaupt .rxmarken{padding:6px 10px 0}
.rxtelkname{padding:4px 40px 0 10px;font-family:"Iowan Old Style",Georgia,serif;font-size:15.5px;line-height:1.25;
  overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rxtelkhaupt small{padding:0 40px 0 10px;font-size:12.5px;color:var(--leise);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxtelkmehr{position:absolute;right:0;bottom:0;width:44px;height:44px}
/* Ebene „Raum“: „Raum öffnen“ fest unten, auch bei wenig Inhalt (Flex-Kette ab
   .rxgeruest, sticky am rollenden .blattinhalt – wie .medwahlleiste) */
.rxtelraum{flex:1 0 auto;display:flex;flex-direction:column}
.rxtelband{height:92px;margin:12px 16px;border-radius:14px;display:grid;place-items:center;
  font-family:"Iowan Old Style",Georgia,serif;font-size:28px;letter-spacing:.08em}
.rxtelname{margin:0;padding:0 16px 6px;font-family:"Iowan Old Style",Georgia,serif;font-size:24px;font-weight:600;
  line-height:1.2;overflow-wrap:anywhere}
.rxtelmarken{padding:0 16px 8px}
.rxtelangaben{margin:0 16px 12px;padding:12px 14px;background:var(--karte);border-radius:12px;font-size:15px}
.rxtelraum .rxhinweis{margin:0 16px 12px}
.rxtelfuss{position:sticky;bottom:0;z-index:2;margin-top:auto;display:flex;flex-direction:column;gap:8px;
  padding:10px 16px calc(12px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));
  background:var(--flaeche2);border-top:1px solid var(--rand);box-shadow:0 -6px 18px rgba(var(--schatten),.08)}
.rxoeffnen{width:100%;min-height:50px;border:0;border-radius:12px;font-size:17px;font-weight:600;
  background:var(--tinte);color:var(--tinte-auf)}
.rxtelfuss .rxbreit{min-height:44px;margin:0;font-size:15px}
/* Ebene „Informationen“: dieselben Teile wie rechts am Rechner, Knöpfe fingergroß */
.rxtelinfo{margin:12px 16px;background:var(--karte);border-radius:12px;overflow:hidden;-webkit-user-select:text;user-select:text}
.rxtelinfo .rxbreit{min-height:44px;font-size:15px}
.rxtelinfo .rxmitglieder{font-size:15px}
.rxtelinfo .rxweg{width:44px;height:44px;font-size:14px}
/* Ebene „Neuer Projektraum“ (#188 1b): dasselbe Formular wie im Fenster, fingergroß; die Listen
   rollen nicht für sich (sonst finge „nach unten ziehen = neu laden“ das Zurückrollen ab) */
.rxtelanlegen{display:flex;flex-direction:column;flex:1 0 auto}
.rxtelanlegen .rxanlegen{margin:12px 16px 8px;padding:2px 14px 10px;background:var(--karte);border-radius:12px}
.rxtelanlegen .rxanlegenkopf{display:none}
.rxtelanlegen .rxanlegenliste{max-height:none;overflow:visible}
.rxtelanlegen .rxwahl{min-height:44px;font-size:16px}
.rxtelanlegen .rxfeld input,.rxtelanlegen .rxfeld select{min-height:40px;font-size:16px}
.rxtelanlegen>.fehler{margin:0 16px 8px}
/* Kopf am Telefon: ★ und ⋯ auf der Ebene „Raum“; neben ‹ kein Symbol (Platz für den Titel).
   Fingergroß 44 × 44 px; der negative Rand hält den Kopf so hoch wie auf den anderen Ebenen */
.rxkopfstern,.rxkopfmehr{flex:0 0 auto;min-width:44px;height:44px;margin:-3px 0;border:0;border-radius:10px;background:transparent;
  padding:0;font-size:20px;line-height:1;color:var(--tinte)}
/* ‹ im Kopf: 44 × 44 px Trefferfläche für alle Blätter im Telefon-Block (#315) */
.rxkopfstern[aria-pressed="true"]{color:var(--stern)}
.rxtelefon .blattkopf:has(.zurueck) .rxkopfsymbol{display:none}
.rxtelzeile:focus-visible,.rxtelhaupt:focus-visible,.rxtelkhaupt:focus-visible,.rxtelmehr:focus-visible,
.rxoeffnen:focus-visible,.rxkopfstern:focus-visible,.rxkopfmehr:focus-visible{outline:2px solid var(--wahl);outline-offset:-2px}
.rxrein{animation:rxrein .22s ease}
@keyframes rxrein{from{transform:translateX(26px);opacity:.3}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.rxinfo{transition:none!important}.rxrein{animation:none}}
/* Spalten (⫼, #188 Stufe 2): Räume › Bereiche › Inhalt › Vorschau – seitwärts rollen,
   wenn es mehr Spalten gibt als Platz; nur Variablen (dunkle Blätter) */
.rxgeruest.rxmitspalten .rxhaupt{padding:0;display:flex;flex-direction:column}
.rxspalten{flex:1;min-height:0;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(200px,1fr);overflow-x:auto}
.rxsp{border-right:1px solid var(--rand);overflow:auto;min-width:0;padding:6px 0}
.rxsp.rxspvorschau{min-width:280px;background:var(--karte)}
.rxspkopf{padding:6px 12px 4px;font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--leise2);font-weight:700}
.rxspzeile{display:flex;align-items:center;gap:8px;width:100%;min-height:34px;padding:5px 12px;border:0;border-radius:0;
  background:transparent;color:var(--tinte);font:inherit;font-size:13px;text-align:left;cursor:default}
.rxspzeile:hover{background:rgba(var(--ton),.05)}
.rxspzeile.gewaehlt,.rxspzeile[aria-selected="true"]{background:var(--wahl-bg)}
.rxspzeile:focus-visible{outline:2px solid var(--wahl);outline-offset:-2px}
.rxspzeile.zu{opacity:.7}
.rxsptext{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxsptext small{display:block;color:var(--leise);font-size:11.5px;overflow:hidden;text-overflow:ellipsis}
.rxspsym{flex:0 0 auto;width:20px;text-align:center}
.rxsppfeil{flex:0 0 auto;color:var(--leise)}
.rxspzahl{flex:0 0 auto;font-size:11.5px;color:var(--leise)}
.rxspbild{width:26px;height:26px;border-radius:50%;flex:0 0 auto;object-fit:cover}
.rxsphinweis{margin:8px 12px;font-size:12.5px;color:var(--leise)}
.rxsp .rxhinweis{margin:4px 12px 8px}
.rxsp .rxbreit{margin:8px 12px;width:calc(100% - 24px)}
.rxspkarte,.rxspvorschauinnen{padding:10px 12px;-webkit-user-select:text;user-select:text}
.rxspkarte h3,.rxspdname{margin:8px 0 2px;font-size:14px;overflow-wrap:anywhere}
.rxspkarte .rxbreit,.rxspvorschauinnen .rxbreit{margin:8px 0 0;width:100%}
.rxspportrait{display:block;width:96px;height:96px;border-radius:50%;object-fit:cover}
.rxspvorschauinnen .medgrossbild img{max-width:100%;max-height:260px}
.rxspvorschauinnen .bpdf iframe{width:100%;height:320px;border:0}
.rxspvorschauinnen video{max-width:100%}
.rxspchat{list-style:none;margin:0;padding:0 12px;-webkit-user-select:text;user-select:text}
.rxspchat li{padding:7px 0;border-bottom:1px solid var(--rand);font-size:13px}
.rxspchat time{color:var(--leise);font-size:11.5px}
.rxspchat p{margin:3px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.rxspanhang{display:inline-block;margin-top:3px;font-size:12px;color:var(--leise)}
.rxsppfad{margin:0;padding:5px 12px;border-top:1px solid var(--rand);font-size:12px;color:var(--leise);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Telefon: Ebenen „inhalt“ und „vorschau“ – dieselben Teile wie die Spalten */
.rxteleinblick{padding:10px 0 16px}
.rxteleinblick .rxspkarte,.rxteleinblick .rxspvorschauinnen{margin:0 16px;background:var(--karte);border-radius:12px}
.rxteleinblick .rxspchat{margin:0 16px;background:var(--karte);border-radius:12px;padding:0 14px}
.rxteleinblick .rxspchat li{font-size:15px}
.rxteleinblick .rxbreit{min-height:44px;font-size:15px}
.rxteleinblick > .rxbreit{margin:8px 16px;width:calc(100% - 32px)}
.rxteleinblick .bpdf{margin-left:28px}            /* Wischen vom Rand bleibt frei (handy.js) */
.rxteleinblick .rxspbild{width:30px;height:30px}
/* Papierkorb (#188 Stufe 3a): eigene Liste ohne Räume – nur Variablen */
.rxhaupt .rxkorb{display:flex;flex-direction:column;border:1px solid var(--rand);border-radius:10px;overflow:hidden}
.rxhaupt .rxkorbzeile{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:7px 12px;border:0;
  border-bottom:1px solid var(--rand);border-radius:0;background:transparent;color:var(--text);font:inherit;font-size:13.5px;
  text-align:left;cursor:default;outline:none}
.rxhaupt .rxkorbzeile:last-child{border-bottom:0}
.rxhaupt .rxkorbzeile:hover{background:rgba(var(--ton),.03)}
.rxhaupt .rxkorbzeile.gewaehlt{background:var(--wahl-bg);box-shadow:inset 3px 0 0 var(--wahl)}
.rxhaupt .rxkorbzeile:focus-visible{box-shadow:inset 0 0 0 2px var(--wahl)}
.rxkorbtext{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rxkorbtext b{font-weight:600;overflow-wrap:anywhere}
.rxkorbleise{color:var(--leise);font-size:12px;overflow-wrap:anywhere}
.rxtelkorb .rxleise{margin:4px 16px 8px}
/* Endgültig löschen (#188 3b): am Telefon so breit und hoch wie die übrigen Knöpfe */
.rxtelkorb .rxbreit{min-height:44px;font-size:15px;margin:8px 16px 12px;width:calc(100% - 32px)}
/* Fenster „Endgültig löschen“ – eigene Klasse: .rxweg ist der runde ×-Knopf (26 px) */
.rxendg ul{margin:4px 0 10px;padding-left:20px}
.rxendg li{margin:2px 0}
.rxtelefon .rxgeruest[data-ebene="korb"] .rxtel{padding-bottom:0}
/* ---------- Ende Raum-Explorer ---------- */

/* ---------- Kein Aufblitzen des Anmeldeschirms ----------
   Der Server schreibt beim Ausliefern in die Seite, ob jemand angemeldet ist
   (`data-start`). Damit steht schon beim ersten Strich das Richtige da, statt
   dass der Anmeldeschirm kurz auftaucht und wieder verschwindet. Sobald das
   Programm den Zustand kennt, nimmt es das Merkmal weg – von da an gilt
   wieder allein `.verborgen`. */
body[data-start="buero"] #anmeldung{display:none!important}
body[data-start="anmeldung"] #buero{display:none!important}
/* Wer angemeldet ist, sieht sofort den Raum – nicht eine leere dunkle Fläche,
   bis die Daten da sind. */
/* Solange der Tisch noch aufgebaut wird, steht schon der Raum da. Gilt auch
   nach dem Wegnehmen von data-start, denn zwischen dem und dem fertigen Tisch
   liegt das Laden der Daten. Unter dem fertigen Tisch ist es nicht zu sehen. */
body[data-start="buero"],
body.tisch-an{background:#241c14 var(--raumbild) center/cover no-repeat}

/* ---------- Produktvergleich des Rechercheagenten ----------
   Liegt in einer Chatblase und soll dort wie ein eingelegtes Blatt Papier
   wirken: gebrochenes Weiß, weiche Kanten, keine Signalfarben. Die Reihung
   steht als Nummer am Rand – sie ist die Aussage, nicht die Farbe. */
.vergleich{margin:10px 0 4px;border-radius:14px;overflow:hidden;
  background:var(--eingelegt);border:1px solid rgba(var(--ton),.08);
  /* Die Chatblase gibt „pre-wrap" vor, damit getippte Zeilenumbrüche stehen
     bleiben. Hier drin ist der Umbruch aber die Einrückung des Quelltextes –
     ohne diese Zeile zieht sie die ganze Übersicht auseinander. */
  white-space:normal}
.blase.b-agent .vergleich{background:rgba(255,255,255,.7)}
.vergleichkopf{padding:10px 14px 8px;border-bottom:1px solid rgba(var(--ton),.07)}
.vergleichkopf b{display:block;font-family:"Iowan Old Style",Georgia,serif;font-size:15.5px}
.vergleichkopf span{display:block;font-size:11.5px;opacity:.6;margin-top:2px}
.produktliste{display:flex;flex-direction:column}
.produkt{display:flex;gap:12px;padding:12px 14px;align-items:flex-start;
  border-top:1px solid rgba(var(--ton),.06)}
.produkt:first-child{border-top:0}
.platz{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  font-size:12px;font-weight:600;background:rgba(var(--ton),.07);margin-top:2px}
.produkt:first-child .platz{background:linear-gradient(160deg,#e0b070,#a9722f);color:#fff}
.produktbild{flex:0 0 auto;width:76px;height:76px;object-fit:contain;border-radius:10px;
  background:#fff;border:1px solid rgba(var(--ton),.06)}
.produktbild.leer{display:grid;place-items:center;font-size:10px;opacity:.45;text-align:center;
  padding:4px;line-height:1.2}
.produkttext{min-width:0;flex:1}
.produktname{display:block;font-size:14.5px;line-height:1.3}
.produktzeile{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;margin:3px 0 6px}
.produktzeile .preis{font-size:16px;font-weight:600}
.produktzeile .preis.ohne{font-size:12.5px;font-weight:400;opacity:.6;font-style:italic}
.produktzeile .haendler{font-size:12px;opacity:.65}
.produkt ul{margin:0 0 4px;padding:0;list-style:none}
.produkt ul li{font-size:12.5px;line-height:1.45;padding-left:2px}
.produkt .dafuer li{opacity:.9}
.produkt .dagegen li{opacity:.72}
.fuerwen{font-family:"Iowan Old Style",Georgia,serif;font-style:italic;font-size:13px;
  opacity:.8;margin:4px 0 6px}
.zumangebot{display:inline-block;font-size:12.5px;text-decoration:none;
  border:1px solid rgba(var(--ton),.15);border-radius:999px;padding:4px 11px;
  color:inherit;opacity:.85}
.zumangebot:hover{opacity:1;background:rgba(var(--ton),.05)}
/* Produktfoto in die Mediathek legen (#261) – neben „Zum Angebot“ */
button.produktablegen{background:none;font:inherit;font-size:12.5px;cursor:pointer;margin-left:6px}
button.produktablegen.erledigt{cursor:default;opacity:.6}
.empfehlung{padding:11px 14px;border-top:1px solid rgba(var(--ton),.07);
  font-size:13.5px;line-height:1.5}
.empfehlung b{display:block;font-family:"Iowan Old Style",Georgia,serif;margin-bottom:2px}
.vergleichfuss{padding:8px 14px 10px;font-size:11.5px;opacity:.55;line-height:1.4;
  border-top:1px solid rgba(var(--ton),.05)}
@media(max-width:560px){
  .produkt{gap:9px;padding:10px}
  .produktbild{width:58px;height:58px}
  .produktzeile .preis{font-size:15px}
}

/* Wofür der Preis gilt – und was daran unsicher ist. Steht direkt unter dem
   Preis, weil es dort gebraucht wird: beim Vergleichen, nicht im Kleingedruckten. */
.giltfuer{font-size:11.5px;opacity:.6;margin:-3px 0 6px;line-height:1.4}
.giltfuer.warnung{opacity:.85;color:#8a5a1a}
.giltfuer.fotoweg{margin:6px 0 0}          /* Produktfoto geht bald (#267) */

/* ---------- Vorgänge (Mappen) der Agenten ----------
   Seit #404 eine Seitenleiste wie beim Assistenten (Stile der Leiste unter
   „Gespräche des eigenen Assistenten“); hier nur die Knöpfe, die beide nutzen.
   Der Stand steht als Wort da, nicht als Ampel – wer schlecht Farben
   unterscheidet, liest ihn trotzdem. */
/* Sicherheitsnetz: Gebautes HTML soll nie „pre-wrap" erben – dort ist der
   Zeilenumbruch nur die Einrückung des Quelltextes und zieht Zeilen auseinander. */
.blattkopf,.tischmenue{white-space:normal}
.mappenneu{border:0;border-radius:999px;padding:8px 14px;font-size:13px;cursor:pointer;
  background:linear-gradient(160deg,#e0b070,#a9722f);color:#fff;flex:0 0 auto}
.mappenneu:hover{filter:brightness(1.06)}
.mappensuche{flex:1;min-width:0;border:1px solid rgba(var(--ton),.14);border-radius:999px;
  padding:7px 13px;font-size:13px;background:var(--feld);color:var(--text);outline:none;min-height:0}
.mappensuche:focus{border-color:rgba(var(--ton),.3)}
/* Der Weg zurück (Mediathek, Baukasten): links im Kopf, wo man ihn erwartet. */
.blattkopf .zurueck{border:0;background:transparent;color:var(--tinte);font-size:22px;
  line-height:1;cursor:pointer;padding:0 4px 3px;border-radius:8px;flex:0 0 auto}
.blattkopf .zurueck:hover{background:rgba(var(--ton),.08)}
/* Das kleine Menü an einer Recherche */
.tischmenue{position:fixed;z-index:60;right:26px;top:64px;background:var(--papier);color:var(--papiertext);
  border-radius:12px;box-shadow:0 18px 50px rgba(20,12,4,.4);overflow:hidden;
  border:1px solid rgba(var(--ton),.1);min-width:210px}
.tischmenue button{display:block;width:100%;text-align:left;border:0;background:transparent;
  padding:10px 14px;font-size:13.5px;cursor:pointer;color:inherit;font-family:inherit}
.tischmenue button:hover{background:rgba(var(--ton),.06)}

/* Zahl am Menüpunkt: wie viele Dinge dort warten. Ruhig, kein Alarmrot –
   die Zahl selbst ist die Aussage. */
.menuzahl{margin-left:auto;font-size:11.5px;min-width:20px;text-align:center;
  background:var(--flaeche2);border:1px solid var(--rand);border-radius:999px;
  padding:1px 7px;opacity:.85}
.menupunkt.aktiv .menuzahl{background:rgba(255,255,255,.25);border-color:transparent}
/* Der Punkt an der Tür: hinter ihr wartet etwas auf eine Entscheidung. */
.tischecke .tuer.wartet::after{content:"";position:absolute;top:5px;right:5px;
  width:9px;height:9px;border-radius:50%;background:linear-gradient(160deg,#e0b070,#a9722f);
  box-shadow:0 0 0 2px rgba(0,0,0,.25)}
/* (Die relative Lage für den Wartepunkt steht schon weiter oben.) */

/* Das Entfalten aus einem Knopf (Verbrauch, #29) – wie eine Miniatur, die zum Fenster wird. */
.blatt.entfaltet{transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s ease}
@media (prefers-reduced-motion:reduce){ .blatt.entfaltet{transition:opacity .25s ease} }

/* ---------- Die Suche im Raum ----------
   Klappt unter dem Knopf oben rechts auf: ein Feld, ein Knopf, ein Satz
   Erklärung. Liegt über allem, damit sie auch über offenen Blättern erscheint. */
.tischsuchkasten{position:fixed;top:64px;right:26px;z-index:60;width:min(380px,calc(100vw - 52px));
  background:var(--papier);color:var(--papiertext);border-radius:14px;padding:10px 12px 9px;
  box-shadow:0 20px 54px rgba(20,12,4,.45);border:1px solid rgba(var(--ton),.1);white-space:normal}
.tischsuchkasten form{display:flex;gap:8px;align-items:center}
.tischsuchkasten input{flex:1;min-width:0;border:1px solid rgba(var(--ton),.14);border-radius:999px;
  padding:8px 14px;font-size:14px;background:var(--karte);color:var(--papiertext);outline:none;min-height:0;
  font-family:inherit}
.tischsuchkasten input:focus{border-color:rgba(var(--ton),.32)}
.tischsuchkasten button{flex:0 0 auto;border:0;border-radius:999px;width:36px;height:36px;
  cursor:pointer;font-size:17px;background:rgba(var(--ton),.08);color:var(--tinte)}
.tischsuchkasten button:hover{background:rgba(var(--ton),.15)}
.tischsuchhinweis{font-size:11.5px;opacity:.55;line-height:1.4;margin-top:7px;padding:0 4px}
@media(max-width:560px){ .tischsuchkasten{right:12px;left:12px;width:auto} }

/* ---------- Das Such-Blatt (#209) ----------
   Gleiche Sprache wie der Suchkasten und die anderen Blätter: Papier, runde
   Felder und Knöpfe, Überschriften in der Buchschrift. Das Feld bleibt beim
   Rollen oben stehen – nachschärfen soll man, ohne zurückzurollen. */
.blatt.suchblatt .blattinhalt{padding-top:0;display:flex;flex-direction:column}
.suchsymbol{background:#3b352c!important;font-size:20px!important;font-weight:400!important}
.suchblattform{position:sticky;top:0;z-index:2;display:flex;gap:8px;align-items:center;
  margin:0 -18px;padding:14px 18px 10px;background:var(--bg)}
.suchblattfeld{flex:1;min-width:0;border:1px solid rgba(var(--ton),.14);border-radius:999px;
  padding:9px 16px;font-size:15px;background:var(--feld);color:var(--text);outline:none;min-height:0;
  font-family:inherit;margin:0}
.suchblattfeld:focus{border-color:rgba(var(--ton),.32)}
.suchblattlos{flex:0 0 auto;border:0;border-radius:999px;width:38px;height:38px;cursor:pointer;
  font-size:18px;background:rgba(var(--ton),.08);color:var(--tinte)}
.suchblattlos:hover{background:rgba(var(--ton),.15)}
.suchblattfilter:empty{display:none}
.suchmarken{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 8px}
.suchmarke{border:0;border-radius:999px;padding:6px 12px;font-size:12.5px;cursor:pointer;
  background:rgba(var(--ton),.06);color:var(--tinte);display:inline-flex;align-items:center;gap:5px}
.suchmarke:hover{background:rgba(var(--ton),.12)}
.suchmarke span{font-size:11px;background:rgba(var(--ton),.08);border-radius:999px;padding:1px 7px;
  font-variant-numeric:tabular-nums}
.suchmarke.an{background:var(--tinte);color:var(--tinte-auf)}
.suchmarke.an span{background:rgba(var(--ton-gegen),.22)}
.suchmarke.leeren{background:transparent;border:1px dashed rgba(var(--ton),.2);opacity:.75}
.suchwahlen{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--papierleise);margin-bottom:6px}
.suchwahlen label{display:inline-flex;align-items:center;gap:6px}
.suchwahl{width:auto!important;font-size:12.5px;padding:3px 8px;border-radius:8px;margin:0;
  border:1px solid rgba(var(--ton),.14);background:var(--feld);color:var(--text)}
.suchleer{padding:26px 4px 10px}
.suchlaeuft{padding:14px 2px}
.suchzahl2{font-size:12px;letter-spacing:.02em;color:var(--leise2);margin:6px 2px 6px;transition:opacity .2s}
.suchzahl2.laeuft{opacity:.45}
.suchtrefferliste{display:flex;flex-direction:column;gap:6px;padding-bottom:10px}
.suchtreffer{display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%;
  border:1px solid rgba(var(--ton),.08);border-radius:12px;background:var(--karte);padding:11px 13px;
  cursor:pointer;color:var(--text);font:inherit}
.suchtreffer:hover{border-color:rgba(var(--ton),.2);box-shadow:0 4px 14px rgba(40,30,15,.08)}
.suchtreffer:focus-visible{outline:2px solid var(--wahl);outline-offset:1px}
.suchtrbild{flex:0 0 auto;width:34px;height:34px;border-radius:50%;overflow:hidden;
  display:grid;place-items:center;background:rgba(var(--ton),.05)}
.suchtrbild img{width:100%;height:100%;object-fit:cover}
.suchtrsymbol{font-size:17px;line-height:1}
.suchtrinhalt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.suchtrkopf{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.suchtrkopf b{font-family:"Iowan Old Style",Georgia,serif;font-size:15px;font-weight:600}
.suchtrart{font-size:11px;background:rgba(var(--ton),.06);border-radius:999px;padding:1px 8px;color:var(--papierleise)}
.suchtrzeit{margin-left:auto;font-size:11.5px;color:var(--leise2);white-space:nowrap}
.suchtrvon{font-size:12px;color:var(--leise2)}
.suchtrtext{font-size:13.5px;line-height:1.5;color:var(--auszug);word-break:break-word;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.suchtrtext mark{background:rgba(255,196,0,.38);color:inherit;border-radius:3px;padding:0 2px}
.suchtrwohin{font-size:12px;color:var(--warm);margin-top:2px}
.suchtreffer:hover .suchtrwohin{text-decoration:underline}
@media(max-width:700px){
  .suchtreffer{padding:10px 11px;gap:10px}
  .suchtrzeit{margin-left:0}
}

/* ---------- Bild anhängen im Blatt ----------
   Die Klammer sitzt links neben dem Schreibfeld, die Vorschau darüber: Man
   sieht, was mitgeht, bevor man abschickt. */
.blattklammer{flex:0 0 auto;cursor:pointer;font-size:17px;opacity:.55;padding:7px 2px 7px 0;
  line-height:1;user-select:none}
.blattklammer:hover{opacity:1}
.blattanhang{display:flex;align-items:center;gap:7px;padding:8px 13px 0;flex:0 0 auto;
  white-space:normal;flex-wrap:wrap}
.anhangstueck{position:relative;flex:0 0 auto;line-height:0}
.blattanhang img{width:44px;height:44px;object-fit:cover;border-radius:8px;
  border:1px solid rgba(var(--ton),.12);display:block}
/* Dokumente (#276): ein Blatt-Zeichen in derselben Größe wie die Bilder */
.anhangdokzeichen{display:flex;align-items:center;justify-content:center;width:44px;height:44px;
  border-radius:8px;border:1px solid rgba(var(--ton),.12);background:rgba(255,255,255,.6);
  font-size:22px;line-height:1}
.anhangdokzeichen.laedt{opacity:.45}
.blattanhangname{flex:1;min-width:0;font-size:12.5px;opacity:.7;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
/* Das Kreuz sitzt auf dem Bild, damit auch bei sechs Bildern klar ist, welches
   gemeint ist. */
.blattanhangweg{position:absolute;top:-5px;right:-5px;width:19px;height:19px;padding:0;
  border:0;border-radius:50%;cursor:pointer;font-size:11px;line-height:19px;
  background:rgba(40,32,22,.9);color:#fff;opacity:.85}
.blattanhangweg:hover{opacity:1;background:rgba(40,32,22,1)}
/* Unter den Bildern (#236 Stufe B): was eine Antwort zuletzt kostete – und in
   der Übersicht der Vorgänge (kein Schreibfeld), dass erst ein Vorgang offen
   sein muss. Je eine eigene Zeile. */
.blattanhangkosten,.blattanhanghinweis{flex:1 0 100%;font-size:12px;opacity:.7;line-height:1.35}
.blattanhanghinweis{display:none;opacity:.9;font-weight:600}
.blatt.ohne-eingabe .blattanhanghinweis{display:block}
/* Während ein Bild über dem Blatt schwebt: ein ruhiger Rahmen, kein Blinken. */
.blatt.nimmt{outline:2px dashed rgba(224,176,112,.9);outline-offset:-6px}
.blatt.nimmt .blattfuss{background:rgba(224,176,112,.1)}
/* Mehrere Bilder in einer Chatblase nebeneinander statt untereinander. */
.chatbilder.mehrere{display:flex;flex-wrap:wrap;gap:6px}
.chatbilder.mehrere .chatbild{max-width:150px;max-height:150px;object-fit:cover}
/* Zwischenbilder eines Auftrags (#231): zugeklappt unter der Antwort, aufgeklappt
   ein Streifen zum seitwärts Schieben – auch am Telefon ohne Quetschen. */
details.zwischenbilder{margin-top:6px;font-size:13px;white-space:normal}       /* .blase hat pre-wrap */
details.zwischenbilder>summary{cursor:pointer;color:var(--leise);user-select:none}
.zwstreifen{display:flex;gap:8px;overflow-x:auto;padding:6px 2px 4px;scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch}
.zwbild{flex:0 0 132px;margin:0;scroll-snap-align:start;display:flex;flex-direction:column;gap:3px}
.zwbild img{width:132px;height:99px;object-fit:cover;border-radius:6px;border:1px solid var(--rand);
  background:var(--flaeche2);cursor:zoom-in}
.zwbild figcaption{font-size:11.5px;line-height:1.25;color:var(--leise);overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.zwknoepfe{display:flex;gap:4px;flex-wrap:wrap}
.zwknoepfe .knopf.mini{font-size:11.5px;padding:2px 7px;text-decoration:none}
button.zwablegen.erledigt{cursor:default;opacity:.6}

/* Ein Blatt, das von selbst aufgegangen ist, atmet zweimal auf – damit man
   merkt, dass man es nicht selbst geöffnet hat. */
.blatt.kommtan{animation:blattkommt 1.1s ease-out 2}
@keyframes blattkommt{
  0%,100%{box-shadow:0 26px 70px rgba(20,12,4,.45)}
  50%{box-shadow:0 26px 70px rgba(20,12,4,.45),0 0 0 3px rgba(224,176,112,.75)}
}

/* ---------- Feedback an den Anbieter (18.09.2026) ----------
   Der Knopf sitzt neben der Suche und trägt ein Wort statt eines Zeichens –
   „Feedback" soll man finden, ohne zu rätseln. Die Klappe fährt von oben
   herein und liegt über allem, auch über offenen Blättern. */
.tischecke .tuer.tuertext{width:auto;padding:0 14px;font-size:13.5px;letter-spacing:.02em;
  font-family:inherit}
.feedbackklappe{position:fixed;top:64px;right:26px;z-index:61;width:min(460px,calc(100vw - 52px));
  background:var(--papier);color:var(--papiertext);border-radius:16px;padding:16px 18px 14px;
  box-shadow:0 22px 60px rgba(20,12,4,.48);border:1px solid rgba(var(--ton),.1);white-space:normal;
  animation:fbrein .26s cubic-bezier(.2,.8,.25,1)}
.feedbackklappe.geht{animation:fbraus .18s ease-in forwards}
@keyframes fbrein{from{transform:translateY(calc(-100% - 70px));opacity:.4}to{transform:none;opacity:1}}
@keyframes fbraus{to{transform:translateY(calc(-100% - 70px));opacity:0}}
.fbkopf{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}
.fbkopf b{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-weight:400;font-size:21px}
.fbkopf span{font-size:12.5px;opacity:.6}
.fbarten{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.fbart{position:relative;cursor:pointer}
.fbart input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.fbart span{display:inline-block;padding:6px 13px;border-radius:999px;font-size:13px;
  background:rgba(var(--ton),.06);border:1px solid transparent;transition:background .15s}
.fbart:hover span{background:rgba(var(--ton),.11)}
.fbart input:checked + span{background:var(--tinte);color:var(--tinte-auf)}
.fbart input:focus-visible + span{border-color:var(--tinte);outline:2px solid rgba(59,53,44,.25)}
.fbtext{display:block;width:100%;box-sizing:border-box;resize:vertical;min-height:130px;max-height:50vh;
  border:1px solid rgba(var(--ton),.14);border-radius:12px;padding:10px 12px;font-size:14px;line-height:1.45;
  background:var(--karte);color:var(--papiertext);outline:none;font-family:inherit;white-space:pre-wrap}
.fbtext:focus{border-color:rgba(var(--ton),.32)}
.fbunter{display:flex;gap:12px;align-items:flex-start;margin-top:7px}
.fbhinweis{flex:1;font-size:11.5px;opacity:.55;line-height:1.4}
.fbzaehler{flex:0 0 auto;font-size:11.5px;opacity:.55;font-variant-numeric:tabular-nums}
.fbzaehler.knapp{opacity:.9;font-weight:600}
.fbmeldung{font-size:13px;min-height:0;margin-top:6px}
.fbmeldung:empty{display:none}
.fbmeldung.fehler{color:#8a3a26}
.fbknoepfe{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.fbknoepfe button{border:0;border-radius:999px;padding:8px 18px;font-size:14px;cursor:pointer;
  font-family:inherit}
.fbab{background:rgba(var(--ton),.07);color:var(--tinte)}
.fbab:hover{background:rgba(var(--ton),.13)}
.fbsenden{background:var(--tinte);color:var(--tinte-auf)}
.fbsenden:hover{background:var(--tinte-hover)}
.fbsenden:disabled{opacity:.35;cursor:default}
.fbdanke{display:flex;flex-direction:column;gap:4px;padding:18px 4px 10px;text-align:center}
.fbdanke b{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-weight:400;font-size:22px}
.fbdanke span{font-size:13.5px;opacity:.7}
@media(max-width:560px){
  .feedbackklappe{right:12px;left:12px;width:auto;top:60px;padding:14px 14px 12px}
  .tischecke .tuer.tuertext{padding:0 11px;font-size:12.5px}
}
@media (prefers-reduced-motion: reduce){ .feedbackklappe,.feedbackklappe.geht{animation:none} }

/* ---------- Was hat sich geändert? (#149, 27.09.2026) ----------
   Knopf „Neu" neben Feedback, mit einer kleinen Zahl für Ungelesenes. Die
   Klappe erbt Form und Bewegung von .feedbackklappe; nur die Liste ist neu. */
.tischecke .tuer#tischneu{display:inline-flex;align-items:center;gap:7px}
.tischecke .tuer#tischneu[hidden]{display:none}
.tischneuzahl{font-style:normal;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;
  border-radius:999px;font-size:11px;font-weight:600;line-height:18px;text-align:center;
  background:linear-gradient(160deg,#e0b070,#a9722f);color:#fff;box-shadow:0 0 0 2px rgba(0,0,0,.2)}
.tischneuzahl[hidden]{display:none}
.neuklappe{display:flex;flex-direction:column;max-height:calc(100vh - 100px);padding-bottom:6px}
.neukopf{position:relative;padding-right:34px;margin-bottom:6px}
.neuzu{position:absolute;top:-4px;right:-6px;width:32px;height:32px;border:0;border-radius:999px;
  background:transparent;color:var(--tinte);font-size:15px;cursor:pointer}
.neuzu:hover{background:rgba(var(--ton),.07)}
.neuliste{overflow-y:auto;margin:0 -18px;padding:0 18px 8px;overscroll-behavior:contain}
.neueintrag{padding:12px 0;border-top:1px solid rgba(var(--ton),.08)}
.neueintrag:first-child{border-top:0}
.neueintrag.istneu{background:rgba(201,139,75,.11);border-top-color:transparent;
  margin:4px -10px;padding:11px 10px;border-radius:11px}
.neueintragkopf{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;margin-bottom:3px}
.neudatum{font-size:12px;opacity:.55;font-variant-numeric:tabular-nums}
.neumarke{font-size:11px;padding:1px 8px;border-radius:999px;background:var(--tinte);color:var(--tinte-auf)}
.neumarke.intern{background:rgba(var(--ton),.08);color:var(--tinte)}
.neuintern{display:inline-flex;align-items:center;gap:5px;margin-left:auto;font-size:12px;opacity:.65;cursor:pointer}
.neuintern input{width:auto;margin:0}
.neutitel{display:block;font-size:14.5px;font-weight:600;line-height:1.35}
.neueintrag ul{margin:6px 0 0 18px;padding:0;font-size:13.5px;line-height:1.5}
.neueintrag li{margin-bottom:3px}
.neuhinweis{font-size:12px;opacity:.55;margin-top:4px}
.neuleer{font-size:13.5px;opacity:.6}
.neumehr{display:block;margin:10px auto 4px;border:0;border-radius:999px;padding:7px 16px;
  font-size:13px;cursor:pointer;background:rgba(var(--ton),.07);color:var(--tinte)}
.neumehr:hover{background:rgba(var(--ton),.13)}
.neuzeichen{display:none}
/* Am Telefon ist die Ecke voll – dort ein schmaler Knopf mit Zeichen, die
   Zahl sitzt dann oben am Rand wie der Punkt an der Tür. Sonst läge das Wort
   über dem Firmennamen oben links. */
@media (max-width:560px){
  .neuklappe{max-height:calc(100vh - 80px)}
  .eckknoepfe{gap:6px}
  .tischecke .tuer#tischneu{width:36px;padding:0;justify-content:center}
  #tischneu .neuwort{display:none}
  #tischneu .neuzeichen{display:inline;font-size:15px}
  #tischneu .tischneuzahl{position:absolute;top:-6px;right:-7px;min-width:17px;height:17px;
    line-height:17px;font-size:10px;padding:0 4px}
}

/* Die Seite des Anbieters hinter der Tür */
.fbeintrag{border-top:1px solid rgba(0,0,0,.08);padding:12px 0}
.fbeintrag:first-of-type{border-top:0}
.fbeintragkopf{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:13px}
.fbeintragtext{white-space:pre-wrap;margin:8px 0;line-height:1.45;overflow-wrap:anywhere}
.fbeintrag details{font-size:12px;opacity:.7}
.fbeintrag form{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin-top:8px}
.fbeintrag textarea{flex:1;min-width:220px;min-height:38px;font-size:13px}

.agentreiter{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 14px;align-items:center}
.agentreiterpunkt{border:1px solid var(--rand);background:transparent;color:inherit;
  font:inherit;font-size:13px;padding:5px 11px;border-radius:999px;cursor:pointer}
.agentreiterpunkt:hover{background:rgba(127,127,127,.12)}
.agentreiterpunkt.aktiv{background:var(--blau);border-color:transparent;color:var(--auf-blau)}

/* ---------- Blattknöpfe am Mac (18.09.2026) ----------
   Drei Punkte links oben, wie ein Fenster am Mac. Die Knöpfe bleiben dieselben
   (data-tu = zu / klein / gross) – nur ihr Platz und ihr Aussehen ändern sich.
   „display:contents" löst die Knopfgruppe auf, damit jeder Knopf einzeln im
   Kopf angeordnet werden kann. Der Knopf „⋯" (Vorgang ordnen) bleibt rechts. */
.mac .blattknoepfe{display:contents}
.mac .blattknoepfe button[data-tu="zu"],
.mac .blattknoepfe button[data-tu="klein"],
.mac .blattknoepfe button[data-tu="gross"]{
  position:relative;width:12px;height:12px;min-width:12px;padding:0;border-radius:50%;
  font-size:0;line-height:0;flex:0 0 auto;margin-right:-3px;
  border:.5px solid rgba(0,0,0,.2);box-shadow:none}
.mac .blattknoepfe button[data-tu="zu"]{order:-3;background:#ff5f57;border-color:#e2463f}
.mac .blattknoepfe button[data-tu="klein"]{order:-2;background:#febc2e;border-color:#e1a116}
.mac .blattknoepfe button[data-tu="gross"]{order:-1;background:#28c840;border-color:#14ae2c;margin-right:6px}
.mac .blattknoepfe button[data-tu="zu"]:hover{background:#ff5f57}
.mac .blattknoepfe button[data-tu="klein"]:hover{background:#febc2e}
.mac .blattknoepfe button[data-tu="gross"]:hover{background:#28c840}
.mac .blattknoepfe button[data-tu]:active{filter:brightness(.85)}
/* Die Zeichen erscheinen erst, wenn die Maus über dem Kopf ist – wie am Mac. */
.mac .blattknoepfe button[data-tu="zu"]::before,
.mac .blattknoepfe button[data-tu="klein"]::before,
.mac .blattknoepfe button[data-tu="gross"]::before{
  position:absolute;inset:0;display:grid;place-items:center;
  font:700 9px/1 -apple-system,BlinkMacSystemFont,sans-serif;color:rgba(60,20,0,.6);opacity:0}
.mac .blattknoepfe button[data-tu="zu"]::before{content:"×";font-size:11px}
.mac .blattknoepfe button[data-tu="klein"]::before{content:"−"}
.mac .blattknoepfe button[data-tu="gross"]::before{content:"+"}
.mac .blattkopf:hover .blattknoepfe button::before{opacity:1}
.mac .blattknoepfe button[data-tu="mappe"]{order:1;margin-left:auto}

/* Langes Drücken öffnet unser Menü (19.09.2026) – nicht das des iPhones
   zum Sichern des Bildes oder Markieren des Textes. */
.tischperson img,.assistentzeile,.blattkopf{-webkit-touch-callout:none}
.assistentzeile{-webkit-user-select:none;user-select:none}

/* Ein- und Ausschalter auf hellen Karten (Anrede, 19.09.2026) */
/* `.feld label` macht Beschriftungen zu Blöcken – der Schalter braucht seine Zeile */
.umschalter,.feld label.umschalter{display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  user-select:none;position:relative;margin:0}
.umschalter input{position:absolute;opacity:0;width:0;height:0}
.umschalter .schieber{display:inline-block;position:relative;width:36px;height:20px;border-radius:20px;
  background:rgba(128,128,128,.45);transition:background .15s;flex:0 0 auto}
.umschalter .schieber::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;
  border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.umschalter.an .schieber{background:var(--signal)}      /* wie die Häkchen (#107) */
.umschalter.an .schieber::after{left:18px}
.umschalter input:focus-visible + .schieber{outline:2px solid var(--akzent, #3f6fe0);outline-offset:2px}

/* Persönlicher Assistent (19.09.2026). Bild ohne Foto: warmes Grau zu Tinte wie
   die Blätter (#330 – vorher Blaugrau zu Marineblau), ebenso .tischassistentbild. */
.assistentbild{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:19px;
  background:linear-gradient(135deg,#6b6357,#3b352c);color:#fff;flex:0 0 auto}
.assistentgetan{font-size:12px;opacity:.7;margin-top:5px}
/* Zeiten-Karte des Assistenten (#356) – Farben nur über Variablen (dunkle Blätter) */
.zeitkarte{margin-top:8px;border:1px solid rgba(var(--ton),.18);border-radius:10px;padding:8px 10px;
  background:rgba(var(--ton),.04);font-size:13.5px}
.zeitkarte.zkfertig{opacity:.75}
.zkkopf{font-weight:600;margin-bottom:6px}
.zkzeile{padding:5px 0;border-top:1px solid rgba(var(--ton),.1)}
.zkzeile:first-of-type{border-top:0}
.zkfehler{margin-top:3px;font-weight:600}
.zkknoepfe{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.zkknoepfe button[disabled]{opacity:.45;cursor:not-allowed}
/* Hauptknopf der Karte (#387 ui-12): Messing wie .knopf – „Ändern“/„Verwerfen“ zurückhaltend */
.zkknoepfe .blattknopf.haupt{background:var(--blau);color:var(--auf-blau);font-weight:600}
.zkknoepfe .blattknopf.haupt:hover:not([disabled]){filter:brightness(.93)}
.zkknoepfe .blattknopf.grau{background:transparent;box-shadow:inset 0 0 0 1px rgba(var(--ton),.2)}
.zkknoepfe .blattknopf.grau:hover{background:rgba(var(--ton),.07)}
.zkstand{margin-top:6px;font-weight:600}
.zkfelder{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:flex-end;margin:6px 0 4px;font-size:12.5px}
.zkfelder label{display:flex;flex-direction:column;gap:2px}
.zkfelder label.hakenfeld{flex-direction:row;align-items:center;gap:5px}
.zkfelder label.zkbreit{flex:1 1 100%}
.zkfelder input,.zkfelder select{font:inherit;padding:3px 5px;border-radius:6px;
  border:1px solid rgba(var(--ton),.25);background:transparent;color:inherit}
.zkziel{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.zkziel input{flex:1 1 160px}
.zkzielliste{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:4px}
.assistentwissen{display:flex;flex-direction:column;gap:6px;margin:10px 0}
.assistentwissenzeile{display:flex;gap:8px;align-items:flex-start;background:rgba(var(--ton),.04);
  border-radius:9px;padding:8px 10px}
.assistentwissenzeile span{flex:1}
.assistentwissenzeile small{display:block;opacity:.55;font-size:11.5px;margin-top:2px}
.assistentwissenzeile button{border:0;background:transparent;cursor:pointer;opacity:.45;font-size:14px}
.assistentwissenzeile button:hover{opacity:1}
#tischassistent.arbeitet{animation:pulsieren 1.6s ease-in-out infinite}

/* Entscheidungskarten des Pflege-Agenten (Ticket #93) */
.pflegekarten{margin-top:8px;display:flex;flex-direction:column;gap:8px}
.pflegekarte{border:1px solid var(--gelb-rand);background:var(--gelb-weich);color:var(--gelb-text);
  border-radius:10px;padding:8px 10px;font-size:14px}
.pflegekarte.fertig{opacity:.8}
.pk-kopf{font-weight:600;margin-bottom:2px}
.pk-grund{opacity:.8;margin-bottom:6px}
.pk-wahl{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:4px 0}
.pk-schritte{font-size:12px;opacity:.75}
.pk-unten{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;align-items:center}
.pk-sonstiges{display:flex;gap:6px;flex:1;min-width:200px}
.pk-sonstiges input{flex:1;min-width:0}
.pk-ergebnis{font-size:13px}

/* ---------- Zeiterfassung (Ticket #40) ---------- */
/* Die Stempeluhr sitzt in der Kopfzeile und muss dort auf jedem Gerät Platz
   finden – auf dem Telefon bleibt deshalb nur die laufende Zeit stehen. */
.stempeluhr{display:flex;align-items:center;gap:6px;margin-right:4px;--stempelhoehe:38px}
/* Eine Höhe und Form für alle Bedienteile der Stempeluhr an allen Plätzen (#386 uc-1/ui-4):
   wie die Eckknöpfe (.tuer) 38 px, am Telefon 36 px, Ecken 12 px. Die Höhe hängt nicht an
   Schrift oder Zeilenhöhe – vorher standen 25, 28,6, 30,1 und 31,3 px nebeneinander.
   Zeichen-Knöpfe (Uhr, Warnung) quadratisch. Wächter: lokal_tischknoepfe.py */
.stempeluhr :is(.knopf.mini,.stempellauf,.stempelhinweis){box-sizing:border-box;height:var(--stempelhoehe);
  display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 13px;line-height:1;
  border-radius:12px;font-size:13.5px;white-space:nowrap;flex:0 0 auto;margin:0}
.stempeluhr :is(.zeitblattknopf,.stempelhinweis){width:var(--stempelhoehe);padding:0}
.stempeluhr .woranknopf{font-size:12.5px}
.stempellauf{font-variant-numeric:tabular-nums;font-weight:600;
  background:var(--gruen-weich);color:var(--gruen-text);border:1px solid var(--gruen-rand)}
.stempellauf.pause{background:var(--gelb-weich);color:var(--gelb-text);border-color:var(--gelb-rand)}
.stempelhinweis{color:var(--gelb-text);cursor:help}

.zeitsumme{gap:18px;margin-top:12px;padding-top:12px;border-top:1px solid var(--rand);
  flex-wrap:wrap;align-items:center;font-variant-numeric:tabular-nums}
.zeitsumme .plus{color:var(--gruen-text)}
.zeitsumme .minus{color:var(--rot-text)}
.offenmarke{background:var(--gelb-weich2);color:var(--gelb-text);border:1px solid var(--gelb-rand);
  border-radius:7px;padding:2px 7px;font-size:13px;white-space:nowrap}

.zeittabelle{width:100%;border-collapse:collapse}
.zeittabelle td{vertical-align:top;padding:9px 8px}
.zeittabelle tr.wochenende{background:var(--flaeche2)}
.zeittabelle tr.leertag td{color:var(--leise)}
.zeittag{width:5.5em;white-space:nowrap;font-weight:600}
.zeitsoll{width:9em;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.zeitspannen{width:auto}
.zeitzeile{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:3px 0}
.zeitvonbis{font-variant-numeric:tabular-nums;white-space:nowrap}
.zeitbuchung{background:var(--gruen-weich2);color:var(--gruen-text);border:1px solid var(--gruen-rand);
  border-radius:7px;padding:2px 7px;font-size:13px}
.zeitbuchung .weg{margin-left:4px;cursor:pointer;opacity:.6}
.zeitbuchung .weg:hover{opacity:1;color:var(--rot)}
.zeitlink{cursor:pointer;color:var(--blau);font-size:13px;text-decoration:underline}
/* Als <button>: ohne Fläche und Polster des Browsers (#386 uc-4 – sonst ButtonFace grau hinter
   dem Text, dunkel nur 2,2 : 1) */
button.zeitlink{background:none;border:0;padding:0;font-family:inherit;line-height:inherit}
/* Tageslink und die Zeichen an einer Buchung (€/↺, ✕) waren <a> ohne href (#387 uc-8) –
   als Knopf ohne alles vom Browser; :where hält die Regel leicht (Hover-Farben bleiben) */
:where(button.zeittaglink,.zeitbuchung button.haken,.zeitbuchung button.weg){background:none;border:0;
  padding:0;font:inherit;color:inherit;line-height:inherit;text-align:inherit}
.zeitlink.weg{color:var(--rot)}
.zeithinweis{color:var(--gelb-text);font-size:13px;padding:2px 0}
.zeitformular{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0}
.zeitformular label{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--leise)}
.zeitformular input,.zeitformular select{width:auto;min-width:90px}
/* Notiz/Grund breiter – über eine Klasse statt style, damit schmal die volle Breite gilt (#386 uc-9) */
.zeitformular .zfbreit{width:200px}
/* Häkchen in der Formularzeile (#396 N3): links neben seinem Text, so hoch wie die Felder daneben –
   nicht als Spalte mit dem Häkchen mittig über dem Text (auch nicht in der vollen Breite am Telefon) */
.zeitformular label.zfhaken{flex-direction:row;align-items:center;gap:7px;min-height:40px;color:var(--text)}
.zeitformular label.zfhaken input{width:auto;min-width:0;margin:0;accent-color:var(--signal)}
/* Mit .zeitformular davor: Sonst gewinnt „.zeitformular label“ (Spalte, am Telefon
   volle Breite) und die Wochentage stehen untereinander (gesehen 09.10.2026, #357) */
.zeittagwahl,.zeitformular .zeittagwahl{display:inline-flex;flex-direction:row;align-items:center;gap:3px;
  margin-right:7px;width:auto}
.zeittagwahl input,.zeitformular .zeittagwahl input{width:auto;min-width:0}

@media (max-width:700px){
  /* In der schmalen Kopfzeile zählt nur: läuft die Uhr, und wie lange schon. */
  .menukoerper .zeittabelle td{padding:7px 4px}
  /* Auf dem Telefon steht der Tag über seinen Zeiten statt daneben – sonst
     bleiben für die Zeiten selbst keine 20 Zeichen übrig und die Tabelle
     schiebt sich seitlich aus der Karte (gemessen: 520 statt 349 px). */
  /* Die allgemeine Regel „.menukoerper table{min-width:520px}" schiebt Tabellen
     im Menüfenster lieber seitwärts, als sie zu quetschen. Für diese Tabelle
     stimmt das nicht: Sie hat pro Tag nur drei Angaben und liest sich
     untereinander besser als seitlich geschoben. */
  /* Auch der Monatskalender: Ein Kalender, der seitlich aus der Karte
     geschoben wird, ist unbrauchbar – sieben Spalten passen auch schmal. */
  /* Seit #386 (uc-13) nur noch im Menüfenster (Zeitverwaltung) – im Blatt gilt allein die
     Container-Abfrage „zeitblatt“ weiter unten; den Monatskalender gibt es nur im Blatt. */
  .menukoerper .zeittabelle{min-width:0}
  .menukoerper :is(.zeittabelle, .zeittabelle tbody, .zeittabelle tr, .zeittabelle td){display:block;width:auto}
  .menukoerper .zeittabelle tr{border-bottom:1px solid var(--rand);padding:6px 0}
  .menukoerper .zeittabelle td{border:0;padding:2px 0}
  .menukoerper .zeittag{width:auto}
  .menukoerper .zeitsoll{width:auto;text-align:left;color:var(--leise)}
  .menukoerper .zeitsoll b{color:var(--text)}
  .menukoerper .zeitsoll div{display:inline;margin-left:8px}
  .menukoerper .zeitformular label{width:100%}
  .menukoerper .zeitformular input,.menukoerper .zeitformular select{width:100%}
}

/* Die Stempeluhr in der Ecke des Tisches: dort ist der Hintergrund ein Foto,
   deshalb bekommt sie eine eigene, ruhige Fläche statt der Kartenfarbe. */
/* Seit #386 (uc-1) dasselbe helle Glas wie die Eckknöpfe darüber (.tuer), am Rechner wie
   in der Zeitkachel am Telefon – vorher dunkles Glas mit Rand und 8-px-Ecken. */
.tischstempel{margin-right:10px}
:is(.tischstempel,.zeitkachel) :is(.knopf.mini,.stempellauf,.stempelhinweis){border:0;
  background:rgba(250,248,244,.2);color:#fff;backdrop-filter:blur(6px)}
:is(.tischstempel,.zeitkachel) :is(.knopf.mini,button.stempellauf,button.stempelhinweis):hover{background:rgba(250,248,244,.42);filter:none}
:is(.tischstempel,.zeitkachel) .knopf.mini.stempel{background:rgba(250,248,244,.32)}
:is(.tischstempel,.zeitkachel) :is(.stempellauf.pause,.stempelhinweis){color:#f4dca6}
@media (max-width:700px){ .tischstempel{display:none} }
/* ---------- Persönlicher Tresor (Ticket #46) ---------- */
/* Das Fenster mit dem Wiederherstellungscode. Es legt sich über alles und
   lässt sich nur mit „Habe ich aufgeschrieben" schließen – dieser Code kommt
   nie wieder. */
.codefenster{position:fixed; inset:0; z-index:9000; display:flex; align-items:center;
  justify-content:center; background:rgba(0,0,0,.72); padding:16px;}
.codeinhalt{background:var(--karte,#fff); color:var(--schrift,#222); border-radius:14px;
  padding:22px 24px; max-width:520px; box-shadow:0 18px 50px rgba(0,0,0,.45);}
.codeinhalt h2{margin:0 0 10px; font-size:1.25rem;}
.codeinhalt p{margin:0 0 12px; line-height:1.5;}
.codewert{display:block; font-family:ui-monospace,Menlo,Consolas,monospace; font-size:1.3rem;
  letter-spacing:.09em; text-align:center; padding:14px 8px; margin:4px 0 16px; border-radius:10px;
  background:rgba(127,127,127,.14); user-select:all; word-break:break-all;}
/* Nicht gesendeter Text nach einem Raumwechsel in einem anderen Fenster (#302) */
.raumwechseltext{display:block; width:100%; box-sizing:border-box; margin:0 0 16px; padding:10px;
  border-radius:10px; border:1px solid var(--rand,rgba(127,127,127,.4)); background:rgba(127,127,127,.08);
  color:inherit; font:inherit; resize:vertical;}
.codeknoepfe{display:flex; gap:10px; justify-content:flex-end; flex-wrap:wrap;}
.codeknoepfe button{padding:9px 16px; border-radius:9px; border:1px solid rgba(127,127,127,.4);
  background:transparent; color:inherit; cursor:pointer; font-size:1rem;}
.codeknoepfe button.haupt{background:var(--signal,#ff2d55); border-color:transparent; color:#fff; font-weight:600;}   /* warm wie .signalknopf (#117 V3b; --haupt gab es nie → war blau) */
.codeknoepfe button:disabled{opacity:.45; cursor:default;}
/* Notfall-Code eines Projektraums (#117 V3b): bestätigen, dann weiter; Ausdrucken druckt
   nur dieses Fenster (raumCodeZeigen setzt body.code-drucken für den Druck) */
.raumcodeok{display:flex; gap:8px; align-items:flex-start; margin:0 0 14px; line-height:1.45; cursor:pointer;}
.raumcodeok input{margin-top:3px;}
.rxfortschritt{display:block; width:100%; height:12px; margin:0 0 12px;}
@media print{
  body.code-drucken > *:not(.raumcode){display:none !important;}
  body.code-drucken .raumcode{position:static; background:none; padding:0;}
  body.code-drucken .raumcode .codeinhalt{box-shadow:none; max-width:none;}
  body.code-drucken .raumcode :is(.codeknoepfe, .raumcodeok){display:none;}
}
/* Der geschlossene Tresor im Assistenten-Blatt */
.tresorzu{padding:18px; line-height:1.55;}
.tresorzu h3{margin:0 0 8px; font-size:1.05rem;}
.tresorzu input{width:100%; padding:9px 10px; margin:6px 0; border-radius:8px;
  border:1px solid rgba(127,127,127,.45); background:transparent; color:inherit; font-size:1rem;}
.tresorzu button{padding:9px 16px; border-radius:9px; border:none; background:var(--haupt,#3f6fe0);
  color:#fff; cursor:pointer; font-size:1rem;}
.tresorzu .fehler{color:var(--fehlerrot);}

/* Zeiterfassung: Umschalter Tag/Woche/Monat und die Monatsverteilung */
.sichtwahl{display:inline-flex;gap:4px}
.zeittaglink{cursor:pointer;border-bottom:1px dotted var(--rand2)}
.zeittaglink:hover{color:var(--blau);border-bottom-color:var(--blau)}
.zeittabelle tr.heute .zeittag{color:var(--blau);font-weight:700}
.zeitverteilung td{padding:5px 8px}
.zeitziel{max-width:22em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zeitbalken{width:auto;min-width:80px}
.zeitbalken span{display:block;height:9px;border-radius:5px;background:var(--blau);opacity:.75;min-width:3px}
@media (max-width:700px){
  .zeitverteilung, .zeitverteilung tbody, .zeitverteilung tr, .zeitverteilung td{display:block;width:auto}
  .zeitverteilung tr{padding:5px 0;border-bottom:1px solid var(--rand)}
  .zeitziel{max-width:none;white-space:normal}
  .zeitbalken{min-width:0}
}

/* Zeiterfassung: Hinweis auf den Abrechnungstakt */
.taktmarke{background:var(--blau-weich2);color:var(--blau-text);border:1px solid var(--rand2);
  border-radius:7px;padding:2px 7px;font-size:13px;white-space:nowrap}
.zeitvonbis.getaktet{border-bottom:1px dotted var(--rand2);cursor:help}

/* ---------- Profilbild des Assistenten (Ticket #75) ---------- */
.assistentbild img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.tischassistentbild{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;
  overflow:hidden;margin-right:6px;vertical-align:-4px;font-size:12px;
  background:linear-gradient(135deg,#6b6357,#3b352c);color:#fff}
.tischassistentbild img{width:100%;height:100%;object-fit:cover;display:block}
.bildwahl{max-width:560px}
.bildliste{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;
  max-height:46vh;overflow:auto;margin:10px 0 14px}
.bildkachel{padding:0;border:2px solid transparent;border-radius:10px;overflow:hidden;
  background:rgba(127,127,127,.12);cursor:pointer;aspect-ratio:1/1}
.bildkachel:hover,.bildkachel:focus-visible{border-color:var(--haupt,#3f6fe0)}
.bildkachel img{width:100%;height:100%;object-fit:cover;display:block}
.dateiknopf{padding:9px 16px;border-radius:9px;border:1px solid rgba(127,127,127,.4);
  cursor:pointer;font-size:1rem;display:inline-flex;align-items:center}
/* Zeiterfassung: Hinweis, wenn der Zeitraum leer ist (21.09.2026) */
.leerhinweis{background:var(--blau-weich2);border-color:var(--rand2)}
.leerhinweis div{margin-top:6px;color:var(--leise);font-size:14px}
.leerhinweis .zeitlink{margin-left:6px}

/* Zeiterfassung: Vorbehalt zu den gesetzlichen Hinweisen */
.vorbehalt{background:var(--gelb-weich2);border:1px solid var(--gelb-rand);border-radius:9px;
  padding:10px 12px;margin-top:10px;font-size:13.5px;line-height:1.5;color:var(--text)}

/* ---------- Zeiterfassung: der Monat als Kalender (21.09.2026) ---------- */
.monatskalender{width:100%;border-collapse:separate;border-spacing:4px;table-layout:fixed}
.monatskalender th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--leise);text-align:center;padding:2px 0;border:0}
.monatskalender td{border:1px solid var(--rand);border-radius:9px;background:var(--flaeche2);
  height:66px;vertical-align:top;padding:5px 6px;position:relative}
.monatskalender td.kalendertag{cursor:pointer}
.monatskalender td.kalendertag:hover{border-color:var(--blau);background:var(--blau-weich2)}
.monatskalender td.leer{background:transparent}
.monatskalender td.wochenende{background:var(--bg)}
.monatskalender td.fremdtag{background:transparent;border-color:transparent}
.monatskalender td.fremdtag .tagzahl{opacity:.3}
.monatskalender td.heute{border-color:var(--blau);border-width:2px;background:var(--heute)}
.monatskalender td.heute .tagzahl{color:var(--blau);font-weight:700}
.tagzahl{font-size:12.5px;color:var(--leise);font-variant-numeric:tabular-nums}
.tagsumme{display:block;font-weight:600;font-size:13.5px;margin-top:1px;
  font-variant-numeric:tabular-nums}
.punkte{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px;align-items:center}
.punkt{display:inline-block;width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.punkt.abrechenbar{background:var(--blau)}
.punkt.intern{background:var(--balken2)}
.punkt.offenpunkt{background:var(--gelb)}
.punktmehr{font-size:11px;color:var(--leise);font-style:normal;line-height:8px}
.punktlegende{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px;padding-top:10px;
  border-top:1px solid var(--rand);font-size:13px;color:var(--leise);align-items:center}
.punktlegende span{display:inline-flex;align-items:center;gap:6px}

@media (max-width:700px){
  /* Auf dem Telefon bleibt das Raster, nur schmaler: Ein Kalender, der
     untereinander steht, ist kein Kalender mehr. */
  .monatskalender{border-spacing:2px}
  .monatskalender td{height:54px;padding:3px}
  /* „8:30 h" darf nicht umbrechen – sonst wird die Zelle doppelt so hoch
     und der Kalender verliert seine Form. */
  .tagsumme{font-size:11px;white-space:nowrap}
  .tagzahl{font-size:11px}
  .punkt{width:6px;height:6px}
  .punkte{gap:2px}
  .punktlegende{gap:8px;font-size:12px}
}

/* Zeiterfassung: Kunden, abrechenbar, Beschreibung (21.09.2026) */
.zeitbuchung.nichtabr{background:var(--flaeche2);color:var(--leise);border-color:var(--rand)}
.zeitbuchung .buchungtext{opacity:.85;font-style:italic}
.zeitbuchung .haken{margin-left:5px;cursor:pointer;opacity:.6}
.zeitbuchung .haken:hover{opacity:1;color:var(--blau)}
.hakenfeld{flex-direction:row !important;align-items:center;gap:5px !important;
  color:var(--text) !important;cursor:pointer}
.hakenfeld input{width:auto !important;min-width:0 !important}
.abrmarke{background:var(--gruen-weich2);color:var(--gruen-text);border:1px solid var(--gruen-rand);
  border-radius:7px;padding:1px 6px;font-size:12.5px;white-space:nowrap}
.kundenliste td{padding:7px 8px}

/* ---------- Zeiterfassung: die Woche als Zeitraster (21.09.2026) ---------- */
.rasterkarte{overflow-x:auto}
.raster{min-width:660px}
.rasterkopf{display:grid;grid-template-columns:54px repeat(7,1fr);gap:0;
  border-bottom:1px solid var(--rand);margin-bottom:2px}
.rastertagkopf{text-align:center;padding:5px 2px;font-size:12.5px;color:var(--leise);
  border-left:1px solid var(--rand)}
.rastertagkopf b{display:block;color:var(--text);font-size:13px;
  font-variant-numeric:tabular-nums;min-height:17px}
.rastertagkopf.heute{color:var(--blau)}
.rastertagkopf.heute b{color:var(--blau)}
.rasterkoerper{position:relative;display:grid;grid-template-columns:54px repeat(7,1fr)}
.rasterzeiten{position:relative}
.rasterstunde{position:absolute;right:6px;font-size:11px;color:var(--leise);
  transform:translateY(-6px);font-variant-numeric:tabular-nums}
.rastertag{position:relative;border-left:1px solid var(--rand);min-height:100%}
.rastertag.wochenende{background:var(--flaeche2)}
.rasterlinie{position:absolute;left:0;right:0;border-top:1px solid var(--rand);opacity:.55}

.rasterblock{position:absolute;left:2px;right:2px;border-radius:7px;overflow:hidden;
  background:var(--blau-weich);border:1px solid var(--rand2);padding:2px 5px;
  font-size:11.5px;line-height:1.35;cursor:grab;user-select:none}
.rasterblock.abr{background:var(--gruen-weich);border-color:var(--gruen-rand)}
.rasterblock.laeuft{background:var(--gelb-weich);border-color:var(--gelb-rand);cursor:default}
.rasterblock.zieht{cursor:grabbing;box-shadow:0 6px 18px rgba(0,0,0,.35);z-index:30;opacity:.95}
.rasterblock.kopiert{outline:2px dashed var(--blau)}
.rasterblock:focus-visible{outline:2px solid var(--blau);outline-offset:1px;z-index:20}
.blockzeit{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.blockinhalt{overflow:hidden}
.blockzeile{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.blockzeile.offen{color:var(--gelb-text)}
/* Nur im Zeitraster – ohne .rasterblock davor griff die Regel auch in die
   Chatblätter am Tisch und legte deren rechten Griff an die linke Kante (#92). */
.rasterblock .griff{position:absolute;left:0;right:0;height:7px;cursor:ns-resize;z-index:5}
.rasterblock .griff.oben{top:0}
.rasterblock .griff.unten{bottom:0}
.rasterblock:hover .griff{background:var(--rand2);opacity:.5}
.rasterhilfe{margin-top:10px;padding-top:9px;border-top:1px solid var(--rand);font-size:13px}

/* Zeitraster: Bereich auf- und zuklappen (22.09.2026) */
.rasterklapp{display:block;width:100%;background:var(--flaeche2);color:var(--leise);
  border:1px dashed var(--rand);border-radius:8px;padding:4px 0;font-size:12px;
  cursor:pointer;font-variant-numeric:tabular-nums}
.rasterklapp:hover{background:var(--blau-weich2);color:var(--blau);border-color:var(--rand2)}
.rasterklapp.oben{margin-bottom:6px}
.rasterklapp.unten{margin-top:6px}

/* Zeitraster: eine neue Zeit aufziehen (22.09.2026) */
.rastertag{cursor:crosshair}
.rasterblock{cursor:grab}
.rasterblock.neuzug{background:var(--blau-weich2);border:2px dashed var(--blau);
  opacity:.9;pointer-events:none;z-index:25}

/* Zeitraster: Tagesfuss mit Ist und Saldo (22.09.2026) */
.rasterfuss{display:grid;grid-template-columns:54px repeat(7,1fr);
  border-top:1px solid var(--rand);margin-top:2px}
.rasterfuss .rasterecke{font-size:11px;padding:5px 6px 0 0;text-align:right}
.rastertagfuss{text-align:center;padding:5px 2px;border-left:1px solid var(--rand);
  font-variant-numeric:tabular-nums}
.rastertagfuss b{display:block;font-size:13px}
.rastertagfuss.heute b{color:var(--blau)}
/* Gesetzliche Hinweise am Tagesfuß (#383 ui-3): Zeichen, Text als Blase darüber */
.fusshinweis{position:relative;display:inline-block;color:var(--gelb-text);cursor:help;vertical-align:-2px}
.fusshinweis::after{content:attr(data-blase);position:absolute;bottom:calc(100% + 6px);right:-8px;
  width:max-content;max-width:240px;white-space:pre-line;text-align:left;font-weight:400;
  padding:6px 9px;border-radius:8px;font-size:12px;line-height:1.35;background:var(--tipp);
  color:var(--tippschrift);pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:6}
.fusshinweis:hover::after,.fusshinweis:focus-visible::after{opacity:1}
.fusssaldo{display:block;font-size:11.5px;margin-top:1px}
.fusssaldo.plus{color:var(--gruen-text)}
.fusssaldo.minus{color:var(--rot-text)}

/* Zeitraster: Eintrag per Doppelklick öffnen (22.09.2026) */
.zeitfenstergrund{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.45);
  display:flex;align-items:center;justify-content:center;padding:16px}
.zeitfenster{background:var(--karte);border:1px solid var(--rand);border-radius:14px;
  padding:18px 20px;width:min(760px,100%);max-height:calc(100vh - 32px);overflow:auto;
  box-shadow:0 18px 50px rgba(0,0,0,.4)}
.zeitfenster h4{margin:16px 0 4px;font-size:13px;color:var(--leise);
  text-transform:uppercase;letter-spacing:.04em}

/* Auswahl „Woran?“ (#355): Suche, zuletzt benutzt, Kunden mit Projekten */
/* min-width:0 – sonst macht ein langer Name (nowrap) die Auswahl breiter als das
   Fenster; flex:none an Zeilen und Chips – sonst drückt die feste Höhe der Liste
   bei vielen Zielen jede Zeile auf fast null zusammen (overflow:hidden nimmt ihnen
   die Mindesthöhe; gesehen in haupt, 09.10.2026). */
.woranfeld{flex:1 1 100%;display:flex;flex-direction:column;gap:3px;min-width:0}
.woranfrage{font-size:13px;color:var(--leise)}
.woran{display:flex;flex-direction:column;gap:6px;width:100%;min-width:0}
.woranliste>*{flex:none}  /* Zeilen: flex:none steht in .woranwahl – all:unset setzte es hier zurück */
.woran input[type=search]{width:100%}
.woranliste{max-height:220px;overflow:auto;border:1px solid var(--rand);border-radius:8px;
  padding:4px;background:var(--karte);display:flex;flex-direction:column;gap:1px}
.woranwahl{all:unset;flex:none;box-sizing:border-box;cursor:pointer;padding:5px 8px;border-radius:6px;
  font-size:13.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.woranwahl.unter{padding-left:26px}
.woranwahl:hover,.woranchip:hover{background:var(--flaeche2)}
.woranwahl.an,.woranchip.an{background:var(--blau-weich);color:var(--blau-text);font-weight:600}
/* all:unset nimmt auch den Fokusrahmen des Browsers – mit der Tastatur sieht man sonst nicht,
   welche Zeile dran ist (#387 uc-8) */
.woranwahl:focus-visible,.woranchip:focus-visible{outline:2px solid var(--blau);outline-offset:1px}
.woranchips{display:flex;flex-wrap:wrap;gap:5px;align-items:center;padding:3px 2px 6px;
  border-bottom:1px solid var(--rand);margin-bottom:3px}
.woranchip{all:unset;box-sizing:border-box;cursor:pointer;padding:3px 9px;border-radius:999px;
  border:1px solid var(--rand);font-size:12.5px;color:var(--text);max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.woranfenster{width:min(520px,100%)}

/* Monatskalender: Wochensumme rechts vom Sonntag (22.09.2026) */
.monatskalender th.wochenkopf{color:var(--text)}
.monatskalender td.wochensumme{background:var(--karte);border-style:dashed;cursor:pointer}
.monatskalender td.wochensumme:hover{border-color:var(--blau);background:var(--blau-weich2)}
.monatskalender td.wochensumme.leer{border-color:transparent;cursor:default}
.wochensoll{display:block;font-size:11.5px}
@media (max-width:760px){
  .wochensoll{display:none}
  .monatskalender td.wochensumme .fusssaldo{font-size:10px;white-space:nowrap}
}

/* Zeiterfassung: Überschneidungen in Signalfarbe (22.09.2026) */
.rasterblock.kollision{box-shadow:0 0 0 2px var(--signal);border-color:var(--signal);z-index:22}
.zeitzeile.kollision{outline:2px solid var(--signal);outline-offset:2px;border-radius:6px}
.kollisionshinweis{color:var(--signal);font-weight:600}

/* Zeitraster: „heute" hervorheben – Spalte, Kopf, Fuß und ein Strich „jetzt" (22.09.2026) */
.rastertag.heute{background:var(--heute);box-shadow:inset 1px 0 0 var(--heute-rand),inset -1px 0 0 var(--heute-rand)}
.rastertagkopf.heute{background:var(--heute);border-radius:8px 8px 0 0;font-weight:700}
.rastertagfuss.heute{background:var(--heute);border-radius:0 0 8px 8px}
.jetztlinie{position:absolute;left:0;right:0;border-top:2px solid var(--signal);
  pointer-events:none;z-index:21}
.jetztlinie::before{content:"";position:absolute;left:-4px;top:-5px;width:8px;height:8px;
  border-radius:50%;background:var(--signal)}
.zeittabelle tr.heute td{background:var(--heute)}

/* ---------- Zeitkachel am Telefon (22.09.2026) ----------
   In der Ecke oben rechts, in einer Zeile mit der Uhr: die Stempeluhr und ein
   Knopf ⏱ zur Seite „Zeiten". Gestaltet wie die anderen Eckknöpfe (.tuer).
   Am großen Schirm gibt es sie nicht – dort steht die Stempeluhr ohnehin in
   der Ecke. Die ganze Ecke liegt über den Leuten am Tisch (z-index 8 gegen
   4 bzw. 6), damit kein Agent sie verdeckt. */
.eckzeile{display:flex;align-items:center;gap:10px}
.tischecke{z-index:8}
.zeitkachel{display:none}
@media (max-width:700px){
  .zeitkachel{display:flex;align-items:center;gap:6px}
  .zeitkachel[hidden]{display:none}
  .stempeluhr{--stempelhoehe:36px}            /* wie .tischecke .tuer am Telefon */
  .zeitkachel .stempeluhr{display:flex;align-items:center;gap:6px}
  /* Eng (#386 uc-9): Pause, Weiter und Wechseln nur als Zeichen (das Wort bleibt für
     Vorleseprogramme), läuft die Zeit, öffnet die Laufzeit das Blatt – der Uhr-Knopf fällt weg.
     Seit #396 auch in der Leiste des Blatts: mit Wörtern ragte „Gehen“ dort 18 px über den Rand. */
  :is(.zeitkachel,.zeitblatt) .stempeluhr :is(.knopf.mini,.stempellauf){padding:0 11px}
  :is(.zeitkachel,.zeitblatt) .stempeluhr .knopf.mini:has(> .wort){width:var(--stempelhoehe);padding:0}
  :is(.zeitkachel,.zeitblatt) .stempeluhr .wort{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .zeitkachel .stempeluhr:has(.stempellauf) .zeitblattknopf{display:none}
  /* Kommen und Gehen am selben Platz ganz rechts (#396 ui-10): Der Uhr-Knopf steht am Telefon
     links – er fällt beim Laufen weg, ohne dass der Rest nach rechts rückt. Vorher lag nach
     „Kommen“ „Wechseln“ unter dem Finger (Doppeltipp öffnete die Blase). */
  .zeitkachel .stempeluhr .zeitblattknopf{order:-1}
}

/* ---------- Zeiten als Blatt am Tisch (#357, Konzept #72 §4.1) ----------
   Strich-Zeichen statt Emojis (zeitSymbol, Schriftfarbe). Raster oder Liste
   entscheidet die Breite des Blatts (Container-Abfrage „zeitblatt“), nicht die
   des Fensters – auch in einer Hälfte des Split-Screens. Das Eintragsfenster
   liegt im Blatt (.zbfenster), die Blase „Woran?“ unter ihrem Knopf, am Telefon
   als Liste von unten. */
.zsym{width:1.05em;height:1.05em;vertical-align:-.17em;flex:none}
.stempeluhr .zsym{width:15px;height:15px;vertical-align:0}
button.stempellauf{font:inherit;font-variant-numeric:tabular-nums;font-weight:600;cursor:pointer}
button.stempellauf:hover{filter:brightness(1.08)}
button.stempelhinweis{border:0;background:none;font:inherit;cursor:pointer}
.offenmarke .zsym,.blockzeile.offen .zsym,.zeithinweis .zsym{color:var(--gelb-text)}
.kollisionshinweis .zsym{color:var(--signal)}
.woranwahl .zsym,.woranchip .zsym{margin-right:6px;opacity:.75}

.blatt.zeitblatt .blattinhalt{padding-top:0}
/* Container am eigenen inneren Element, nie an .blattinhalt (wie .vbinhalt, lokal_verbrauch_blatt) */
.zeitblatt .zbflaeche{container:zeitblatt / inline-size}
.zbleiste{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 -18px 10px;padding:12px 18px 10px;background:var(--bg);border-bottom:1px solid var(--rand)}
.zbreiter{display:flex;flex-wrap:wrap;gap:6px}
.zbperson{margin-left:auto}
.zbperson:empty{display:none}
.zbperson select{width:auto;margin-left:4px}
/* Eine Höhe in der Leiste (#396 uc-10): Reiter und Personenwahl so hoch wie die Stempeluhr
   daneben (38 px, am Telefon 36) – vorher 34,1 / 40,9 / 38 px nebeneinander */
.zbleiste{--leistenhoehe:38px}
.zbleiste :is(.zbreiterknopf,.zbperson select){box-sizing:border-box;height:var(--leistenhoehe);
  padding-top:0;padding-bottom:0}
/* Auswahlpunkte (Export, Urlaub) wie die Häkchen in Signalfarbe statt Browser-Blau (#386 ui-9) */
.zeitblatt input[type="radio"]{accent-color:var(--signal)}
/* Kopfzeichen: Kreis über .blattkopf .initialenbild wie in allen Blättern (#386 uc-2) */
.blattkopf .zbkopfsymbol{background:var(--blau);color:var(--auf-blau)}
.blattkopf .zbkopfsymbol .zsym{width:21px;height:21px;vertical-align:0}
.zbfremd{margin:0 0 8px}
/* Zeitverwaltung: Übersicht aller und Protokoll (#358). Am Rechner eine Tabelle,
   am Telefon je Person ein Block, die Spalten untereinander mit ihrem Titel
   (data-titel) – „lieber untereinander als seitwärts“ (REGELN-OBERFLAECHE). */
/* Fünf Reiter (bald sechs mit „Anträge“): umbrechen statt aus dem Bild laufen */
.sichtwahl.zvreiter{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.zvtabelle{width:100%;border-collapse:collapse;margin:10px 0}
.zvtabelle th{text-align:left;font-size:12px;color:var(--leise);font-weight:600;padding:6px 8px;
  border-bottom:1px solid var(--rand)}
.zvtabelle td{padding:7px 8px;border-bottom:1px solid var(--rand);vertical-align:top;white-space:nowrap}
.zvtabelle .zsym,.zvliste .zsym{width:14px;height:14px;vertical-align:-2px}
.zvperson{background:none;border:0;padding:0;font:inherit;font-weight:600;text-align:left}
.zvliste{margin:6px 0;padding-left:18px}
.zvliste li{margin:5px 0}
.zvprotokoll{list-style:none;padding-left:0}
.zvprotokoll li{border-bottom:1px solid var(--rand);padding:6px 0;margin:0}
.zvdetail{font-size:13px;color:var(--leise);margin-top:2px;overflow-wrap:anywhere}
@media (max-width:700px){
  .menukoerper .zvtabelle{min-width:0}
  .zvtabelle thead{display:none}
  .zvtabelle, .zvtabelle tbody, .zvtabelle tr, .zvtabelle td{display:block;width:auto}
  .zvtabelle tr{border-bottom:1px solid var(--rand);padding:6px 0}
  .zvtabelle td{border:0;padding:1px 0;white-space:normal}
  .zvtabelle td[data-titel]:not([data-titel=""])::before{content:attr(data-titel) ": ";color:var(--leise);font-size:13px}
}
/* ‹ Zeitraum › Heute bleiben beisammen – rechts, schmal in eigener Zeile */
.zbnav{display:inline-flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:nowrap}
/* Abwesenheiten (#359): Marken an den Tagen, Abwesenheitszeile über dem Raster,
   Reiter Urlaub („Wer ist weg“). Nur Variablen – hell wie dunkel lesbar. */
.zabw{display:inline-block;font-size:11px;line-height:1.3;padding:1px 6px;border-radius:9px;margin:1px 2px 1px 0;
  background:var(--gruen-weich2);color:var(--gruen-text);border:1px solid var(--gruen-rand);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.zabw.feiertag,.zabw.frei{background:var(--gelb-weich2);color:var(--gelb-text);border-color:var(--gelb-rand)}
.rasterabw{display:grid;grid-template-columns:54px repeat(7,1fr);border-bottom:1px solid var(--rand)}
.rasterabwtag{border-left:1px solid var(--rand);padding:2px 3px;text-align:center;min-width:0}
.rastertag.abwtag{background:var(--flaeche2)}
.zabwmarken{display:block;margin-top:2px}
.monatskalender td.abwtag{background:var(--flaeche2)}
.monatskalender .zabwmarken{margin:1px 0}
.monatskalender .zabw{font-size:10px;padding:0 4px}
.zabwliste li{margin:7px 0}
.zabwende{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;margin-left:6px}
/* Urlaubsplan und „Wer ist weg“ (#388, zeiten.js zeitPlanGitterHtml): Balken mit left/width
   in Prozent, Spalten einmal über der ganzen Fläche, darüber .upueber (hellt Wochenende und
   Feiertage IM Balken auf), Beschriftung .upbt darüber. Zeilenhöhe = ZEIT_PLAN_ZEILE. */
.upkarte{--upnamen:150px}
.upplan{--upnamen:150px;position:relative;border:1px solid var(--rand);border-radius:10px;background:var(--karte)}
.upbedien{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.uptitel{min-width:120px;text-align:center}
.upzoom{display:inline-flex;gap:4px}
.upfilter{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.upfilter select{width:auto}
.upnurbea{display:inline-flex;align-items:center;gap:5px;font-size:13px;white-space:nowrap}
.upnurbea input,.upauswahl input{width:auto;margin:0}
.upauswahl{columns:180px;gap:14px;max-height:180px;overflow:auto;margin:0 0 10px;padding:8px 10px;
  border:1px solid var(--rand);border-radius:9px;font-size:13px}
.upauswahl label{display:flex;align-items:center;gap:6px;break-inside:avoid;padding:2px 0}
.upleiste{padding:8px 8px 0 calc(var(--upnamen) - 8px)}
.upleistebild{display:block;width:100%;height:38px;cursor:pointer}
.upsf{fill:var(--up-leiste-fest)} .upsb{fill:var(--up-leiste-beantragt)} .upsjetzt{fill:var(--up-jetzt)}
.upsfenster{fill:var(--up-fenster);stroke:var(--blau);stroke-width:1;vector-effect:non-scaling-stroke}
.upleistemonate{display:flex;font-size:11px;color:var(--leise)}
.upleistemonate>span{flex:1;min-width:0;overflow:hidden;border-left:1px solid var(--rand);padding-left:3px}
.upspitze{font-size:13px;margin:4px 0 10px}
.upleer{padding:0 10px 10px}
.upkopf{display:flex;background:var(--tabellenkopf);border-top:1px solid var(--rand);border-bottom:1px solid var(--rand);
  font-size:11px;color:var(--leise)}
.upkurz .upkopf{border-top:0;border-radius:10px 10px 0 0}
.upecke{flex:0 0 var(--upnamen);padding:4px 8px;border-right:1px solid var(--rand)}
.upkopfzeit{position:relative;flex:1;height:34px;overflow:hidden}
.upkopfzeit>span{position:absolute;white-space:nowrap}
.upm{top:2px;font-weight:600;color:var(--text);padding-left:3px;border-left:1px solid var(--rand)}
.upk{top:18px;padding-left:3px;border-left:1px solid var(--rand)}
/* Tage zweizeilig: Wochentag über der Zahl – so passen sie auch bei ~15 px je Tag (#393, N4) */
.upt{top:2px;line-height:15px;text-align:center;overflow:hidden;font-variant-numeric:tabular-nums}
.uptw{display:block;color:var(--leise);opacity:.8}
/* lange/kurze Fassung (KW 41 / 41, Jan / J): welche, entscheidet die Breite des Blatts */
.upkurzt{display:none}
.upkoerper{position:relative}
.upzeile{display:flex;height:30px;border-bottom:1px solid var(--rand)}
.upzeile:last-of-type{border-bottom:0}
.upname{flex:0 0 var(--upnamen);padding:0 8px;display:flex;align-items:center;gap:4px;border-right:1px solid var(--rand);
  position:sticky;left:0;z-index:3;background:var(--karte);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.upbahn{position:relative;flex:1;min-width:0}
.upspalten,.upueber{position:absolute;top:0;bottom:0;left:var(--upnamen);right:0;pointer-events:none}
.upueber{z-index:2}
.upspalten i,.upueber i{position:absolute;top:0;bottom:0}
.upwe{background:var(--up-we)} .upft{background:var(--up-ft)}
.upheute{background:var(--heute);box-shadow:inset 1px 0 var(--heute-rand),inset -1px 0 var(--heute-rand)}
.upjetzt{width:2px;margin-left:-1px;background:var(--up-jetzt);z-index:4}
.upueber i{background:var(--up-ueber)}
/* je Art ein warmer Ton (Kollegen bekommen nur urlaub/abwesend); fest voll, beantragt gestrichelt */
:is(.upb,.upmarke)[data-art=urlaub]{--f:var(--up-urlaub)}
:is(.upb,.upmarke)[data-art=sonderurlaub]{--f:var(--up-sonderurlaub)}
:is(.upb,.upmarke)[data-art=unbezahlt]{--f:var(--up-unbezahlt)}
:is(.upb,.upmarke)[data-art=zeitausgleich]{--f:var(--up-zeitausgleich)}
:is(.upb,.upmarke)[data-art=krank]{--f:var(--up-krank)}
:is(.upb,.upmarke):is([data-art=abwesend],[data-art=abwesend-bezahlt]){--f:var(--up-abwesend)}
.upb{position:absolute;top:5px;height:19px;border-radius:5px;background:var(--f,var(--up-fest));z-index:1;
  border:1.5px solid transparent;cursor:pointer;outline:none;box-sizing:border-box;min-width:3px}
.upb.bea{background:var(--up-beantragt);border:1.5px dashed var(--f,var(--up-beantragt-rand))}
/* Tippziel mindestens 24 px breit und so hoch wie die Zeile, auch beim halben Tag (#393, N6) –
   unsichtbar, gehört zum Balken (Klick und Blase wie auf dem Balken selbst) */
.upb::before{content:"";position:absolute;left:50%;top:-6px;bottom:-6px;width:max(100%,24px);transform:translateX(-50%)}
.upb:focus-visible,.upb.offen{box-shadow:0 0 0 2px var(--karte),0 0 0 4px var(--warm);z-index:5}
.upbt{position:absolute;top:5px;height:19px;line-height:19px;padding:0 6px;font-size:11px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;pointer-events:none;z-index:3;color:var(--up-fest-text)}
.upbt.bea{color:var(--text)}
.upblase{position:absolute;z-index:6;width:240px;padding:9px 30px 9px 12px;font-size:13px;line-height:1.45;
  left:clamp(4px,calc(var(--upnamen) + (100% - var(--upnamen)) * var(--anteil)),calc(100% - 244px));
  background:var(--karte);border:1px solid var(--rand2);border-radius:10px;box-shadow:0 8px 24px rgba(var(--schatten),.18)}
.upblasezu{position:absolute;right:4px;top:4px;border:0;background:transparent;color:var(--leise);cursor:pointer;padding:2px 6px}
.uplegende{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--leise);margin-top:10px}
.upmarke{display:inline-block;width:22px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px;
  background:var(--f,var(--up-fest))}
.upmarke.bea{background:var(--up-beantragt);border:1.5px dashed var(--up-beantragt-rand)}
.upmarke.neutral{background:var(--up-neutral)} .upmarke.bea.neutral{background:transparent;border-color:var(--up-neutral)}
.upmarke.we{background:var(--up-we);border:1px solid var(--rand)} .upmarke.ft{background:var(--up-ft)}
.upmarke.heute{background:var(--heute);border:1px solid var(--heute-rand)}
/* Telefon: Filter als Liste von unten */
.upunten{position:fixed;left:0;right:0;bottom:0;z-index:30;max-height:70vh;overflow:auto;padding:14px 16px 22px;
  background:var(--karte);border-top:1px solid var(--rand2);border-radius:16px 16px 0 0;
  box-shadow:0 -10px 30px rgba(var(--schatten),.2)}
.upunten .upfilter{margin:0 0 10px;flex-direction:column;align-items:stretch}
.upunten p{text-align:right;margin:10px 0 0}
@container zeitblatt (max-width: 639px){
  .upkarte,.upplan{--upnamen:70px}
  .upname{font-size:12px;padding:0 5px}
  .upleistebild{height:22px}
  .upfilter{margin-left:0}
  /* schmales Blatt (#393, N4): kurze Fassungen; im Monat nur die Montage, links bündig mit Strich */
  .uplang{display:none} .upkurzt{display:inline}
  .upplan:not(.upkurz) .upt:not(.mo){display:none}
  .upplan:not(.upkurz) .upt.mo{overflow:visible;text-align:left;padding-left:2px;border-left:1px solid var(--rand)}
  /* ein Montag ganz am Ende ragte über den Rand: rechtsbündig an den Rand */
  .upplan:not(.upkurz) .upt.mo.ende{left:auto!important;width:auto!important;right:0;text-align:right;padding:0 2px 0 0;border-left:0}
  .upt,.upk{font-size:10px} .upk{padding-left:2px}
}
/* ganz schmal (unter ~16 px je Woche im Quartal): nur jede zweite KW */
@container zeitblatt (max-width: 379px){ .upk.kwu{display:none} }
/* Urlaubskonto und Anträge (#360) – nur Variablen */
.zkonto{max-width:420px;margin:4px 0 6px}
.zkontozeile{display:flex;justify-content:space-between;gap:12px;padding:2px 0;border-bottom:1px solid var(--rand)}
.zkontozeile b{font-variant-numeric:tabular-nums}
.zkontorest{border-bottom:none;border-top:2px solid var(--rand2);font-size:15px;padding-top:4px}
.zstatus{display:inline-block;font-size:11px;line-height:1.3;padding:1px 6px;border-radius:9px;
  background:var(--flaeche2);color:var(--leise);border:1px solid var(--rand)}
.zstatus-beantragt{background:var(--gelb-weich2);color:var(--gelb-text);border-color:var(--gelb-rand)}
.zstatus-genehmigt,.zstatus-eingetragen{background:var(--gruen-weich2);color:var(--gruen-text);border-color:var(--gruen-rand)}
.zstatus-abgelehnt{background:var(--rot-weich2);color:var(--rot-text);border-color:var(--rot-rand)}
.zabwaus{opacity:.7}
.zantraege li.zantrag{padding:8px 0;border-bottom:1px solid var(--rand)}
.zantraege li.zantrag:last-child{border-bottom:none}
/* „In dieser Zeit schon weg“ (#389) – eigene Zeile unter „Kostet …“ bzw. im Antrag */
.zschonweg{display:block;margin-top:2px}
/* Assistent im Blatt (#375): Streifen über der Fußzeile – Antwort und Karte, nie höher als
   ein gutes Drittel des Blatts; bei fremden Zeiten nur ein Satz */
.zbassistent:empty{display:none}
.zbassistent{flex:0 0 auto;max-height:42%;overflow:auto;padding:8px 13px;border-top:1px solid var(--rand);
  background:var(--bg);font-size:13.5px}
.zbnurselbst{margin:0}
.zbstreifenkopf{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.zbfrage{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.65}
.zbstreifenzu{border:0;background:transparent;color:inherit;cursor:pointer;opacity:.55;padding:2px 4px}
.zbstreifenzu:hover{opacity:1}
/* Eingeklappt (#387 ui-12): eine Zeile, Klick klappt auf */
.zbeingeklappt .zbstreifenkopf{margin-bottom:0}
.zbstreifenauf{all:unset;flex:1;min-width:0;display:flex;gap:8px;align-items:baseline;cursor:pointer;
  font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zbstreifenauf .zbfrage{font-weight:400}
.zbstreifenauf:focus-visible{outline:2px solid var(--blau);outline-offset:2px;border-radius:4px}
.zbantwort{margin:4px 0}
.zbantwort.denkt{opacity:.7}
/* Knopf „Vorschläge“ (#375) */
.zeitvorschlaege{margin:4px 0 8px;padding:8px 10px;border:1px solid var(--rand);border-radius:9px;font-size:13px}
.zeitvorschlaege .zsym{vertical-align:-2px}
.zeitvorschlag{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:6px}
/* Reiter Export (#361) */
.zbexport h3{margin-top:0}
.zexgruppe{border:0;padding:0;margin:0 0 14px;min-width:0}
.zexgruppe legend{font-weight:600;padding:0;margin-bottom:6px}
.zexgruppe select{width:auto;margin-right:10px}
.zexgruppe input[type=date]{width:auto}
.zexwahl{display:inline-flex;align-items:center;gap:6px;margin:0 16px 6px 0}
.zexwahl input{width:auto;margin:0}
.zexfehler{color:var(--fehlerrot);margin-top:6px}
.zexknoepfe{margin-top:6px}
/* Stempeluhr im Blatt: immer in der Leiste, rechts (#386 ui-6) – das Blatt deckt die Ecke
   am Rechner ebenso zu wie am Telefon */
.zeitblatt .zbstempel{margin:0 0 0 auto}
.zeitblatt .zbstempel:empty{display:none}
.zeitblatt .zbperson:not(:empty) + .zbstempel{margin-left:0}
@media (max-width:700px){
  /* Reiter in einer Zeile zum Wischen, Personenwahl und Stempeluhr je in eigener Zeile
     darunter (#386 uc-9) – vorher lag die Personenwahl unsichtbar rechts außerhalb */
  /* Drei Zeilen à 36 px mit weniger Rand (#396 N8: vorher 153,9 px unter dem Kopf) */
  .zbleiste{gap:8px;padding-top:8px;padding-bottom:8px;--leistenhoehe:36px}
  .zbreiter{flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .zbreiter::-webkit-scrollbar{display:none}
  .zbperson{flex:1 1 100%;margin-left:0}
  /* Rechtsbündig wie in der Ecke (#396 ui-10): Kommen und Gehen am selben Platz, nicht mittig */
  .zeitblatt .zbstempel{flex:1 1 100%;justify-content:flex-end;margin:0}
}
/* Raster nur im breiten Blatt – schmal dieselbe Liste */
.zeitblatt .zbschmal{display:none}
@container zeitblatt (max-width: 639px){
  .zeitblatt .zbbreit{display:none}
  .zeitblatt .zbschmal{display:block}
}
/* Schmales Blatt (auch am Rechner): der Tag über seinen Zeiten, wie am Telefon */
@container zeitblatt (max-width: 560px){
  .zeitblatt .zeittabelle,.zeitblatt .zeittabelle tbody,.zeitblatt .zeittabelle tr,
  .zeitblatt .zeittabelle td{display:block;width:auto}
  .zeitblatt .zeittabelle tr{border-bottom:1px solid var(--rand);padding:6px 0}
  .zeitblatt .zeittabelle td{border:0;padding:2px 0}
  .zeitblatt .zeittag{width:auto}
  .zeitblatt .zeitsoll{width:auto;text-align:left;color:var(--leise)}
  .zeitblatt .zeitsoll b{color:var(--text)}
  .zeitblatt .zeitsoll div{display:inline;margin-left:8px}
  .zeitblatt .zeitformular label{width:100%}
  .zeitblatt .zeitformular input,.zeitblatt .zeitformular select{width:100%}
}
/* Ziehen mit Finger und Stift: Der Block folgt, das Blatt rollt nicht */
.zeitblatt .rasterblock{touch-action:none}
.zeitblatt .raster{-webkit-user-select:none;user-select:none;isolation:isolate}
/* isolation (#386 ui-2): Griffe (5), Jetzt-Linie (21) und Überschneidungen (22) bleiben im
   eigenen Stapel des Rasters – unter der Leiste (.zbleiste, 3) und dem Eintragsfenster (6).
   Vorher fing ein unsichtbarer Griff nach dem Scrollen den Klick auf „Monat“ ab. */
/* Das Eintragsfenster im Blatt – nicht über dem ganzen Schirm */
.zbfenster{position:absolute;inset:0;z-index:6;border-radius:inherit;overflow:hidden}
.zbfenster:empty{display:none}
.zbfenster .zeitfenstergrund{position:absolute;inset:0;z-index:auto;padding:12px}
.zbfenster .zeitfenster{max-height:100%}

/* Blase „Woran?“ der Stempeluhr: unter dem Knopf, am Telefon von unten */
/* Der Kasten selbst bekommt am Telefon den Fokus (#396 N5) – ohne Rahmen darum */
.woranfenster:focus{outline:none}
.woranblase .woranfenster{position:fixed;z-index:450;width:min(460px,calc(100vw - 16px));
  max-height:calc(100vh - 16px);overflow:auto;box-shadow:0 18px 50px rgba(var(--schatten),.4)}
.woranblase.vonunten .woranblasegrund{position:fixed;inset:0;z-index:449;background:rgba(var(--schatten),.45)}
.woranblase.vonunten .woranfenster{left:0;right:0;bottom:0;top:auto;width:auto;max-height:82vh;
  border-radius:16px 16px 0 0;padding-bottom:calc(18px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));
  animation:woranvonunten .22s ease-out}
@keyframes woranvonunten{from{transform:translateY(100%)}to{transform:none}}
@media (prefers-reduced-motion:reduce){.woranblase.vonunten .woranfenster{animation:none}}

/* ---------- Gespräche unter Menschen (Ticket #6) ----------
   Das Nachrichten-Blatt ist zweigeteilt: links die Leiste (absolut, unter dem
   Kopf), rechts rücken Verlauf, Anhänge und Schreibfeld um ihre Breite ein. */
.gespraechzahl{display:inline-block;min-width:18px;padding:1px 6px;border-radius:999px;
  background:#c0392b;color:#fff;font-size:11px;font-weight:700;text-align:center;line-height:16px}
.blatt.mitleiste > .blattinhalt,.blatt.mitleiste > .blattfuss,
.blatt.mitleiste > .blattanhang{margin-left:var(--gleiste,0px)}
.gespraechleiste{position:absolute;left:0;bottom:0;z-index:7;display:flex;
  background:var(--leiste-bg);border-right:1px solid var(--papierrand)}
.blatt.leiste-zu .gespraechleiste{display:none}
.gespraechleisteinhalt{flex:1;min-width:0;overflow:auto;padding:8px 6px;display:flex;flex-direction:column;gap:3px}
.leistengriff{flex:0 0 7px;cursor:col-resize;margin-right:-4px;position:relative;z-index:8}
.leistengriff:hover,.leistengriff:active{background:rgba(138,106,60,.25)}
.leistenkopf{display:flex;align-items:center;gap:6px;padding:2px 4px 6px;font-size:13px}
.leistenkopf b{flex:1}
.leistenkopf button,.blattkopf .leistenknopf{border:0;background:none;cursor:pointer;font-size:16px;
  color:inherit;padding:2px 6px;border-radius:6px}
.leistenkopf button:hover,.blattkopf .leistenknopf:hover{background:rgba(var(--ton),.07)}
.gespraechzeile{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:0;
  background:none;border-radius:9px;padding:7px 8px;cursor:pointer;color:inherit;font:inherit;font-size:13px}
.gespraechzeile .initialenbild{display:flex;align-items:center;justify-content:center;border-radius:50%;
  color:#fff;font-size:11px;font-weight:700}
.gespraechzeile img{border-radius:50%;object-fit:cover}
.gespraechzeile:hover{background:rgba(var(--ton),.06)}
.gespraechzeile.aktiv{background:var(--zeile-aktiv)}
.gespraechtext{flex:1;min-width:0;display:flex;flex-direction:column}
.gespraechtext b,.gespraechtext small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gespraechtext small{opacity:.7}
.gespraechrechts{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex:none}
.gespraechrechts small{opacity:.6;font-size:11px}
/* Anpinnen (#6): 📌 im Kopf blass = nicht angepinnt, kräftig = angepinnt */
.pinzeichen{font-size:10px}
.blattkopf .pinknopf{filter:grayscale(1);opacity:.4}
.blattkopf .pinknopf.an{filter:none;opacity:1}
.blase .gespraechweg{position:absolute;top:2px;right:4px;border:0;background:none;color:inherit;
  opacity:0;cursor:pointer;font-size:11px;padding:2px}
.blase:hover .gespraechweg,.blase .gespraechweg:focus{opacity:.8}
@media (hover:none){.blase .gespraechweg{opacity:.5}}
.tippen .blase .gespraechweg{opacity:.5}                              /* Ansicht testen (#112) */
.blase.geloescht{opacity:.6;background:rgba(120,120,120,.5)!important}
.blase:has(> .gespraechweg){position:relative;padding-right:24px}
/* Handy: kein Platz für zwei Spalten – die Leiste liegt über dem Gespräch. */
@media (max-width:700px){
  .gespraechleiste{right:0;width:auto}
  .leistengriff{display:none}
}
/* ---------- Gespräche des eigenen Assistenten (#400) ----------
   Dieselbe Leiste wie bei den Nachrichten: oben „+ Neues Gespräch“ und die Suche
   (die Knöpfe der Vorgänge: mappenneu, mappensuche), je Zeile das Gespräch und „⋯“.
   Keine eigenen Farben – Variablen und die rote Zahl der Nachrichten als Punkt. */
.assistentleistekopf{display:flex;flex-direction:column;gap:6px;padding:2px 2px 8px}
.assistentleistekopf .mappenneu{align-self:flex-start;flex:none}
.assistentleistekopf .mappensuche{width:100%;box-sizing:border-box;flex:none}
.assistentliste{display:flex;flex-direction:column;gap:2px}
.assistentzeile{display:flex;align-items:center;border-radius:9px}
.assistentzeile .gespraechzeile{flex:1;min-width:0;padding:6px 4px 6px 8px}
.assistentzeile.aktiv{background:var(--zeile-aktiv)}
.assistentzeile.aktiv .gespraechzeile:hover{background:none}
.assistentordnen{flex:none;border:0;background:none;color:inherit;cursor:pointer;font-size:15px;line-height:1;
  padding:4px 7px;border-radius:7px;opacity:.45}
.assistentordnen:hover,.assistentordnen:focus-visible{opacity:1;background:rgba(var(--ton),.07)}
.gespraechzahl.assistentpunkt{min-width:0;width:9px;height:9px;padding:0;line-height:0;flex:none}
.pinzeichen svg{width:11px;height:11px;vertical-align:-1px}
.blattkopf .pinknopf svg{width:16px;height:16px;vertical-align:-3px}
.leistenreiter button small{opacity:.6;font-weight:400}
/* Vorgänge der Agenten (#404): vier Filter – ab 250 px in einer Reihe, schmaler in zwei;
   darunter die Sortierung, erledigt und abgelegt etwas blasser */
.leistenreiter.vorgangfilter{flex-wrap:wrap}
.leistenreiter.vorgangfilter button{flex:1 0 auto;padding:5px 3px}
.vorgangsortierung{display:flex;align-items:center;gap:6px;margin:0 4px 6px;font-size:12px;opacity:.8}
.vorgangsortierung select{flex:1;min-width:0;font:inherit;font-size:12px;color:inherit;background:var(--feld);
  border:1px solid rgba(var(--ton),.14);border-radius:7px;padding:2px 4px}
.vorgangzeile.stand-erledigt .gespraechtext b,.vorgangzeile.stand-archiviert .gespraechtext b{opacity:.65}
/* ---------- Grundlagen eines Auftrags (Ticket #82) ---------- */
.grundlagenknopf{position:relative}
.grundlagenknopf small{font-size:11px;margin-left:2px}
.grundlagenknopf .glpunkt{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:50%;
  background:#e0a800}
.glinhalt{max-width:620px;width:100%;max-height:88vh;overflow:auto}
.glinhalt h3{margin:14px 0 6px;font-size:1rem}
.glbilder{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.glbild{display:flex;flex-direction:column;gap:4px;font-size:13px}
.glbild img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px;cursor:zoom-in;
  background:rgba(127,127,127,.12)}
.glbild button,.glknoepfe button,.glneu button{padding:5px 10px;border-radius:8px;cursor:pointer;
  border:1px solid rgba(127,127,127,.4);background:transparent;color:inherit;font-size:13px}
.glknoepfe button.haupt{background:var(--haupt,#3f6fe0);border-color:transparent;color:#fff}
.glliste{display:flex;flex-direction:column;gap:6px}
.glzeile{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:6px 8px;
  border-radius:8px;background:rgba(127,127,127,.08)}
.glzeile > span:first-child{flex:1;min-width:0;overflow-wrap:anywhere}
.glknoepfe{display:flex;gap:6px;flex-shrink:0}
.glvorschlag{background:rgba(224,168,0,.16);border:1px solid rgba(224,168,0,.5)}
.glvorschlag .glbild{max-width:120px}
.glneu{display:flex;gap:8px;margin-top:8px}
.glfrei input[type=search]{width:100%;box-sizing:border-box;margin-bottom:10px}
.glneu input,.glfrei input[type=search]{flex:1;min-width:0;padding:7px 9px;border-radius:8px;border:1px solid rgba(127,127,127,.45);
  background:transparent;color:inherit;font-size:14px}
.glfrei{margin-top:8px}
.glfrei summary{cursor:pointer;margin-bottom:8px}
.glweg{opacity:.65}                                 /* Karte nicht mehr im Baukasten (#286) */
.glkartenwahl{max-height:340px;overflow:auto}
.grundlagenfenster .fehler{color:var(--fehlerrot);margin:8px 0 0}
@media (max-width:700px){
  .glzeile{flex-direction:column;align-items:stretch}
  .glbilder{grid-template-columns:repeat(2,1fr)}
  .glkartenwahl{max-height:none}                  /* am Telefon rollt das Fenster, keine Rolle in der Rolle */
}

/* Lesebestätigung und Reaktionen (Ticket #6) */
.lesepunkt{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:6px;vertical-align:middle;
  background:#9a9a9a;box-shadow:0 0 0 1.5px rgba(255,255,255,.9)}
.lesepunkt.gelesen{background:var(--signal,#ff2d55)}
.blase .reaktionen{position:absolute;bottom:-11px;display:flex;gap:3px;white-space:normal}
.b-andere .reaktionen{right:8px}
.b-ich .reaktionen{left:8px}
.blase:has(> .reaktionen){margin-bottom:12px;position:relative}
.reaktion{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;padding:0 4px;
  border-radius:999px;background:var(--karte);border:1px solid var(--papierrand);font-size:14px;line-height:1;
  box-shadow:0 1px 3px rgba(0,0,0,.15);color:var(--papiertext)}
button.reaktion{cursor:pointer;font:inherit;font-size:14px}
.reaktion.meine{border-color:var(--wahl)}
.emojiwahl{position:fixed;z-index:95;background:var(--karte);color:var(--papiertext);border-radius:14px;padding:6px;
  box-shadow:0 10px 30px rgba(0,0,0,.25);border:1px solid var(--papierrand);max-width:min(340px,calc(100vw - 16px))}
.emojireihe{display:flex;gap:2px;align-items:center}
.emojiknopf{border:0;background:none;cursor:pointer;font-size:21px;line-height:1;padding:5px;border-radius:9px}
.emojiknopf:hover{background:rgba(var(--ton),.07)}
.emojiknopf.gewaehlt{background:var(--wahl-bg);box-shadow:inset 0 0 0 1.5px var(--wahl)}
.emojiknopf.weg,.emojiknopf.mehr{font-size:15px;color:var(--papierleise);min-width:30px}
.emojiknopf.mehr{margin-left:auto}
.emojialle{margin-top:6px;border-top:1px solid var(--papierlinie);padding-top:6px}
.emojialle input{width:100%;box-sizing:border-box;padding:6px 9px;border-radius:8px;border:1px solid var(--papierrand2);
  font-size:14px;margin-bottom:6px;background:var(--karte);color:inherit}
.emojigitter{display:grid;grid-template-columns:repeat(8,1fr);gap:1px;max-height:210px;overflow:auto}
.emojigitter .emojiknopf{font-size:20px;padding:4px}
/* Verschlüsselte Gespräche (Ticket #6, Weg A) */
.schluesselwechsel{align-self:center;margin:8px auto;max-width:86%;text-align:center;font-size:12.5px;
  color:var(--hinweis-text);background:var(--hinweis-bg);border:1px solid var(--hinweis-rand);border-radius:10px;padding:6px 10px}
.schluesselwechsel small{opacity:.7}
.gespraechzeile.gesperrt{opacity:.55;cursor:default}
.gespraechzeile.gesperrt:hover{background:none}
.tresorneu{margin-top:10px}
.tresorneu summary{cursor:pointer;color:var(--papierleise)}
/* Gruppenchat (Ticket #6, Stufe 2) */
.leistenreiter{display:flex;gap:2px;background:rgba(var(--ton),.06);border-radius:9px;padding:2px;margin:0 2px 6px}
.leistenreiter button{flex:1;border:0;background:none;border-radius:7px;padding:5px 4px;font:inherit;font-size:12px;
  cursor:pointer;color:inherit;white-space:nowrap}
.leistenreiter button.an{background:var(--reiter-an);box-shadow:0 1px 2px rgba(0,0,0,.12);font-weight:600}
.gruppentitel{width:100%;box-sizing:border-box;padding:7px 9px;border-radius:8px;border:1px solid var(--papierrand2);
  font:inherit;font-size:14px;margin:4px 0 8px;background:var(--feld);color:inherit}
.gruppenwahl{display:flex;flex-direction:column;gap:2px;max-height:260px;overflow:auto;font-size:13px}
/* Die Kästchen stehen immer genau übereinander: feste erste Spalte, der Name
   daneben – egal wie lang er ist (Rückmeldung des Benutzers). Angehakt in der
   Signalfarbe des Büros, wie der Gelesen-Punkt und die Überschneidungen in der
   Zeiterfassung. */
.gruppenwahl label{display:grid;grid-template-columns:20px 1fr;align-items:center;justify-items:start;
  column-gap:8px;text-align:left;padding:4px 6px;border-radius:7px;cursor:pointer}
.gruppenwahl label input[type=checkbox]{width:16px;height:16px;margin:0;justify-self:center;
  accent-color:var(--signal,#ff2d55);cursor:pointer}
.gruppenwahl label small{grid-column:2;opacity:.7}
.gruppenwahl label:hover{background:rgba(var(--ton),.05)}
.gruppenwahl label.gesperrt{opacity:.5;cursor:default}
.gespraechzeile.ehemalig{opacity:.6}
.gruppenbild{border-radius:10px!important}
.gruppenhinweis{align-self:center;text-align:center;font-size:12.5px;color:var(--papierleise);margin:6px auto;max-width:90%}
.gruppenhinweis small{opacity:.7}
.gruppeverwalten{padding:4px 2px}
.gruppeverwalten h3{margin:0 0 6px}
.gruppeverwalten h4{margin:14px 0 4px}
.mitgliederliste{display:flex;flex-direction:column;gap:3px;margin:6px 0}
.mitgliedzeile{display:flex;align-items:center;gap:9px;padding:5px 6px;border-radius:9px;background:rgba(var(--ton),.03)}
.mitgliedzeile .gespraechtext small{opacity:.7}
.mitgliedknoepfe{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.mitgliedknoepfe button{border:1px solid var(--papierrand2);background:var(--karte);border-radius:7px;padding:3px 8px;font:inherit;
  font-size:12px;cursor:pointer;color:inherit}
.warnknopf{color:var(--warn)!important;border-color:var(--warn-rand)!important}
.lesestandfenster{min-width:210px;font-size:13px;padding:10px 12px}
.lesestandfenster b{display:block;margin-bottom:6px}
.lesestandzeile{display:flex;justify-content:space-between;gap:14px;padding:3px 0}
.lesepunkt.leer{background:transparent;box-shadow:0 0 0 1.5px #b9b1a4}
.lesepunkt[data-lesestand]{cursor:pointer}
/* Rückfrage im Stil der Blätter (Chats, Ticket #6) */
.blattfrage{background:rgba(20,12,4,.45)}
.blattfrageinhalt{background:var(--papierfenster);color:var(--papiertext);border-radius:16px;padding:20px 22px 16px;
  max-width:420px;box-shadow:0 26px 70px rgba(20,12,4,.45);border:1px solid var(--blattrand);font-size:14.5px}
.blattfrageinhalt p{margin:0 0 4px;line-height:1.5}
.blattfrageinhalt .blattknopfreihe{justify-content:flex-end;margin-top:14px}
.blattknopf.signalknopf{background:var(--signal,#ff2d55);color:#fff;font-weight:600}
.blattknopf.signalknopf:hover{filter:brightness(.93);background:var(--signal,#ff2d55)}
/* Gesperrt (Pflichtfeld leer, #334; Raum endgültig löschen ohne Namen): sichtbar blass */
.blattfrageinhalt .blattknopf:disabled{opacity:.45;cursor:default;filter:none}
/* Eingabe statt prompt() (#332, eingabeFrage in gespraeche.js): feste Breite, das Feld
   in Papierfarben – Rand und Fokusring warm, dunkel über den Block der Fenster. Am
   Telefon 16 px: kleiner vergrößert Safari beim Antippen die ganze Seite.
   Eigene Namen (ef…): „.eingabefeld“ ist schon das Eingabefeld der Chats. */
.eingabefrage .blattfrageinhalt{width:100%;max-width:420px;box-sizing:border-box}
.eingabefrage .eftitel{font-size:15.5px}
.eingabefrage .effeld{display:block;margin:6px 0 0;font-size:13px;line-height:1.45;color:var(--papierleise)}
.eingabefrage .effeld input{display:block;margin-top:8px;font-size:14.5px;color:var(--papiertext);
  background:var(--feld);border-color:var(--papierrand2)}
.eingabefrage .effeld input:focus{outline:2px solid var(--wahl);outline-offset:-1px}
/* Text nur zum Lesen (#406 Stufe 3, Vorschau einer Agenten-Vorlage) – breiteres Fenster */
.eingabefrage.breit .blattfrageinhalt{max-width:640px}
.eingabefrage .eflesen textarea{display:block;width:100%;box-sizing:border-box;margin-top:6px;font-size:13px;
  line-height:1.45;color:var(--papiertext);background:var(--feld);border:1px solid var(--papierrand2);
  border-radius:8px;padding:8px 10px;resize:vertical;white-space:pre-wrap}
.eingabefrage .effeld + .effeld{margin-top:10px}
/* Auswahl und Kästchen im selben Fenster (#401, Als PDF): Auswahl wie die Felder,
   das Kästchen links neben seinem Satz */
.eingabefrage .effeld select{display:block;width:100%;margin-top:8px;font-size:14.5px;color:var(--papiertext);
  background:var(--feld);border-color:var(--papierrand2)}
.eingabefrage .effeld select:focus{outline:2px solid var(--wahl);outline-offset:-1px}
.eingabefrage .efhaken{display:flex;align-items:center;gap:8px;color:var(--papiertext)}
.eingabefrage .efhaken input{display:inline-block;width:auto;margin:0}
.eingabefrage .effeld[hidden]{display:none}
/* Absätze der Rückfragen und Hinweise (#334): \n\n aus den Texten bleibt stehen,
   lange Adressen (Anmeldelink) brechen um statt aus dem Fenster zu ragen */
.blattfrage .bftext,.eingabefrage .eftext{white-space:pre-line;overflow-wrap:anywhere}
.eingabefrage .eftext{margin:0 0 4px;font-size:13.5px}
.eingabefrage .efhinweis{margin:12px 0 0;color:var(--papierleise)}
/* Funktionen je Büro (#406): Gruppen-Überschriften; lange Listen rollen im Fenster */
.eingabefrage .efgruppe{margin:14px 0 6px}
.eingabefrage .efgruppe[hidden]{display:none}
.eingabefrage .efhaken{align-items:flex-start}
.eingabefrage .efhaken input{margin-top:3px}
.eingabefrage .efhaken small{color:var(--papierleise)}
.eingabefrage .blattfrageinhalt{max-height:calc(100vh - 40px);overflow-y:auto}
@media(max-width:700px){.eingabefrage .effeld input{font-size:16px;min-height:42px}}
@media(max-width:700px){.eingabefrage .effeld select{font-size:16px;min-height:42px}
  .eingabefrage .efhaken input{min-height:0}}

/* Agent im Projektraum (#110): die Büro-Ebene gedämpft, der Raum-Teil normal */
.karte.ebene-buero{opacity:.78}
.hinweisbox{background:#fff4d6;border:1px solid #e8c878;border-radius:8px;padding:8px 10px;margin:8px 0;color:#5c4510}

/* Agenten im Raum (#110 D) */
.raumagenten{max-height:50vh;overflow:auto;margin:10px 0}
.raumagent{padding:6px 0;border-bottom:1px solid rgba(var(--ton),.08)}
.raumfaehs{display:flex;flex-wrap:wrap;gap:4px 14px;margin:4px 0 0 24px;font-size:13px}

/* Einkaufsliste (#121) – eine Zeile je Artikel, Knöpfe rechts; am Telefon darunter */
.einkaufraster{display:contents}
.einkaufzeile{padding:10px 0;border-top:1px solid var(--rand)}
.einkaufzeile:first-of-type{border-top:0}
.einkaufkopf{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.einkaufknoepfe{gap:6px;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0}
.einkaufknoepfe a.knopf{text-decoration:none}
/* Häkchen bleibt neben seinem Text stehen, auch am Telefon (#125) */
.einkaufform label.reihe{flex-wrap:nowrap;align-items:flex-start}
.einkaufform label.reihe input{margin-top:3px;flex:0 0 auto}
@media (max-width:700px){
  .einkaufkopf{flex-direction:column}
  .einkaufknoepfe{justify-content:flex-start}
}

/* ---------- Gästefenster (#114) ----------
   Ein Gast sieht nicht den Tisch, sondern ein schlichtes Blatt: seine
   Projekträume, sein Kontakt, sein Zugang. Schon beim ersten Strich
   (data-start="gast") bleiben Anmeldung und Büro weg. */
body[data-start="gast"] #anmeldung,
body[data-start="gast"] #buero,
body.gast-an #anmeldung,
body.gast-an #buero{display:none!important}
body[data-start="gast"] #gastfenster{display:block!important}
body.gast-an{background:var(--bg)}
.gastfenster{min-height:100vh;color:var(--text);font-family:var(--schrift)}
.gastkopf{display:flex;align-items:center;gap:10px;padding:10px 16px;
  background:var(--dunkel);color:#fff}
.gastkopf .leise{color:rgba(255,255,255,.75);font-size:14px}
.gastlogo{height:28px;width:auto;border-radius:6px}
.gastmarke{font-size:16px}
.gastinhalt{max-width:720px;margin:0 auto;padding:20px 16px 40px}
.gastinhalt h1{font-size:22px;margin:6px 0 4px}
.gastinhalt h2{font-size:17px;margin:22px 0 8px}
.gastraum{background:var(--karte);border:1px solid var(--rand);border-radius:12px;
  padding:12px 14px;margin:0 0 10px}
.gastraum h3{margin:0 0 2px;font-size:16px}
.gastraum p{margin:8px 0 0}
.gastraum.zu{opacity:.65}
.gastprofil{margin-top:26px}
.gastprofil summary{cursor:pointer;font-weight:600}
.gastprofil .formular{display:flex;flex-direction:column;gap:8px;max-width:360px;margin:12px 0}
.gastprofil label{display:flex;flex-direction:column;gap:4px;font-size:14px}
.gastfach{border-top:1px solid var(--rand);margin-top:10px;padding-top:10px}
.gastfach h4{margin:0 0 2px;font-size:15px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.gastdateien{list-style:none;margin:6px 0;padding:0}
.gastdateien li{padding:5px 0;border-bottom:1px dashed var(--rand);overflow-wrap:anywhere}
.gastdateien li:last-child{border-bottom:0}
.gastunter{font-size:13px;font-weight:600;margin-top:8px}
.gaststand{font-size:12px;padding:1px 7px;border-radius:9px;white-space:nowrap}
.gaststand.neu{background:var(--gelb-weich);color:var(--gelb-text)}
.gaststand.frei{background:var(--gruen-weich);color:var(--gruen-text)}
.gaststand.abgelehnt{background:var(--rot-weich);color:var(--rot-text)}
.gasthoch{display:inline-block;margin-top:6px;cursor:pointer}
.fachknoepfe{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center;margin-left:6px}
.fachtabelle td,.fachtabelle th{padding:6px 8px;text-align:left;vertical-align:top;border-bottom:1px solid var(--rand)}
/* Gast-Agent und Nachrichten ans Team (#114, G3) */
.gaststandtext{margin-top:10px;padding:10px 12px;background:var(--blau-weich2);border-radius:10px}
.gastvorlage{white-space:pre-wrap;margin:4px 0 6px}
.gastfehlt{list-style:none;margin:4px 0 0;padding:0}
.gastfehlt li.erledigt{color:var(--leise);text-decoration:line-through}
.gastagent{border-top:1px solid var(--rand);margin-top:10px;padding-top:8px}
.gastagent summary{cursor:pointer;font-weight:600}
.gastagent .formular{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.gastagent textarea{width:100%;font:inherit;padding:8px;border:1px solid var(--rand2);border-radius:8px}
.gastchat{display:flex;flex-direction:column;gap:6px;margin-top:8px;max-height:380px;overflow-y:auto}
.gastblase{padding:8px 10px;border-radius:10px;max-width:88%;white-space:pre-wrap;overflow-wrap:anywhere}
.gastblase.ich{align-self:flex-end;background:var(--blau-weich)}
.gastblase.agent{align-self:flex-start;background:var(--flaeche2)}
.gastzeit{font-size:11px;margin-top:2px}
.gastvorschlag{background:var(--gelb-weich2);border:1px solid var(--gelb-rand);border-radius:10px;padding:8px}
.gastpost{padding:6px 0;border-bottom:1px dashed var(--rand);overflow-wrap:anywhere}
.gastpost>div{white-space:pre-wrap}
.gastantwort{margin-top:4px;padding:6px 8px;background:var(--gruen-weich2);border-radius:8px}
.gastpruefung{margin-top:3px;font-size:13px;padding:4px 8px;background:var(--flaeche2);border-radius:8px}

/* ---------- Geburtstag (#140): Girlande, Torte, Luftballons ---------- */
.girlande{position:absolute;top:80px;left:50%;transform:translateX(-50%);z-index:3;
  width:min(560px,56vw);pointer-events:none;text-align:center}
.girlande svg{display:block;width:100%;height:76px;filter:drop-shadow(0 4px 6px rgba(0,0,0,.35))}
.girlandentext{margin-top:2px;font-family:"Iowan Old Style",Georgia,serif;font-style:italic;
  font-size:clamp(16px,2vw,22px);text-shadow:0 2px 12px rgba(0,0,0,.7)}
.torte{position:absolute;left:50%;top:55%;transform:translateX(-50%);z-index:3;
  width:78px;height:78px;padding:0;border:0;background:none;cursor:pointer}
.torte svg{width:100%;height:100%;filter:drop-shadow(0 6px 10px rgba(0,0,0,.45))}
.torte .flamme{transform-origin:40px 20px;animation:flackern 1.1s ease-in-out infinite alternate}
@keyframes flackern{from{transform:scale(1,1)}to{transform:scale(.85,1.12)}}
.tortenschild{position:absolute;left:50%;top:100%;transform:translateX(-50%);white-space:nowrap;
  margin-top:4px;padding:5px 12px;border-radius:999px;font-size:13px;color:#fff;
  background:rgba(20,14,8,.75);opacity:0;transition:opacity .2s;pointer-events:none}
.torte:hover .tortenschild,.torte.zeigt .tortenschild{opacity:1}
/* Foto-Fassung im Loft: Ebene deckungsgleich mit dem Raumbild (gleicher Zuschnitt) */
.geburtstagsfoto{position:absolute;inset:0;pointer-events:none;
  background:center/cover no-repeat;animation:geburtstagEin 1.2s ease both}
@keyframes geburtstagEin{from{opacity:0}to{opacity:1}}
.geburtstagsschrift{position:absolute;z-index:2;transform:translateX(-50%);width:max-content;
  text-align:center;text-wrap:balance;line-height:1.25;
  pointer-events:none;font-family:"Iowan Old Style",Georgia,serif;font-style:italic;
  color:#fbf4e8;text-shadow:0 1px 2px rgba(0,0,0,.45),0 2px 14px rgba(0,0,0,.55)}
.torte.fototorte{transform:none;background:none}
.torte.fototorte .tortenschild{top:100%}
.ballonhimmel{position:fixed;inset:0;z-index:9000;pointer-events:none;overflow:hidden}
.ballon{position:absolute;bottom:-380px;animation-name:aufsteigen;animation-timing-function:ease-in;
  animation-fill-mode:both}
.ballon span{display:block}
.ballon img{display:block;width:100%;height:auto;transform-origin:50% 18%;
  animation:schaukeln 2.2s ease-in-out infinite alternate;filter:drop-shadow(0 6px 10px rgba(0,0,0,.25))}
@keyframes aufsteigen{from{transform:translateY(0)}to{transform:translateY(calc(-100vh - 420px))}}
@keyframes schaukeln{from{transform:rotate(-6deg) translateX(-6px)}to{transform:rotate(6deg) translateX(6px)}}
@media(prefers-reduced-motion:reduce){.torte .flamme{animation:none}}
.ballonhimmel.ruhig .ballon{animation-timing-function:linear}
.ballonhimmel.ruhig .ballon img{animation:none}
@media(max-width:820px){
  /* Am Telefon: direkt unter der Ecke mit den Knöpfen – weiter unten sitzen
     schon die Portraits am Rand. */
  .girlande{top:108px;width:92vw}
  .girlande svg{height:40px}
  .girlandentext{font-size:15px}
  .torte{width:60px;height:60px;top:58%}
}

/* Gemeinsam schreiben (#136, Stufe 2): Cursor der anderen über dem Textfeld */
.gemfeld{position:relative}
.gemfeld textarea{display:block;width:100%}
.gemlage{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.gemcursor{position:absolute;width:2px;border-radius:1px}
.gemname{position:absolute;bottom:100%;left:-1px;white-space:nowrap;font-size:11px;line-height:1.5;
  padding:0 5px;border-radius:5px 5px 5px 0;color:#fff;font-weight:600}
.gemstatus{font-size:13px;margin-right:auto}
.gemstatus.gemfehler{color:#b3261e}
.gemcursor.unten .gemname{bottom:auto;top:100%;border-radius:0 5px 5px 5px}

/* Geburtstag: eigener Kalender ohne Jahr (#140, 27.09.2026) */
.gebkalender{flex-basis:100%;max-width:320px;padding:10px;border-radius:12px;
  border:1px solid var(--rand);background:var(--karte);box-shadow:0 8px 24px rgba(0,0,0,.18)}
.gebkopf{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.gebtage{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.gebtage button{padding:7px 0;border-radius:8px;border:1px solid transparent;cursor:pointer;
  background:transparent;color:inherit;font-size:14px}
.gebtage button:hover{border-color:var(--rand)}
.gebtage button.an{background:var(--akzent,#2f6fdf);color:#fff}

/* Großansicht mit Namen, Herunterladen, Teilen (#122) – das Bild endet über der Leiste */
.bildgross:has(.bgleiste){padding-bottom:calc(84px + var(--sicher-unten,env(safe-area-inset-bottom,0px)))}
.bildgross .bgleiste{position:absolute;left:50%;bottom:calc(16px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));
  transform:translateX(-50%);display:flex;
  flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;width:max-content;max-width:calc(100% - 32px);
  box-sizing:border-box;padding:8px 12px;border-radius:10px;background:rgba(0,0,0,.5);color:#fff;cursor:default}
.bildgross .bgname{font-size:14px;max-width:min(52vw,420px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bildgross .bgknopf{background:rgba(255,255,255,.16);color:#fff;font-size:15px;padding:7px 14px;border:0;
  border-radius:8px;cursor:pointer;text-decoration:none}
.bildgross .bgknopf:hover{background:rgba(255,255,255,.28)}
.bildgross .bgmeldung:empty{display:none}
.bildgross .bgmeldung{flex-basis:100%;font-size:13px;text-align:center}
.bildgross .bgmeldung p{margin:4px 0}
.bildgross .bgfrage{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.bildgross .bgfrage p{flex-basis:100%}

/* ---------- Bildvergleich mit Schieberegler (#154) ---------- */
.bildgross .bgvergleich{position:absolute;top:14px;right:70px;background:rgba(255,255,255,.16);color:#fff;
  font-size:15px;padding:7px 14px;border:0;border-radius:8px;cursor:pointer}
.bildgross .bgvergleich:hover{background:rgba(255,255,255,.28)}
/* Ganz oben: die Blätter am Tisch steigen beim Nach-vorn-Holen immer höher */
.bildvergleich{position:fixed;inset:0;z-index:100000;display:flex;flex-direction:column;
  background:#0f0d0b;color:#f2eee8;font-size:14px}
.bvkopf,.bvfuss{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 16px}
.bvkopf{border-bottom:1px solid rgba(255,255,255,.1)}
.bvfuss{border-top:1px solid rgba(255,255,255,.1)}
.bvarten{display:flex;gap:4px;background:rgba(255,255,255,.08);border-radius:10px;padding:3px}
.bvarten button,.bvtausch,.bvzu{border:0;border-radius:8px;padding:7px 12px;cursor:pointer;
  background:transparent;color:inherit;font-size:14px}
.bvarten button.an{background:#f2eee8;color:#1c1b19}
.bvtausch,.bvzu{background:rgba(255,255,255,.1)}
.bvzu{margin-left:auto;font-size:17px}
.bvwahl{display:flex;align-items:center;gap:6px;min-width:0}
.bvwahl select{max-width:min(34vw,280px);padding:5px 8px;border-radius:8px;background:#2f2d2a;
  color:inherit;border:1px solid rgba(255,255,255,.18)}
.bvbuehne{flex:1;min-height:0;display:grid;place-items:center;padding:12px;overflow:hidden}
.bvflaeche{position:relative;touch-action:none;user-select:none;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.bvflaeche img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;
  -webkit-user-drag:none}
.bvflaeche .bva{position:relative;display:block}
.bildvergleich[data-art="lr"] .bvflaeche{cursor:ew-resize}
.bildvergleich[data-art="ou"] .bvflaeche{cursor:ns-resize}
.bvlinie{position:absolute;pointer-events:none;display:none;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.35)}
.bvlinie span{position:absolute;width:30px;height:30px;border-radius:50%;background:#fff;
  box-shadow:0 2px 8px rgba(0,0,0,.45);left:50%;top:50%;transform:translate(-50%,-50%)}
.bildvergleich[data-art="lr"] .bvlinie{display:block;top:0;bottom:0;width:2px;transform:translateX(-1px)}
.bildvergleich[data-art="ou"] .bvlinie{display:block;left:0;right:0;height:2px;transform:translateY(-1px)}
.bvmarke{position:absolute;top:8px;padding:2px 9px;border-radius:6px;background:rgba(0,0,0,.55);
  font-weight:600;pointer-events:none}
.bvma{left:8px}.bvmb{right:8px}
.bildvergleich[data-art="ou"] .bvmb{top:auto;bottom:8px;left:8px;right:auto}
.bildvergleich:is([data-art="ueber"],[data-art="diff"]) .bvmarke{display:none}
.bvregler{display:flex;align-items:center;gap:8px}
.bvregler input{width:min(40vw,260px)}
.bvregler output{min-width:3.4em;text-align:right;font-variant-numeric:tabular-nums}
.bildvergleich:not([data-art="lr"]):not([data-art="ou"]) .bvteilen{display:none}
.bildvergleich:not([data-art="ueber"]) .bvdeck{display:none}
.bvhinweis{opacity:.7;font-size:13px}
/* Sichere Ränder fürs iPhone (Web-App am Homescreen: Uhr und Balken oben) */
.bvkopf{padding-top:max(10px,env(safe-area-inset-top))}
.bvfuss{padding-bottom:max(10px,env(safe-area-inset-bottom))}
.bildvergleich [hidden]{display:none!important}
/* Ganze Webseiten (#306, bvSeiten): gleich breit, oben bündig, nie verzerrt;
   die Seite rollt, die Trennlinie steht im sichtbaren Teil (Lage aus dem Skript) */
.bvfenster{position:relative;flex:1;min-height:0;overflow:hidden}
.bvrollen{position:absolute;inset:0;overflow:auto;padding:16px;box-sizing:border-box;
  overscroll-behavior:contain;touch-action:pan-x pan-y;outline:none}
.bvseite{display:grid;margin:0 auto;background:#fff;box-shadow:0 10px 40px rgba(0,0,0,.5);
  user-select:none;-webkit-user-select:none}
.bvseite img{display:block;width:100%;height:auto;pointer-events:none;-webkit-user-drag:none}
.bvseite>img{grid-area:1/1;align-self:start}
.bvschicht{grid-area:1/1;align-self:stretch;background:#fff}
.bildvergleich[data-art="lr"] .bvseite{cursor:ew-resize}
.bvsl{position:absolute;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.35);pointer-events:none}
.bildvergleich[data-art="lr"] .bvsl{width:2px;margin-left:-1px}
.bildvergleich[data-art="ou"] .bvsl{height:2px;margin-top:-1px}
.bvknauf{position:absolute;left:50%;top:50%;width:38px;height:38px;transform:translate(-50%,-50%);
  padding:0;border:0;border-radius:50%;background:#fff;color:#1c1b19;font-size:16px;line-height:38px;
  box-shadow:0 2px 10px rgba(0,0,0,.5);pointer-events:auto;touch-action:none;cursor:ew-resize}
.bildvergleich[data-art="ou"] .bvknauf{cursor:ns-resize}
.bvseiten .bvmarke{z-index:1}
.bvseiten .bvmarke:empty{display:none}
.bvlupe{display:flex;align-items:center;gap:2px;background:rgba(255,255,255,.08);border-radius:10px;padding:3px}
.bvlupe button{border:0;border-radius:8px;padding:6px 10px;min-width:34px;background:transparent;color:inherit;
  font-size:14px;cursor:pointer;font-variant-numeric:tabular-nums}
.bvlupe button:hover,.bvsprung:hover{background:rgba(255,255,255,.16)}
@media(max-width:700px){
  .bvkopf{gap:8px}
  .bvarten{width:100%;justify-content:space-between}
  .bvarten button{flex:1;padding:7px 4px;font-size:13px}
  .bvwahl select{max-width:38vw}
  .bvregler input{width:52vw}
  .bvseiten .bvkopf{padding-left:10px;padding-right:10px}
  .bvseiten .bvarten{width:auto}
  .bvseiten .bvarten button{flex:0 0 auto;padding:7px 9px}
  .bvseiten .bvfuss{padding-left:10px;padding-right:10px}
  .bvrollen{padding:0}
}

/* Namensfindung (#156): die Namenstafel als Brett – am Rechner Spalten
   nebeneinander (seitwärts schieben), am Telefon untereinander. */
.namenreiter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.namentafel{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px;margin-bottom:14px;align-items:flex-start}
.namenspalte{flex:0 0 250px;background:var(--karte);border:1px solid var(--rand);border-radius:12px;padding:10px}
.namenspalte h4{margin:0}
.namenunter{margin:2px 0 8px;font-size:12px}
.namenkarte{display:flex;flex-direction:column;gap:4px;width:100%;text-align:left;background:var(--flaeche2);
  border:1px solid var(--rand);border-radius:10px;padding:8px 10px;margin-bottom:8px;cursor:pointer;font:inherit;color:inherit}
.namenkarte:hover{border-color:var(--blau)}
.namenkopf{display:flex;justify-content:space-between;gap:6px;align-items:baseline}
.namenbedeutung{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.namenampeln{display:flex;gap:4px;flex-wrap:wrap}
.namenampel{font-size:11.5px;padding:1px 6px;border-radius:8px;white-space:nowrap;background:var(--blau-weich);color:var(--blau-text)}
.namenampel.grau{background:var(--flaeche2);color:var(--leise)}
.namenampel.frei{background:var(--gruen-weich);color:var(--gruen-text)}
.namenampel.warn{background:var(--gelb-weich);color:var(--gelb-text)}
.namenampel.rot{background:var(--rot-weich);color:var(--rot-text)}
.namenpunkte{font-size:12px;font-weight:600;color:var(--blau)}
.namenpunkte.gross{font-size:18px;margin-left:6px}
.namenpruef{border-top:1px solid var(--rand);padding:8px 0}
.namenpruef:first-of-type{border-top:0}
.namenliste{margin:6px 0;padding-left:18px}
.namenliste li{margin:3px 0}
.namenregeln{list-style:none;margin:6px 0;padding:0}
.namenregeln li{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--rand)}
.namenregeln li.aus>span:first-child{opacity:.5;text-decoration:line-through}
.namenregeln .fachknoepfe{flex-wrap:nowrap;flex-shrink:0}
.namenherkunft{display:block;font-size:12px}
.namenvorschau{white-space:pre-wrap;background:var(--blau-weich);color:inherit;padding:10px;border-radius:8px;font-size:13px}
/* Archiv (27.09.2026): Filter nebeneinander, Namen als Zeilen */
.namenfilter{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}
.namenfilter label{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--leise);flex:1 1 170px}
.namenfilter select,.namenfilter input{width:100%;box-sizing:border-box}
.namenarchiv{display:flex;flex-direction:column;gap:6px}
.namenzeile{display:flex;flex-direction:column;gap:3px;text-align:left;background:var(--flaeche2);border:1px solid var(--rand);
  border-radius:10px;padding:8px 10px;cursor:pointer;font:inherit;color:inherit}
.namenzeile:hover{border-color:var(--blau)}
.namenzeilekopf{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.namenentscheid{border-color:var(--blau)}
@media (max-width:700px){
  .namentafel{flex-direction:column}
  .namenspalte{flex:1 1 auto;width:100%;box-sizing:border-box}
  .namenregeln li{flex-direction:column}
}

/* ---------- Comic-Sprechblasen unter Menschen (#158) ----------
   Die letzte Blase einer Reihe zeigt mit einem echten Pfeil auf den, der
   spricht: fremde nach links unten (dort steht in Gruppen sein Bild), die
   eigene nach rechts unten. Der Pfeil ist ein Stück Blase (background:inherit,
   also auch die eigene Farbe aus dem style-Attribut), zugeschnitten mit einer
   SVG-Maske. Die Ecke am Pfeil ist eckig, damit er nahtlos ansetzt. */
.blatt .gblase{position:relative;border-radius:14px}
.blatt .gblase.b-andere{background:var(--fremde-blase);color:var(--text)}   /* = FREMDE_BLASE in gespraeche.js */
.blatt .gblase.b-ich{border:0}
.blatt .gblase.schwanz.b-andere{border-bottom-left-radius:0}
.blatt .gblase.schwanz.b-ich{border-bottom-right-radius:0}
.blatt .gblase.schwanz::after{content:"";position:absolute;bottom:0;width:12px;height:16px;
  background:inherit;pointer-events:none}
.blatt .gblase.schwanz.b-andere::after{left:-11px;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M12 0C12 8 7 14 0 16H12Z'/%3E%3C/svg%3E") no-repeat 0 0/100% 100%;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M12 0C12 8 7 14 0 16H12Z'/%3E%3C/svg%3E") no-repeat 0 0/100% 100%}
.blatt .gblase.schwanz.b-ich::after{right:-11px;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M0 0C0 8 5 14 12 16H0Z'/%3E%3C/svg%3E") no-repeat 0 0/100% 100%;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M0 0C0 8 5 14 12 16H0Z'/%3E%3C/svg%3E") no-repeat 0 0/100% 100%}
/* Gruppe/Projekt: Bild links neben der Blase (nur an der letzten der Reihe –
   die anderen halten den Platz frei, damit alle Blasen bündig stehen). */
.gzeile.mitbild{flex-direction:row;align-items:flex-end;gap:14px}
.gzeile.mitbild > .blase{min-width:0}
.gzeile .gbild{width:30px;flex:none;display:flex}
.gzeile .gbild .benutzerbild{border:0;margin:0}
.gname{display:block;font-weight:700;font-size:13px;margin-bottom:2px;color:var(--gn,var(--text))}
body[data-blattthema="dunkel"] .blatt .gname{color:var(--gn-d,var(--text))}   /* namensFarbe(…, true) */
/* Innerhalb einer Reihe dichter, zwischen zwei Menschen mehr Luft */
.blattinhalt .blasenhuelle.gfolge{margin-top:3px}
/* Die leere Blase „schreibt gerade“ – dieselben Punkte wie beim Nachdenken */
.blatt .gblase.gtippt{padding:12px 14px}
.gblase.gtippt .denkpunkte{margin:0}
.gtipptzeile{font-style:italic;color:var(--blau)}
/* „Entwurf:“ in der Seitenleiste – nur bei mir, in der Signalfarbe (#160) */
.entwurfmarke{color:var(--signal,#ff2d55);font-weight:700}
/* Platzhalter im Eingabefeld der Blätter: „Nachricht …“ kursiv (#158) */
.blattfuss textarea::placeholder{font-style:italic}

/* Namensfindung als Blatt am Tisch (27.09.2026): Die Seiten werden lang –
   „nach oben“ bleibt deshalb sichtbar, solange es etwas zu rollen gibt, und
   sitzt unten (das Blatt hat kein Schreibfeld). */
.blatt.namenblatt .blattscroll{bottom:18px}
.blatt.namenblatt .blattscroll:not([hidden]){opacity:1;pointer-events:auto}
.blatt.namenblatt .blattinhalt{background:var(--bg)}
.tischzahl{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;border-radius:9px;
  background:#c0392b;color:#fff;font-size:11.5px;line-height:18px;text-align:center}

/* ---------- Team-Fenster und Favoriten (#102) ---------- */
/* Projekt-Agenten (#110 E) leben nur im Raum – eigener Ring, damit man sie
   neben Messing (Büro-Agent) und Grünblau (Mensch) sofort erkennt. Farbe
   vorläufig Violett; endgültig wählt sie der Benutzer im Browser (A1). */
.tischperson.agent.projektagent .ring{background:linear-gradient(160deg,#c9a4ec,#6e46a8)}
.tischperson.agent.projektagent.ruht .ring{background:#6b6357}
/* Add-On-Agenten (#182, 28.09.2026): eigener Typ, Stahlblau – Wahl des Benutzers */
.tischperson.agent.addonagent .ring{background:linear-gradient(160deg,#9fb8d8,#3d5f8f)}
/* Der Dirigent (#101): Kupfer – dort erreicht man das ganze Team */
.tischperson.agent.dirigent .ring{background:linear-gradient(160deg,#e8845a,#9a3412)}
.tischperson.agent.dirigent.ruht .ring{background:#6b6357}
.tischperson.agent.addonagent.ruht .ring{background:#6b6357}
.tischteamhinweis{position:absolute;left:50%;top:calc(43% + 30px);transform:translateX(-50%);z-index:3;
  border:0;border-radius:999px;padding:6px 14px;font-size:12.5px;cursor:pointer;
  background:rgba(250,248,244,.82);color:#2c2822;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.tischteamhinweis:hover{background:#fff}
/* Am Telefon lag der Hinweis über einem Platz (#165 S5). Dort gibt es
   höchstens 4 Agenten und 2 Menschen; zwischen der mittleren und der unteren
   Reihe (nachgemessen 56–72 % der Höhe) ist die Tischplatte frei. */
@media(max-width:700px){
  .tischteamhinweis{top:59%;max-width:calc(100% - 32px);white-space:normal;text-align:center}
}
/* Große Karte im Menüfenster (Telefon): „‹ Team“ bleibt beim Rollen oben –
   unter der Kopfzeile des Fensters, nicht darauf (#177). --menukopf setzt
   app.js aus der gemessenen Höhe der Kopfzeile (sie ist je Gerät anders). */
#menukoerper .teamzurueck{position:sticky;top:var(--menukopf,62px);z-index:2;background:var(--bg);
  padding:8px 0;margin:-8px 0 0;width:100%;text-align:left}

.teamfenster{display:flex;flex-direction:column;gap:10px;min-height:100%}
/* Ohne min-width:0 wächst die Kartenreihe über das Blatt hinaus (Rollbalken) */
.teamfenster > *{min-width:0}
/* Reiter, Ansicht und Suche bleiben beim Rollen oben stehen (#167). Das Blatt
   rollt in .blattinhalt (16 px Innenrand) – daher top:-16px und derselbe
   Hintergrund, damit darunter Rollendes nicht durchscheint. */
.teamoben{position:sticky;top:-16px;z-index:3;display:flex;flex-direction:column;gap:10px;
  margin:-16px -18px 0;padding:16px 18px 10px;background:var(--bg);
  border-bottom:1px solid var(--rand)}
/* Im Menüfenster rollt .menuinhalt ohne Innenrand. Oben klebt dort schon die
   Kopfzeile mit Überschrift und x – die Reiter docken direkt darunter an,
   sonst schieben sie sich über Titel und x (#177). */
#menukoerper .teamoben{top:var(--menukopf,62px);margin:0;padding:10px 0}
.teamkopf{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.teamreiter{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.teamreiterknopf{border:1px solid var(--rand);background:var(--karte);color:var(--text);
  border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer}
.teamreiterknopf.an{background:var(--text);color:var(--karte);border-color:var(--text)}
.teamreiterknopf.an .sfzahl{background:var(--marke-zahl-an)}
.teamansicht{display:flex;border:1px solid var(--rand);border-radius:8px;overflow:hidden}
.teamansicht[hidden]{display:none}   /* Teamverwaltung: immer Tabelle (#195) */
.teamansicht button{border:0;background:var(--karte);color:var(--leise);padding:5px 10px;cursor:pointer;font-size:14px}
.teamansicht button.an{background:var(--flaeche2);color:var(--text)}
.teamsuchzeile{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.teamsuchzeile input[type=search]{flex:1;min-width:160px;border:1px solid var(--rand);border-radius:8px;
  padding:7px 10px;font-size:14px;background:var(--feld);color:var(--text)}
.teamnurda{font-size:13px;color:var(--leise);white-space:nowrap}
.teamhinweis{margin:0;font-size:12.5px;color:var(--leise)}
.teamleer{margin:14px 0}
.teamich{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;
  background:var(--flaeche2);flex-wrap:wrap}
.teamich .teamwer{flex:1;min-width:160px}
.teamschalter{font-size:13px;white-space:nowrap;cursor:pointer}

/* Raster: Karten mit Bild. Liste: eine Zeile je Person – für große Büros. */
.teamkarten.teamraster{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.teamkarten.teamzeilen{display:flex;flex-direction:column;gap:4px}
.teamkarte{position:relative;border:1px solid var(--rand);background:var(--karte);color:var(--text);
  border-radius:12px;cursor:pointer;display:flex;gap:8px}
.teamkarte:hover{border-color:var(--rand2)}
.teamkarte.fav{border-color:#d9a54a;box-shadow:inset 0 0 0 1px #d9a54a55}
.teamkarten.teamraster .teamkarte{flex-direction:column;align-items:center;text-align:center;padding:14px 10px 10px}
.teamkarten.teamzeilen .teamkarte{align-items:center;padding:6px 10px}
.teamring{position:relative;display:inline-block;border-radius:50%;padding:3px;flex:none;
  width:64px;height:64px;background:var(--ring-ruht)}
.teamkarten.teamzeilen .teamring{width:38px;height:38px;padding:2px}
.teamich .teamring{width:44px;height:44px;padding:2px}
.teamring.mensch{background:linear-gradient(160deg,#7fd2c4,#2f7f86)}
.teamring.agent{background:linear-gradient(160deg,#e0b070,#a9722f)}
.teamring.projektagent{background:linear-gradient(160deg,#c9a4ec,#6e46a8)}
.teamring.addonagent{background:linear-gradient(160deg,#9fb8d8,#3d5f8f)}
.teamring.dirigent{background:linear-gradient(160deg,#e8845a,#9a3412)}   /* Dirigent, #101 */
.teamring.ruht{background:var(--ring-ruht);opacity:.7}
.teamring.denkt{animation:tischatmen 2.2s ease-in-out infinite}
.teamring img,.teamring .initialenbild,.teamring .benutzerbild{width:100%!important;height:100%!important;
  border-radius:50%;object-fit:cover;object-position:50% 30%;display:grid;place-items:center;
  color:#fff;font-weight:600;font-size:18px;background:#3b4658}
.teamkarten.teamzeilen .teamring .initialenbild{font-size:13px}
.teampunkt{position:absolute;right:1px;bottom:1px;width:13px;height:13px;border-radius:50%;
  background:var(--karte);border:2px solid var(--leise);box-sizing:border-box}
.teampunkt.da{background:#22a55b;border-color:var(--karte)}
.teamkarten.teamzeilen .teampunkt{width:11px;height:11px;right:-1px;bottom:-1px}
.teamwer{display:flex;flex-direction:column;min-width:0}
.teamwer b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Lange Rollen (Agenten) höchstens zwei Zeilen, der Rest im Tooltip – vorher
   lief die Zeile im Raster über die Karte hinaus (#167). */
.teamwer small{font-size:12px;color:var(--leise);overflow:hidden;white-space:normal;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.teamkarten.teamraster .teamwer{width:100%;max-width:100%}
.teamkarten.teamraster .teamwer small{min-height:2.6em}
.teamkarten.teamzeilen .teamwer{flex:1}
.teamtun{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:center}
.teamkarten.teamraster .teamtun{margin-top:4px}
/* Im Raster stehen Stern und Pfeile in den oberen Ecken – sonst bekämen sie
   je eine eigene Zeile und die Karte würde unruhig. */
.teamkarten.teamraster .teamstern{position:absolute;top:4px;right:4px}
.teamkarten.teamraster .teamimmer{position:absolute;top:7px;right:6px}
.teamkarten.teamraster .teamschieben{position:absolute;top:5px;left:4px}
.teamknopf{border:0;border-radius:999px;padding:5px 11px;font-size:12px;cursor:pointer;
  background:var(--flaeche2);color:var(--text)}
.teamknopf:hover:not([disabled]){filter:brightness(.94)}
.teamknopf[disabled]{opacity:.45;cursor:default}
.teamknopf.leise{background:transparent;color:var(--leise)}
.teamstern{border:0;background:transparent;font-size:20px;line-height:1;cursor:pointer;
  color:var(--leise);padding:2px 4px}
.teamstern.an{color:#d9a54a}
.teamimmer{font-size:15px;color:var(--leise);padding:2px 6px}
.teamschieben{display:inline-flex}
.teamschieben button{border:0;background:transparent;color:var(--leise);cursor:pointer;padding:2px 4px;font-size:13px}
.teamschieben button[disabled]{opacity:.3;cursor:default}
.teamfuss{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-size:12.5px;
  border-top:1px solid var(--rand);padding-top:10px;margin-top:auto}
.teamfuss:empty{display:none}
.teamversuch{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;color:var(--leise);width:100%}
.teamversuchtitel small{margin-left:4px;opacity:.8}
.teamversuchzeile{display:inline-flex;gap:8px;align-items:center;white-space:nowrap}
.teamversuchzeile b{font-weight:600;color:var(--text)}
.teamversuch select{width:auto!important;display:inline-block;font-size:12px;padding:1px 4px;margin:0 0 0 2px}
.blatt.teamblatt .blattinhalt{background:var(--bg)}
.teamsymbol{background:#fbfaf7!important;border:1px solid var(--rand)}
/* Symbol aus Brunos Skizze (#166): breiter als hoch, nie rund beschneiden */
.blattkopf .teamsymbol img{width:30px;height:auto;border-radius:0;object-fit:contain}
.knopfsymbol{height:17px;width:auto;vertical-align:-3px;margin-right:6px}
.navbild{height:15px;width:auto;vertical-align:-2px}
@media(max-width:700px){
  .teamkarten.teamraster{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
  .teamkarten.teamzeilen .teamtun .teamknopf.leise{display:none}
}
/* Große Karte und Tabelle (#165). Die Teile des Fensters tragen display:flex –
   ohne diese Zeile bliebe ein ausgeblendeter Teil trotzdem stehen. */
.teamfenster [hidden]{display:none!important}
.teamich .teamring,.teamich .teamwer{cursor:pointer}
.teamgross{display:flex;flex-direction:column;gap:14px}
.teamgrosskopf{display:flex;flex-direction:column;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--rand)}
.teamzurueck{align-self:flex-start;border:0;background:transparent;color:var(--leise);cursor:pointer;
  font-size:14px;padding:2px 0}
.teamzurueck:hover{color:var(--text)}
.teamgrosswer{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.teamring.gross{width:96px;height:96px;padding:4px}
.teamring.gross .initialenbild{font-size:30px}
.teamring.gross .teampunkt{width:18px;height:18px;right:4px;bottom:4px}
.teamgrosswer .teamwer{flex:1;min-width:160px}
.teamgrosswer .teamwer b{font-size:19px;white-space:normal}
.teamgrosswer .teamwer small{font-size:13px}
.teamgrossinhalt{display:flex;flex-direction:column;gap:16px}
.teamabschnitt{display:flex;flex-direction:column;gap:6px;margin:0}
/* Sonst setzt das Raster seine Mindestbreite durch (Rollbalken im schmalen Blatt) */
.teamabschnitt > *,.teamgrossinhalt > *{min-width:0}
.teamabschnitt h4{margin:6px 0 0;font-size:14px}
.teamabschnitt p{margin:0}
.teamabschnitt label{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--leise)}
.teamabschnitt label.reihe{flex-direction:row;align-items:center;color:var(--text);font-size:13.5px}
.teamabschnitt label input:not([type=checkbox]),.teamabschnitt label select{color:var(--text);font-size:14px}
/* Im ganz großen Blatt liefen Felder sonst über die volle Breite */
.teamgrossinhalt input:not([type=checkbox]),.teamgrossinhalt select{max-width:440px}
.teamgrossinhalt .teamraster2 input,.teamgrossinhalt .teamraster2 select{max-width:none}
.teamraster2{width:100%;max-width:720px;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px 12px}
.teamfelder{gap:4px}
.teamfeld{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:4px 0;border-bottom:1px dashed var(--rand)}
.teamfeld span{min-width:120px;font-size:12.5px;color:var(--leise)}
/* Kontaktdaten (#165 S2): Art | Nummer | wer sieht es | ✕ – am Telefon zweizeilig */
.teamkontakt{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.teamkontaktzeile{display:grid;grid-template-columns:110px minmax(0,1fr) 150px auto;gap:6px;align-items:center;max-width:720px}
.teamgrossinhalt .teamkontaktzeile input,.teamgrossinhalt .teamkontaktzeile select{max-width:none;padding:7px 8px;font-size:14px}
.teamdazu{align-self:flex-start}
/* Adress-Vorschläge (#176): unter dem Adressfeld, schiebt den Rest nach unten */
.adressvorschlag{max-width:720px;display:flex;flex-direction:column;gap:4px}
.adressvorschlag:not(:has(small,li)){display:none}
.adressliste ul{list-style:none;margin:0;padding:0;border:1px solid var(--rand);border-radius:8px;overflow:hidden;background:var(--feld)}
.adressliste li{padding:9px 10px;font-size:14px;cursor:pointer;border-bottom:1px solid var(--rand)}
.adressliste li:last-child{border-bottom:0}
.adressliste li:hover,.adressliste li.aktiv{background:var(--grauknopf)}
.adressliste .adressquelle{display:block;font-size:11px;margin-top:2px}
.adressgeprueft{color:var(--gruen);font-size:12px}
.teamnotiz textarea{max-width:720px;resize:vertical}
.teamgespeichert{font-size:13px;color:#22a55b}
@media(max-width:560px){
  .teamkontaktzeile{grid-template-columns:1fr 1fr auto;border-bottom:1px dashed var(--rand);padding-bottom:6px}
  .teamkontaktzeile input{grid-column:1 / -1;grid-row:1}
}
/* Agenten-Karte (#165 S3) */
.teamliste2{margin:0;padding-left:20px;font-size:14px;line-height:1.6}
.teamgrossinhalt > .karte{margin:0}
.teamgrossinhalt .steckbriefreihe{flex-wrap:wrap}
/* Tabelle: lieber seitwärts schieben als quetschen (Regel aus buero_V2/REGELN-OBERFLAECHE.md) */
.teamtabfilter{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px;font-size:13px}
.teamtabelle{overflow-x:auto}
.teamtabelle table{min-width:520px;width:100%}
/* Befristeter Zugang in der Teamverwaltung (#279): abgelaufen rot, bald (≤ 7 Tage) orange */
.zugang-ab{color:var(--rot);font-weight:600}
.zugang-bald{color:var(--orange);font-weight:600}
.teamtabzeile{cursor:pointer}
.teamtabzeile:hover td{background:var(--flaeche2)}

/* Namensfindung Stufe 2: Runde, Vorauswahl, Add-On-Agenten */
.namenarbeit .knopf[disabled]{opacity:.5;cursor:default}
.namenarbeitstand{margin-top:8px;display:flex;flex-direction:column;gap:4px;font-size:13.5px}
.namenspalte.vorauswahl{border-color:var(--gelb-rand, #f0dca8)}
.namenvorkarte{margin-bottom:8px}
.namenvorkarte .namenkarte{margin-bottom:4px}
.namenvorknoepfe{display:flex;gap:6px;flex-wrap:wrap}
.namenrest{margin:0 0 8px}
.namenagent{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--rand)}
.namenagentbild{width:44px;height:44px;border-radius:50%;object-fit:cover;background:var(--flaeche2)}
/* Namensfindung Stufe 3: Einzelwerte und Vergleich (#156) */
.namenwerte{border-collapse:collapse;font-size:13px;margin-top:6px}
.namenwerte th,.namenwerte td{padding:4px 8px;border-bottom:1px solid var(--rand);text-align:left;vertical-align:top}
.namenwerte th{font-size:11.5px;font-weight:600;color:var(--leise)}
.namenwerte .zahl{text-align:right;white-space:nowrap}
.namenvergleich{overflow-x:auto;max-width:100%}
.namenvergleich .namenwerte{min-width:720px}
.namenvergleich th{white-space:nowrap}
/* Namensfindung Stufe 4: Schriften der Wortmarken (OFL, static/schriften, #156) */
@font-face{font-family:'Inter';src:url('/static/schriften/inter-100-900.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:'Manrope';src:url('/static/schriften/manrope-200-800.woff2') format('woff2');font-weight:200 800;font-display:swap}
@font-face{font-family:'Montserrat';src:url('/static/schriften/montserrat-100-900.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:'DM Sans';src:url('/static/schriften/dmsans-100-1000.woff2') format('woff2');font-weight:100 1000;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('/static/schriften/spacegrotesk-300-700.woff2') format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:'Syne';src:url('/static/schriften/syne-400-800.woff2') format('woff2');font-weight:400 800;font-display:swap}
@font-face{font-family:'Nunito';src:url('/static/schriften/nunito-200-1000.woff2') format('woff2');font-weight:200 1000;font-display:swap}
@font-face{font-family:'Fraunces';src:url('/static/schriften/fraunces-100-900.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:'Playfair Display';src:url('/static/schriften/playfairdisplay-400-900.woff2') format('woff2');font-weight:400 900;font-display:swap}
@font-face{font-family:'Libre Baskerville';src:url('/static/schriften/librebaskerville-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Libre Baskerville';src:url('/static/schriften/librebaskerville-700.woff2') format('woff2');font-weight:700;font-display:swap}
.namenrichtung{border-top:1px solid var(--rand);padding:12px 0}
.namenrichtung.favorit{background:var(--gruen-weich);border-radius:10px;padding:12px;margin:6px 0}
.namenwm{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0}
.namenwm svg{height:64px;width:auto;max-width:100%;border-radius:8px;box-shadow:0 0 0 1px var(--rand)}
.namensignet{width:64px;height:64px;border-radius:8px;object-fit:cover;cursor:zoom-in;box-shadow:0 0 0 1px var(--rand)}
.namensignet.leer{display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--leise);background:var(--flaeche2);cursor:default}
.namenfarben{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--leise)}
.namenfarben i{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:4px;vertical-align:-2px;box-shadow:0 0 0 1px var(--rand)}
.namenmockups{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
.namenkarte-vk{width:252px;height:144px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.18);padding:14px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;font-size:11px;line-height:1.4}
.namenkarte-vk .vkmarke svg{height:34px;width:auto;max-width:100%;box-shadow:none}
.namenkopf-hp{flex:1;min-width:240px;max-width:420px;border-radius:8px;padding:10px 14px 18px;box-sizing:border-box;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.namenkopf-hp .hpleiste{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;opacity:.9}
.namenkopf-hp .hpmarke svg{height:28px;width:auto;box-shadow:none}
.namenkopf-hp .hptitel{font-size:26px;margin-top:18px;line-height:1.1}
.namenkopf-hp .hpunter{font-size:12px;margin-top:4px}
@media (max-width:600px){.namenkarte-vk{width:100%}.namenkopf-hp{max-width:none}}
.namenv1 svg{height:auto;width:100%;max-width:460px;height:auto}
.nameneigen,.namenneu,.namenverfeinern{margin-top:8px}
.nameneigen summary,.namenneu summary,.namenverfeinern summary{cursor:pointer;font-size:13px}

/* #182: Einsatzart beim Zuteilen der Namensfindung */
dialog.einsatzwahl{position:fixed;inset:0;margin:auto;height:fit-content;max-height:calc(100% - 32px);overflow:auto;max-width:460px;width:calc(100% - 32px);border:0;border-radius:14px;padding:18px 20px;
  background:var(--karte);color:var(--text);box-shadow:0 12px 40px rgba(0,0,0,.35)}
dialog.einsatzwahl::backdrop{background:rgba(0,0,0,.45)}
dialog.einsatzwahl h3{margin:0 0 6px}
.einsatzwahl .einsatzart{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--rand);cursor:pointer}
.einsatzwahl .einsatzart input{width:auto;margin-top:4px}

/* #182: weitere Musterflächen der Gestaltung (Etikett, Symbol, Plakat, Namensschild, Store) */
.namenmuster-etikett{width:200px;height:150px;border-radius:14px;box-shadow:0 2px 8px rgba(0,0,0,.18);overflow:hidden;
  display:flex;flex-direction:column;box-sizing:border-box}
.namenmuster-etikett .etmarke{flex:1;display:grid;place-items:center;padding:10px}
.namenmuster-etikett .etmarke svg{height:40px;width:auto;max-width:100%;box-shadow:none}
.namenmuster-etikett .etband{padding:6px 10px;font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.namenmuster-symbol{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11px}
.namenmuster-symbol .sym{width:88px;height:88px;border-radius:22px;display:grid;place-items:center;overflow:hidden;
  box-shadow:0 2px 8px rgba(0,0,0,.2);font-size:40px;font-weight:700}
.namenmuster-symbol .sym img{width:78%;height:78%;object-fit:contain;border-radius:12px}
.namenmuster-plakat{width:170px;height:240px;border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.2);padding:14px;
  box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.namenmuster-plakat .pltitel{font-size:26px;line-height:1.05;word-break:break-word}
.namenmuster-plakat .plstrich{height:4px;width:48px;border-radius:2px}
.namenmuster-plakat .plunter{font-size:11px}
.namenmuster-schild{width:240px;height:110px;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,.18);overflow:hidden;
  display:flex;flex-direction:column;box-sizing:border-box}
.namenmuster-schild .scband{padding:6px 10px;display:flex;align-items:center}
.namenmuster-schild .scband svg{height:20px;width:auto;box-shadow:none}
.namenmuster-schild .scname{flex:1;display:grid;place-items:center;font-size:18px;font-weight:600}
.namenmuster-store{flex:1;min-width:240px;max-width:380px;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.18);
  padding:12px;display:flex;gap:12px;align-items:center;box-sizing:border-box}
.namenmuster-store .sym{width:64px;height:64px;border-radius:16px;flex:none;display:grid;place-items:center;
  overflow:hidden;font-size:28px;font-weight:700}
.namenmuster-store .sym img{width:78%;height:78%;object-fit:contain}
.namenmuster-store .stname{font-weight:700;font-size:15px}
.namenmuster-store .stknopf{margin-left:auto;border-radius:999px;padding:4px 14px;font-size:12px;font-weight:600}
@media (max-width:600px){.namenmuster-store,.namenmuster-schild{width:100%;max-width:none}}

/* Farbige Hervorhebung in Antworten (#94): ==Marker== und !!Warnung!!.
   Nur diese zwei festen Klassen – halbdurchsichtig, damit sie auf jeder
   Blasenfarbe (hell, dunkel, eigene Chatfarbe) lesbar bleiben. */
mark.hl{background:rgba(255,196,0,.38);color:inherit;border-radius:3px;padding:0 2px}
.hl-warn{color:var(--rot);font-weight:600}

/* Eingabefeld größer ziehen (#23): ein Griff an der Oberkante statt des
   Eckzeichens unten rechts. Doppelklick stellt die Höhe zurück. */
.blattfuss,.eingabefeld{position:relative}
.feldgriff{position:absolute;left:0;right:0;top:-5px;height:10px;cursor:ns-resize;z-index:3;touch-action:none}
.feldgriff::after{content:"";position:absolute;left:50%;top:3px;width:36px;height:4px;margin-left:-18px;
  border-radius:2px;background:currentColor;opacity:0;transition:opacity .15s}
.feldgriff:hover::after,.feldgriff.zieht::after{opacity:.25}
#chateingabe{resize:none}

/* ---------- Telefon: Menüleiste, 6 Plätze, Ecke, Vollbild-Blatt (#86, 29.09.2026) ----------
   Die Leiste ist eine abgesetzte Pille aus hellem Glas („Liquid Glass“ wie
   in iOS): durchscheinend im Weiß der übrigen Knöpfe, der Raum dahinter
   verschwimmt, oben eine Lichtkante. Nur am Telefon (bis 700 px) – am
   Rechner bleiben die Knöpfe unten links. Ein offenes Blatt liegt darüber
   (z-index 40 gegen 9) und nimmt den ganzen Schirm. */
.handyleiste{display:none}
@media (max-width:700px){
  body.tisch-an .handyleiste{display:flex}
  .handyleiste{position:absolute;left:10px;right:10px;z-index:9;
    bottom:calc(10px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));
    justify-content:space-around;align-items:stretch;gap:2px;padding:5px;border-radius:999px;
    background:linear-gradient(180deg,rgba(255,253,249,.74),rgba(250,248,244,.56));
    -webkit-backdrop-filter:blur(18px) saturate(1.8);backdrop-filter:blur(18px) saturate(1.8);
    border:1px solid rgba(255,255,255,.72);
    box-shadow:inset 0 1px 1px rgba(255,255,255,.95),inset 0 -1px 1px rgba(255,255,255,.3),
      0 14px 34px rgba(20,12,4,.34),0 2px 6px rgba(20,12,4,.16)}
  /* Lichtkante: ein weicher Schimmer oben, ohne harte Ränder */
  .handyleiste::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:radial-gradient(120% 70% at 50% -10%,rgba(255,255,255,.7),rgba(255,255,255,0) 60%)}
  .hlpunkt{position:relative;flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;
    justify-content:center;gap:3px;border:0;background:transparent;color:#2c2822;padding:7px 0 6px;
    border-radius:999px;cursor:pointer;font-family:inherit;font-size:10px;font-weight:500;line-height:1.1;
    -webkit-tap-highlight-color:transparent;transition:background .18s ease,transform .18s ease}
  .hlpunkt[hidden]{display:none}
  .hlpunkt:active{background:rgba(44,40,34,.1);transform:scale(.93)}
  .hlsymbol{display:block;line-height:0}
  .hlsymbol svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.7;
    stroke-linecap:round;stroke-linejoin:round}
  .hltext{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.03em}
  .hlzahl{position:absolute;top:3px;left:calc(50% + 5px);min-width:17px;height:17px;padding:0 4px;
    box-sizing:border-box;border-radius:999px;background:#d64545;color:#fff;font-size:10.5px;font-weight:700;
    line-height:17px;text-align:center;box-shadow:0 0 0 2px rgba(255,255,255,.9)}
  .hlzahl.nurpunkt{min-width:0;width:9px;height:9px;padding:0;top:6px;left:calc(50% + 8px)}
  .hlzahl[hidden]{display:none}
  .hlpunkt.arbeitet .hlsymbol{animation:hlarbeitet 1.8s ease-in-out infinite}
  @keyframes hlarbeitet{50%{opacity:.45;transform:scale(.9)}}

  /* Was die Leiste übernimmt, fällt unten links weg; ebenso der Weg ins
     Backoffice oben (⌂ → „Einstellungen“), die Uhr (zeigt das Telefon selbst),
     die Unterzeile unter dem Firmennamen und „Du / Dein Platz“. */
  #tischprojekte,#tischmehr,#tischassistent,#tischnachrichten,#tischteam,
  #tischtuer,#tischuhr,.tischplatz,#tisch .markenunter{display:none!important}
  /* Mediathek (#196): unten links nur im Raum („Projektdateien“) – die des
     Büros öffnet am Telefon der Reiter im Menüfenster. */
  .tischwerkzeug .nurrechner{display:none!important}
  .tischwerkzeug{left:14px;bottom:calc(86px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));max-width:none}
  /* Verbrauch (#29) und Webseite (#399): am Telefon kein Symbol – der Reiter im Menü öffnet das Blatt */
  #tischverbrauch,#tischwebstatistik{display:none!important}

  .ablage{left:50%;right:auto;transform:translateX(-50%);bottom:calc(86px + var(--sicher-unten,env(safe-area-inset-bottom,0px)))}
  .tischmarke{top:22px;left:18px;max-width:calc(100vw - 230px)}
  .tischmarke b{font-size:22px;line-height:1.15}
  /* Projektraum: das Schild sitzt unter dem Firmennamen, kurz (nur der Name,
     ohne 🔒); von „⌂ Büro“ bleibt nur „⌂“, getroffen wird es auf 44 × 44 px
     (::after). Der Knopf steht links im Schild, die Fläche hängt an seinem
     linken Rand und reicht nach rechts über den Namen – weit weg von der Ecke
     (.tischecke, z-index 8, 240 px breit), die einen Tipp sonst abfinge. */
  /* Platz für die Ecke: 14 px Rand + höchstens 240 px (.tischecke) + 8 px Luft + 18 px links –
     mit 270 px berührte die Zeitkachel ab 10 h Laufzeit das Schild (#396 N8, −0,9 px) */
  .projektschild{top:60px;left:18px;transform:none;max-width:calc(100vw - 280px);
    padding:3px 11px 3px 4px;font-size:12px;gap:6px}
  .projektschildbuero{padding:2px 8px}
  .projektschildwort{display:none}
  .projektschildbuero::after{content:"";position:absolute;left:0;right:auto;top:50%;width:44px;height:44px;
    transform:translateY(-50%)}

  /* Ecke oben rechts in zwei Reihen: Neu · Feedback · Suche · Abmelden, darunter
     die Zeitkachel. Die beiden Gruppen lösen sich auf (contents), die unsichtbare
     Zeile ::after bricht um. Die Suche steht seit #386 (uc-9) oben: Neben der
     laufenden Zeit rutschte sie in eine dritte Reihe – die Ecke sprang beim Stempeln. */
  .tischecke{top:16px;right:14px;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;
    align-items:center;gap:0 6px;max-width:240px}
  .tischecke .eckknoepfe,.tischecke .eckzeile{display:contents}
  .tischecke::after{content:"";flex-basis:100%;height:0;order:2}
  .tischecke #tischneu,.tischecke #tischfeedback,.tischecke #tischsuche,.tischecke #tischraus{order:1}
  .tischecke #zeitkachel{order:3;margin-top:8px}
  .tischecke .tuer{width:36px;height:36px}
  .tischecke .tuer.tuertext{width:auto;height:36px}

  /* Die 6 Plätze: gleich breite Spalten, damit die Bilder übereinander stehen */
  .tischleute .tischperson{width:120px}
  .tischleute .tischschild{max-width:120px}
  .tischperson.weg .ring{filter:grayscale(.85);opacity:.55}
  .tischperson.weg .tischschild{opacity:.78}
  .tischperson.leer .ring{background:rgba(255,255,255,.08);border:2px dashed rgba(255,255,255,.7);
    padding:0;box-sizing:border-box;box-shadow:none;display:grid;place-items:center}
  .leerplus{font-size:32px;font-weight:300;line-height:1;color:rgba(255,255,255,.92)}
  .tischperson.leer .tischschild{background:rgba(250,248,244,.6)}
  .tischfrage{top:71%}
  .tischteamhinweis{top:76%}

  /* Ein Blatt (Chat mit Agent oder Mensch) nimmt den ganzen Schirm und
     schiebt sich von rechts herein; links oben führt ‹ zurück an den Tisch.
     Zusammenlegen, Groß und „eigenes Fenster“ gibt es hier nicht. */
  .blatt{animation:blattrein .32s cubic-bezier(.22,1,.36,1);background:var(--blattgrund-telefon);border:0;box-shadow:none}
  /* Tastatur offen (#211): das Blatt füllt nur den sichtbaren Teil, die
     Kopfzeile bleibt oben stehen – handyTastaturFolgen() in handy.js */
  .blatt{top:var(--sicht-oben,0px)!important;height:var(--sicht-hoehe,100dvh)!important}
  /* Unter 16 Punkten Schrift vergrößert das iPhone beim Antippen eines Felds
     die ganze Seite und bleibt so (Kopfzeile weg, Feld am Rand abgeschnitten –
     gemeldet am 29.09.2026, #211). Darum am Telefon nie kleiner. */
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
  textarea,select{font-size:16px!important}
  .blattfuss{padding-bottom:calc(11px + var(--sicher-unten,env(safe-area-inset-bottom,0px)))}
  @keyframes blattrein{from{transform:translateX(100%)}to{transform:none}}
  .blatt.schiebtweg{transition:transform .23s cubic-bezier(.4,0,1,1);transform:translateX(100%)!important}
  .blattkopf{padding-top:9px;padding-bottom:9px}
  .blattknoepfe{display:contents}
  .blattwer{flex:1 1 auto}
  .blattkopf button[data-tu="klein"],.blattkopf button[data-tu="gross"],
  .blattkopf button[data-tu="fenster"]{display:none}
  .blattkopf button[data-tu="zu"]{order:-10;position:relative;flex:0 0 auto;width:34px;height:38px;
    margin:0 -6px 0 -8px;padding:0;font-size:0;color:var(--zurueck);border-radius:10px}
  .blattkopf button[data-tu="zu"]::before{content:"";position:absolute;left:14px;top:13px;width:11px;height:11px;
    border-left:2.6px solid currentColor;border-bottom:2.6px solid currentColor;border-radius:1.5px;
    transform:rotate(45deg);transition:transform .15s ease;
    animation:zurueckrein .5s cubic-bezier(.22,1,.36,1) .15s both}
  .blattkopf button[data-tu="zu"]:active::before{transform:translateX(-4px) rotate(45deg)}
  @keyframes zurueckrein{from{opacity:0;transform:translateX(12px) rotate(45deg)}
                         to{opacity:1;transform:rotate(45deg)}}
  /* In einem Vorgang führt ‹ erst zur Übersicht – dann nur dieser eine Pfeil */
  .blattkopf:has(.zurueck) button[data-tu="zu"]{display:none}
  .blattkopf .zurueck{color:var(--zurueck);font-size:30px;padding:0 6px 4px}
  /* #315: ‹ (zu bzw. eine Ebene zurück) und „?“ im Kopf jedes Blatts fingergroß – sichtbar bleiben sie
     schmal, die Trefferfläche (::after) misst 44 × 44 px. ‹ wächst nach rechts (links liegt der Griff
     .griff.l, 8 px); z-index hebt die Fläche über das Bild daneben (nicht anklickbar). „?“ liegt zwischen
     ⋯ (Mappe, Explorer) und dem Griff .griff.r – dort bleiben 41 × 44 px, ohne ⋯ etwas wegzunehmen.
     Gemessen per elementFromPoint bei 375 und 390 px. */
  .blattkopf .zurueck,.blattkopf button[data-tu="zu"],.blattkopf .blatthilfe{position:relative;z-index:1}
  .blattkopf .zurueck::after,.blattkopf button[data-tu="zu"]::after,.blattkopf .blatthilfe::after{content:"";
    position:absolute;top:50%;left:-5px;width:44px;height:44px;transform:translateY(-50%)}
  .blattkopf button[data-tu="zu"]::after{left:3px}
  .blattkopf .blatthilfe::after{left:-10px}
  /* Menüs fingergerecht (#188): jede Zeile mindestens 44 px hoch, 16 px Schrift – gilt
     für ALLE Menüs aus menueZeigen (Rechtsklick und langes Drücken, ⋯, Blattkopf,
     Mappe, Gespräch, Stumm, Raum). Langes Menü quer: rollt statt unten herauszuragen. */
  .tischmenue{min-width:min(240px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow-y:auto}
  .tischmenue button{min-height:44px;font-size:16px;padding:10px 16px}
  /* Menü der Projekträume als Leiste von unten (#188 Stufe 4, rxAlsLeiste): die Fläche
     über allem fängt den Tipp daneben, Punkte in einer Karte, „Abbrechen“ für sich */
  body .tischmenue.leistemenue{inset:0;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;
    min-width:0;max-height:none;overflow:hidden;padding:0 8px calc(8px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));
    background:rgba(20,12,4,.38);border:0;border-radius:0;box-shadow:none;animation:leistegrund .2s ease both}
  .leistekarte,.tischmenue .leisteab{background:var(--papier);color:var(--papiertext);border-radius:14px;
    box-shadow:0 10px 30px rgba(20,12,4,.25);animation:leisterein .28s cubic-bezier(.22,1,.36,1) both}
  .leistekarte{max-height:calc(100dvh - 120px);overflow-y:auto;overscroll-behavior:contain}
  .leistetitel{padding:12px 16px 10px;font-size:13px;color:var(--papierleise);text-align:center;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid rgba(var(--ton),.1)}
  .leistemenue button{min-height:50px;text-align:center;font-size:17px}
  .leistekarte button+button{border-top:1px solid rgba(var(--ton),.1)}
  .tischmenue .leisteab{flex:0 0 auto;font-weight:600}
  @keyframes leisterein{from{transform:translateY(110%)}to{transform:none}}
  @keyframes leistegrund{from{background:rgba(20,12,4,0)}}
}
@media (max-width:700px) and (prefers-reduced-motion:reduce){
  body .tischmenue.leistemenue,.leistekarte,.tischmenue .leisteab{animation:none}
}
@media (max-width:700px) and (prefers-reduced-motion:reduce){
  .blattkopf button[data-tu="zu"]::before,.hlpunkt.arbeitet .hlsymbol{animation:none}
  /* sanfte Fassung (#29): das Blatt blendet ein, statt von rechts hereinzufahren */
  .blatt{animation:vbnurein .25s ease}
}

/* Auswahl der Plätze (team.js, handyWahlOeffnen): ein Blatt von unten */
.handywahl{position:fixed;inset:0;z-index:70;background:rgba(20,14,8,.45);
  animation:hwschleier .22s ease}
.handywahl.geht{animation:hwschleier .2s ease reverse forwards}
@keyframes hwschleier{from{background:rgba(20,14,8,0)}}
.hwblatt{position:absolute;left:0;right:0;bottom:0;margin:0 auto;max-width:560px;max-height:88dvh;
  display:flex;flex-direction:column;background:var(--papier);color:var(--papiertext);border-radius:22px 22px 0 0;
  padding:6px 0 calc(10px + var(--sicher-unten,env(safe-area-inset-bottom,0px)));
  box-shadow:0 -12px 40px rgba(20,12,4,.4);animation:hwrein .3s cubic-bezier(.22,1,.36,1)}
.handywahl.geht .hwblatt{animation:hwraus .2s ease-in forwards}
@keyframes hwrein{from{transform:translateY(100%)}}
@keyframes hwraus{to{transform:translateY(100%)}}
.hwgriff{width:38px;height:5px;border-radius:3px;background:rgba(var(--ton),.18);margin:4px auto 8px}
.hwkopf{padding:0 18px 10px}
.hwkopf b{display:block;font-family:"Iowan Old Style",Georgia,serif;font-style:italic;font-weight:500;font-size:21px}
.hwkopf span{display:block;font-size:12.5px;opacity:.6;margin-top:2px;line-height:1.4}
.hwplaetze{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;padding:4px 18px 12px;
  border-bottom:1px solid rgba(var(--ton),.08)}
.hwplaetze.voll{animation:hwwackeln .35s ease}
@keyframes hwwackeln{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.hwplatz{position:relative;display:block;width:100%;min-width:0;aspect-ratio:1;border:0;padding:0;
  background:transparent;cursor:pointer}
.hwplatz .teamring,.hwplatz .hwfrei{position:absolute;inset:0;width:auto;height:auto;box-sizing:border-box}
.hwplatz i{position:absolute;right:-3px;bottom:-3px;min-width:18px;height:18px;border-radius:9px;
  background:var(--tinte);color:var(--tinte-auf);font:600 11px/18px system-ui,sans-serif;text-align:center;font-style:normal}
.hwfrei{display:grid;place-items:center;border-radius:50%;
  border:2px dashed rgba(var(--ton),.2);color:rgba(var(--ton),.35);font-size:13px;font-weight:600}
.hwliste{flex:1 1 auto;overflow-y:auto;padding:4px 10px 8px;overscroll-behavior:contain}
.hwgruppe{font-size:11px;text-transform:uppercase;letter-spacing:.09em;opacity:.5;padding:12px 8px 6px}
.hwzeile{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:inherit;
  padding:8px;border-radius:12px;cursor:pointer;text-align:left;font-family:inherit}
.hwzeile:active{background:rgba(var(--ton),.06)}
.hwzeile.an{background:rgba(201,139,75,.12)}
.hwzeile .teamring{width:44px;height:44px;box-sizing:border-box}
.hwwer{flex:1;min-width:0}
.hwwer b{display:block;font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hwwer small{display:block;font-size:12px;opacity:.6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hwmarke{flex:0 0 auto;width:26px;height:26px;border-radius:50%;border:2px solid rgba(var(--ton),.2);
  display:grid;place-items:center;font-size:12.5px;font-weight:700}
.hwzeile.an .hwmarke{background:#c98b4b;border-color:#c98b4b;color:#fff}
.hwfuss{display:flex;gap:8px;justify-content:flex-end;padding:10px 16px 0;border-top:1px solid rgba(var(--ton),.08)}
.hwfuss button{border:0;border-radius:999px;padding:10px 18px;font-size:14px;cursor:pointer;font-family:inherit}
.hwleise{background:rgba(var(--ton),.07);color:var(--tinte)}
.hwleise[data-tu="auto"]{margin-right:auto}
.hwfertig{background:var(--tinte);color:var(--tinte-auf);font-weight:600}

/* ---------- Telefon Stufe 2 (#202): Plätze wie am Homescreen, Wischgesten ----------
   handy.js. Ein Platz ist ein .sitz (Lage, Ziehen, „−“), darin die gewohnte
   .tischperson. Bearbeiten = Klasse am body: alles wackelt, „−“ erscheint,
   die Ecke oben weicht „Liste …“ und „Fertig“. */
.sitz{position:absolute;width:120px;touch-action:none;-webkit-user-select:none;user-select:none;
  -webkit-touch-callout:none}
.sitz .tischperson{position:relative;left:auto;top:auto}
.sitzweg,.plaetzefertig{display:none}
/* Die Ebene der Leute lässt Tipps durch (.tischleute: pointer-events:none),
   nur das Bild nimmt sie an – der Knopf „−“ muss es ausdrücklich auch.
   Ohne das fiel der Tipp aufs Bild darunter (gemeldet am 29.09.2026, #202). */
.sitz .sitzweg{pointer-events:auto}
.plaetzefertig{position:absolute;top:16px;right:14px;z-index:9;gap:8px}
.plaetzefertig button{border:0;border-radius:999px;height:36px;padding:0 16px;font-size:14px;font-family:inherit;
  cursor:pointer;color:#2c2822;background:rgba(250,248,244,.78);
  -webkit-backdrop-filter:blur(14px) saturate(1.6);backdrop-filter:blur(14px) saturate(1.6);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.9),0 6px 18px rgba(0,0,0,.25)}
.plaetzefertig .pffertig{font-weight:700}
body.plaetze-bearbeiten .plaetzefertig{display:flex}
body.plaetze-bearbeiten .tischecke,body.plaetze-bearbeiten .tischteamhinweis{display:none}
body.plaetze-bearbeiten .tischfrage{font-size:14.5px;width:88%}
body.plaetze-bearbeiten .sitzweg{display:grid;place-items:center;position:absolute;z-index:3;left:16px;top:-6px;
  width:26px;height:26px;padding:0;border:0;border-radius:50%;font-size:19px;line-height:1;font-weight:600;
  color:#2c2822;background:rgba(235,232,226,.95);box-shadow:0 2px 8px rgba(0,0,0,.35);cursor:pointer}
body.plaetze-bearbeiten .sitz .tischperson{animation:wackeln .26s ease-in-out infinite alternate}
body.plaetze-bearbeiten .sitz:nth-child(2n) .tischperson{animation-delay:-.13s;animation-direction:alternate-reverse}
body.plaetze-bearbeiten .sitz:nth-child(3n) .tischperson{animation-duration:.3s}
body.plaetze-bearbeiten .sitz .tischperson:hover{transform:none}
@keyframes wackeln{from{transform:rotate(-1.6deg)}to{transform:rotate(1.6deg)}}
.sitz.gezogen{z-index:20}
.sitz.gezogen .tischperson{animation:none!important}
.sitz.gezogen .ring{box-shadow:0 18px 40px rgba(0,0,0,.55)}
.sitz.ziel .ring{box-shadow:0 0 0 4px rgba(255,255,255,.85),0 10px 30px rgba(0,0,0,.45)}
@media (prefers-reduced-motion:reduce){ body.plaetze-bearbeiten .sitz .tischperson{animation:none} }

@media (max-width:700px){
  body.tisch-an{overscroll-behavior:none}
  /* Rand-Wischen: das Blatt folgt dem Finger, der Tisch scheint durch */
  .blatt.angekommen{animation:none}
  .blatt.wischt{transition:none;box-shadow:-12px 0 30px rgba(0,0,0,.28)}
  .blatt.federt{transition:transform .25s cubic-bezier(.22,1,.36,1)}
}
/* Nach unten ziehen = neu laden: ein Kreis aus Glas kommt von oben mit */
.ladezeichen{position:fixed;z-index:80;left:50%;top:calc(env(safe-area-inset-top,0px) - 44px);
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;opacity:0;pointer-events:none;
  color:var(--papierleise);background:var(--ladegrund);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  box-shadow:inset 0 1px 1px var(--ladelicht),0 6px 18px rgba(0,0,0,.28);transition:opacity .15s}
.ladezeichen.da{opacity:1}
.ladezeichen svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round}
.ladezeichen.bereit{color:var(--zurueck)}
.ladezeichen.laedt svg{animation:ladedreh .8s linear infinite}
@keyframes ladedreh{to{transform:rotate(360deg)}}

/* Ansicht testen, Android-Handy (#202): Statusleiste mit Uhr und
   Kamera-Loch, unten die Gestenleiste – beides außerhalb der App */
.geraet .statusleiste.android{flex:0 0 32px;display:flex;justify-content:space-between;align-items:center;
  padding:0 18px 0 22px;font:500 14px/1 Roboto,Arial,sans-serif;letter-spacing:0;position:relative}
.geraet .statusleiste.android i{position:absolute;left:50%;top:9px;width:14px;height:14px;margin-left:-7px;
  border-radius:50%;background:#000;box-shadow:0 0 0 1px #222}
.geraet .statusleiste.android .statussymbole{display:flex;gap:5px;align-items:center}
.geraet .gestenleiste{flex:0 0 18px;display:grid;place-items:center;background:#000}
.geraet .gestenleiste::after{content:"";width:108px;height:4px;border-radius:2px;background:rgba(255,255,255,.75)}

/* ---------- Hilfe „?" und Führung (#139, 29.09.2026) ----------
   Die Klappe erbt Form und Bewegung von .feedbackklappe; sie muss auch über
   dem Menüfenster (z-index 95) liegen, weil es dort ebenfalls ein „?" gibt.
   Die Führung liegt über allem: ein „Loch" mit Leuchtrand um die gezeigte
   Stelle, der Rest leicht abgedunkelt (der Schatten des Lochs), daneben die Blase. */
.hilfeklappe{z-index:100;width:min(400px,calc(100vw - 52px))}
.hilfetext p{margin:0 0 8px;font-size:14px;line-height:1.5}
.hilfetext p:last-child{margin-bottom:0}
/* Lange Hilfen (Schritt-für-Schritt im Baukasten, #286) rollen statt aus dem Fenster zu ragen;
   ein Schritt „1. …“ hängt seine Folgezeilen unter den Text, nicht unter die Zahl */
.hilfetext{max-height:min(60vh,520px);overflow:auto}
.hilfetext p.hilfeschritt{padding-left:1.3em;text-indent:-1.3em}
.menuhilfe{margin-left:auto;font-weight:700}
/* „?" in jedem Blatt (#254) – wie im Menüfenster: oben rechts, vor „–".
   Am Mac stehen die drei Punkte links; das „?" bleibt ganz rechts. */
.blattknoepfe .blatthilfe{font-weight:700}
.mac .blattknoepfe .blatthilfe{order:2;margin-left:auto}
.mac .blattkopf:has([data-tu="mappe"]) .blatthilfe{margin-left:0}
.fuehrung{position:fixed;inset:0;z-index:120}
.fuehrungloch{position:fixed;border-radius:14px;pointer-events:none;
  box-shadow:0 0 0 3px rgba(255,214,120,.95),0 0 0 9999px rgba(12,10,8,.55);
  transition:left .25s ease,top .25s ease,width .25s ease,height .25s ease}
.fuehrungloch.ohne{box-shadow:0 0 0 9999px rgba(12,10,8,.55)}
.fuehrungblase{position:fixed;box-sizing:border-box;background:#fbfaf7;color:#26221d;
  border-radius:16px;padding:14px 16px 12px;box-shadow:0 18px 50px rgba(20,12,4,.45);
  border:1px solid rgba(0,0,0,.1);outline:none;white-space:normal;
  transition:left .25s ease,top .25s ease}
.fuehrungkopf{display:flex;justify-content:space-between;align-items:center;
  font-size:12px;opacity:.6;margin-bottom:6px;font-variant-numeric:tabular-nums}
.fuehrungweg{border:0;background:none;color:inherit;font:inherit;text-decoration:underline;
  cursor:pointer;padding:2px 0}
.fuehrungblase b{display:block;font-family:Georgia,"Times New Roman",serif;font-style:italic;
  font-weight:400;font-size:20px;margin-bottom:4px}
.fuehrungblase p{margin:0;font-size:14px;line-height:1.5}
.fuehrungknoepfe{display:flex;justify-content:space-between;gap:8px;margin-top:12px}
.fuehrungknoepfe button{border:0;border-radius:999px;padding:8px 18px;font-size:14px;
  cursor:pointer;font-family:inherit}
.fuehrungzurueck{background:rgba(0,0,0,.07);color:#3b352c}
.fuehrungweiter{background:#3b352c;color:#fbfaf7}
.fuehrungweiter:hover{background:#26221d}
@media (prefers-reduced-motion: reduce){ .fuehrungloch,.fuehrungblase{transition:none} }

/* ---------- Eigene Kontaktkarte (#255, kontaktkarte.js) ----------
   Eine Visitenkarte: oben ein Band in den Farben des Büros (mit dem
   Firmennamen), darüber das Bild, darunter Telefon, Mail, Adresse als Links.
   Farben über die Variablen – im dunklen Menü (Team) dunkel, am Tisch hell. */
.kontaktkarte{margin:20px 0 6px;max-width:380px;background:var(--karte);color:var(--text);border-radius:16px;
  overflow:hidden;border:1px solid rgba(var(--ton),.06);box-shadow:0 12px 32px rgba(20,12,4,.13),0 1px 2px rgba(20,12,4,.06);
  font-style:normal}
.teamgrossinhalt .kontaktkarte{margin:4px 0 18px}
.kkband{height:50px;background:linear-gradient(120deg,var(--dunkel) 0%,var(--dunkel2) 45%,var(--blau) 100%);
  display:flex;align-items:center;justify-content:flex-end;padding:0 16px 8px;color:#fff;
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.kkband span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.92}
.kkkopf{display:flex;gap:14px;align-items:flex-end;padding:0 18px;margin-top:-28px}
.kkbild{width:76px;height:76px;border-radius:50%;overflow:hidden;flex:0 0 auto;background:var(--karte);
  border:3px solid var(--karte);box-shadow:0 3px 10px rgba(0,0,0,.18)}
.kkbild img,.kkbild .initialenbild{width:100%;height:100%;border-radius:50%;object-fit:cover;display:flex;
  align-items:center;justify-content:center;color:#fff;font-size:24px;font-weight:600}
.kkwer{min-width:0;padding-bottom:3px}
.kkwer b{display:block;font-family:"Iowan Old Style",Georgia,serif;font-size:19px;line-height:1.2;overflow-wrap:anywhere}
.kkwer span{display:block;font-size:12.5px;color:var(--leise);margin-top:2px}
.kkzeilen{padding:12px 18px 2px}
.kkzeile{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:8px;align-items:baseline;padding:7px 0;
  border-top:1px solid var(--rand);color:inherit;text-decoration:none;font-size:14px}
.kkzeile:first-child{border-top:0}
.kkzeile i{font-style:normal;color:var(--blau);text-align:center}
.kkzeile .kkwert{overflow-wrap:anywhere}
.kkzeile small{font-size:11.5px;color:var(--leise);white-space:nowrap}
.kkzeile:hover .kkwert{text-decoration:underline}
.kkleer{font-size:13px;color:var(--leise);margin:2px 0 6px}
.kkfuss{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;padding:10px 14px 14px}
.kkknopf{border:0;border-radius:999px;padding:7px 15px;font-size:13px;background:var(--flaeche2);color:var(--text)}
.kkknopf:hover{filter:brightness(.95)}
.kkknopf.kkteilen{background:var(--blau);color:var(--auf-blau);font-weight:600}
.kkknopf:disabled{opacity:.5;cursor:default;filter:none}
/* Fenster „Kontaktkarte teilen“: je Angabe ein Häkchen */
.kkwahl{max-height:50vh;overflow:auto;margin:10px 0 2px}
.kkwahlzeile{display:flex;gap:9px;align-items:flex-start;padding:7px 0;border-bottom:1px solid rgba(var(--ton),.07);
  cursor:pointer;font-size:14px;line-height:1.4}
.kkwahlzeile input{width:auto;margin:3px 0 0;flex:0 0 auto}
.kkwahlzeile i{font-style:normal;opacity:.7}
.kkwahlzeile .leise{overflow-wrap:anywhere}
.kkfenster .blattknopfreihe{flex-wrap:wrap}

/* ---------- Mein Zugang als Blatt (#298, zugang.js) ----------
   Vorlage: Werbespot Sekunde 20–23 (Democlip/compositions/s7-stil.html) –
   Abschnitte direkt auf dem Papier, kleine Beschriftung, darunter Knöpfchen,
   Schalter mit Knauf und Farbpunkte. Übernommene Karten (Mitteilungen,
   Geburtstag, Budget, Assistent) verlieren im Blatt Rahmen und Fläche. */
.blatt.zugangblatt .blattinhalt{background:var(--bg);padding-top:0}
.blatt.zugangblatt .blattscroll{bottom:18px}
.zgkopfbild{display:inline-flex;flex:0 0 auto}
.zgkopfbild .benutzerbild.initialen{border:0;font-weight:600}
.zgreiter{position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;gap:6px;margin:0 -18px 4px;padding:12px 18px 10px;
  background:var(--bg);border-bottom:1px solid var(--rand)}
.zgreiterknopf,.zbreiterknopf,.zbsegment{border:1px solid var(--rand);background:var(--karte);color:var(--text);border-radius:999px;
  padding:6px 13px;font-size:13px;cursor:pointer;white-space:nowrap;flex:none}
.zgreiterknopf.an,.zbreiterknopf.an,.zbsegment.an{background:var(--text);color:var(--karte);border-color:var(--text)}
.zbsegment{padding:4px 12px}
/* Knöpfe im Blatt in der Form des Frontoffice: Pillen wie .zgknopf/.medknopf/.blattknopf
   (#386 uc-10). Die Stempeluhr behält ihre Form (12 px wie die Eckknöpfe, stärkere Regel). */
.zeitblatt .knopf{border-radius:999px}
.zgreiterknopf:focus-visible,.zbreiterknopf:focus-visible{outline:2px solid var(--blau);outline-offset:2px}
.zgabschnitt{padding:14px 0 4px}
.zglabel{font-size:12.5px;font-weight:400;color:var(--beschriftung);margin:0 0 8px}
.zghinweis{font-size:11.5px;color:var(--hinweistext);margin:8px 0 0;line-height:1.45}
.zgmeldung{font-size:13px;margin:6px 0 4px;padding:7px 11px;border-radius:10px;background:var(--meldung-ok-bg);color:var(--meldung-ok-text)}
.zgmeldung.fehler{background:var(--meldung-fehler-bg);color:var(--meldung-fehler-text)}
.zgteil[hidden],.zgmeldung[hidden]{display:none}
.zgchips{display:flex;flex-wrap:wrap;gap:6px;max-width:372px}
.zgchips+.zgchips{margin-top:6px}
.zgchip{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:112px;border:0;
  border-radius:999px;padding:6px 12px;font-size:12.5px;cursor:pointer;background:rgba(var(--ton),.06);
  color:var(--tinte);white-space:nowrap;transition:background .15s,color .15s}
.zgchip:hover{background:rgba(var(--ton),.12)}
.zgchip.an{background:var(--tinte);color:var(--tinte-auf)}
.zgchip.jetzt{box-shadow:inset 0 0 0 1.5px var(--tinte)}
.zgchip small{font-size:10.5px;opacity:.7}
.zgschalter{position:relative;display:flex;max-width:260px;height:36px;padding:3px;border-radius:999px;
  background:rgba(var(--ton),.06);box-sizing:border-box}
.zgknauf{position:absolute;top:3px;left:3px;height:30px;width:calc((100% - 6px) / var(--n,2));border-radius:999px;
  background:var(--knauf);box-shadow:0 1px 4px rgba(0,0,0,.18);transform:translateX(calc(100% * var(--i,0)));
  transition:transform .3s cubic-bezier(.65,0,.35,1)}
.zgschalter button{position:relative;z-index:1;flex:1;min-width:0;border:0;background:transparent;border-radius:999px;
  font-size:13px;color:var(--tinte);cursor:pointer;white-space:nowrap;padding:0 8px}
.zgschalter button.an{font-weight:600}
.zgpunkte{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.zgpunkt{position:relative;width:26px;height:26px;border-radius:50%;border:0;padding:0;cursor:pointer;
  background:var(--f);flex:none}
.zgpunkt.an::after{content:"";position:absolute;left:-4px;top:-4px;width:30px;height:30px;border-radius:50%;
  border:2px solid var(--text);box-sizing:content-box}
.zgpunkt:hover{transform:scale(1.08)}
.zgmehrknopf{border:0;background:transparent;color:var(--leise);font-size:12.5px;cursor:pointer;padding:4px 2px}
.zgmehrknopf:hover{color:var(--text);text-decoration:underline}
.zgmehrknopf.offen{color:var(--text)}
.zgmehr{margin-top:12px;padding:12px 0 2px;border-top:1px dashed var(--rand)}
.zgmehr .zgknopf{margin-top:12px}
.zgfarbwahl{width:34px;height:30px;padding:2px;border-radius:8px;cursor:pointer}
/* „So sieht Ihr Chat aus“ (#24): eigene Blase in der Leitfarbe, die anderen Papier */
.zgvorschau{margin-top:14px;display:flex;flex-direction:column;gap:7px;max-width:440px}
.zgvorschau .zghinweis{margin:0 0 2px}
.zgvzeile{display:flex;align-items:flex-end;gap:7px}
.zgvzeile.ich{justify-content:flex-end}
.zgvkuerzel{width:24px;height:24px;border-radius:50%;flex:none;display:grid;place-items:center;
  font-size:10px;font-weight:700;letter-spacing:.02em}
.zgvblase{max-width:82%;padding:7px 11px;border-radius:13px;font-size:13px;line-height:1.4;
  background:var(--fremde-blase);color:var(--text);border-bottom-left-radius:4px}
.zgvblase.ich{border-bottom-left-radius:13px;border-bottom-right-radius:4px}
.zgvname{display:block;font-size:12px;color:var(--gn,var(--text))}
body[data-blattthema="dunkel"] .blatt .zgvname,
.menuschicht[data-thema="dunkel"] .zgvname{color:var(--gn-d,var(--text))}
.zgzeile{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.zgzeile select{width:auto;max-width:300px;font-size:13px;padding:6px 8px}
.zgzeile .zghinweis{margin:0}
.zgknopf{border:0;border-radius:999px;padding:8px 16px;font-size:13px;cursor:pointer;background:rgba(var(--ton),.07);color:var(--tinte)}
.zgknopf:hover{background:rgba(var(--ton),.12)}
.zgknopf.haupt{background:var(--blau);color:var(--auf-blau);font-weight:600}
.zgform{display:flex;flex-direction:column;gap:10px;max-width:340px}
.zgform .zgknopf{align-self:flex-start}
.zgfeld>span:first-child{display:block;font-size:12.5px;color:var(--beschriftung);margin-bottom:4px}
.zgfeld small{color:var(--leise)}
.zgseiten{display:flex;flex-wrap:wrap;gap:6px}
.zgseite{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--rand);background:var(--karte);
  color:var(--text);border-radius:999px;padding:6px 13px 6px 10px;font-size:13px;cursor:pointer}
.zgseite:hover{border-color:var(--rand2)}
.zgseitesymbol{font-size:14px;line-height:1}
.zgzahl{background:var(--signal,#ff2d55);color:#fff;border-radius:999px;font-size:11px;padding:1px 6px}
.zgende{padding:18px 0 12px}
/* Reiter Konto (#298 Stufe 3): angemeldete Geräte, „Überall abmelden“ mit Rückfrage im Blatt */
.zggeraete{list-style:none;margin:0 0 10px;padding:0;max-width:520px}
.zggeraet{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--rand)}
.zggeraet:first-child{border-top:1px solid var(--rand)}
.zggeraetsymbol{font-size:18px;line-height:1;flex:none;width:22px;text-align:center}
.zggeraettext{flex:1;min-width:0;font-size:13.5px;overflow-wrap:anywhere}
.zggeraettext small{color:var(--leise)}
.zggeraettext .zghinweis{display:block;margin:2px 0 0}
.zggeraet.ich .zggeraettext b{font-weight:700}
.zgknopf.klein{padding:5px 12px;font-size:12.5px;flex:none}
.zgknopf:disabled{opacity:.5;cursor:default}
.zgfrage{max-width:520px;padding:10px 12px;border-radius:12px;background:rgba(var(--ton),.04)}
.zgfrage p{margin:0 0 8px;font-size:13.5px}
.zgfrage .zgknoepfe{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
/* Reiter Tastatur (#403): je Kürzel eine Zeile – Name, Taste, Knöpfe; Farben nur über Variablen */
.tkliste{list-style:none;margin:0 0 10px;padding:0;max-width:560px}
.tkzeile{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;padding:7px 0;border-bottom:1px solid var(--rand)}
.tkzeile:first-child{border-top:1px solid var(--rand)}
.tkzeile.ruht .tkname,.tkzeile.ruht .tktaste,.tkzeile.fehlt .tkname{opacity:.55}
.tkname{flex:1 1 180px;min-width:0;font-size:13.5px;overflow-wrap:anywhere}
.tkname .zghinweis{display:block;margin:1px 0 0}
.tkbild{flex:none;width:24px;height:24px;border-radius:50%;overflow:hidden;display:grid;place-items:center}
.tkbild:empty{display:none}
.tkbild img{width:24px;height:24px;object-fit:cover}
.tktaste{flex:none;min-width:58px;text-align:center;font:600 13px/1.2 var(--schrift,inherit);padding:4px 9px;border-radius:7px;
  border:1px solid var(--rand2);background:var(--karte);color:var(--text);letter-spacing:.04em;
  white-space:nowrap}
.tktaste.leer{border-style:dashed;color:var(--leise);font-weight:400}
button.tktaste.tkaufnahme{cursor:pointer;border-color:var(--tinte);box-shadow:0 0 0 2px rgba(var(--ton),.12);font-weight:400;letter-spacing:0}
.tkknoepfe{display:flex;gap:6px;flex:none}
.tkfrage{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;flex:1 1 100%}
.tkgrund{flex:1 1 100%;font-size:12.5px;padding:6px 10px;border-radius:9px;background:var(--meldung-fehler-bg);color:var(--meldung-fehler-text)}
/* Reiter Profil (#298 Stufe 1b): Formular und der gemeinsame Kontakt-Editor (team.js) im Blatt */
.zgform.zgprofil{max-width:640px}
.zgraster{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px 12px;max-width:640px}
.zgprofil input:not([type=checkbox]),.zgprofil select{font-size:14px;padding:7px 8px}
.zgprofil input[name="zg_mail"]{max-width:360px}
.zgprofil .zglabel{margin-top:12px}
.zghaken{display:flex;gap:8px;align-items:center;font-size:13.5px;margin:2px 0}
.zghaken input{width:auto;margin:0}
.zgprofil .teamkontakt h4{font-size:12.5px;font-weight:400;color:var(--beschriftung);margin:12px 0 2px}
.blatt.zugangblatt .teamkontaktzeile input,.blatt.zugangblatt .teamkontaktzeile select{max-width:none;padding:7px 8px;font-size:14px}
.zgspeichern{margin-top:16px}
.zgspeichern [hidden]{display:none}
.zgdatei{cursor:pointer}
.zgpunktoffen{color:var(--signal,#ff2d55);font-weight:700}
.zgkarte .kontaktkarte{margin:2px 0 4px}
.blatt.zugangblatt .karte{background:transparent;border:0;border-top:1px solid var(--rand);border-radius:0;
  padding:14px 0 6px;margin:0}
.blatt.zugangblatt .zgteil:first-child .karte{border-top:0}
.blatt.zugangblatt .karte h3{font-size:12.5px;font-weight:400;color:var(--beschriftung);margin-bottom:8px}
@media (max-width:700px){
  /* Reiter klebt unter dem Kopf und lässt sich waagrecht wischen */
  .zgreiter{overflow-x:auto;scrollbar-width:none;flex-wrap:nowrap}
  .zgreiter::-webkit-scrollbar{display:none}
  .zgchips{max-width:none}
  .zgchip{min-width:0;flex:1 1 calc(33.33% - 6px)}
  .zgchip:only-child{flex:0 1 auto;padding:6px 16px}
  /* genau vier Chips (hell/dunkel mit „Nach dem Licht“): 2 × 2 statt 3 + 1 breit gezogen */
  .zgchips:has(> .zgchip:nth-child(4):last-child) .zgchip{flex-basis:calc(50% - 3px)}
  .zgschalter{max-width:none}
}

/* ---------- Betrachter (betrachter.js, #265) ----------
   Text, Tabelle, Ton und Video im Blatt der Mediathek. Der Text rollt in sich
   (eigener Rollbereich – darin schiebt der Finger den Inhalt, statt zu blättern). */
.medgross:has(.btext){display:block;min-height:0}
.btext{width:100%;box-sizing:border-box;max-height:min(60vh,520px);overflow:auto;padding:14px 16px;
  background:var(--karte);border-radius:12px;text-align:left;font-size:13.5px;line-height:1.5;color:var(--papiertext);
  overscroll-behavior:contain}
.btext:focus-visible{outline:2px solid var(--gelb-rand);outline-offset:-2px}
.bpre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.bmd{overflow-wrap:anywhere}
.bmd p{margin:0 0 .7em}
.bmd pre{white-space:pre-wrap;background:var(--codegrund);padding:8px 10px;border-radius:8px}
.btabelle{border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.btabelle th,.btabelle td{border:1px solid rgba(var(--ton),.1);padding:4px 8px;text-align:left;vertical-align:top;
  max-width:28em;overflow-wrap:anywhere;white-space:pre-line}
.btabelle th{background:var(--codegrund);position:sticky;top:-14px;font-weight:600;text-transform:none;letter-spacing:normal;font-size:12.5px;color:var(--papiertext)}
.bhinweis{margin:0 0 10px;font-size:12.5px;color:var(--leise2)}
.bmedien{display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px;width:100%;box-sizing:border-box}
.bmedien .bhinweis{margin:0;text-align:center}
.bton audio{width:min(100%,420px)}
@media(max-width:700px){
  .btext{max-height:48vh;padding:12px}
}
/* PDF im Blatt (PDF.js in einem Rahmen, #265 Stufe 2) und „Ganz groß“ über den Schirm */
.medgross:has(.bpdf){display:block}
.bpdf{width:100%}
.bpdf iframe{display:block;width:100%;height:min(60vh,520px);border:0;border-radius:12px;background:#e8e6e1}
.bvoll{position:fixed;inset:0;height:100dvh;z-index:99500;display:flex;flex-direction:column;background:#1c1b19;color:#f2eee8;
  padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) var(--sicher-unten,env(safe-area-inset-bottom,0px)) env(safe-area-inset-left,0px)}
.bvollkopf{display:flex;align-items:center;gap:10px;padding:8px 10px 8px 16px;min-height:52px;flex:0 0 auto}
.bvollname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:14px}
.bvollzu,.bvollteilen{border:0;border-radius:10px;min-width:40px;height:40px;font-size:18px;cursor:pointer;background:rgba(255,255,255,.12);color:inherit}
.bvollteilen{font-size:15px;padding:0 14px}
.bvollzu:hover,.bvollteilen:hover{background:rgba(255,255,255,.22)}
.bvollinhalt{flex:1;min-height:0;display:flex}
.bvollinhalt>*{flex:1;min-height:0}
.bvollinhalt .bpdf iframe{height:100%;border-radius:0}
@media(max-width:700px){
  .bpdf iframe{height:48vh}
}
/* Erste Seite eines Dokuments als Kachel (#265 Stufe 3): oben beginnen, wie ein Blatt */
.medseite{display:block;width:100%;height:100%;background:#fff}
.medseite img,.medtbild .medseite img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
/* Inhalt eines ZIP */
.bzip td:first-child{white-space:pre-wrap}
.bzip .bzahl{text-align:right;white-space:nowrap;color:var(--leise2)}
/* Ganz groß für alle Arten (#265 Stufe 4: Ticket-Anhänge, Fächer, Chat) */
.bvollinhalt .btext{max-height:none;height:100%;border-radius:0}
.bvollinhalt .bmedien{justify-content:center;background:#1c1b19}
.bvollinhalt .bmedien video{max-width:100%;max-height:calc(100dvh - 120px)}
.bvollinhalt .bmedien .bhinweis{color:#d6cfc3}
.bvollinhalt .medgrossbild{display:grid;place-items:center;cursor:default;height:100%}
.bvollinhalt .medgrossbild img{max-width:100%;max-height:100%;object-fit:contain}
.bvollinhalt>.medsymbol{display:grid;place-items:center}
a.bvollzu{display:inline-grid;place-items:center;text-decoration:none}
/* Unterlage im Chat (kein Bild): ein Dateichip, der im Betrachter aufgeht */
.chatdatei{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:9px;font-size:13px;
  background:rgba(0,0,0,.06);color:inherit;text-decoration:none;max-width:100%;overflow-wrap:anywhere}
.chatdatei:hover{background:rgba(0,0,0,.1)}

/* Karte für Strecken (#283 Stufe 3): Kartenbilder, Strecke, Knöpfe, Höhenprofil */
.bstrecke{display:flex;flex-direction:column;gap:8px;width:100%}
.bstreckezahlen{margin:0;font-size:13.5px;font-weight:600}
.bkartefeld{position:relative;height:min(58vh,440px);min-height:240px;overflow:hidden;border-radius:10px;
  background:var(--kartengrund);border:1px solid rgba(var(--ton),.12);touch-action:none;cursor:grab;outline-offset:2px}
.bvollinhalt .bkartefeld{height:calc(100vh - 230px)}
.bvollinhalt .bstrecke{padding:0 14px 10px;box-sizing:border-box}
.bkartefeld:active{cursor:grabbing}
.bkarteebene,.bkartekacheln{position:absolute;inset:0}
.bkartekacheln img{position:absolute;width:256px;height:256px;max-width:none;user-select:none;-webkit-user-drag:none}
.bkartelinie{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
.bkartepfad{fill:none;stroke:#d2462d;stroke-width:4;stroke-linejoin:round;stroke-linecap:round;
  filter:drop-shadow(0 0 1.5px rgba(255,255,255,.9))}
.bkartestart{fill:#2f8f4e;stroke:#fff;stroke-width:2}
.bkarteziel{fill:#222;stroke:#fff;stroke-width:2}
.bkarteknoepfe{position:absolute;right:8px;top:8px;display:flex;flex-direction:column;gap:4px}
.bkarteknoepfe button{width:34px;height:34px;border-radius:8px;border:1px solid rgba(0,0,0,.2);
  background:rgba(255,255,255,.92);font-size:18px;line-height:1;cursor:pointer;color:#222}
.bkartequelle{position:absolute;right:0;bottom:0;padding:2px 6px;font-size:11px;
  background:rgba(255,255,255,.85);color:#333;border-top-left-radius:6px;text-decoration:none}
.bprofil{margin:0}
.bprofil svg{width:100%;height:90px;display:block;background:rgba(var(--ton),.03);border-radius:8px}
.bprofilflaeche{fill:rgba(210,70,45,.18)}
.bprofillinie{fill:none;stroke:#d2462d;stroke-width:2;vector-effect:non-scaling-stroke}
.bprofil figcaption{font-size:12px;opacity:.7;margin-top:3px}

/* Bereich von Hand markieren (#285, markieren.js) */
.markierinhalt{max-width:min(1100px,100%);width:100%;max-height:94vh;overflow:auto;box-sizing:border-box}
.markierleiste{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.markierleiste input[type=text]{flex:1 1 160px;min-width:0;padding:7px 9px;border-radius:8px;
  border:1px solid rgba(127,127,127,.45);background:transparent;color:inherit;font-size:14px}
.markierleiste button,.markierleiste select{padding:6px 10px;border-radius:8px;cursor:pointer;
  border:1px solid rgba(127,127,127,.4);background:transparent;color:inherit;font-size:13px}
.markierleiste button.aktiv{background:var(--haupt,#3f6fe0);border-color:transparent;color:#fff}
.markierleiste label{display:flex;gap:6px;align-items:center;font-size:13px}
.markierleiste label[hidden]{display:none}
.markierwahl{display:flex;gap:4px;flex-wrap:wrap}
.markierbuehne{position:relative;line-height:0;border-radius:8px;overflow:hidden;background:rgba(127,127,127,.12)}
.markierbuehne img{width:100%;height:auto;display:block;user-select:none;-webkit-user-select:none}
.markierbuehne canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.5;touch-action:none}
/* Render-Passes im Grundlagen-Fenster (#290, markieren.js) */
.glpass img{width:64px;height:40px;object-fit:cover;border-radius:6px;flex-shrink:0;background:rgba(127,127,127,.15)}
.glpass select{padding:4px 6px;border-radius:8px;border:1px solid rgba(127,127,127,.4);background:transparent;color:inherit;font-size:13px}
.passdatei{display:inline-flex;gap:6px;align-items:center;padding:5px 10px;border-radius:8px;cursor:pointer;
  border:1px solid rgba(127,127,127,.4);font-size:13px}

/* ---------- Textbausteine (#1, textbausteine.js) ----------
   Am Eingabefeld: Knopf 📋 neben der Büroklammer, die Liste darüber teilt sich
   ihr Aussehen mit der „@“-Liste (.nennliste). Das Blatt „Textbausteine“:
   Karten auf dem Papier wie in Mein Zugang. Farben nur über Variablen –
   hell und dunkel (lokal_dunkle_blaetter.py). */
.blattbausteine{flex:0 0 auto;border:0;background:transparent;cursor:pointer;font-size:16px;opacity:.55;
  padding:7px 2px;line-height:1;user-select:none;color:inherit}
.blattbausteine:hover,.blattbausteine[aria-expanded="true"]{opacity:1}
.blattbausteine[hidden]{display:none}
/* Spracheingabe (#354, sprache.js): 🎤 neben 📋; während der Aufnahme die Laufzeit
   in Rot (Variable), beim Umschreiben „…“. Farben nur über Variablen. */
.blattsprache{flex:0 0 auto;border:0;background:transparent;cursor:pointer;font-size:16px;opacity:.55;
  padding:7px 3px;line-height:1;user-select:none;-webkit-user-select:none;color:inherit;white-space:nowrap;
  font-variant-numeric:tabular-nums;touch-action:manipulation}
.blattsprache:hover{opacity:1}
.blattsprache .sprachsymbol{display:block}            /* Strich-Mikrofon, currentColor (#374) */
.blattsprache.nimmt{opacity:1;color:var(--rot);font-size:13px;font-weight:600}
.blattsprache.schreibt{opacity:.8;cursor:progress}
.blattsprache[hidden]{display:none}
.tbliste{max-height:260px}
.tbeintrag{align-items:baseline}
.tbeintrag b{flex:none;font-weight:600}
.tbvorschau{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--leise);font-size:13px}
.tbleer{cursor:default;color:var(--leise)}
.tbleer:hover{background:transparent}
.tbverwalten{justify-content:flex-end;color:var(--blau-text);font-size:13px}
/* Stufe 2: Herkunft je Zeile – eigene hervorgehoben, Büro zurückhaltend */
.tbquelle{flex:none;font-size:11px;line-height:1.5;color:var(--leise);border:1px solid var(--rand);
  border-radius:999px;padding:0 7px}
.tbquelle.eigen{color:var(--blau-text);border-color:var(--blau)}
/* Befehle (#323): Zeichen in der Liste und die Zeile zum Bestätigen über dem Feld */
.tbquelle.befehl{color:var(--gruen-text);border-color:var(--gruen-rand);background:var(--gruen-weich2)}
.tbfrage{display:none;position:absolute;bottom:100%;left:0;right:0;margin-bottom:6px;z-index:21;
  align-items:center;gap:10px;flex-wrap:wrap;padding:9px 12px;border-radius:10px;font-size:14px;
  background:var(--karte);color:var(--text);border:1px solid var(--blau);box-shadow:0 8px 26px rgba(15,25,45,.18)}
.tbfrage.offen{display:flex}
.tbfrage.fehler{background:var(--meldung-fehler-bg);color:var(--meldung-fehler-text);border-color:var(--rot-rand)}
.tbfrage.gut{background:var(--meldung-ok-bg);color:var(--meldung-ok-text);border-color:var(--gruen-rand)}
.tbfrage.hinweis{border-color:var(--rand)}
.tbfragetext{flex:1 1 200px;min-width:0;overflow-wrap:anywhere}
.tbfrageknoepfe{display:flex;gap:6px;flex:none;margin-left:auto}
.tbfragezu{border:0;background:transparent;color:inherit;cursor:pointer;font-size:14px;opacity:.6;padding:2px 4px}
.tbfragezu:hover{opacity:1}
.tbreserviert{color:var(--rot-text)}
.blatt.tbblatt .blattinhalt{background:var(--bg)}
.tbblattinhalt{max-width:760px;padding:4px 0 18px}
/* Reiter „Meine“ · „Büro“ (Stufe 2) – wie die Reiter in Mein Zugang */
.tbreiter{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 2px}
.tbreiterknopf{border:1px solid var(--rand);background:var(--karte);color:var(--text);border-radius:999px;
  padding:6px 13px;font-size:13px;cursor:pointer;white-space:nowrap;flex:none}
.tbreiterknopf.an{background:var(--text);color:var(--karte);border-color:var(--text)}
.tbreiterknopf:focus-visible{outline:2px solid var(--blau);outline-offset:2px}
.tbhinweis{font-size:12.5px;color:var(--hinweistext);line-height:1.5;margin:10px 0 12px}
.tbknopf{border:0;border-radius:999px;padding:8px 16px;font-size:13px;cursor:pointer;
  background:rgba(var(--ton),.07);color:var(--tinte)}
.tbknopf:hover{background:rgba(var(--ton),.12)}
.tbknopf.haupt{background:var(--blau);color:var(--auf-blau);font-weight:600}
.tbknopf.klein{padding:5px 12px;font-size:12.5px}
.tbknopf.tbgefahr{background:var(--rot);color:var(--auf-blau)}
.tbknopf:disabled{opacity:.5;cursor:default}
.tbmeldung{font-size:13px;margin:6px 0 10px;padding:7px 11px;border-radius:10px;
  background:var(--meldung-ok-bg);color:var(--meldung-ok-text)}
.tbmeldung.fehler{background:var(--meldung-fehler-bg);color:var(--meldung-fehler-text)}
.tbmeldung[hidden]{display:none}
.tbformular{display:flex;flex-direction:column;gap:10px;margin:4px 0 16px;padding:12px 14px;border-radius:12px;
  background:var(--karte);border:1px solid var(--blau)}
.tbformular h4{margin:0;font-size:14px}
.tbfeld>span:first-child{display:block;font-size:12.5px;color:var(--beschriftung);margin-bottom:4px}
.tbkuerzelfeld{display:flex;align-items:center;gap:4px;max-width:300px}
.tbkuerzelfeld input{flex:1;min-width:0}
.tbschraeg{font-weight:600;color:var(--leise)}
.tbfeld textarea{width:100%;min-height:120px;resize:vertical;font-family:inherit;box-sizing:border-box}
.tbformknoepfe{display:flex;flex-wrap:wrap;gap:8px}
.tbkarte{padding:12px 14px;margin:0 0 10px;border-radius:12px;background:var(--karte);border:1px solid var(--rand)}
.tbkarte.tbinarbeit{border-color:var(--blau)}
.tbkartekopf{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* Das Kürzel bricht nicht mitten im Wort – lieber rutschen die Knöpfe in die nächste Zeile (Telefon) */
.tbkuerzel{flex:1 0 auto;max-width:100%;font-size:14.5px;overflow-wrap:anywhere}
.tbknoepfe{display:flex;gap:6px;flex:none}
.tbtext{margin-top:8px;font-size:13.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.tbtext.zu{max-height:9em;overflow:hidden;-webkit-mask-image:linear-gradient(black 70%,transparent);
  mask-image:linear-gradient(black 70%,transparent)}
.tbmehr{border:0;background:transparent;color:var(--leise);font-size:12.5px;cursor:pointer;padding:4px 0}
.tbmehr:hover{color:var(--text);text-decoration:underline}
.tbwann{margin-top:6px;font-size:11.5px;color:var(--leise)}
.tbrueckfrage{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;padding:8px 10px;
  border-radius:10px;background:rgba(var(--ton),.04);font-size:13px}
.tbnurlesen{font-size:12.5px;margin-top:6px}
.tbkopfsymbol{background:var(--ring-ruht)!important;font-size:17px!important;font-weight:400!important}

/* ---------- Verbrauch: Blatt am Tisch (#29, verbrauch.js) ----------
   Alle Regeln mit .vbblatt davor (das Blatt ist ein .blatt – hell/dunkel tauschen nur
   die Variablen). Farben nur über Variablen, Hauch und Linien über rgba(var(--ton),…).
   Modelle in --diagramm-1 … 5, „Andere“/Sammelposten --diagramm-rest, Websuche
   --diagramm-suche; Reihen mit nur einer Farbe in Messing (--blau im Blatt).
   Schrift ist nie farbig – Farbe tragen nur Punkt, Strich und Balken.
   .vbab und --i/--j bereiten den Auftritt vor (Stufe C hängt die Bewegung ein). */
/* Kopfzeichen: Kreis über .blattkopf .initialenbild wie in allen Blättern (#386 uc-2) */
.blattkopf .vbkopfsymbol{background:var(--warm);color:var(--auf-blau)}
.blattkopf .vbkopfsymbol svg{width:20px;height:20px}
.vbkopfsymbol rect{fill:currentColor}
.vbblatt .vbneukopf{display:none}
.vbblatt .vbinhalt{container:vbinhalt / inline-size}
.vbblatt .blattinhalt{padding:14px 18px 28px}
.vbblatt .vbmeldung{font-size:13px;color:var(--rot-text);background:var(--rot-weich2);border-radius:10px;
  padding:9px 12px;margin:0 0 12px}
.vbblatt .vbinhalt [hidden]{display:none!important}

/* Filterzeile: eine Zeile über allem, was sie betrifft */
.vbblatt .vbfilter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.vbblatt .vbchips{display:flex;gap:4px;padding:3px;border-radius:999px;background:rgba(var(--ton),.05)}
.vbblatt .vbchips button{border:0;background:transparent;color:var(--text2);border-radius:999px;
  padding:5px 11px;font-size:12.5px;cursor:pointer;font-family:inherit}
.vbblatt .vbchips button[aria-pressed="true"]{background:var(--tinte);color:var(--tinte-auf)}
.vbblatt .vbfilter select,.vbblatt .vbsortwahl select{appearance:none;-webkit-appearance:none;
  border:1px solid rgba(var(--ton),.12);background-color:var(--feld);color:var(--text);border-radius:999px;
  padding:6px 28px 6px 12px;font-size:12.5px;cursor:pointer;max-width:220px;font-family:inherit;
  background-image:linear-gradient(45deg,transparent 50%,var(--leise) 50%),linear-gradient(135deg,var(--leise) 50%,transparent 50%);
  background-position:calc(100% - 15px) 50%,calc(100% - 10px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.vbblatt .vbrechts{margin-left:auto;font-size:11.5px;color:var(--leise);display:flex;align-items:center;gap:6px}
.vbblatt .vbrechts button{border:0;background:transparent;color:var(--leise);cursor:pointer;font-size:14px;
  border-radius:6px;padding:2px 6px}
@media (hover:hover){
  .vbblatt .vbchips button:not([aria-pressed="true"]):hover{background:rgba(var(--ton),.06)}
  .vbblatt .vbrechts button:hover{background:rgba(var(--ton),.07);color:var(--text)}
}
/* Freier Zeitraum (#339): Von/Bis unter der Filterzeile – eigene Zeile, auch am
   Telefon ganz sichtbar (die Filterzeile wischt dort seitwärts). 16 px in den
   Feldern: kleiner zoomt Safari am iPhone beim Antippen hinein. */
.vbblatt .vbfrei{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:-6px 0 14px;
  padding:10px 12px;border-radius:12px;background:rgba(var(--ton),.04)}
.vbblatt .vbfrei label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text2)}
.vbblatt .vbfrei input{border:1px solid rgba(var(--ton),.12);background:var(--feld);color:var(--text);
  border-radius:8px;padding:5px 8px;font-size:16px;font-family:inherit;min-height:34px}
.vbblatt .vbfrei button{border:0;background:var(--tinte);color:var(--tinte-auf);border-radius:999px;
  padding:7px 14px;font-size:12.5px;cursor:pointer;font-family:inherit}
.vbblatt .vbfreihinweis{font-size:12.5px;color:var(--rot-text)}
.vbblatt .vbfreihinweis:empty{display:none}
.vbblatt :where(.vbchips button,.vbfilter select,.vbsortwahl select,.vbrechts button,.vbleiseknopf,.vblchip,.vbmehr button,.vbwz.mehrwz,.vbfrei input,.vbfrei button):focus-visible{
  outline:2px solid var(--wahl);outline-offset:1px}

/* Kacheln */
.vbblatt .vbkacheln{display:grid;grid-template-columns:2fr repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}
.vbblatt .vbkachel{position:relative;background:var(--karte);border:1px solid rgba(var(--ton),.08);border-radius:12px;
  padding:12px 14px;min-width:0;outline:none}
.vbblatt .vbkachel:focus-visible{box-shadow:0 0 0 2px var(--wahl)}
.vbblatt .vbwas{font-size:12px;color:var(--leise);display:flex;align-items:center;gap:6px}
.vbblatt .vbwert{font-size:26px;font-weight:650;letter-spacing:-.01em;margin-top:4px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.vbblatt .vbwert.klein{font-size:15px;margin-top:8px;display:flex;align-items:center;gap:6px}
.vbblatt .vbwert.klein span[title]{min-width:0;overflow:hidden;text-overflow:ellipsis}
.vbblatt .vbkachel.gross{display:grid;grid-template-columns:minmax(0,1fr) minmax(96px,42%);gap:4px 14px;align-items:end}
.vbblatt .vbkachel.gross .vbwert{font-size:40px;line-height:1.05}
.vbblatt .vblinks{min-width:0}
.vbblatt .vbunter{font-size:11.5px;color:var(--leise);margin-top:3px;line-height:1.35;overflow-wrap:anywhere}
.vbblatt .vbunter b{color:var(--text2);font-weight:600}
.vbblatt .vbunter:empty{display:none}
.vbblatt .vbfunkefeld{position:relative;min-width:0}
.vbblatt .vbfunke{width:100%;height:58px;display:block}
.vbblatt .vbfunke path.l{fill:none;stroke:var(--leise2);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}
.vbblatt .vbfunke path.f{fill:var(--blau);opacity:.08}
.vbblatt .vbfunkepunkt{position:absolute;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;
  background:var(--blau);box-shadow:0 0 0 2px var(--karte)}
.vbblatt .vbfunkefeld small{display:block;text-align:right;font-size:10.5px;color:var(--leise2);margin-top:1px;white-space:nowrap}
.vbblatt .vbmesser{height:8px;border-radius:4px;background:var(--blau-weich);margin-top:9px;overflow:hidden}
.vbblatt .vbmesser i{display:block;height:100%;border-radius:4px;background:var(--blau);width:0}
.vbblatt .vbmesser.knapp i{background:var(--gelb)}
.vbblatt .vbmesser.leer i{background:var(--rot)}
/* Aufladungen unter der Guthaben-Kachel im Kundenbüro (#260 Stufe 3a) */
.vbblatt .vbaufladungen{margin-top:6px;font-size:12px}
.vbblatt .vbaufladungen summary{cursor:pointer;color:var(--leise2)}
.vbblatt .vbaufladungen ul{list-style:none;margin:6px 0 0;padding:0;max-height:150px;overflow-y:auto}
.vbblatt .vbaufladungen li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;padding:2px 0;border-top:1px solid var(--rand)}
.vbblatt .vbaufladungen li b{white-space:nowrap}
.vbblatt .vbaufladungen p{margin:6px 0 0;font-size:11px}
.vbblatt .vbpunkt{width:9px;height:9px;border-radius:50%;flex:0 0 auto;display:inline-block}
.vbblatt .vbgesicht{width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;object-fit:cover;
  background:var(--gf,var(--diagramm-rest));color:var(--gesicht-schrift);font-size:10px;font-weight:700;flex:0 0 auto;
  box-shadow:0 0 0 2px var(--gf,var(--karte))}
.vbblatt img.vbgesicht{background:var(--karte)}
.vbblatt .vbgesicht.grau{background:var(--diagramm-rest);color:var(--text);font-size:12px;line-height:1;box-shadow:none}
.vbblatt .vbgratis,.vbblatt .vbfrei{font-size:10.5px;padding:1px 6px;border-radius:999px;margin-left:4px;white-space:nowrap}
.vbblatt .vbgratis{background:var(--gruen-weich);color:var(--gruen-text)}
.vbblatt .vbfrei{background:var(--flaeche2);color:var(--leise)}

/* Raster der Diagramme */
.vbblatt .vbraster{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.vbblatt .vbkarte{background:var(--karte);border:1px solid rgba(var(--ton),.08);border-radius:12px;padding:13px 15px 14px;min-width:0}
.vbblatt .vbkarte.breit{grid-column:1 / -1}
.vbblatt .vbkarte h3{margin:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--leise);font-weight:650}
.vbblatt .vbkopf{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-bottom:10px;min-height:24px}
.vbblatt .vbkopf .vbneben{margin-left:auto;display:flex;gap:6px;align-items:center}
.vbblatt .vbkopf small{font-size:11px;color:var(--leise2)}
.vbblatt .vbfuss{font-size:11px;color:var(--leise2);margin-top:9px;line-height:1.45}
.vbblatt .vblegende{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;color:var(--text2);margin:0 0 9px}
.vbblatt .vblegende span{display:inline-flex;align-items:center;gap:5px}
.vbblatt .vblegende i{width:10px;height:10px;border-radius:3px;display:inline-block}
.vbblatt .vblegende.waehlbar{gap:4px}
.vbblatt .vblchip{border:0;background:transparent;color:var(--text2);font:inherit;font-size:11.5px;display:inline-flex;
  align-items:center;gap:6px;padding:3px 9px 3px 7px;border-radius:999px;cursor:pointer}
.vbblatt .vblchip i.strich{width:14px;height:2px;border-radius:2px;background:var(--diagramm-rest)}
.vbblatt .vblchip.zeigt{color:var(--text)}
.vbblatt .vblchip.zeigt i.strich{background:var(--blau);height:3px}
.vbblatt .vblchip[aria-pressed="true"]{background:var(--blau-weich);color:var(--text)}

/* Liegende Balken: Name | Spur | Wert; höchstens 12 px dick, rundes Ende rechts */
.vbblatt .vbliste{display:flex;flex-direction:column;gap:3px}
.vbblatt .vbreihe{display:grid;grid-template-columns:minmax(90px,34%) 1fr auto;align-items:center;gap:10px;
  padding:4px 6px;margin:0 -6px;border-radius:8px;outline:none;cursor:default}
.vbblatt .vbreihe .vbname{display:flex;align-items:center;gap:7px;min-width:0;font-size:12.5px}
.vbblatt .vbreihe .vbname em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vbblatt .vbreihe .vbname small{color:var(--leise2);font-size:11px;white-space:nowrap}
.vbblatt .vbspur{height:12px;position:relative}
.vbblatt .vbspur i{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:0 4px 4px 0;background:var(--blau);
  transform-origin:left center}
.vbblatt .vbspur.gestapelt{display:flex;gap:2px;transform-origin:left center}
.vbblatt .vbspur.gestapelt b{display:block;height:100%;flex:0 1 0;min-width:0;outline:none}
.vbblatt .vbspur.gestapelt b.letzt{border-radius:0 4px 4px 0}
.vbblatt .vbspur.gestapelt b:focus-visible{box-shadow:0 0 0 2px var(--wahl)}
.vbblatt .vbreihe .vbzahl{font-size:12px;color:var(--text2);font-variant-numeric:tabular-nums;white-space:nowrap;
  min-width:64px;text-align:right}
.vbblatt .vbreihe:focus-visible{box-shadow:0 0 0 2px var(--wahl)}
@media (hover:hover){ .vbblatt .vbreihe:hover{background:rgba(var(--ton),.035)} }

/* Ring der Modelle – Stücke immer in Platz-Reihenfolge (1–5, Andere, Websuche) */
.vbblatt .vbringfeld{display:grid;grid-template-columns:180px 1fr;gap:16px;align-items:center}
.vbblatt .vbring{width:180px;height:180px;display:block;overflow:visible}
.vbblatt .vbring circle.spurkreis{fill:none;stroke:rgba(var(--ton),.05);stroke-width:18}
.vbblatt .vbring circle.stueck{fill:none;stroke-width:18;cursor:pointer;outline:none}
.vbblatt .vbring circle.stueck:focus-visible{stroke-width:24}
.vbblatt .vbring text{fill:var(--text);text-anchor:middle;font-family:var(--schrift)}
.vbblatt .vbring .mitte1{font-size:20px;font-weight:650}
.vbblatt .vbring .mitte2{font-size:10.5px;fill:var(--leise)}
.vbblatt .vbringliste .vbreihe{grid-template-columns:minmax(90px,40%) 1fr auto auto}
.vbblatt .vbringliste .vbanteil{font-size:11.5px;color:var(--leise);font-variant-numeric:tabular-nums;min-width:38px;text-align:right}

/* Verlauf: Fläche und Linie, Fadenkreuz */
.vbblatt .vbverlauf{position:relative;height:230px;border-radius:8px;outline:none}
.vbblatt .vbverlauf:focus-visible{box-shadow:0 0 0 2px var(--wahl)}
.vbblatt .vbverlauf svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.vbblatt .vbverlauf .vbleer{position:absolute;inset:0;display:grid;place-items:center;padding:0}
.vbblatt .vbverlauf .gitter line{stroke:rgba(var(--ton),.07);stroke-width:1}
.vbblatt .vbverlauf .gitter line.null{stroke:rgba(var(--ton),.16)}
.vbblatt .vbverlauf .ytext,.vbblatt .vbverlauf .xtext{font-size:10.5px;fill:var(--leise2);font-variant-numeric:tabular-nums}
.vbblatt .vbverlauf .flaeche{fill:var(--blau);opacity:.12}
.vbblatt .vbverlauf .linie{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.vbblatt .vbverlauf .linie.gesamt{stroke:var(--blau)}
.vbblatt .vbverlauf .linie.agent{stroke:var(--diagramm-rest);stroke-width:1.5;opacity:.55}
.vbblatt .vbverlauf .linie.heraus{stroke:var(--blau);stroke-width:2.5}
.vbblatt .vbverlauf .endname{font-size:11px;font-weight:650;fill:var(--text);paint-order:stroke;stroke:var(--karte);
  stroke-width:3px;stroke-linejoin:round}
.vbblatt .vbverlauf .faden{stroke:rgba(var(--ton),.16);stroke-width:1;opacity:0}
.vbblatt .vbverlauf .faden.an{opacity:1}
.vbblatt .vbverlauf .tupf{fill:var(--blau);stroke:var(--karte);stroke-width:2;opacity:0}
.vbblatt .vbverlauf .tupf.an{opacity:1}
.vbblatt .vbverlauf .offen{fill:var(--karte);stroke:var(--blau);stroke-width:2}
.vbblatt .vbleiseknopf{border:0;background:transparent;color:var(--leise);font:inherit;font-size:11.5px;
  padding:3px 8px;margin:8px 0 0 -8px;border-radius:999px;cursor:pointer}
@media (hover:hover){ .vbblatt .vbleiseknopf:hover{background:rgba(var(--ton),.06);color:var(--text)} }
.vbblatt .vbzahlentab{max-height:280px;overflow:auto;margin-top:6px}
.vbblatt .vbzahlentab table{width:100%;border-collapse:collapse;font-size:12px}
.vbblatt .vbzahlentab caption{text-align:left;font-size:11px;color:var(--leise2);padding:0 0 6px}
.vbblatt .vbzahlentab th{position:sticky;top:0;background:var(--tabellenkopf);color:var(--leise);font-weight:600;font-size:11px;
  text-align:left;padding:6px 8px;border-bottom:1px solid var(--rand);white-space:nowrap}
.vbblatt .vbzahlentab tbody th{position:static;background:none;color:var(--text);font-weight:400;font-size:12px;
  border-bottom:1px solid var(--papierlinie)}
.vbblatt .vbzahlentab td{padding:5px 8px;border-bottom:1px solid var(--papierlinie);white-space:nowrap}
.vbblatt .vbzahlentab .zahl{text-align:right;font-variant-numeric:tabular-nums}

/* Einzelne Anfragen */
.vbblatt .vbtabwerk{display:flex;gap:8px;align-items:center;margin-bottom:9px}
.vbblatt .vbtabwerk input{flex:1;min-width:0;border:1px solid rgba(var(--ton),.12);background:var(--feld);color:var(--text);
  border-radius:999px;padding:7px 13px;font-size:13px;outline:none;font-family:inherit}
.vbblatt .vbtabwerk input:focus{border-color:var(--wahl);box-shadow:0 0 0 3px var(--wahl-hauch)}
.vbblatt .vbcsv{flex:none;border:1px solid rgba(var(--ton),.12);background:var(--feld);color:var(--text);font:inherit;
  font-size:12px;padding:6px 11px;border-radius:999px;cursor:pointer;white-space:nowrap}
.vbblatt .vbcsv:disabled{opacity:.55;cursor:progress}
.vbblatt .vbcsv:focus-visible{outline:2px solid var(--wahl);outline-offset:2px}
@media (hover:hover){ .vbblatt .vbcsv:hover{background:rgba(var(--ton),.06)} }
.vbblatt .vbsortwahl{display:none;align-items:center;gap:8px;font-size:12px;color:var(--leise);margin:0 0 8px}
.vbblatt .vbtabhuelle{overflow-x:auto}
.vbblatt table.vbanfragen{width:100%;border-collapse:collapse;font-size:12.5px;min-width:620px}
.vbblatt .vbanfragen th{position:sticky;top:0;background:var(--tabellenkopf);text-align:left;font-weight:600;color:var(--leise);
  font-size:11px;letter-spacing:.03em;padding:0;border-bottom:1px solid var(--rand);white-space:nowrap}
.vbblatt .vbanfragen th button{all:unset;cursor:pointer;display:block;padding:8px}
.vbblatt .vbanfragen th button:focus-visible{outline:2px solid var(--wahl);outline-offset:-2px;border-radius:4px}
.vbblatt .vbanfragen th.zahl,.vbblatt .vbanfragen td.zahl{text-align:right}
.vbblatt .vbanfragen th[aria-sort="ascending"] button::after{content:" ▲";font-size:9px}
.vbblatt .vbanfragen th[aria-sort="descending"] button::after{content:" ▼";font-size:9px}
.vbblatt .vbanfragen td{padding:7px 8px;border-bottom:1px solid var(--papierlinie);white-space:nowrap;vertical-align:middle}
.vbblatt .vbanfragen td[data-k="werkzeuge"]{white-space:normal;max-width:240px}
.vbblatt .vbanfragen td[data-k="modell"]{max-width:220px;overflow:hidden;text-overflow:ellipsis}
.vbblatt .vbanfragen td.zahl{font-variant-numeric:tabular-nums}
.vbblatt .vbmitbild{display:inline-flex;align-items:center;gap:6px}
.vbblatt .vbleise{color:var(--leise)}
.vbblatt .vbwz{display:inline-block;font-size:11px;padding:1px 6px;border-radius:999px;background:var(--flaeche2);
  color:var(--text2);margin:1px 3px 1px 0}
.vbblatt .vbwz.mehrwz{border:0;font:inherit;font-size:11px;cursor:pointer;color:var(--text)}
.vbblatt .vbfehlermarke{color:var(--rot-text);font-weight:600}
.vbblatt .vbmehr{display:flex;justify-content:center;margin-top:10px}
.vbblatt .vbmehr button{border:1px solid rgba(var(--ton),.12);background:var(--feld);color:var(--text);border-radius:999px;
  padding:6px 14px;font-size:12.5px;cursor:pointer;font-family:inherit}
.vbblatt .vbleer{font-size:13px;color:var(--leise);padding:18px 0;text-align:center}
/* Zeile mit Sprung in den Chat (#335): die Zeit ist der Knopf, die ganze Zeile klickbar */
.vbblatt .vbanfragen tr.vbspringbar{cursor:pointer}
.vbblatt .vbanfragen .vbsprung{all:unset;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.vbblatt .vbanfragen .vbsprung:focus-visible{outline:2px solid var(--wahl);outline-offset:2px;border-radius:3px}
@media (hover:hover){
  .vbblatt .vbanfragen tr.vbspringbar:hover .vbsprung{color:var(--text);text-decoration-style:solid}
  .vbblatt .vbanfragen th button:hover{color:var(--text)}
  .vbblatt .vbanfragen tbody tr:hover{background:rgba(var(--ton),.035)}
  .vbblatt .vbwz.mehrwz:hover{background:var(--blau-weich)}
}
/* Teuerste Aufträge (#336): aufgeklappte Schritte unter der Zeile */
.vbblatt .vbauftraege tr.vbauftragschritte td{white-space:normal;background:rgba(var(--ton),.03);padding:6px 10px 10px}
.vbblatt .vbschritte{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.vbblatt .vbschritte li{display:grid;grid-template-columns:auto auto 1fr auto;gap:10px;align-items:center;font-size:12px}
.vbblatt .vbschritte li > :nth-child(3){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vbblatt .vbschritte b{font-weight:600;font-variant-numeric:tabular-nums}
/* Betrag an der Nachricht, mit der ein Auftrag begann (#336) */
.blase .auftragbetrag{all:unset;cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px;font-variant-numeric:tabular-nums}
.blase .auftragbetrag:focus-visible{outline:2px solid var(--wahl);outline-offset:2px;border-radius:3px}
/* Laden: das Alte bleibt stehen, nur blasser – kein Flackern */
.vbblatt .blattinhalt.laedt .vbraster,.vbblatt .blattinhalt.laedt .vbkacheln{opacity:.55}

/* Hinweisblase: Tinte auf Papier wie die Blase der Chatleiste (.vblase, #328), eigenes
   Element an <body> (#vbblase) – steht darum im Block der dunklen Blätter mit */
.vbblase{position:fixed;z-index:9000;pointer-events:none;background:var(--tipp);color:var(--tippschrift);
  border-radius:9px;padding:7px 10px;font-size:12px;line-height:1.35;max-width:260px;
  box-shadow:0 8px 24px rgba(var(--schatten),.25);opacity:0;font-family:var(--schrift)}
.vbblase.an{opacity:1}
.vbblase b{display:block;font-size:14px;font-weight:650}
.vbblase small{opacity:.72;display:block}

/* Schmale Blätter und Telefon – am eigenen inneren Element, nie an .blattinhalt */
@container vbinhalt (max-width:900px){
  .vbblatt .vbkacheln{grid-template-columns:1fr 1fr}
  .vbblatt .vbkachel.gross{grid-column:1 / -1}
}
@container vbinhalt (max-width:720px){
  .vbblatt .vbraster{grid-template-columns:1fr}
  .vbblatt .vbringfeld{grid-template-columns:1fr;justify-items:center}
  .vbblatt .vbringfeld .vbringliste{width:100%}
}
@container vbinhalt (max-width:560px){
  .vbblatt .vbkachel.gross .vbwert{font-size:34px}
  .vbblatt .vbwert{font-size:22px}
  .vbblatt .vbreihe{grid-template-columns:minmax(80px,38%) 1fr auto}
  /* Filterzeile: eine Zeile zum Wischen; rechts ein weicher Rand, solange es weitergeht */
  .vbblatt .vbfilter{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none;
    -webkit-mask-image:linear-gradient(90deg,var(--text) calc(100% - 36px),transparent);
    mask-image:linear-gradient(90deg,var(--text) calc(100% - 36px),transparent)}
  .vbblatt .vbfilter.amende{-webkit-mask-image:none;mask-image:none}
  .vbblatt .vbfilter::-webkit-scrollbar{display:none}
  .vbblatt .vbfilter > *{flex:0 0 auto}
  .vbblatt .vbfrei label{flex:1 1 140px}
  .vbblatt .vbfrei input{flex:1 1 auto;min-width:0}
  .vbblatt .vbsortwahl{display:flex}
  /* Tabelle wird zu Karten: Zeit · Agent · Modell · Kosten · Werkzeuge */
  .vbblatt table.vbanfragen{min-width:0}
  .vbblatt .vbanfragen thead{display:none}
  .vbblatt .vbanfragen tbody tr{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:9px 2px;
    border-bottom:1px solid var(--papierlinie)}
  .vbblatt .vbanfragen td{border:0;padding:0;white-space:normal}
  .vbblatt .vbanfragen td[data-k="zeit"]{grid-column:1/-1;font-size:11px}
  .vbblatt .vbanfragen td[data-k="wer"],.vbblatt .vbanfragen td[data-k="raum"],.vbblatt .vbanfragen td[data-k="dauer"],
  .vbblatt .vbanfragen td[data-k="ein"],.vbblatt .vbanfragen td[data-k="aus"]{display:none}
  .vbblatt .vbanfragen td[data-k="kosten"]{grid-row:2;grid-column:2;font-weight:650}
  .vbblatt .vbanfragen td[data-k="werkzeuge"],.vbblatt .vbanfragen td[data-k="modell"]{grid-column:1/-1;max-width:none}
  .vbblatt .vbauftraege td[data-k="agenten"],.vbblatt .vbauftraege td[data-k="schritte"]{display:none}
  .vbblatt .vbauftraege tr.vbauftragschritte td{grid-column:1/-1}
  .vbblatt .vbschritte li{grid-template-columns:auto 1fr auto}
  .vbblatt .vbschritte li > :nth-child(3){display:none}
}
/* Telefon: ↻ im Kopf, weil die Filterzeile zum Wischen ist */
@media (max-width:700px){
  .vbblatt .vbneukopf{display:inline-block}
  .vbblatt .vbrechts{display:none}
}
/* Ansage der Pfeiltasten im Verlauf: nur für Vorleseprogramme */
.vbblatt .vbvorlesen{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Verbrauch: Bewegung (#29 Stufe C) ----------
   Nur CSS-Animationen und Übergänge – verbrauch.js setzt Werte, Klassen und
   setTimeout, nie requestAnimationFrame (steht im eingebauten Browser still).
   Auftritt nur, solange das Blatt .kommt trägt (vbAuftrittStarten, 2,6 s): Teile
   nacheinander (--i), Balken wachsen (--j), Zeilen der Liste (--z); .spaet = die
   Filterzeile stand schon da. Danach gleiten Änderungen nur noch (Übergänge).
   Zurücktreten: .zeigt an Liste/Stapel/Ring, .an am Gezeigten – nur Deckkraft. */
.vbblatt .vbkachel{transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s ease}
.vbblatt .vbkachel.an{transform:translateY(-2px);box-shadow:0 8px 22px rgba(var(--schatten),.12)}
.vbblatt .vbreihe{transition:opacity .18s ease,background .18s ease}
.vbblatt .vbliste.zeigt .vbreihe:not(.an){opacity:.42}
.vbblatt .vbreihe.an{background:rgba(var(--ton),.035)}
.vbblatt .vbreihe.geht{opacity:0!important;pointer-events:none;transition:opacity .25s ease}
.vbblatt .vbspur i{transition:width .5s cubic-bezier(.22,1,.36,1),filter .18s ease}
.vbblatt .vbreihe.an .vbspur i{filter:brightness(1.08) saturate(1.1)}
.vbblatt .vbspur.gestapelt{transition:width .5s cubic-bezier(.22,1,.36,1)}
.vbblatt .vbspur.gestapelt b{transition:flex-grow .5s cubic-bezier(.22,1,.36,1),opacity .18s ease,filter .18s ease}
.vbblatt .vbspur.gestapelt.zeigt b:not(.an){opacity:.45}
.vbblatt .vbspur.gestapelt b.an{filter:brightness(1.08) saturate(1.1)}
.vbblatt .vbmesser i{transition:width .8s cubic-bezier(.22,1,.36,1)}
.vbblatt .vbring circle.stueck{transition:stroke-dasharray .7s cubic-bezier(.22,1,.36,1),
  stroke-dashoffset .7s cubic-bezier(.22,1,.36,1),stroke-width .2s cubic-bezier(.22,1,.36,1),opacity .2s ease}
.vbblatt .vbring.zeigt circle.stueck{opacity:.32}
.vbblatt .vbring.zeigt circle.stueck.an{opacity:1;stroke-width:24}
.vbblatt .vbring circle.stueck.geht{pointer-events:none}
.vbblatt .vbverlauf .faden,.vbblatt .vbverlauf .tupf{transition:opacity .12s ease}
.vbblatt .vbverlauf .linie.zieht{stroke-dasharray:1 1;stroke-dashoffset:1;
  animation:vbziehen 1.05s cubic-bezier(.45,0,.2,1) .25s forwards}
.vbblatt .vbverlauf .linie.zieht.kurz{animation-duration:.5s;animation-delay:0s}
.vbblatt .vbverlauf .flaeche.zieht{opacity:0;animation:vbflaeche .6s ease .85s forwards}
.vbblatt .vbverlauf .flaeche.zieht.kurz{animation-delay:.25s}
.vbblatt .vbverlauf .offen{transform-box:fill-box;transform-origin:center}
.vbblatt .vbverlauf .offen.puls{animation:vbpuls 1.2s ease-in-out 1.4s 2}
.vbblatt .vbverlauf .endname.spaet{animation:vbnurein .3s ease 1.1s both}
.vbblatt.kommt .vbab{animation:vbauftauchen .55s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--i,0)*60ms + 140ms)}
.vbblatt.kommt.spaet .vbfilter{animation:none}
.vbblatt.kommt .vbspur i,.vbblatt.kommt .vbspur.gestapelt{animation:vbwachsen .75s cubic-bezier(.22,1,.36,1) both;
  animation-delay:calc(var(--i,0)*60ms + var(--j,0)*45ms + 330ms)}
.vbblatt.kommt .vbanfragen tbody tr{animation:vbzeile .35s cubic-bezier(.22,1,.36,1) both;
  animation-delay:calc(var(--i,0)*60ms + var(--z,0)*22ms + 300ms)}
@keyframes vbauftauchen{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes vbwachsen{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes vbzeile{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes vbziehen{to{stroke-dashoffset:0}}
@keyframes vbflaeche{to{opacity:.12}}
@keyframes vbpuls{0%,100%{transform:none}50%{transform:scale(1.6)}}
/* nur „von 0“: endet bei der eigenen Deckkraft (graue Linien bleiben bei .55) */
@keyframes vbnurein{from{opacity:0}}
/* Sanfte Fassung („Bewegung reduzieren“, gilt sofort, auch mitten in der Sitzung):
   nur Einblenden – kein Wachsen, Gleiten, Zeichnen, Heben, Hüpfen oder Pulsieren.
   Das Skript lässt dann auch die Zahlen springen (vbRuhig). Das Zurücktreten
   bleibt, es ist reine Deckkraft. */
@media (prefers-reduced-motion:reduce){
  .vbblatt.kommt .vbab{animation:vbnurein .3s ease both;animation-delay:calc(var(--i,0)*30ms)}
  .vbblatt.kommt .vbspur i,.vbblatt.kommt .vbspur.gestapelt{animation:vbnurein .3s ease both;animation-delay:.1s}
  .vbblatt.kommt .vbanfragen tbody tr{animation:vbnurein .2s ease both}
  .vbblatt .vbverlauf .linie.zieht{animation:vbnurein .3s ease both;stroke-dashoffset:0}
  .vbblatt .vbverlauf .flaeche.zieht{animation:vbflaeche .3s ease both}
  .vbblatt .vbverlauf .offen.puls{animation:none}
  .vbblatt .vbverlauf .endname.spaet{animation:vbnurein .3s ease both}
  .vbblatt .vbspur i,.vbblatt .vbspur.gestapelt,.vbblatt .vbspur.gestapelt b,.vbblatt .vbring circle.stueck,
  .vbblatt .vbmesser i{transition-duration:.01s}
  .vbblatt .vbring.zeigt circle.stueck.an{stroke-width:18}
  .vbblatt .vbkachel.an{transform:none}
}

/* ---------- Webseite: Blatt am Tisch (#399, webstatistik.js) ----------
   Das Blatt trägt auch .vbblatt: Filterzeile, Kacheln, Karten, liegende Balken, Tabelle und
   Blase kommen vom Verbrauch. Eigen sind nur die Säulen (HTML, Höhe als --h in %) und der
   Geräte-Streifen. Farben nur über Variablen: eine Reihe Messing (--blau im Blatt), die
   Geräte --diagramm-1 … 3 (Farbe kommt aus dem Skript). Säulen höchstens 24 px breit, oben
   4 px rund, unten gerade, 2 px Luft dazwischen; Linien des Rasters haarfein. */
.blattkopf .wskopfsymbol{background:var(--warm);color:var(--auf-blau)}
.blattkopf .wskopfsymbol svg{width:20px;height:20px}
.wsblatt .vbkacheln{grid-template-columns:repeat(3,minmax(0,1fr))}
.wsblatt .wssaeulen{position:relative;height:200px;margin:6px 0 0 30px}
.wsblatt .wssaeulen.wsstunden{height:140px}
.wsblatt .wsgitter,.wsblatt .wsspalten{position:absolute;left:0;right:0;top:0;bottom:22px}
.wsblatt .wsgitter span{position:absolute;left:0;right:0;bottom:var(--y);border-top:1px solid rgba(var(--ton),.07)}
.wsblatt .wsgitter span.null{border-top-color:rgba(var(--ton),.16)}
.wsblatt .wsgitter em{position:absolute;right:calc(100% + 6px);bottom:-7px;font-style:normal;font-size:10.5px;
  color:var(--leise2);font-variant-numeric:tabular-nums;white-space:nowrap}
.wsblatt .wsspalten{display:flex;align-items:flex-end;gap:2px}
.wsblatt .wsspalten.dicht{gap:1px}
.wsblatt .wsspalte{flex:1 1 0;min-width:0;height:100%;display:flex;align-items:flex-end;justify-content:center}
.wsblatt .wsspalte i{display:block;width:100%;max-width:24px;height:max(2px,var(--h));border-radius:4px 4px 0 0;
  background:var(--blau);transition:height .35s cubic-bezier(.22,1,.36,1),opacity .15s ease}
.wsblatt .wsspalte.null i{height:0}
.wsblatt .wsspalten.zeigt .wsspalte:not(.an) i{opacity:.4}
.wsblatt .wsachse{position:absolute;left:0;right:0;bottom:0;height:16px;font-size:10.5px;color:var(--leise2);
  font-variant-numeric:tabular-nums}
.wsblatt .wsachse span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.wsblatt .wsleer{position:absolute;left:0;right:0;top:0;bottom:22px;display:grid;place-items:center;margin:0;padding:0}
.wsblatt .wsgeraetespur{height:14px;margin:2px 0 12px}
.wsblatt .vbreihe .vbname .vbpunkt{margin-right:1px}
@container vbinhalt (max-width:560px){ .wsblatt .wsachse span.selten{display:none} }
/* Sehr schmal gezogen (unter der Breite eines Telefons): die Kacheln zu zweit, sonst würden Zahlen abgeschnitten */
@container vbinhalt (max-width:320px){ .wsblatt .vbkacheln{grid-template-columns:1fr 1fr} }
@media (prefers-reduced-motion:reduce){ .wsblatt .wsspalte i{transition:opacity .15s ease} }

/* ===========================================================================
   Split-Screen: zwei Tafeln (#301 S2, tafeln.js)
   Ein Tisch im Hintergrund, davor zwei eingerahmte Tafeln. Die Hauptseite zeichnet
   Einfassung und Kopf beider Tafeln (.tafel), Trennbalken, Reiter und die Knöpfe für
   beide (#tischgemeinsam); ihre eigenen Leute, Raum-Knöpfe und Blätter stehen in ihrer
   Tafel (--th-x/y/w/h, --th-r = Abstand zum rechten Rand, --tb-mitte = Mitte des
   Balkens). Die zweite Tafel ist ein durchsichtiger Rahmen (html.in-tafel). Farben:
   Raum am Tisch – fest wie der Raum (eigener :root-Block, nicht hell/dunkel), die
   aktive Tafel in der Signalfarbe des Büros.
   =========================================================================== */
:root{--tafel-grund:rgba(28,21,15,.42);--tafel-linie:rgba(255,255,255,.28);--tafel-schatten:rgba(0,0,0,.45);
  --tafel-chip:rgba(250,248,244,.92);--tafel-chiptext:#2c2822;--tafel-chipdunkel:rgba(0,0,0,.35);
  --tafel-knopfhover:rgba(255,255,255,.18);--tafel-gruppe:rgba(0,0,0,.28);--tafel-reiter:rgba(0,0,0,.42);
  --tafel-griff:rgba(255,255,255,.45);--tafel-hauch:rgba(255,45,85,.22);--tafel-schrift:#fff}
.tafeln{position:absolute;inset:0;pointer-events:none}
.tafeln[hidden],.tafel[hidden],.tafelbalken[hidden],.tafelreiter[hidden]{display:none}
.tafel{position:absolute;z-index:3;pointer-events:auto;display:flex;flex-direction:column;border-radius:14px;
  background:var(--tafel-grund);border:3px solid transparent;box-shadow:inset 0 0 0 1px var(--tafel-linie),0 14px 40px var(--tafel-schatten);
  transition:border-color .2s,box-shadow .2s;outline:none}     /* ohne Weichzeichner: Hintergrund so scharf wie im Büro (Benutzer 08.10.2026) */
.tafel.aktiv{border-color:var(--signal);box-shadow:0 0 0 4px var(--tafel-hauch),0 14px 40px var(--tafel-schatten)}
.tafel.blitz{animation:tafelblitz .9s ease}
@keyframes tafelblitz{30%{box-shadow:0 0 0 8px var(--signal),0 14px 40px var(--tafel-schatten)}}
@media (prefers-reduced-motion:reduce){.tafel.blitz{animation:none}}
.tafelkopf{flex:0 0 28px;display:flex;align-items:center;gap:6px;padding:0 4px 0 6px;min-width:0;
  color:var(--tafel-schrift);white-space:nowrap;user-select:none;-webkit-user-select:none}
.tafelname{min-width:0;overflow:hidden;text-overflow:ellipsis;background:var(--tafel-chipdunkel);border-radius:999px;
  padding:2px 10px;font-size:12.5px}
.tafelbuero{flex:0 0 auto;border:0;border-radius:999px;padding:1px 9px;font-size:13px;cursor:pointer;
  background:var(--tafel-chip);color:var(--tafel-chiptext)}
.tafelbuero[hidden],.tafelklein[hidden],.tafelknoepfe button[hidden]{display:none}
.tafelklein{flex:0 0 auto;font-size:11px;opacity:.85;background:var(--tafel-chipdunkel);border-radius:999px;padding:1px 7px}
.tafelknoepfe{margin-left:auto;display:flex;gap:2px;flex:0 0 auto}
.tafelknoepfe button{width:28px;height:24px;border:0;border-radius:6px;background:none;color:var(--tafel-schrift);
  font-size:14px;cursor:pointer}
.tafelknoepfe button:hover,.tafelknoepfe button:focus-visible{background:var(--tafel-knopfhover)}
.tafelbalken{position:absolute;z-index:6;width:12px;cursor:col-resize;pointer-events:auto;touch-action:none}
.tafelbalken::after{content:"";position:absolute;left:5px;top:50%;width:3px;height:44px;margin-top:-22px;
  border-radius:2px;background:var(--tafel-griff)}
.tafelbalken:hover::after,.tafelbalken:focus-visible::after{background:var(--wahl)}
.tafelreiter{position:absolute;z-index:6;display:flex;gap:4px;pointer-events:auto}
.tafelreiter.umgekehrt{flex-direction:row-reverse}
.tafelreiterstueck{display:flex;align-items:center;gap:6px;height:30px;max-width:340px;padding:0 6px 0 12px;
  border-radius:999px;background:var(--tafel-reiter);color:var(--tafel-schrift);font-size:12.5px;cursor:pointer;
  border:2px solid transparent}
.tafelreiterstueck.aktiv{border-color:var(--signal);font-weight:600}
.tafelreitername{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tafelreiterstueck button{width:22px;height:22px;border:0;border-radius:5px;background:none;color:inherit;cursor:pointer}
.tafelreiterstueck button:hover{background:var(--tafel-knopfhover)}
/* Der Rahmen der zweiten Tafel: über dem Tisch, unter Ecke, Balken, Knöpfen für beide und Verbrauch */
.tafelrahmen{position:absolute;z-index:4;border:0;margin:0;padding:0;background:transparent;transform-origin:0 0;
  color-scheme:normal}
.tafelrahmen.verdeckt{visibility:hidden;pointer-events:none}
body.tafel-zieht .tafelrahmen{pointer-events:none}
body.tafel-zieht{cursor:col-resize;user-select:none;-webkit-user-select:none}
/* S3: Raumkachel ziehen – Fläche „Hier loslassen …“ und das Namensschild am Zeiger;
   Datei in die andere Tafel – dieselbe Fläche gestrichelt in Braun (kommt später) */
body.tafel-raumzieht .tafelrahmen{pointer-events:none}
body.tafel-raumzieht,body.tafel-raumzieht *{cursor:grabbing!important;user-select:none;-webkit-user-select:none}
.tafelzone{position:fixed;z-index:99990;display:grid;place-items:center;padding:12px;text-align:center;
  pointer-events:none;border:3px dashed var(--signal);border-radius:14px;background:var(--tafel-hauch);
  color:var(--tafel-schrift);font-weight:700;font-size:15px;text-shadow:0 1px 3px var(--tafel-schatten)}
.tafelzone.datei{border-color:var(--wahl);background:var(--tafel-grund)}
.tafelzone[hidden]{display:none}
.tafelgeist{position:fixed;z-index:99991;pointer-events:none;transform:translate(12px,12px);max-width:260px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:8px;padding:5px 10px;font-size:12.5px;
  background:var(--tafel-chip);color:var(--tafel-chiptext);box-shadow:0 6px 18px var(--tafel-schatten)}
/* Knöpfe für beide Tafeln: mittig auf dem Trennbalken, als Gruppe erkennbar; nie abschneiden */
.tischgemeinsam{display:none}
body.tafeln-an .tischgemeinsam{position:absolute;z-index:6;bottom:12px;left:var(--tb-mitte);transform:translateX(-50%);
  display:flex;flex-wrap:wrap;justify-content:center;gap:5px;padding:3px;border-radius:999px;background:var(--tafel-gruppe)}
body.tafeln-an.tafel-eine .tischgemeinsam{left:12px;transform:none}
body.tafeln-an .tischgemeinsam button,body.tafeln-an .tischwerkzeug button,html.in-tafel .tischwerkzeug button{
  padding:6px 11px;font-size:12px;box-shadow:0 3px 10px var(--tafel-schatten)}
body.tafeln-an .tischgemeinsam button{border:0;border-radius:999px;cursor:pointer;background:var(--tafel-chip);color:var(--tafel-chiptext)}
body.tafeln-an .tischgemeinsam button.an{background:var(--wahl);color:var(--knauf)}
.tischwerkzeug button:disabled{opacity:.38;cursor:not-allowed;box-shadow:none}
/* Die Hauptseite in ihrer Tafel; Name und Ecke oben in einer Zeile über den Tafeln */
body.tafeln-an .tischraum{filter:saturate(.85) brightness(.8)}
body.tafeln-an .tischmarke{top:14px;left:22px}
body.tafeln-an .tischmarke b{font-size:22px}
body.tafeln-an .tischmarke span{display:none}
body.tafeln-an .tischecke{flex-direction:row;align-items:center;gap:8px;top:10px;right:16px}
body.tafeln-an #projektschild,body.tafeln-an .tischfrage,body.tafeln-an .tischplatz,
body.tafeln-an #tischteamhinweis{display:none!important}
body.tafeln-an .tischwerkzeug{left:calc(var(--th-x) + 2px);bottom:12px;gap:5px;max-width:calc(var(--th-w) - 200px)}
body.tafeln-an.tafel-haupt-rechts .tischwerkzeug{left:auto;right:calc(var(--th-r) + 58px);justify-content:flex-end;
  max-width:calc(var(--th-w) - 260px)}
body.tafeln-an.tafel-eine .tischwerkzeug{max-width:calc(var(--th-w) - 400px)}
body.tafeln-an .ablage{left:calc(var(--th-x) + var(--th-w) / 2);right:auto;transform:translateX(-50%);bottom:64px}
body.tafeln-an .tischleute.reihe{inset:auto;left:var(--th-x);top:calc(var(--th-y) + 30px);width:var(--th-w)}
body.tafel-haupt-weg .tischleute,body.tafel-haupt-weg .tischwerkzeug,body.tafel-haupt-weg .ablage,
body.tafel-haupt-weg .blatt{visibility:hidden}
/* Agenten als Reihe oben in einer Tafel (Hauptseite und Rahmen) */
.tischleute.reihe{display:flex;justify-content:center;align-items:flex-start;flex-wrap:wrap;gap:6px 18px;
  height:102px;overflow:hidden;padding:6px 8px 0}
.tischleute.reihe .tischperson{position:static;transform:none}
.tischleute.reihe .tischperson:hover{transform:translateY(-2px)}
.tischleute.reihe .tischperson .ring{width:58px;height:58px}
.tischleute.reihe .tischschild{margin-top:-8px;padding:2px 9px 3px;max-width:120px}
.tischleute.reihe .tischschild b{font-size:12.5px}
.tischleute.reihe .tischschild span{font-size:10px}
/* Der Rahmen der zweiten Tafel: durchsichtig, nur Leute, Blätter und Raum-Knöpfe */
html.in-tafel,html.in-tafel body,html.in-tafel body.tisch-an,html.in-tafel #buero{background:transparent!important}
html.in-tafel .tischraum,html.in-tafel .tischmarke,html.in-tafel .tischecke,html.in-tafel .tischverbrauch,
html.in-tafel .tischwebstatistik,
html.in-tafel #projektschild,html.in-tafel .tischfrage,html.in-tafel .tischplatz,html.in-tafel #tischteamhinweis,
html.in-tafel #tischprojekte,html.in-tafel #tischassistent,html.in-tafel #tischnachrichten,
html.in-tafel .handyleiste{display:none!important}
html.in-tafel .tischleute.reihe{inset:auto;left:0;right:0;top:0}
html.in-tafel .tischwerkzeug{left:8px;bottom:12px;gap:5px;max-width:calc(100% - 210px)}
html.in-tafel body.tafel-seite-rechts .tischwerkzeug,html.in-tafel body.tafel-seite-ganz .tischwerkzeug{
  left:auto;right:64px;justify-content:flex-end}
html.in-tafel body.tafel-seite-ganz .tischwerkzeug{max-width:calc(100% - 420px)}
html.in-tafel body.tafel-leer .tischleute,html.in-tafel body.tafel-leer .tischwerkzeug{display:none}
html.in-tafel .ablage{left:50%;right:auto;transform:translateX(-50%);bottom:64px}
.tafelleer{position:absolute;left:0;right:0;top:0;bottom:52px;z-index:2;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:12px;color:var(--tafel-schrift);text-align:center;padding:20px}
.tafelleer[hidden]{display:none}
.tafelleer p{font-size:15px;text-shadow:0 1px 8px var(--tafel-schatten)}
.tafelleer div{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.tafelleer button{border:0;border-radius:999px;padding:7px 14px;font-size:13px;cursor:pointer;
  background:var(--tafel-chip);color:var(--tafel-chiptext)}
.tafelleer button[hidden]{display:none}
/* ⧉ am Raumschild und im Kopf des Explorers */
.projektschildteilen{position:relative;flex:0 0 auto;border:0;border-radius:999px;padding:4px 10px;
  font-size:13px;cursor:pointer;background:var(--tafel-chip);color:var(--tafel-chiptext)}
.projektschildteilen[hidden],.rxkopfteilen[hidden]{display:none}
.rxkopfteilen{white-space:nowrap}

/* ---------- Wunschliste als Blatt am Tisch (#407) ----------
   Liste links in der Seitenleiste der Nachrichten (gespraeche.js, wie #400/#404), rechts
   das Ticket. Breit (Container ab 760 px) zwei Spalten wie das frühere Ticketfenster:
   Beschreibung, Anweisung und Anhänge | Gespräch. Schmal (und am Telefon) Reiter
   Beschreibung · Gespräch · Anhänge. Nur Variablen – hell und dunkel aus dem Blatt-Block. */
.blattkopf .wlkopfsymbol{background:var(--warm);color:var(--auf-blau)}
.blattkopf .wlkopfsymbol svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.blattkopf .wlfensterknopf svg{width:16px;height:16px;vertical-align:-3px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linejoin:round}
.wlzeichen{display:inline-flex;vertical-align:-2px;margin-right:4px}
.wlzeichen svg,.wlwarn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;
  stroke-linejoin:round}
.wlnr{font-variant-numeric:tabular-nums;color:var(--leise);font-weight:600}
/* Leiste */
.wlpflege{display:flex;flex-direction:column;gap:6px;margin:0 2px 8px;padding:8px 10px;border-radius:10px;font-size:12.5px;
  background:var(--hinweis-bg);color:var(--hinweis-text);border:1px solid var(--hinweis-rand)}
.wlpflege[hidden]{display:none}
.wlpflege .medknopf{align-self:flex-start}
.wlfilter button{white-space:nowrap}
.wlleistenzeile{display:flex;align-items:center;gap:6px;margin:0 2px 6px}
.wlsortierung{flex:1;min-width:0;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--leise)}
.wlsortierung select{flex:1;min-width:0;width:auto;--pfeilrand:7px;font-size:12px;padding:3px 6px;border-radius:8px;
  border:1px solid rgba(var(--ton),.14);background-color:var(--feld);color:var(--text)}
.wlauswahl{display:flex;flex-direction:column;gap:6px;margin:0 2px 8px;padding:8px 10px;border-radius:10px;font-size:12.5px;
  background:var(--wahl-bg)}
.wlauswahl[hidden]{display:none}
.wlauswahlknoepfe{display:flex;flex-wrap:wrap;gap:5px}
.wlgruppe{margin:8px 8px 2px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--leise)}
.wlzeile{border-left:3px solid transparent}
.wlzeile.prio-hoch{border-left-color:var(--warm)}
.wlzeile.prio-mittel{border-left-color:rgba(var(--ton),.12)}
.wlzeile.gewaehlt{background:var(--wahl-bg)}
.wlhaken{display:flex;align-items:center;padding-left:6px;cursor:pointer}
.wlhaken input{width:16px;height:16px;cursor:pointer;accent-color:var(--signal)}
.wlwarn{flex:none;color:var(--gelb-text);display:inline-flex}
/* Rechts: Ansichten ohne Ticket */
.wlansichtkopf{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.wlknoepfe{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center}
.wlleer{max-width:560px}
.wlzahlen{margin:12px 0 4px;font-size:13px;color:var(--leise)}
.wlklein{font-size:12.5px;color:var(--leise);margin:2px 0}
.wlhinweis{margin:0 0 8px;padding:7px 11px;border-radius:9px;font-size:13px;background:var(--hinweis-bg);
  color:var(--hinweis-text);border:1px solid var(--hinweis-rand);display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.wlhinweis.wlbearbeiter,.wlhinweis.wlkonzept{background:var(--meldung-ok-bg);color:var(--meldung-ok-text);border-color:var(--ok-rand)}
.wlhinweis.wldoppel{background:var(--gelb-weich);color:var(--gelb-text);border-color:var(--gelb-rand)}
.wlhinweis .medknopf{margin-left:auto}
.wlform{display:flex;flex-direction:column;gap:12px;max-width:620px}
.wlfeld{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--beschriftung)}
.wlfeld small{color:var(--leise)}
.wlfeld input,.wlfeld textarea,.wlfeld select{font:inherit;font-size:14px;color:var(--text);background:var(--feld);
  border:1px solid rgba(var(--ton),.14);border-radius:10px;padding:8px 11px}
.wlfeldkurz select{align-self:flex-start;min-width:160px}
.wlergebnis{white-space:pre-wrap;overflow-wrap:anywhere;padding:12px 14px;border-radius:12px;background:var(--karte);
  border:1px solid var(--papierrand);font-size:14px;line-height:1.5}
.wlkorb{display:flex;flex-direction:column;gap:6px}
.wlkorbzeile{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 12px;
  border-radius:12px;background:var(--karte);border:1px solid var(--papierrand)}
.wlkorbtext{display:flex;flex-direction:column;gap:2px;min-width:200px;flex:1}
.wlkorbtext small{font-size:12px;color:var(--leise)}
.wlnrlink{border:0;background:none;padding:0;font:inherit;color:var(--warm);cursor:pointer;text-decoration:underline;
  text-underline-offset:2px}
.wlnrlink:hover{color:var(--tinte)}
.wlblatt .vergleichspalten{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0 12px}
.wlblatt .vergleichspalte{display:flex;flex-direction:column;gap:3px;padding:12px;border:1px solid var(--papierrand);
  border-radius:12px;background:var(--karte);min-width:0}
.wlblatt .vergleichspalte .medknopf{align-self:flex-start}
.wlblatt .vergleichtext{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;padding:9px;border-radius:9px;
  background:var(--flaeche2);font-size:13.5px;max-height:280px;overflow-y:auto;flex:1}
/* Das Ticket füllt die rechte Seite; die Teile rollen je für sich */
.blatt.wl-mitticket > .blattinhalt{display:flex;flex-direction:column;overflow:hidden;padding-bottom:8px}
.wlticket{flex:1;min-height:0;display:flex;flex-direction:column;container-type:inline-size}
.wltkopf{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.wlnrgross{font-size:15px}
.wltitel{flex:1 1 220px;min-width:0;font:inherit;font-size:16px;font-weight:600;color:var(--text);background:transparent;
  border:1px solid transparent;border-radius:9px;padding:5px 8px}
.wltitel:hover{border-color:rgba(var(--ton),.12)}
.wltitel:focus{border-color:rgba(var(--ton),.28);background:var(--feld)}
.wltkopf select{width:auto;flex:none;--pfeilrand:8px;font-size:12.5px;padding:4px 8px;border-radius:999px;
  border:1px solid rgba(var(--ton),.14);background-color:var(--feld);color:var(--text)}
.wlleisten:empty{display:none}
.wlreiter{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.wlspalten{flex:1;min-height:0;display:flex;flex-direction:column}
.wllinks{display:contents}
.wlteil{min-height:0;overflow:auto}
.wlteilkopf{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 6px;font-size:13.5px}
.wlteilkopf .aufzknoepfe,.wlteilkopf .wlknoepfe{margin-left:auto}
.aufzknoepfe{display:inline-flex;gap:4px;flex-wrap:wrap}
.aufzknoepfe .medknopf{min-width:30px;justify-content:center;padding:4px 9px}
.wlbeschreibungfeld{box-sizing:border-box;min-height:160px;font:inherit;font-size:14px;line-height:1.5;color:var(--text);
  background:var(--feld);border:1px solid rgba(var(--ton),.14);border-radius:10px;padding:9px 11px;resize:vertical}
.wlbeschreibungfeld[readonly]{cursor:text}
.wlunter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 4px}
.wlanweisung{margin-top:14px}
.wlanweisungtext{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--sand-weich);border:1px solid var(--papierrand);
  border-radius:10px;padding:10px 12px;font-size:13.5px;max-height:260px;overflow-y:auto}
.wlanhaenge{margin-top:14px}
.wldateiknopf{cursor:pointer;margin-left:auto}
.wlgespraech{display:flex;flex-direction:column}
.wlverlauf{flex:1;min-height:0;overflow-y:auto;padding:2px 2px 6px}
/* Schmal: nur der gewählte Reiter, er rollt selbst */
.wlticket[data-reiter="beschreibung"] :is(.wlanhaenge,.wlgespraech),
.wlticket[data-reiter="gespraech"] :is(.wlbeschreibung,.wlanhaenge),
.wlticket[data-reiter="anhaenge"] :is(.wlbeschreibung,.wlgespraech){display:none}
.wlspalten > .wlgespraech,.wllinks > .wlteil{flex:1}
@container (min-width:760px){
  .wlreiter{display:none}
  .wlspalten{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
  .wllinks{display:block;overflow:auto;min-height:0;padding-right:4px}
  .wllinks > .wlteil{overflow:visible}
  .wlticket[data-reiter] :is(.wlbeschreibung,.wlanhaenge){display:block}
  .wlticket[data-reiter] .wlgespraech{display:flex;min-height:0;border-left:1px solid var(--papierrand);padding-left:14px}
}
/* Anhänge (19.09.2026): Kacheln – Bild oder Endung, Name, Größe, wer, wann */
.ticketanhaenge{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:6px}
.ticketanhang{position:relative;border:1px solid var(--papierrand);border-radius:10px;overflow:hidden;background:var(--karte)}
.ticketanhang a{display:flex;flex-direction:column;gap:3px;padding:8px;color:inherit;text-decoration:none;font-size:13px}
.ticketanhang img{width:100%;height:80px;object-fit:cover;border-radius:6px}
.ticketanhangsymbol{height:80px;display:grid;place-items:center;border-radius:6px;background:var(--warm-hauch);
  color:var(--warm);font-weight:700;letter-spacing:.05em}
.ticketanhangname{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ticketanhang button{position:absolute;top:4px;right:4px;border:0;border-radius:50%;width:22px;height:22px;
  background:var(--tinte);color:var(--tinte-auf);cursor:pointer;font-size:11px;opacity:.7}
.ticketanhang button:hover,.ticketanhang button:focus-visible{opacity:1}
/* Wer schreibt gerade (#136) und Konflikt am Titel */
.tipptzeichen{display:inline-block;font-size:12px;font-weight:400;color:var(--warm);animation:tipptpuls 1.6s ease-in-out infinite}
@keyframes tipptpuls{50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.tipptzeichen{animation:none}}
.konfliktleiste{margin:0 0 8px;padding:9px 12px;border-radius:10px;font-size:13.5px;background:var(--gelb-weich);
  color:var(--gelb-text);border:1px solid var(--gelb-rand);display:flex;flex-direction:column;gap:5px}
.konflikttext{white-space:pre-wrap;overflow-wrap:anywhere;max-height:140px;overflow-y:auto;padding:7px;border-radius:7px;
  background:var(--karte);color:var(--text);border:1px solid var(--papierrand);font-size:13px}
/* Ordnung und Zuständigkeit (#407 Stufe 2): Zeile unter dem Kopf, Filter ▾ in der Leiste,
   Initialen der Zuständigen und Punkt für Ungelesenes an der Zeile – nur Variablen */
.wltordnung{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:-2px 0 8px}
.wltordnung select{width:auto;flex:none;max-width:100%;--pfeilrand:8px;font-size:12px;padding:3px 8px;border-radius:999px;
  border:1px solid rgba(var(--ton),.12);background-color:var(--feld);color:var(--text)}
.wltordnung .wlbeob.an{background:var(--wahl-bg);border-color:var(--warm);color:var(--text)}
.wltordnung [data-wl-teil="herkunft"]:empty{display:none}
.wlfilterknopf{flex:none;display:inline-flex;align-items:center;gap:3px;font-size:12px;padding:3px 7px}
.wlfilterknopf svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.wlfilterknopf.an{background:var(--wahl-bg);border-color:var(--warm)}
.wlfilterbox{display:flex;flex-direction:column;gap:6px;margin:0 2px 8px;padding:8px 10px;border-radius:10px;
  background:var(--flaeche2);border:1px solid var(--papierrand)}
.wlfilterbox[hidden]{display:none}
.wlfilterzeile{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--leise)}
.wlfilterzeile select{width:auto;flex:1;min-width:0;max-width:170px;--pfeilrand:7px;font-size:12px;padding:3px 6px;
  border-radius:8px;border:1px solid rgba(var(--ton),.14);background-color:var(--feld);color:var(--text)}
.wlfilterbox .medknopf{align-self:flex-start}
.wlzust{flex:none;display:inline-flex;margin-left:4px}
.wlzust .initialenbild{font-size:9.5px}
.wlneu{flex:none;width:8px;height:8px;border-radius:50%;background:var(--signal);margin-left:4px}
/* Tafel (#407 Stufe 3): Umschalter im Kopf, Spalten nach Status über die ganze Breite, Karten
   mit Prioritätskante (warm) – am Telefon wischt man von Spalte zu Spalte (scroll-snap) */
.wlansicht{display:inline-flex;border:1px solid rgba(var(--ton),.16);border-radius:999px;overflow:hidden;margin-right:4px}
.blattkopf .wlansicht button{border:0;border-radius:0;padding:3px 10px;font-size:12px;background:transparent;color:var(--leise);
  width:auto;height:auto}
.blattkopf .wlansicht button.an{background:var(--wahl-bg);color:var(--text);font-weight:600}
.blatt.wl-tafel .gespraechleiste{display:none}
.blatt.wl-tafel > .blattinhalt{display:flex;flex-direction:column;overflow:hidden;padding-bottom:8px}
.wltafel{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}
.wltafelfilter{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.wltafelfilter .mappensuche{flex:1 1 180px;min-width:140px;max-width:280px}
.wltafelwahl{display:contents}
.wltafelfilter select{width:auto;flex:none;max-width:100%;--pfeilrand:8px;font-size:12px;padding:3px 8px;border-radius:999px;
  border:1px solid rgba(var(--ton),.12);background-color:var(--feld);color:var(--text)}
.wlspaltenreihe{flex:1;min-height:0;display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;padding-bottom:4px}
.wlspalte{flex:1 0 220px;max-width:340px;min-height:0;display:flex;flex-direction:column;border-radius:12px;
  background:var(--flaeche2);border:1px solid var(--papierrand)}
.wlspalte.leer{flex:0 0 120px}
.wlspalte.ziel{border-color:var(--warm);box-shadow:inset 0 0 0 1px var(--warm)}
.wlspaltekopf{display:flex;align-items:baseline;justify-content:space-between;gap:6px;padding:8px 10px 6px;font-size:13px}
.wlspaltekopf small{color:var(--leise);font-variant-numeric:tabular-nums}
.wlspaltekarten{flex:1;min-height:40px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:0 8px 8px}
.wlkarte{display:flex;flex-direction:column;gap:4px;padding:7px 8px 6px 10px;border-radius:10px;background:var(--karte);
  border:1px solid var(--papierrand);border-left:3px solid rgba(var(--ton),.12);cursor:grab}
.wlkarte.prio-hoch{border-left-color:var(--warm)}
.wlkarte.prio-niedrig{border-left-color:transparent}
.wlkarte.zieht{opacity:.45}
.wlkartetext{all:unset;display:flex;flex-direction:column;gap:3px;cursor:pointer;min-width:0}
.wlkartetext:focus-visible{outline:2px solid var(--warm);outline-offset:2px;border-radius:6px}
.wlkartekopf{display:flex;align-items:center;gap:5px;font-size:12px}
.wlartzeichen{display:inline-flex;color:var(--leise)}
.wlartzeichen svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.wlkartetitel{font-size:13px;font-weight:600;color:var(--text);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.wlkartechat{font-size:11.5px;color:var(--meldung-ok-text)}
.wlkartefuss{display:flex;align-items:center;justify-content:flex-end;gap:4px;min-height:22px}
.wlkartefuss .wlzust{margin-right:auto;margin-left:0}
.wlmehr{align-self:center;font-size:12px}
/* Zusammenhänge (#407 Stufe 4): Unterpunkte zum Abhaken, Verknüpfungen, „wartet auf“ an Zeile/Karte */
.wlzusammen{margin-top:14px;display:flex;flex-direction:column;gap:6px}
.wlpunkte,.wlbezuege{display:flex;flex-direction:column;gap:3px}
.wlpunkt,.wlbezug{display:flex;align-items:center;gap:6px;font-size:13.5px;padding:3px 4px;border-radius:8px}
.wlpunkt:hover,.wlbezug:hover{background:var(--flaeche2)}
.wlpunkt label{flex:1;min-width:0;display:flex;align-items:flex-start;gap:7px;cursor:pointer}
.wlpunkt input{width:16px;height:16px;margin-top:2px;flex:none;accent-color:var(--warm)}
.wlpunkt.erledigt span{color:var(--leise);text-decoration:line-through}
.wlbezugtitel{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wlbezug.erledigt .wlbezugtitel{color:var(--leise)}
.wlweg{border:0;background:none;color:var(--leise);cursor:pointer;padding:2px 5px;border-radius:6px;font-size:12px}
.wlweg:hover{color:var(--text);background:var(--flaeche2)}
.wlpunktneu input,.wlbezugneu input{font:inherit;font-size:13px;color:var(--text);background:var(--feld);
  border:1px solid rgba(var(--ton),.14);border-radius:9px;padding:5px 9px;min-width:0}
.wlpunktneu input{width:100%}
.wlbezugneu{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.wlbezugneu input{flex:1 1 160px}
.wlbezugneu select{width:auto;flex:none;--pfeilrand:8px;font-size:12.5px;padding:4px 8px;border-radius:999px;
  border:1px solid rgba(var(--ton),.14);background-color:var(--feld);color:var(--text)}
.wlkartewartet{font-size:11.5px;color:var(--gelb-text)}
.wlkartepunkte{font-size:11.5px;color:var(--leise);font-variant-numeric:tabular-nums}
@media (max-width:700px){
  .wlblatt .vergleichspalten{grid-template-columns:1fr}
  .wltkopf select{flex:1 1 40%}
  .wltordnung select{flex:1 1 40%}
  .wlspaltenreihe{scroll-snap-type:x mandatory}
  .wlspalte,.wlspalte.leer{flex:0 0 85%;max-width:none;scroll-snap-align:start}
  .wlkarte{cursor:default}
}

/* Support-Besuch (#406 Stufe 2): Band oben in der Mitte – welches Büro, bis wann, Knopf
   „Zurück ins eigene Büro“. Über Tisch und Blättern, unter Rückfragen und Vollbild. */
#supportband{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:8500;
  display:flex;gap:10px;align-items:center;max-width:calc(100vw - 24px);box-sizing:border-box;
  background:var(--warm);color:var(--tinte-auf);padding:2px 3px 2px 12px;border-radius:0 0 12px 12px;
  font-size:12px;line-height:1.3;box-shadow:0 2px 8px rgba(var(--ton),.25)}
#supportband span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#supportband .knopf{white-space:nowrap;flex:none;padding:2px 10px;font-size:12px}
@media (max-width:600px){#supportband{flex-wrap:wrap;justify-content:center;text-align:center}
  #supportband span{white-space:normal}}
