/* Trinity — App-Ergänzungen zum geteilten System (24.08.2026)
   Die Dateien in trinity-shared/ entsprechen 1:1 der Website. Was nur die
   Coaching-App braucht, steht hier: Seitenbreite und die Symbol-Knöpfe der
   Listenzeilen (Lucide-Masken). Reihenfolge: nach trinity-ui.css laden. */
/* Rollbalken-Rinne immer reservieren (10.09.2026, Befund Jeannine): sonst wird die Seite um die Rollbalkenbreite schmaler, sobald Inhalt nachgeladen ist — der skalierte Kopfbalken ändert dann seine Höhe und der Titel rutscht. */
html{scrollbar-gutter:stable}
/* Ein Rollbalken für alle Kopf-Seiten (10.09.2026): Portal, Formulare, Newsletter, Rechtsseiten teilen dieselbe Balkenbreite (5 px, wie bisher nur im Portal) — sonst ist der skalierte Kopf je Seite unterschiedlich breit/hoch und der Titel springt beim Seitenwechsel um 2 px. */
html:has(body>.header,body>.portal-header)::-webkit-scrollbar{width:5px}html:has(body>.header,body>.portal-header)::-webkit-scrollbar-track{background:var(--c-bg,var(--cream,#e8ddcf))}html:has(body>.header,body>.portal-header)::-webkit-scrollbar-thumb{background:rgba(var(--c-primary-rgb,168,137,80),.4);border-radius:999px}
:root{--font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;
  --seite: 1200px;
  --lnki) center/contain no-repeat;
  --lnki) center/contain no-repeat}
.lnk{--lnki:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E")}
.lnk:hover{color:var(--c-primary,#A88950)}
.qlnks{display:inline-flex;
  --zi) center/contain no-repeat;
}
.lnk{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;letter-spacing:.02em;color:var(--topic-accent,var(--c-accent,#4A1F26));text-decoration:none;white-space:nowrap;cursor:pointer}
.lnk::before{content:'';width:12px;height:12px;flex:none;background:currentColor;-webkit-mask:var(--lnki) center/contain no-repeat;mask:var(--lnki) center/contain no-repeat}
.lnk{--lnki:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E")}
.lnk:hover{color:var(--c-primary,#A88950)}
.zakt{all:unset;box-sizing:border-box;cursor:pointer;width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--topic-accent,var(--c-accent,#4A1F26));border:1px solid rgba(var(--c-primary-rgb,168,137,80),.5);flex:none}
.zakt:hover{border-color:var(--topic-accent,var(--c-accent,#4A1F26))}
.zakt:active{transform:scale(.94)}
.zakt[class*="zakt-"]::before{content:'';width:14px;height:14px;flex:none;background:currentColor;-webkit-mask:var(--zi) center/contain no-repeat;mask:var(--zi) center/contain no-repeat}
.zakt-edit{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z'/%3E%3C/svg%3E")}
.zakt-del{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18'/%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6'/%3E%3Cpath d='M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/%3E%3Cline x1='10' x2='10' y1='11' y2='17'/%3E%3Cline x1='14' x2='14' y1='11' y2='17'/%3E%3C/svg%3E")}
.zakt-zuw{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cline x1='19' x2='19' y1='8' y2='14'/%3E%3Cline x1='22' x2='16' y1='11' y2='11'/%3E%3C/svg%3E")}
.zakt-close{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18'/%3E%3Cpath d='m6 6 12 12'/%3E%3C/svg%3E")}
.zakt-view{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}
.zakt-link{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E")}
.zakt-back{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 18l-6-6 6-6'/%3E%3C/svg%3E")}
.zakt-copy{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E")}
/* 48 B (07.09.2026): Link erneuern — Lucide refresh-cw */
.zakt-refresh{--zi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8'/%3E%3Cpath d='M21 3v5h-5'/%3E%3Cpath d='M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16'/%3E%3Cpath d='M8 16H3v5'/%3E%3C/svg%3E")}
/* Helle Leinwand erzwingen (31.08.2026) — dieselbe Regel wie in den Formularen
   und im Portal. Ohne sie malt der Browser bei dunkler Systemeinstellung die
   Seitenfläche kurz schwarz, bevor das Stylesheet greift (sichtbar beim
   Abmelden und bei jedem Neuladen). Das <meta name="color-scheme"> in den
   Seiten wirkt zusätzlich noch vor diesem Stylesheet. */
:root{color-scheme:light only}
html{color-scheme:light only;background:var(--c-bg,var(--cream,#e8ddcf));-webkit-text-size-adjust:100%}
@media (prefers-color-scheme:dark){:root,html,body{color-scheme:light only}}
input,select,textarea,button{color-scheme:light only}

/* ── Kundendashboard-Bausteine (Phase 5, 24.08.2026): die häufigsten Inline-Muster als Klassen — Stilkatalog: Karte Creme r16 + Karten-Titel 11px Versalien ── */
.k-karte{background:var(--c-surface-soft,var(--color-bg-card,#f2ece2));border-radius:16px;padding:18px;box-shadow:0 2px 16px rgba(12,13,7,0.06)}
.k-karte--eng{padding:16px 18px}
.k-karte--flach{box-shadow:none}
.k-titel{font-size:11px;font-weight:700;letter-spacing:0.15em;text-transform:uppercase;color:var(--topic-accent,var(--accent,#4A1F26));margin-bottom:10px}
.k-titel--gold{background:linear-gradient(135deg,var(--c-grad-a,var(--champagne,#fff5b1)) 0%,var(--c-grad-b,#e5c05b) 42%,var(--c-grad-c,#dba402) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--c-grad-b,#e5c05b)}
.k-titel--0{margin-bottom:0}
.k-hinweis{font-size:12px;color:var(--color-text-secondary,#5a5748)}
.k-mut{font-size:11px;color:var(--color-text-muted,#8c8577)}
/* Wertzeile für Lese-Ansichten (Angaben) — EINE Bauart app-weit, gleich wie Coach «Geschäftliches»
   (Entscheid Jeannine 01.09.2026, Variante A; Vorschau _arbeitsmaterial/Vorschau-Kundenkonto.html) */
.k-wert{display:grid!important;grid-template-columns:clamp(120px,44%,200px) minmax(0,1fr)!important;gap:3px 14px!important;align-items:baseline!important;padding:7px 0!important;border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.14)!important}
.k-wert:last-child{border-bottom:none!important}
.k-wert>.l{font-size:11.5px!important;line-height:1.5!important;color:var(--color-text-muted,#8c8577)!important}
.k-wert>.w{font-size:13.5px!important;font-weight:700!important;min-width:0!important;overflow-wrap:anywhere!important;color:var(--ink,#0c0d07)!important}
.k-wert>.w.leer{font-weight:600!important;color:var(--color-text-muted,#8c8577)!important}
.k-wert--schmal{grid-template-columns:clamp(110px,40%,140px) minmax(0,1fr)!important}
.k-wert--offen{border-bottom:none!important}
@media(max-width:400px){.k-wert{grid-template-columns:1fr!important}}
/* ── Sperrfläche ohne Coach-Kennung (Pendenz 48 A, Freigabe Jeannine 06.09.2026;
   Vorschau _arbeitsmaterial/Vorschau-Pendenz48-Sperrflaeche.html). Aufbau zentral in
   brand-cloud.js; html[data-sperre] blendet alles ausser Kopfbalken und Fläche aus. ── */
.tf-sperre{background:color-mix(in srgb,var(--c-surface-soft,#f2ece2) 60%,transparent);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);border:1px solid var(--cream-dark,#d6c9b7);border-radius:16px;box-shadow:0 2px 16px rgba(12,13,7,.06);padding:26px 22px 24px;margin:18px auto;max-width:728px;text-align:left;font-family:var(--font-body,'Montserrat'),sans-serif;color:var(--c-ink,#0c0d07)}
.tf-sperre .sp-icon{width:40px;height:40px;border-radius:50%;border:1.5px solid rgba(var(--c-primary-rgb,168,137,80),.5);display:flex;align-items:center;justify-content:center;color:var(--c-accent,#4A1F26);margin:0 0 14px}
.tf-sperre .sp-icon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.tf-sperre h2{font-family:var(--font-body,'Montserrat'),sans-serif;font-size:20px;font-weight:800;color:var(--c-ink,#0c0d07);margin:0 0 8px;letter-spacing:0;text-transform:none;text-align:left;border:none;padding:0}
.tf-sperre h2::before,.tf-sperre h2::after{display:none}
.tf-sperre p{font-size:14px;line-height:1.6;color:var(--c-text-2,#5a5748);margin:0 0 10px;max-width:56ch;text-wrap:pretty;text-align:left}
.tf-sperre p:last-of-type{margin-bottom:18px}
.tf-sperre .sp-akt{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center}
.tf-sperre .sp-frist{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--c-text-3,#8c8577);margin-top:18px;padding-top:14px;border-top:1px solid rgba(var(--c-primary-rgb,168,137,80),.3)}
html[data-sperre] .portal-main>:not(#trinitySperre),html[data-sperre] .tf-shell>:not(#trinitySperre),html[data-sperre] .container>:not(#trinitySperre):not(.header),html[data-sperre] .portal-progress,html[data-sperre] .nav,html[data-sperre] .tf-nav,html[data-sperre] .stepActionsV2{display:none!important}
/* ── Persönlicher Link erkannt (48 B, 07.09.2026): schmale Bestätigungszeile unter dem
   Kopfbalken auf Portal + Formularen — Vorname aus eingang_link_pruefen, Aufbau in brand-cloud.js. ── */
.tf-persoenlich{display:flex;align-items:center;gap:10px;margin:12px auto 0;max-width:var(--tf-breite,720px);padding:9px 14px;border-radius:999px;background:rgba(var(--c-card-tint-rgb,233,201,204),.45);font-size:14px;color:var(--tf-ink,#0c0d07)}
.tf-persoenlich b{color:var(--c-accent,#4A1F26);font-weight:800}
.tf-persoenlich .pk{width:16px;height:16px;border-radius:50%;border:1.5px solid rgba(var(--c-primary-rgb,168,137,80),.6);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.tf-persoenlich .pk svg{width:9px;height:9px;stroke:var(--c-accent,#4A1F26);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
@media print{.tf-persoenlich{display:none}}
/* ── Leerzustände — ZWEI Rollen (Entscheid Jeannine 03.09.2026, Variante B;
   Brett _arbeitsmaterial/Brett-Leerzustaende.html) ─────────────────────────
   Rolle 1 «.k-leer»  = leere Liste, leere Suche, leerer Abschnitt: schlichte
     Zeile, 13px Hinweisgrau, linksbündig — nie zentriert, nie gestrichelt.
   Rolle 2 «.k-leerf» = leere KARTE, die zu etwas auffordert: ruhige
     Tönungsfläche, der Weg (Knopf/Textknopf) steht darunter.
   Faustregel beim Bauen: gibt es einen Weg zum Anlegen, ist es eine Fläche.
   Altnamen mitgeführt: .pk-none (Suche) und .rgleer (Rechnungsmodul) → Rolle 1, .pk-empty (Karten) → Rolle 2;
   das nackte .leer der Listen bleibt in trinity-coach-ui.css definiert.
   Bewusst OHNE !important: zwei Stellen überschreiben .pk-empty inline
   (Flex-Spalte mit Knöpfen, Warnkasten in Status-Gelb) — das muss greifen.
   Fehlt nur ein EINZELWERT in einer Lese-Zeile, steht «—» (.k-wert>.w.leer). */
.k-leer,.pk-none,.rgleer{display:block;font-size:13px;line-height:1.55;color:var(--c-text-3,#8c8577);text-align:left;border:0;background:none;border-radius:0;margin:0;padding:14px 12px}
.k-leerf,.pk-empty{display:block;font-size:13px;line-height:1.55;color:var(--c-text-3,#8c8577);text-align:left;background:rgba(var(--c-primary-rgb,168,137,80),.06);border:0;border-radius:12px;padding:14px 14px 12px;margin:0 0 10px}
.k-leerf>.weg,.pk-empty>.weg{display:block;margin-top:8px}
/* Ladezustand (verbindlich 09.09.2026, Freigabe Jeannine — Vorschau _arbeitsmaterial/Vorschau-Ladezustand.html):
   EIN Baustein für Coach-App und Kundendashboard. Nie von Hand setzen — ladenHtml(text) in trinity-hinweis.js.
   .k-laden in der Karte (Tönungsfläche wie .k-leerf), .k-laden--voll als Startschirm über der ganzen Seite. */
.k-laden{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:44px 16px;text-align:center;background:rgba(var(--c-primary-rgb,168,137,80),.06);border-radius:12px;min-height:220px;box-sizing:border-box}
.k-laden img{width:48px;height:48px;object-fit:contain}
.k-laden .ring{width:26px;height:26px;border:2.5px solid rgba(var(--c-accent-rgb,74,31,38),.22);border-top-color:var(--c-accent,#4A1F26);border-radius:50%;animation:k-laden-dreh .9s linear infinite}
.k-laden .txt{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--c-accent,#4A1F26)}
.k-laden--voll{position:fixed;inset:0;z-index:99;border-radius:0;background:var(--c-bg,#e8ddcf);min-height:0}
.k-laden--voll img{width:56px;height:56px}
@keyframes k-laden-dreh{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.k-laden .ring{animation:none;border-top-color:rgba(var(--c-accent-rgb,74,31,38),.22)}}
.k-label{font-size:10px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--color-text-secondary,#5a5748)}
.k-zeile{all:unset;cursor:pointer;box-sizing:border-box;display:flex;width:100%}
.k-sub{font-size:10.5px;color:var(--topic-accent,var(--accent,#4A1F26));opacity:0.7}
.k-feld{width:100%;box-sizing:border-box;margin-top:5px;font-size:14.5px;font-weight:600;padding:12px 13px;border-radius:12px;border:1.5px solid rgba(var(--c-accent-rgb,74,31,38),.22);background:var(--c-surface,#f8f4ec);font-family:inherit;color:var(--ink,#0c0d07)}
.k-flaeche{background:var(--c-surface,#f8f4ec);border-radius:12px;padding:12px 14px}
.k-chips{display:flex;gap:6px;flex-wrap:wrap}
.k-badge{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;background:var(--topic-accent,var(--accent,#4A1F26));color:var(--karte-innen,var(--karte-innen,#F3DEE0));padding:3px 9px;border-radius:6px}
.k-badge--tint{background:var(--topic-tint,var(--accent-tint,#E9C9CC));color:var(--topic-accent,var(--accent,#4A1F26))}

/* ── Kundendashboard-Knöpfe (Phase 5, 26.08.2026): der Stilkatalog als Klassen.
   k-btn = Pill-Basis; --voll Primär (Bordeaux), --rand Sekundär, --tint Tönungs-Pille,
   --gold Verlaufs-CTA (abgenommene Ausnahme 24.08.), --text/--vers Text-Knöpfe, k-kreis = runder Zähl-/Icon-Knopf. */
.k-btn{all:unset;cursor:pointer;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:999px;font-weight:800;font-size:12.5px;transition:transform 150ms ease}
.k-btn:active{transform:scale(0.97)}
.k-btn--voll{background:var(--topic-accent,var(--accent,#4A1F26));color:var(--white,#fff);padding:8px 16px}
.k-btn--rand{border:1.5px solid var(--topic-accent,var(--accent,#4A1F26));color:var(--topic-accent,var(--accent,#4A1F26));padding:9px 18px}
.k-btn--tint{background:var(--topic-tint,var(--accent-tint,#E9C9CC));color:var(--topic-accent,var(--accent,#4A1F26));padding:7px 14px;font-weight:700;font-size:11.5px}
.k-btn--gold{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--c-grad-a,var(--champagne,#fff5b1)) 0%,var(--c-grad-b,#e5c05b) 42%,var(--c-grad-c,#dba402) 100%);color:var(--c-ink,var(--ink,#0c0d07));font-size:11.5px;padding:8px 15px}
.k-btn--text{color:var(--topic-accent,var(--accent,#4A1F26));font-weight:700;font-size:12px;border-radius:0;padding:7px 2px}
.k-btn--vers{color:var(--topic-accent,var(--accent,#4A1F26));font-weight:800;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;border-radius:0;padding:7px 0}
.k-kreis{all:unset;cursor:pointer;box-sizing:border-box;flex:none;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;background:var(--topic-tint,var(--accent-tint,#E9C9CC));color:var(--topic-accent,var(--accent,#4A1F26));font-weight:800;font-size:15px}
.k-kreis:active{transform:scale(0.94)}

/* ── Tab-Leisten-Schema (UI-07, Stilkatalog) — EIN Schema fürs ganze Projekt, zentral seit 24.08.2026:
   Leiste = .tabline, Reiter = nacktes <button> darin, aktiv = .nav-an. Keine .btn-Klassen, keine Inline-Stile. ── */
.tabline{display:flex;gap:4px;border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.35);margin:0 0 14px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.tabline::-webkit-scrollbar{display:none}
.tabline button{flex:0 0 auto;border:0;border-radius:0;background:none;color:var(--c-text-3,#8c8577);font-size:12px;font-weight:600;padding:0 10px;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;min-height:44px}
.tabline button:hover{color:var(--accent)}
.tabline button.nav-an{background:none;color:var(--accent);font-weight:800;border-bottom:2px solid var(--c-grad-b,#e5c05b)}

/* ── Coach-Cockpit-Bausteine (Phase 6 Schnitt 3, 26.08.2026): häufigste Inline-Muster aus app.html als Klassen ── */
.k-m0{margin:0!important}.k-mt0{margin-top:0!important}.k-mt6{margin-top:6px!important}.k-mt8{margin-top:8px!important}.k-mt10{margin-top:10px!important}.k-mt12{margin-top:12px!important}
.k-mb10{margin-bottom:10px!important}.k-mb18{margin-bottom:18px!important}.k-m008{margin:0 0 8px!important}.k-hoch{margin:-6px 0 10px!important}
.k-fx{flex:1 1 auto!important}.k-fx1{flex:1!important}.k-min0{min-width:0!important}
.k-ico{flex:none!important;vertical-align:-2px!important;margin-right:6px!important}.k-ico0{vertical-align:-2px!important}
.k-flexz{display:flex!important;gap:10px!important;align-items:center!important;flex-wrap:wrap!important;margin-top:12px!important}
.k-kopfz{display:flex!important;align-items:center!important;margin:0 0 2px!important}
/* Knopf-Stilkatalog app-weit (05.09.2026): .btn lebte bisher nur im Inline-Block von
   app.html — jede andere Seite und jedes Brett zeigte darum ungestylte Knöpfe.
   Werte 1:1 aus app.html übernommen; bewusst OHNE !important, damit der dortige
   Block (und seine Sonderfälle in Kopfleiste und Ink-Karten) unverändert wirkt.
   Primär = Bordeaux gefüllt, Pille · Sekundär = .ghost mit Goldrand · .mini = Zeilenmass. */
.btn{all:unset;cursor:pointer;font-family:var(--font-body,'Montserrat'),sans-serif;font-size:13.5px;font-weight:700;padding:11px 22px;border-radius:999px;background:var(--c-accent,#4A1F26);color:#fff;display:inline-block;margin-top:16px}
.btn:active{transform:scale(.97)}
.btn.ghost{background:transparent;color:var(--c-accent,#4A1F26);border:1.5px solid var(--c-accent,#4A1F26)}
.btn.mini{font-size:12px;padding:7px 14px;margin:0}
.btn[disabled]{opacity:.45;cursor:not-allowed}
/* Ersteinrichtung (08.09.2026): gesperrter Schritt bleibt sichtbar, ausgegraut; sein Knopf ist ohnehin disabled */
.erst-gesperrt{opacity:.5}.erst-gesperrt .btn[disabled]{opacity:1}
/* Zahlungsverzug (05.09.2026, L3): die Sperrfläche ersetzt den Arbeitsbereich.
   Sichtbar bleiben nur sie selbst und «Mein Konto» — dort steht der Zahlungsstand. */
/* Am Element, nicht an .card: die Panels von #viewCoach sind teils klassenlose
   <div id="…Card">-Hüllen (z.B. #heuteCard). So sind auch künftige Panels erfasst.
   .topbar bleibt sichtbar, damit Kopfleiste und Abmelden bedienbar sind. */
body.liz-gesperrt #viewCoach > *:not(.topbar):not(#lizSperre):not(#kontaktCard){display:none!important}
/* Platzzähler der Lizenz (05.09.2026, L3): Hülle mit Versalien-Zeile; der Balken ist
   der bestehende .t-progress aus trinity-ui.css — nie nachbauen. .voll = letzter Platz. */
.lzz{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--c-text-2,#5a5748)}
.lzz .t-progress{width:56px;flex:0 0 auto}
.lzz.voll{color:var(--status-warning,#96660B)}
/* Hinweiszeile app-weit (05.09.2026): .meta lebte bisher nur im Inline-Block von app.html
   und fehlte allen anderen Seiten. Ohne !important — der Inline-Block von app.html bleibt
   damit unveraendert wirksam. */
.meta{font-size:11.5px;line-height:1.5;font-weight:400;color:var(--c-text-3,#8c8577)}
.k-kopfz--eintauch{gap:10px!important;margin:0 0 12px!important}
/* Kopf des Bearbeitungsmodus (V-56, Entscheid Jeannine 30.08./13.09.2026: Speichern + Zurück oben, klebt unter der
   Kopfleiste). Titel links, Speichern-Pill + Chevron rechts, Meldung darunter. Gilt für Einstellungs-Karten und
   Bibliotheks-Editoren. Am Handy (≤620) nicht klebend: wandert ans Ende der Bearbeitungsfläche (.k-bearb = flex-Spalte). */
.k-bearb:not(.hidden){display:flex!important;flex-direction:column!important}
.k-bearb>*{min-width:0}
.k-kopfz--bearb{position:sticky;top:var(--kopf-top,56px);z-index:3;display:flex!important;align-items:center!important;gap:10px!important;flex-wrap:wrap;margin:0 0 10px!important;padding:8px 0;background:var(--c-surface-soft,#f2ece2);border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.28)}
.k-kopfz--bearb .ktit{flex:1 1 auto;min-width:0;font-size:11px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--c-accent,#4A1F26)}
.k-kopfz--bearb .btn.mini{flex:none;margin:0}
.k-kopfz--bearb .msg{flex:0 0 100%;margin:0!important;min-height:0}
.k-kopfz--bearb .msg:empty{display:none}
@media(max-width:620px){
  .k-kopfz--bearb{position:static;order:99;margin:12px 0 0!important;padding:12px 0 0;border-bottom:0;border-top:1px solid rgba(var(--c-primary-rgb,168,137,80),.28)}
  .k-bearb .k-kopfz--bearb .ktit{display:none}
}
.k-kopfz .ktit{font-size:11px!important;font-weight:800!important;letter-spacing:.15em!important;text-transform:uppercase!important;color:var(--c-accent,#4A1F26)!important}
.k-kopfz2{display:flex!important;align-items:center!important;gap:10px!important;margin:2px 0 12px!important}
.k-chipz{display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:wrap!important;margin-bottom:10px!important}
.k-spalte{display:flex!important;flex-direction:column!important;gap:3px!important}
.k-t15{margin:0!important;font-size:15px!important}.k-fs135{font-size:13.5px!important}
.k-utitel{font-size:13.5px!important;font-weight:700!important;color:var(--topic-accent,var(--accent,#4A1F26))!important;margin-bottom:8px!important}
.k-utitel2{font-size:13px!important;font-weight:700!important;color:var(--topic-accent,var(--accent,#4A1F26))!important;margin-bottom:2px!important}
.k-ink{color:var(--c-ink,#0c0d07)!important}.k-goldtext{color:var(--c-primary,#A88950)!important;font-weight:700!important}.k-fehler{color:var(--status-error,#B3261E)!important}
.k-btn-gross{padding:14px 22px!important}.k-mini{border:0!important;padding:4px 8px!important;font-size:11.5px!important}.k-mini2{font-size:11px!important;padding:4px 11px!important}
.k-formgrid{grid-template-columns:1fr!important;gap:8px!important;max-width:460px!important}.k-voll{grid-column:1/-1!important}.k-wa{width:auto!important;margin:0!important}

/* Auswahlfelder app-weit in Markenfarbe (01.09.2026, Branding-Audit: nackte Radios/Checkboxen rendern sonst browser-blau — Gold-Anchor-Regel: gewaehlt ist IMMER Bordeaux) */
body.ui-neu input[type="radio"],body.ui-neu input[type="checkbox"]{accent-color:var(--c-accent,#4A1F26)}

/* ── Checkliste (27.08.2026, Erstgespräch-Karte): eine Zeile pro Punkt, Trennlinie nach Stilkatalog ── */
.k-check{display:flex;align-items:flex-start;gap:9px;font-size:13.5px;font-weight:600;text-transform:none;letter-spacing:0;cursor:pointer;margin:0;padding:8px 0;border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.25)}
.k-check input{width:auto;margin:2px 0 0}
.k-check .offen{color:var(--c-text-3,#8c8577)}
.k-check b{color:var(--topic-accent,var(--accent,#4A1F26))}
.k-check .mehr{flex:none;margin-left:auto;background:none;border:0;cursor:pointer;padding:0 2px;line-height:1}
.k-check .mehr .klapp-pfeil{display:inline-block}
.k-check.o{border-bottom:0}
.k-hilfe{font-size:12.5px;line-height:1.6;color:var(--c-text-2,#5a5748);padding:0 0 10px 27px;border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.25)}

/* ── Mein-Plan-Bausteine (Phase 5 Schnitt 4, 26.08.2026): restliche wiederholte Inline-Muster als Klassen ── */
.k-fett{font-weight:700!important}.k-block0{display:block!important;margin-bottom:0!important}
.k-subtab{flex:none!important;font-weight:800!important;padding:9px 10px 7px!important;border-bottom:2px solid transparent!important}
.k-vers{font-size:10.5px!important;font-weight:800!important;letter-spacing:0.08em!important;text-transform:uppercase!important;color:var(--topic-accent,var(--accent,#4A1F26))!important}
.k-spalte2{display:flex!important;flex-direction:column!important;gap:2px!important}.k-spalte8{display:flex!important;flex-direction:column!important;gap:8px!important}
.k-flexo{display:flex!important;gap:10px!important;align-items:flex-start!important}.k-mitte{align-items:center!important}
.k-text{font-size:12.5px!important;line-height:1.6!important}
.k-text-akz{font-size:12.5px!important;line-height:1.65!important;color:var(--topic-accent,var(--accent,#4A1F26))!important;margin-top:3px!important}
.k-fx0{flex:0 1 auto!important}.k-metaz{display:flex!important;align-items:center!important;gap:6px!important;font-size:11px!important}
.k-zitat{border-left:3px solid var(--topic-accent,var(--accent,#4A1F26))!important;padding-left:10px!important}
.k-zwtitel{font-size:13px!important;font-weight:800!important;color:var(--topic-accent,var(--accent,#4A1F26))!important;line-height:1.35!important;margin-top:2px!important}
.k-meta10{font-size:10px!important;color:var(--color-text-secondary,#5a5748)!important;font-weight:700!important}
/* Programm-Farbcode Ernährungsprogramme (UI-12, 28.08.2026): Detox/Vegan-Grün und Ketogen-Lavendel als Tokens — Werte aus der CLAUDE.md-Whitelist */
:root{--prog-gruen:#7E9473;--prog-gruen-ton:#D6E3CE;--prog-gruen-text:#2C4A32;--prog-lav:#8f86b8;--prog-lav-ton:#DAD3EC;--prog-lav-text:#3A2C52}

/* Gesperrtes Feld (Vorgabe Jeannine 01.09.2026, Muster aus dem Analyse-Tool): ein Wert, der
   von woanders kommt, steht als ausgegrautes Feld statt als Text — sichtbar, aber nicht
   bearbeitbar. IMMER mit title, der sagt, wo er gepflegt wird. */
.k-gesperrt{background:rgba(var(--c-primary-rgb,168,137,80),.08)!important;color:var(--c-text-2,#5a5748)!important;cursor:not-allowed!important;border-style:solid!important}
.k-gesperrt:focus{outline:none!important;border-color:rgba(var(--c-primary-rgb,168,137,80),.28)!important}

/* ══ Hinweis-Baustein (Variante A, Entscheid Jeannine 02.09.2026) ══════════
   Brett: _arbeitsmaterial/Brett-Hinweis-Baustein.html · Auslöser `.tinfo`
   (16px Kreis, Goldrand, Bordeaux-«i», unsichtbare 44px-Trefferfläche), Blase
   `.tinfo-b` auf Ink mit Cremetext. Auslösen per Hover, Klick UND Tastatur —
   am Handy gibt es keinen Hover, darum reicht der native title nicht.
   Verhalten liefert `trinity-hinweis.js` (Klasse `.auf`).
   NUR für Erklärungen. Runde Icon-Knöpfe (.zakt) behalten ihren title als
   Beschriftung. Die Klassen `.info-icon`/`.tooltip` des Analyse-Tools sind
   als Altnamen mitgeführt, damit dort kein Markup umgebaut werden muss. */
.tinfo,.info-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;flex:none;border-radius:50%;box-sizing:border-box;
  background:transparent;border:1.5px solid var(--c-primary,#A88950);color:var(--c-accent,#4A1F26);
  font-family:var(--font-body,'Montserrat'),sans-serif;font-size:10px;font-weight:800;font-style:normal;
  line-height:1;cursor:pointer;vertical-align:middle;-webkit-tap-highlight-color:transparent}
.tinfo::after,.info-icon::after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
.tinfo:focus-visible,.info-icon:focus-visible{outline:2px solid var(--c-accent,#4A1F26);outline-offset:3px}
.tinfo-b,.info-icon .tooltip{display:none;position:absolute;z-index:200;top:calc(100% + 9px);left:-8px;
  width:280px;max-width:min(76vw,320px);text-align:left;letter-spacing:0;text-transform:none;
  background:var(--c-ink,#0c0d07);color:var(--c-surface,#e8ddcf);
  font-family:var(--font-body,'Montserrat'),sans-serif;font-size:12px;font-weight:400;line-height:1.6;
  padding:11px 13px;border-radius:10px;box-shadow:0 10px 26px rgba(12,13,7,.22)}
.tinfo-b b,.info-icon .tooltip b{font-weight:800;color:var(--c-grad-b,#e5c05b)}
.tinfo-b::before,.info-icon .tooltip::before{content:"";position:absolute;bottom:100%;left:13px;
  border:6px solid transparent;border-bottom-color:var(--c-ink,#0c0d07)}
.tinfo:hover .tinfo-b,.tinfo.auf .tinfo-b,.tinfo:focus .tinfo-b,
.info-icon:hover .tooltip,.info-icon.auf .tooltip,.info-icon.open .tooltip,.info-icon:focus .tooltip{display:block}
/* Am rechten Rand nach links klappen */
.tinfo-b.re,.info-icon .tooltip.re{left:auto;right:-8px}
.tinfo-b.re::before,.info-icon .tooltip.re::before{left:auto;right:13px}
/* Halter: ein bestehendes Element (Badge, Warnsymbol) wird Auslöser, ohne den i-Kreis.
   NICHT auf Knöpfe mit eigener Aktion setzen — der Klick würde geschluckt. */
.tinfo-h{position:relative;cursor:help}
.tinfo-h:hover>.tinfo-b,.tinfo-h.auf>.tinfo-b,.tinfo-h:focus>.tinfo-b{display:block}
.tinfo-h:focus-visible{outline:2px solid var(--c-accent,#4A1F26);outline-offset:3px}
/* Spiegelfeld-Reihe: gesperrtes Feld plus i-Kreis auf einer Linie. Das Feld
   darf wachsen, der Kreis nicht (window.spiegelFeld in trinity-hinweis.js). */
.spiegelz{display:flex;align-items:center;gap:7px;width:100%}
.spiegelz>input,.spiegelz>textarea,.spiegelz>select{flex:1 1 auto;min-width:0}
.spiegelz>.tinfo{flex:none}
.lbl-with-info{display:inline-flex;align-items:center;gap:6px}
@media(max-width:620px){
  .tinfo,.info-icon{width:18px;height:18px;font-size:11px}
  .tinfo-b,.info-icon .tooltip{width:auto;max-width:86vw;left:auto;right:-8px}
  .tinfo-b::before,.info-icon .tooltip::before{left:auto;right:13px}
}
@media print{.tinfo-b,.info-icon .tooltip{display:none!important}}

/* ══ Bewirtschaftungs-Bausteine — ZENTRAL, app-weit (Etappe 1, 05.09.2026;
   vorher gescoped auf #ktFaktura in rechnungen.css. Vorschau:
   _arbeitsmaterial/Vorschau-Bewirtschaftung-Etappe1-2.html).
   Fläche = Papier var(--c-surface) (Entscheid Jeannine 05.09.2026, Brett
   _arbeitsmaterial/Brett-Tabellenflaeche.html, Fassung B2) — Eingabefelder bleiben weiss,
   damit sie in der Zeile als Felder erkennbar bleiben.
   Alle kurzen Namen (.zz .zk .lz .lf .leer .kl .nm .plus) wirken NUR innerhalb
   von .ztab bzw. .ltab. .dkopf wandert bewusst NICHT mit (Name doppelt belegt:
   #rgCard .dkopf ist der Rechnungs-Detailkopf) — neue Flächen nehmen .k-kopfz. ══ */
.ztabkopf{font-size:16px;font-weight:700;color:var(--c-ink,#0c0d07);margin:14px 0 2px}
.ztabsub{font-size:13px;color:var(--c-text-2,#5a5748);margin:0 0 12px;max-width:70ch;line-height:1.6}
/* Zeilentabelle (Ebene 3 Zeitachse, Zahlungen, Mahnungen) */
.ztab{background:var(--c-surface,#f8f4ec);border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:10px;overflow:hidden;width:100%;box-shadow:0 1px 3px rgba(12,13,7,.04)}
.ztab .zk,.ztab .zz{display:grid;grid-template-columns:minmax(140px,1fr) 96px 132px 132px 44px;gap:12px;align-items:center;padding:0 14px;font-size:13.5px}
.ztab .zk{min-height:34px;border-top:1px solid rgba(var(--c-primary-rgb,168,137,80),.14);border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--c-text-2,#5a5748)}
.ztab .stgrp.hidden{display:none}
.ztab .zg{display:block;padding:14px 14px 10px}
.ztab .zg .n{font-size:13.5px;font-weight:700;color:var(--c-ink,#0c0d07);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ztab .zg input.gname{font:inherit;font-size:13.5px;font-weight:700;color:var(--c-ink,#0c0d07);border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:7px;padding:6px 9px;background:#fff;max-width:280px}
.ztab .zg .stdw{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--c-text-2,#5a5748);text-transform:none;letter-spacing:0}
.ztab .zg .hinwf{margin-top:8px}
.ztab .zg .hinwf input{width:100%;max-width:520px;font:inherit;font-size:13px;padding:7px 9px;border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:7px;background:#fff;box-sizing:border-box}
.ztab .zz{min-height:46px;border-top:1px solid rgba(var(--c-primary-rgb,168,137,80),.14)}
.ztab .zz:hover{background:rgba(var(--c-primary-rgb,168,137,80),.06)}
.ztab .zz.jetzt{background:rgba(220,235,217,.5)}
.ztab .zz input,.ztab .zz select{width:100%;font:inherit;font-size:13.5px;padding:7px 9px;border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:7px;background:#fff;box-sizing:border-box;min-height:36px;min-width:0}
.ztab .zz input.sp{text-align:right;font-variant-numeric:tabular-nums}
.ztab .zz input.dat{font-variant-numeric:tabular-nums;letter-spacing:.02em}
.ztab .zz input.dat.unfertig{border-color:var(--status-warning,#96660B)}
.ztab .zz .bis{font-size:13px;color:var(--c-text-2,#5a5748);font-variant-numeric:tabular-nums}
.ztab .zz .abz{justify-self:start;display:inline-flex;align-items:center;width:max-content;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--status-success,#3F7A45);background:var(--status-success-bg,#DCEBD9);border-radius:999px;padding:3px 9px;white-space:nowrap}
.ztab .zz .lab{justify-self:start;display:inline-flex;align-items:center;width:max-content;font-size:11.5px;color:var(--c-text-3,#8c8577)}
.ztab .zz .zeilaktion,.ztab .lz .zeilaktion{display:flex;justify-content:flex-end}
.ztab .plus,.ltab .plus{padding:8px 14px 12px}
/* Ebene 2 des Bearbeitungsmusters: alle Felder eines Eintrags in EINER Zeile */
.ztab.atab .zk,.ztab.atab .zz{grid-template-columns:minmax(180px,1fr) 168px 150px 176px}
.ztab.atab .zz{min-height:52px}
.ztab.atab.lvtab .zk,.ztab.atab.lvtab .zz{grid-template-columns:minmax(160px,1fr) 150px 132px 160px 132px}
.ztab.atab.lvtab4 .zk,.ztab.atab.lvtab4 .zz{grid-template-columns:minmax(180px,1fr) 160px 150px 150px}
.ztab.atab .stdw{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--c-text-2,#5a5748);text-transform:none;letter-spacing:0}
/* Senkrechte Angaben-Tabelle: eine Angabe je Zeile, Beschriftung links, Feld rechts.
   Spurenmass und Zeilenhöhe spiegeln die Lese-Ansicht .k-wert. */
.ztab.vtab .vz{display:grid;grid-template-columns:clamp(140px,26%,220px) minmax(0,1fr);gap:4px 14px;align-items:center;padding:8px 14px;min-height:52px;border-top:1px solid rgba(var(--c-primary-rgb,168,137,80),.14)}
.ztab.vtab>.vz:first-child{border-top:0}
.ztab.vtab .vl{font-size:11.5px;color:var(--c-text-2,#5a5748);line-height:1.5;text-wrap:pretty}
.ztab.vtab .vl .pf{color:var(--c-accent,#4A1F26);font-weight:800;white-space:nowrap}
.ztab.vtab .vw{min-width:0}
.ztab.vtab .vw input,.ztab.vtab .vw select,.ztab.vtab .vw textarea{width:100%;font:inherit;font-size:13.5px;padding:8px 10px;border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:7px;background:#fff;box-sizing:border-box;min-height:40px}
.ztab.vtab .vw select{max-width:420px}
.ztab.vtab .vw textarea{resize:vertical;min-height:72px;line-height:1.5}
.ztab.vtab .vw input.mono{font-family:var(--font-mono,monospace);font-variant-numeric:tabular-nums}
.ztab.vtab .vw input[type=number]{max-width:200px}
.ztab.vtab .vw .paar{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px}
/* Zwei gleichwertige Felder (Vor-/Nachname): gleiche Breite, ≤520px untereinander (08.09.2026) */
.ztab.vtab .vw .paar.gleich{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
@media (max-width:520px){.ztab.vtab .vw .paar.gleich{grid-template-columns:minmax(0,1fr)}}
.ztab.vtab .vw .wirkung{display:block;font-size:11.5px;line-height:1.5;color:var(--c-text-3,#8c8577);margin-top:5px}
.ztab.vtab .vw textarea{width:100%;font:inherit;font-size:13.5px;line-height:1.55;padding:9px 11px;border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:8px;background:#fff;box-sizing:border-box;resize:vertical}
.ztab.vtab .vz.hoch{align-items:start}
.ztab.vtab .vw .phz{display:flex;flex-wrap:wrap;gap:12px}
.ztab.vtab .vw .phz label{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:12.5px;font-weight:600;color:var(--c-text-2,#5a5748);min-height:32px;text-transform:none;letter-spacing:0}
.ztab.vtab .vw .phz input{width:auto;min-height:0}
.ztab.vtab .vw .bildz{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ztab.vtab .vw .bildz input{flex:1 1 220px;width:auto}
.ztab.vtab .vw input.kurz{max-width:220px}
.ztab.vtab .vfest{font-size:13.5px;font-weight:700;color:var(--c-ink,#0c0d07);cursor:default}
.ztab.vtab .vfest.leer{font-weight:600;color:var(--c-text-3,#8c8577)}
/* Schmale Variante (Kundendashboard, Handy): Beschriftung ÜBER dem Feld */
.ztab.vtab.vschmal .vz{grid-template-columns:1fr;gap:5px;padding:11px 14px;min-height:0}
/* Ebene 1: Liste mit Sortierkopf und Spaltenfiltern */
.ltab{background:var(--c-surface,#f8f4ec);border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:10px;overflow:hidden;width:100%;box-shadow:0 1px 3px rgba(12,13,7,.04)}
.ltab .lk,.ltab .lf,.ltab .lz,.ltab .lvz{display:grid;grid-template-columns:minmax(140px,1fr) 152px 136px 160px 44px;gap:12px;align-items:center;padding:0 14px;font-size:13.5px}
.ltab .lk{padding:0 14px;border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.28)}
.ltab .lk .so{all:unset;cursor:pointer;font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--c-text-2,#5a5748);display:inline-flex;align-items:center;gap:5px;min-height:34px}
.ltab .lk .so.r{justify-content:flex-end}
.ltab .lk .so.an{color:var(--c-accent,#4A1F26);font-weight:800}
.ltab .lk .so .pf{opacity:.55;font-size:10px}
.ltab .lk .so.an .pf{opacity:1}
.ltab .lf{min-height:44px;border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);background:rgba(var(--c-primary-rgb,168,137,80),.04)}
.ltab .lf input,.ltab .lf select{width:100%;font:inherit;font-size:12.5px;padding:6px 8px;border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:7px;background:#fff;box-sizing:border-box;min-width:0}
.ltab .lf .vb{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.ltab .lf .vb input{text-align:right;font-variant-numeric:tabular-nums;padding:6px}
.ltab .lz{min-height:46px;border-top:1px solid rgba(var(--c-primary-rgb,168,137,80),.14)}
.ltab .lz:hover{background:rgba(var(--c-primary-rgb,168,137,80),.06)}
.ltab .lz .nm{font-weight:700}
.ltab .lz .r,.ltab .lvz .r{text-align:right;font-variant-numeric:tabular-nums}
.ltab .lz .kl,.ltab .lvz .kl{font-size:12.5px;color:var(--c-text-2,#5a5748)}
.ltab .lvz{min-height:38px;font-size:12.5px;color:var(--c-text-3,#8c8577);background:rgba(var(--c-primary-rgb,168,137,80),.04);border-top:1px solid rgba(var(--c-primary-rgb,168,137,80),.1)}
.ltab .lvz .nm{font-weight:600;padding-left:18px;position:relative}
.ltab .lvz .nm::before{content:"";position:absolute;left:6px;top:50%;width:6px;height:1px;background:rgba(var(--c-primary-rgb,168,137,80),.6)}
.ltab .lz.hidden,.ltab .lvz.hidden{display:none}
.ltab .leer,body.ui-neu .ltab .leer{padding:14px;font-size:13px;color:var(--c-text-3,#8c8577);text-align:left}
.ltab .std{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--c-card-tint,#E9C9CC);color:var(--c-accent,#4A1F26)}
/* Reiter «Pakete» der Fakturierung (V-99b, 16.09.2026): Liste, Feldzeile, Haken-Inhalt, freie Zeilen */
.ltab.pktab .lk,.ltab.pktab .lz{grid-template-columns:minmax(160px,1fr) 140px 120px 120px 44px;gap:12px}
.ltab.pktab .lk span{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--c-text-2,#5a5748);min-height:40px;display:flex;align-items:center}
.ltab.pktab .lk span.r{justify-content:flex-end}
@media(max-width:760px){.ltab.pktab .lk,.ltab.pktab .lz{grid-template-columns:minmax(120px,1fr) 108px 44px;gap:8px}.ltab.pktab .lk span:nth-child(3),.ltab.pktab .lk span:nth-child(4),.ltab.pktab .lz span:nth-child(3),.ltab.pktab .lz span:nth-child(4){display:none}}
.pkliste{display:flex;flex-direction:column;gap:8px}
.pkz{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:10px;align-items:center;background:var(--c-surface,#f8f4ec);border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:12px;padding:12px 14px;cursor:pointer}
.pkz:hover{background:rgba(var(--c-primary-rgb,168,137,80),.06)}
.pkz .pkn{font-size:14px;font-weight:700;display:flex;flex-direction:column;gap:3px;min-width:0}
.pkz .pkm{font-size:12px;font-weight:500;color:var(--c-text-2,#5a5748)}
.pkadd{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.pkadd select{flex:0 1 260px;font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--cream-dark,#d8cbb8);border-radius:999px;background:var(--c-surface,#f8f4ec);color:var(--c-accent,#4A1F26);font-weight:700}
.pkfeld{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:10px}
.pkfeld label{display:block;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--c-text-3,#8c8577);margin-bottom:4px}
.pkfeld input,.pkfeld select{width:100%;box-sizing:border-box;font:inherit;font-size:14px;padding:9px 10px;border:1px solid var(--cream-dark,#d8cbb8);border-radius:8px;background:var(--c-surface,#f8f4ec);color:var(--c-ink,#0c0d07)}
.pkhk{display:flex;align-items:center;gap:10px;min-height:44px;padding:4px 2px;border-bottom:1px solid rgba(var(--c-primary-rgb,168,137,80),.2);font-size:13.5px;cursor:pointer}
.pkhk input[type=checkbox]{width:18px;height:18px;flex:0 0 auto;accent-color:var(--c-accent,#4A1F26)}
.pkhk .hkN{flex:1 1 auto}
.pkhk .hkM{flex:0 0 104px}
.pkhk .hkM input{width:100%;box-sizing:border-box;font:inherit;font-size:13px;padding:6px 8px;border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:7px;background:var(--c-surface,#f8f4ec);text-align:right}
.pkhk .hkM input:disabled{opacity:.45}
.pkfrei{display:grid;grid-template-columns:minmax(140px,1fr) 104px 44px;gap:10px;align-items:center;padding:4px 0}
.pkfrei input{width:100%;box-sizing:border-box;font:inherit;font-size:13.5px;padding:8px 10px;border:1px solid var(--cream-dark,#d8cbb8);border-radius:8px;background:var(--c-surface,#f8f4ec)}
.pkfrei span:last-child{display:flex;justify-content:flex-end}
@media(max-width:620px){.pkfrei{grid-template-columns:minmax(0,1fr) 84px 44px;gap:8px}}
/* Spuren der Basis-Bibliothek Rezepte (Etappe 3): Titel · Gruppe · Thema · kcal · Zeit · Herkunft · Stift.
   Kopf, Filterzeile und Zeile teilen exakt dieselben Spuren — nie auto-Spalten. */
.ltab.rez .lk,.ltab.rez .lf,.ltab.rez .lz{grid-template-columns:minmax(120px,1fr) 116px 112px 70px 84px 96px 44px;gap:10px}
.ztab.atab.rez .zk,.ztab.atab.rez .zz{grid-template-columns:minmax(200px,1fr) 168px 168px}
@media(max-width:900px){.ltab.rez .lk,.ltab.rez .lf,.ltab.rez .lz{grid-template-columns:minmax(104px,1fr) 100px 96px 62px 74px 86px 44px;gap:8px}}
/* Spuren der Basis-Bibliotheken Übungen · Trainingspläne · Einkauf · Aufgaben (V-53, 13.09.2026) — Kopf = Filter = Zeile */
.ltab.ueb .lk,.ltab.ueb .lf,.ltab.ueb .lz{grid-template-columns:minmax(140px,1fr) 128px 120px 84px 110px 44px;gap:10px}
.ltab.trn .lk,.ltab.trn .lf,.ltab.trn .lz{grid-template-columns:minmax(150px,1fr) 128px 120px 92px 60px 110px 44px;gap:10px}
.ltab.ek .lk,.ltab.ek .lf,.ltab.ek .lz{grid-template-columns:minmax(140px,1fr) 128px 96px minmax(120px,1fr) 110px 44px;gap:10px}
.ltab.aufg .lk,.ltab.aufg .lf,.ltab.aufg .lz{grid-template-columns:minmax(220px,2fr) 140px 140px 84px 110px 44px;gap:10px}
.ltab .lz .nm,.ltab .lz .kl{min-width:0;overflow-wrap:anywhere}
@media(min-width:621px) and (max-width:900px){
.ltab.ueb .lk,.ltab.ueb .lf,.ltab.ueb .lz{grid-template-columns:minmax(110px,1fr) 104px 96px 70px 96px 44px;gap:8px}
.ltab.trn .lk,.ltab.trn .lf,.ltab.trn .lz{grid-template-columns:minmax(110px,1fr) 104px 96px 76px 50px 96px 44px;gap:8px}
.ltab.ek .lk,.ltab.ek .lf,.ltab.ek .lz{grid-template-columns:minmax(110px,1fr) 104px 80px minmax(90px,1fr) 96px 44px;gap:8px}
.ltab.aufg .lk,.ltab.aufg .lf,.ltab.aufg .lz{grid-template-columns:minmax(150px,2fr) 110px 110px 70px 96px 44px;gap:8px}}
/* Abschnitt im Verwaltungs-Reiter «Einstellungen» (Etappe 5, 05.09.2026 —
   Entscheid Jeannine: Abschnitts-Form MIT feinem Goldrahmen, Handbuch-Knöpfe oben).
   Titel als .ztabkopf, Erklärsatz als .ztabsub, Aktion in .k-flexz. */
.k-absch{background:var(--c-surface,#f8f4ec);border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:12px;padding:14px 16px 16px;margin:0 0 18px;box-shadow:0 1px 3px rgba(12,13,7,.04)}
.k-absch>.ztabkopf{margin-top:0}
.k-absch>.ztabsub{margin-bottom:12px;max-width:80ch}
.k-absch>.k-flexz{margin-top:0!important}
/* Abzeichen app-weit (05.09.2026): lebten nur im Inline-Block von app.html und
   fehlten damit jedem Prüfstand und jeder neuen Seite. Werte unverändert. */
.badge{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:var(--c-accent-tint,#E9C9CC);color:var(--c-accent,#4A1F26)}
.badge.leer{background:var(--c-surface-soft,#f2ece2);color:var(--c-text-3,#8c8577)}
.badge.st-gruen{background:var(--status-success-bg,#DCEBD9);color:var(--status-success,#3F7A45)}
.badge.st-gelb{background:var(--status-warning-bg,#F3E4C9);color:var(--status-warning,#96660B)}
.badge.st-rot{background:var(--status-error-bg,#F5DAD8);color:var(--status-error,#B3261E)}
/* Spuren der Vorlagen-Liste (Etappe 4): Vorlage · Betreff · Herkunft · Stift */
.ltab.mv .lk,.ltab.mv .lf,.ltab.mv .lz{grid-template-columns:minmax(140px,1fr) minmax(120px,1.1fr) 108px 44px;gap:10px}
.ltab.mv.ohnebetreff .lk,.ltab.mv.ohnebetreff .lf,.ltab.mv.ohnebetreff .lz{grid-template-columns:minmax(160px,1fr) 108px 44px}
@media(min-width:621px) and (max-width:900px){.ltab.mv .lk,.ltab.mv .lf,.ltab.mv .lz{grid-template-columns:minmax(110px,1fr) minmax(90px,1fr) 92px 44px;gap:8px}
  .ltab.mv.ohnebetreff .lk,.ltab.mv.ohnebetreff .lf,.ltab.mv.ohnebetreff .lz{grid-template-columns:minmax(120px,1fr) 92px 44px}}
/* Spuren der Protokoll-Tabelle (F-15, 07.09.2026): Zeit · [Coach] · Aktion · Detail — Kopf/Filter/Zeile identisch */
.ltab.pr .lk,.ltab.pr .lf,.ltab.pr .lz{grid-template-columns:128px minmax(120px,.9fr) minmax(150px,1fr) minmax(200px,1.6fr);gap:10px}
.ltab.pr.coach .lk,.ltab.pr.coach .lf,.ltab.pr.coach .lz{grid-template-columns:128px minmax(150px,1fr) minmax(200px,1.8fr)}
.ltab .lz .zt{font-size:12.5px;color:var(--c-text-3,#8c8577);font-variant-numeric:tabular-nums;white-space:nowrap}
.ltab .lz .ak{font-weight:700;font-size:13px;min-width:0;overflow-wrap:anywhere}
.ltab .lz .dt{font-size:12.5px;color:var(--c-text-2,#5a5748);min-width:0;overflow-wrap:anywhere}
.ltab .lz .dt .pid{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--c-accent,#4A1F26);background:var(--karte-innen,#F3DEE0);border-radius:999px;padding:1px 8px;margin-right:4px}
/* Zwischenbreite nur 621–900px — ab 620px greift der zentrale Card-Stack (.ltab .lz 1fr 1fr) */
@media(min-width:621px) and (max-width:900px){.ltab.pr .lk,.ltab.pr .lf,.ltab.pr .lz{grid-template-columns:110px minmax(100px,1fr) minmax(120px,1fr) minmax(160px,1.4fr);gap:8px}}
/* Kennzahlen-Kacheln, Tagesreihe und Signalfläche (Etappe 4, Klientenkarte,
   freigegebene Vorschau 05.09.2026). Zentral, damit künftige Karten sie erben. */
.k-kpiz{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:9px}
.k-kpiz>div{background:var(--c-surface,#f8f4ec);border:1px solid rgba(var(--c-primary-rgb,168,137,80),.28);border-radius:12px;padding:11px 12px;text-align:center}
.k-kpiz .w{font-size:17px;font-weight:800;color:var(--c-accent,#4A1F26);line-height:1.2;font-variant-numeric:tabular-nums}
.k-kpiz .l{font-size:10.5px;color:var(--c-text-2,#5a5748);margin-top:3px}
.k-tagz{display:flex;gap:6px;align-items:center;margin-top:12px;flex-wrap:wrap}
.k-tagz>.tl{font-size:11px;color:var(--c-text-3,#8c8577);margin-right:4px}
.k-tagz>span.t{width:28px;height:28px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;border:1px solid rgba(var(--c-primary-rgb,168,137,80),.4);color:var(--c-accent,#4A1F26)}
.k-tagz>span.t.ohne{border-style:dashed;border-color:rgba(var(--c-primary-rgb,168,137,80),.3);color:var(--c-text-3,#8c8577)}
.k-signal{margin-top:12px;padding:10px 13px;border-radius:10px;font-size:12.5px;line-height:1.55;font-weight:600}
.k-signal.rot{background:var(--status-error-bg,#F5DAD8);color:var(--status-error,#B3261E)}
.k-signal.gelb{background:var(--status-warning-bg,#F3E4C9);color:var(--status-warning,#96660B)}
/* Zähler und offene Schritte sind Karteninhalt, nicht Hinweistext: Ton --c-text-2 (4.5:1) */
.k-zaehler{font-size:12px;font-weight:700;color:var(--c-text-2,#5a5748)}
.badge.offen{background:var(--c-surface-soft,#f2ece2);color:var(--c-text-2,#5a5748);border:1px dashed rgba(var(--c-primary-rgb,168,137,80),.45)}
.k-signal.gruen{background:var(--status-success-bg,#DCEBD9);color:var(--status-success,#3F7A45)}
/* Verlaufsliste der Zykluskarte */
.ltab.zyk .lk,.ltab.zyk .lz{grid-template-columns:minmax(110px,1.3fr) 1fr 1fr 78px;gap:10px}
.ltab.zyk .lz .r.warn{color:var(--status-warning,#96660B);font-weight:700}
/* Der Website-Baustein .t-progress setzt kein display; als <span> bleibt der
   Füllbalken inline und rendert mit Fläche 0. Zentral nachgezogen (05.09.2026) —
   repariert Onboarding und Lizenz-Platzzähler gleichzeitig. */
.t-progress>.t-progress__bar{display:block}
/* Volle Kartenbreite, nichts läuft über */
.ltab,.ztab{max-width:none}
.ltab .lk,.ltab .lf,.ltab .lz,.ltab .lvz,.ztab .zk,.ztab .zz{min-width:0}
@media(max-width:620px){
  .ztab .zk{display:none}
  .ztab .zz{grid-template-columns:1fr 1fr;gap:8px 12px;padding:12px 14px}
  .ztab .zz .abz,.ztab .zz .lab{grid-column:1/-1}
  .ztab .zz .bis::before{content:'gültig bis ';color:var(--c-text-3,#8c8577)}
  .ztab .zz .zeilaktion{grid-column:1/-1;justify-content:flex-start}
  .ztab .zz .zeilaktion .zakt,.ltab .lz .zeilaktion .zakt{width:44px;height:44px}
  .ztab.vtab .vz{grid-template-columns:1fr;gap:5px;padding:11px 14px;min-height:0}
  .ztab.atab .zk{display:none}
  .ztab.atab .zz{grid-template-columns:1fr;gap:8px;padding:12px 14px}
  .ltab .lk{display:none}
  .ltab .lf{grid-template-columns:1fr;gap:8px;padding:10px 14px}
  .ltab .lf span:empty{display:none}
  .ltab .lz,.ltab .lvz{grid-template-columns:1fr 1fr;gap:8px 12px;padding:12px 14px}
  .ltab .lz .zeilaktion{grid-column:1/-1;justify-content:flex-start}
}

/* Neutraler Zustand (V-62, 14.09.2026): Entwurf · Offen · Storniert · Gutschrift — Papierpille mit Goldrand,
   Ergänzung zu .t-status--success/--error/--warning aus trinity-ui.css. */
.t-status--neutral{background:var(--c-surface,#f8f4ec);color:var(--c-text-2,#5a5748);border:1px solid rgba(var(--c-primary-rgb,168,137,80),.35)}
