:root{
  /* «STAHL» — Graphit-Performance (dunkel = App-Default, «im Gym») */
  --ground:#0c0d0f; --panel:#141619; --panel-2:#1c1f23; --line:#282c31; --line-2:#373c42;
  --text:#f3f1ec; --muted:#a5a9af; --faint:#787d83;
  --ember:#ff4d1c; --ember-soft:#ff4d1c1f; --ok:#37d98a; --ok-soft:#37d98a1c;
  --signal:#ff4d1c; --on-ember:#fff;
  --radius:9px; --shadow:0 24px 60px -26px #000c;
  --sans:"Helvetica Neue",Inter,-apple-system,system-ui,Arial,sans-serif;
  --disp:"Arial Narrow","Roboto Condensed","Helvetica Neue Condensed",Arial,sans-serif;
  --mono:"SFMono-Regular",ui-monospace,"Roboto Mono",Menlo,monospace;
}
:root[data-theme="light"]{
  /* «STAHL» — Sand/Graphit (hell = Empfang, gleicher Charakter) */
  --ground:#ece6db; --panel:#faf7f2; --panel-2:#f1ece3; --line:#dcd4c7; --line-2:#c7bdae;
  --text:#191a1c; --muted:#5f5850; --faint:#8b8378;
  --ember:#dd440f; --ember-soft:#dd440f1a; --ok:#1f9e5e; --ok-soft:#1f9e5e1a; --signal:#dd440f;
  --on-ember:#fff;
  --shadow:0 20px 50px -28px #5a4a3322;
}
:root[data-theme="tuerkis"]{
  /* «Türkis» — dunkle Teal-Basis, Pastell-Orange als Signal (Türkis nur als Flächen-Ton) */
  --ground:#06171b; --panel:#0b2429; --panel-2:#113035; --line:#1d4248; --line-2:#2a5b61;
  --text:#eaf4f3; --muted:#93b6b6; --faint:#5f8585;
  --ember:#ffbd65; --ember-soft:#ffbd6522; --signal:#ffbd65; --on-ember:#241500; --ember-ink:#b3781c;
  --ok:#37d98a; --ok-soft:#37d98a1c;
  --shadow:0 24px 60px -26px #000e;
}
:root[data-theme="forest"]{
  /* «Forest» — dunkles Waldgrün, Orange Popsicle als Signal (warmes Off-White aus dem Gelb) */
  --ground:#04231b; --panel:#093026; --panel-2:#103d31; --line:#1d5041; --line-2:#2c6754;
  --text:#f1f3e6; --muted:#a2b6a8; --faint:#6f8a7d;
  --ember:#fc7d14; --ember-soft:#fc7d1422; --signal:#fc7d14; --on-ember:#241000; --ember-ink:#c05c0e;
  --ok:#37d98a; --ok-soft:#37d98a1c;
  --shadow:0 24px 60px -26px #000e;
}
:root[data-theme="aquatic"]{
  /* «Aquatic» — Liberty Blue als Grund, Aquatic Frost als kühler Flächen-Ton, Flamboyant Red als Signal */
  --ground:#0c1433; --panel:#141d45; --panel-2:#1c2757; --line:#293368; --line-2:#3a4784;
  --text:#eaf0ff; --muted:#97a6d0; --faint:#5f6f9e;
  --ember:#ff3b2e; --ember-soft:#ff3b2e26; --signal:#ff3b2e; --on-ember:#fff; --ember-ink:#ff6a5e;
  --ok:#58d4f9; --ok-soft:#58d4f91e;
  --shadow:0 24px 60px -26px #000e;
}
:root[data-theme="cherry"]{
  /* «Black Cherry» — Black Cherry als Grund, Carousel Pink als heller Ton, Perfect Rose als Signal */
  --ground:#2a0c1b; --panel:#3a1526; --panel-2:#481b31; --line:#5a2741; --line-2:#743650;
  --text:#fbe9f0; --muted:#d29cb2; --faint:#9c6c81;
  --ember:#be2c55; --ember-soft:#be2c5526; --signal:#be2c55; --on-ember:#fff; --ember-ink:#e35b7f;
  --ok:#37d98a; --ok-soft:#37d98a1c;
  --shadow:0 24px 60px -26px #000e;
}
/* — Helle «Tag»-Varianten der vier Farb-Themes (heller Ton des jeweiligen Farbklangs, Signal bleibt der warme/farbige Akzent) — */
:root[data-theme="tuerkis-hell"]{
  --ground:#e8f4f3; --panel:#f6fbfb; --panel-2:#dfeeed; --line:#c6e0de; --line-2:#a7cecb;
  --text:#0f2a2b; --muted:#4d6f70; --faint:#78999a;
  --ember:#f2a51f; --ember-soft:#f2a51f22; --signal:#f2a51f; --on-ember:#2a1c00; --ember-ink:#b3781c;
  --ok:#1f9e5e; --ok-soft:#1f9e5e1a;
  --shadow:0 20px 50px -28px #14403e26;
}
:root[data-theme="forest-hell"]{
  --ground:#f3f4e0; --panel:#fbfcee; --panel-2:#edefd6; --line:#dadcbd; --line-2:#c1c39d;
  --text:#20261a; --muted:#5b6147; --faint:#8a8f6f;
  --ember:#fc7d14; --ember-soft:#fc7d1422; --signal:#fc7d14; --on-ember:#241000; --ember-ink:#c05c0e;
  --ok:#1f9e5e; --ok-soft:#1f9e5e1a;
  --shadow:0 20px 50px -28px #2a3a1826;
}
:root[data-theme="aquatic-hell"]{
  --ground:#e6f5fd; --panel:#f4fbfe; --panel-2:#dceff9; --line:#c1e3f3; --line-2:#9dd2ed;
  --text:#0c2036; --muted:#496379; --faint:#7592a8;
  --ember:#d92a1f; --ember-soft:#d92a1f1a; --signal:#d92a1f; --on-ember:#fff; --ember-ink:#c02015;
  --ok:#0e8fc4; --ok-soft:#0e8fc41a;
  --shadow:0 20px 50px -28px #1a3a5526;
}
:root[data-theme="cherry-hell"]{
  --ground:#fce9ef; --panel:#fff6f9; --panel-2:#f9dee7; --line:#f2c8d5; --line-2:#e5a8bc;
  --text:#2a0c1b; --muted:#7a4657; --faint:#a87487;
  --ember:#be2c55; --ember-soft:#be2c5518; --signal:#be2c55; --on-ember:#fff; --ember-ink:#9c2145;
  --ok:#1f9e5e; --ok-soft:#1f9e5e1a;
  --shadow:0 20px 50px -28px #5a1a3026;
}
/* — Semantische Zusatz-Tokens (Audit 2026-07-18): fehlende Danger/Warn-Familie +
   Erfolg-/Plan-Fills, die bisher als Streu-Hex existierten. Werte = bisherige
   Literale (theme-neutral, damit hell/dunkel unverändert bleiben). — */
:root{
  --danger:#d33a2c;        /* solide destruktive Aktion / Kante */
  --danger-hi:#e0574b;     /* Hover / Text-Highlight */
  --danger-strong:#b92f23; /* aktiver/dunklerer Hover */
  --danger-soft:#d33a2c1a; /* Tint-Fläche */
  --ok-solid:#46b26a;      /* solide Erfolgs-Fläche (Termine/Kalender absolviert) */
  --ok-ink:#2f8f57;        /* Erfolgs-Text auf heller Tint-Fläche */
  --ember-ink:#c85a1e;     /* Signal-Text auf heller Tint-Fläche (geplant) */
}
*{box-sizing:border-box}
html,body{margin:0}
/* Scrollbalken-Platz immer reservieren → kein horizontaler Sprung beim Seitenwechsel */
html{scrollbar-gutter:stable}
@supports not (scrollbar-gutter:stable){html{overflow-y:scroll}}
body{font-family:var(--sans);background:radial-gradient(130% 80% at 50% -12%, #17191d 0%, var(--ground) 52%);
  color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}
:root[data-theme="light"] body{background:radial-gradient(130% 80% at 50% -12%, #f6f2ec 0%, var(--ground) 58%)}
:root[data-theme="tuerkis-hell"] body,
:root[data-theme="forest-hell"] body,
:root[data-theme="aquatic-hell"] body,
:root[data-theme="cherry-hell"] body{background:radial-gradient(130% 80% at 50% -12%, #ffffff 0%, var(--ground) 60%)}
a{color:var(--ember)}
.wrap{max-width:1080px;margin:0 auto;padding:22px 16px 64px}
.wrap-narrow{max-width:440px}

/* header */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none}
.brand .klogo{width:44px;height:38px;display:inline-block;background-color:var(--text);
  -webkit-mask:url(/static/img/kraft-logo.png) left center/contain no-repeat;
  mask:url(/static/img/kraft-logo.png) left center/contain no-repeat}
.brand span{color:var(--muted);font-size:11px;letter-spacing:.28em;text-transform:uppercase}
.brandgroup{display:flex;align-items:center;gap:14px}
.brandgroup .who{color:var(--text);font-size:14px;font-weight:700}
.navr{display:flex;align-items:center;gap:10px}
.navr .who{color:var(--muted);font-size:13px}
.adminbadge{display:inline-block;font-size:9px;font-weight:800;letter-spacing:.08em;vertical-align:middle;
  padding:2px 6px;border-radius:5px;background:var(--ember);color:var(--on-ember);margin-left:4px}
.icon-btn.logout{color:var(--muted);background:transparent;border-color:var(--line)}
.icon-btn.logout:hover{color:var(--danger);border-color:var(--danger);background:transparent}
.theme-btn,.icon-btn{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);
  height:36px;border-radius:var(--r-pill);cursor:pointer;font-size:13px;padding:0 14px;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.theme-btn{width:36px;justify-content:center;padding:0}

.pill{font-size:11px;font-weight:700;letter-spacing:.04em;padding:5px 10px;border-radius:var(--r-pill);
  background:var(--panel-2);color:var(--muted);border:1px solid var(--line);display:inline-block}
.pill.accent{background:var(--ember-soft);color:var(--ember);border-color:transparent}
.pill.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.pill.photo{background:var(--ember-soft);color:var(--ember);border-color:transparent}

/* login */
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:30px 26px;margin-top:8vh}
.login-card h1{margin:0 0 4px;font-size:22px}
.login-card p{margin:0 0 20px;color:var(--muted);font-size:14px}
label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);
  font-weight:700;margin:14px 0 6px}
input[type=email],input[type=password],input[type=text],input[type=number],input[type=date],input[type=time]{
  width:100%;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;
  padding:12px 14px;color:var(--text);font:inherit;font-size:15px}
input:focus{outline:none;border-color:var(--ember)}
select{width:100%;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;
  padding:11px 12px;color:var(--text);font:inherit;font-size:14px;cursor:pointer}
select:focus{outline:none;border-color:var(--ember)}
/* Datumsfelder ins Design einpassen: Ziffern tabellarisch, Kalender-Icon dezent + theme-aware */
input[type=date]{font-variant-numeric:tabular-nums;cursor:pointer}
input[type=date]::-webkit-datetime-edit{color:var(--text)}
input[type=date]::-webkit-calendar-picker-indicator{opacity:.5;cursor:pointer;border-radius:4px;
  transition:opacity .14s var(--ease-out),background-color .14s}
input[type=date]:hover::-webkit-calendar-picker-indicator{opacity:.85;background:var(--panel-2)}
:root[data-theme="dark"] input[type=date]::-webkit-calendar-picker-indicator,
:root[data-theme="tuerkis"] input[type=date]::-webkit-calendar-picker-indicator,
:root[data-theme="forest"] input[type=date]::-webkit-calendar-picker-indicator,
:root[data-theme="aquatic"] input[type=date]::-webkit-calendar-picker-indicator,
:root[data-theme="cherry"] input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.55}
:root[data-theme="dark"] input[type=date]:hover::-webkit-calendar-picker-indicator,
:root[data-theme="tuerkis"] input[type=date]:hover::-webkit-calendar-picker-indicator,
:root[data-theme="forest"] input[type=date]:hover::-webkit-calendar-picker-indicator,
:root[data-theme="aquatic"] input[type=date]:hover::-webkit-calendar-picker-indicator,
:root[data-theme="cherry"] input[type=date]:hover::-webkit-calendar-picker-indicator{opacity:.9;background:var(--line)}
textarea{width:100%;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;color:var(--text);font:inherit;font-size:14px;resize:vertical}
textarea:focus{outline:none;border-color:var(--ember)}
.btn{appearance:none;border:0;background:var(--ember);color:var(--on-ember);font:inherit;font-weight:700;
  padding:12px 18px;border-radius:10px;cursor:pointer;font-size:15px;line-height:1.2}
.btn:hover{filter:brightness(1.06)}
.btn.block{width:100%;margin-top:22px}
.btn.ghost{background:var(--panel);border:1px solid var(--line);color:var(--text)}
.err{background:#f0651f18;border:1px solid #f0651f55;color:var(--ember);padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:6px}
.flash-ok{background:var(--ok-soft);border:1px solid var(--ok);color:var(--ok);padding:11px 14px;border-radius:10px;font-size:14px;font-weight:600;margin-bottom:12px}
.newclient{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end;margin-bottom:6px}
.newclient .mini label{margin:0 0 4px}
.newclient input{padding:10px 12px;font-size:14px}
.newclient button{grid-column:1 / -1}
@media(max-width:520px){.newclient{grid-template-columns:1fr}}
.demo-hint{margin-top:20px;font-size:12px;color:var(--faint);line-height:1.7;border-top:1px solid var(--line);padding-top:14px}

/* cards / grid */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.grid2{display:grid;grid-template-columns:230px 1fr;gap:16px}
@media(max-width:760px){.grid2{grid-template-columns:1fr}}

/* client list */
.clients{padding:14px}
.clients .lab{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--faint);padding:2px 6px 10px;display:flex;justify-content:space-between}
.clients ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.clients li a{padding:10px 12px;border-radius:10px;font-size:14px;color:var(--muted);cursor:pointer;
  display:flex;align-items:center;gap:9px;text-decoration:none}
.clients li a:hover{background:var(--panel-2);color:var(--text)}
.clients li a.on{background:var(--ember-soft);color:var(--text)}
.av{width:26px;height:26px;border-radius:50%;background:var(--panel-2);border:1px solid var(--line);
  display:grid;place-items:center;font-size:11px;font-weight:800;color:var(--muted);flex:none}
.on .av{background:var(--ember);color:var(--on-ember);border-color:transparent}

/* editor */
.editor{padding:18px 20px 22px}
.ehead{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.ehead h2{margin:0;font-size:20px;font-weight:800}
.sub{color:var(--muted);font-size:13px;margin-top:5px}
.goal{margin-top:2px;color:var(--faint);font-size:12px;font-style:italic}
.daylabel{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:20px 0 8px;font-weight:700}
/* klare Section-Headlines (Coach-Kundenseite) */
.sectiontitle{display:flex;align-items:center;gap:10px;font-size:var(--fs-section);font-weight:800;color:var(--text);
  margin:32px 0 14px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.sectiontitle:first-of-type{margin-top:6px}
.sectiontitle .st-icon{font-size:19px;line-height:1}
.sectiontitle .st-sub{font-size:12px;font-weight:600;color:var(--faint);text-transform:none;letter-spacing:0}
/* klickbare Grafik mit Detail-Hinweis */
.clickchart{position:relative;cursor:pointer;transition:transform .12s}
.clickchart:hover{transform:translateY(-2px)}
.clickchart .cc-detail{position:absolute;top:14px;right:14px;font-size:10px;font-weight:700;color:var(--muted);
  opacity:0;transition:opacity .15s}
.clickchart:hover .cc-detail{opacity:1}
/* Trainingsplan anlegen (leerer Zustand) */
.createplan{background:var(--panel-2);border:1px dashed var(--ember);border-radius:12px;padding:16px}
.cp-lead{font-size:13px;color:var(--muted);line-height:1.5;margin-bottom:12px}
/* Plan-Akkordeon (Coach) */
.dayacc{border:1px solid var(--line);border-radius:12px;background:var(--panel-2);margin:8px 0}
.dayacc>summary{border-radius:12px}
.dayacc[open]>summary{border-radius:12px 12px 0 0}
.dayacc[open]{border-color:var(--line-2);box-shadow:inset 3px 0 0 var(--ember)}
.dayacc-sum{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;cursor:pointer;
  list-style:none;font-weight:700;font-size:14px}
.dayacc-sum::-webkit-details-marker{display:none}
.dayacc-meta{font-size:12px;color:var(--muted);font-weight:600;white-space:nowrap}
.dayacc[open] .dayacc-meta{color:var(--ember)}
.dayacc .exlist{padding:0 12px}
.dayacc .addbox{padding:0 12px 12px}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
table{border-collapse:collapse;width:100%;min-width:640px;font-size:13px}
th{background:var(--panel-2);color:var(--faint);text-transform:uppercase;letter-spacing:.08em;font-size:10px;
  font-weight:700;text-align:left;padding:9px 10px}
td{padding:9px 10px;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
.gid{font-weight:800;color:var(--ember)}
.exname{font-weight:600;color:var(--text)}
.vlink{color:var(--ember);font-size:12px;text-decoration:none;border-bottom:1px dashed var(--ember);cursor:pointer;background:none;border-top:0;border-left:0;border-right:0;font:inherit;padding:0}
.vlink.muted{color:var(--muted);border-color:var(--faint)}
.muted{color:var(--muted)}

/* add row + autocomplete */
.addbox{margin-top:14px;position:relative}
.addbox form{display:grid;grid-template-columns:60px 1fr 70px 60px 70px 70px auto;gap:8px;align-items:end}
@media(max-width:760px){.addbox form{grid-template-columns:1fr 1fr}}
.addbox .mini label{margin:0 0 4px}
.addbox input{padding:10px 12px;font-size:14px}
.ac{position:absolute;left:60px;right:0;top:70px;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;box-shadow:var(--shadow);overflow:hidden;z-index:5;max-height:280px;overflow-y:auto}
.ac div{padding:10px 14px;font-size:13px;cursor:pointer;display:flex;justify-content:space-between;gap:10px}
.ac div:hover{background:var(--ember-soft)}
.ac div span{color:var(--faint);font-size:11px}
.ac div span:first-child{color:var(--text);font-size:13px}
.ac-id{color:var(--ember);font-weight:800;font-variant-numeric:tabular-nums;margin-right:2px}
.hint{margin-top:14px;font-size:12px;color:var(--faint);display:flex;gap:8px;align-items:flex-start}
.hint b{color:var(--muted)}

/* ---- portal (mobile) ---- */
.phead{padding:2px 2px 16px}
.phead .hi{font-size:13px;color:var(--muted)}
.phead h1{margin:2px 0 12px;font-size:26px;font-weight:800;letter-spacing:-.01em}
/* Porträtfoto (Kunde) */
.phead-av{display:flex;align-items:center;gap:16px}
.phead-av .phead-txt h1{margin:2px 0 4px}
.avform{margin:0;flex:none}
.avatar-edit{position:relative;display:block;width:84px;height:84px;border-radius:50%;cursor:pointer;
  background:var(--panel-2);border:1px solid var(--line);flex:none;
  box-shadow:inset 0 0 0 3px var(--ground),0 0 0 1px var(--line)}
.avatar-edit img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}
.avatar-ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:50%;
  font-size:28px;font-weight:800;color:var(--ember);text-transform:uppercase;letter-spacing:.02em}
.avatar-cam{position:absolute;right:-2px;bottom:-2px;width:28px;height:28px;border-radius:50%;
  background:var(--ember);color:var(--on-ember);display:flex;align-items:center;justify-content:center;
  font-size:13px;box-shadow:0 0 0 3px var(--ground);transition:transform .14s var(--ease-out)}
.avatar-edit:hover .avatar-cam{transform:scale(1.08)}
.avatar-edit:active{transform:scale(.97)}
.avatar-hint{font-size:12px;color:var(--faint)}
/* Porträtfoto-Cropper */
.cropmodal{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.62);display:flex;align-items:center;justify-content:center;padding:20px}
.cropmodal[hidden]{display:none}
.crop-panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px;width:100%;max-width:320px;box-shadow:var(--shadow)}
.crop-title{font-weight:800;font-size:15px;margin-bottom:14px;text-align:center}
.crop-view{width:260px;height:260px;max-width:100%;margin:0 auto;overflow:hidden;border-radius:50%;position:relative;
  background:var(--panel-2);border:1px solid var(--line);touch-action:none;cursor:grab}
.crop-view:active{cursor:grabbing}
#cropImg{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform;user-select:none;-webkit-user-drag:none;max-width:none}
.crop-hint{font-size:11.5px;color:var(--faint);text-align:center;margin-top:12px}
.crop-zoom{width:100%;margin:8px 0 14px;accent-color:var(--ember)}
.crop-actions{display:flex;gap:10px}
.crop-actions .btn{flex:1}
.meso{display:flex;gap:8px;flex-wrap:wrap}
.mesoline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:1px}
.mesometa{font-size:12px;color:var(--muted);font-weight:600}
.dayfokus{display:block;font-size:12.5px;color:var(--muted);margin:0 2px 10px}
.daytitle{display:flex;align-items:center;justify-content:space-between;margin:18px 0 8px}
.daytitle .t{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:700}
.daytitle .d{font-size:12px;color:var(--faint)}
.exlist{display:flex;flex-direction:column;gap:10px}
.grp{font-size:11px;font-weight:800;letter-spacing:.16em;color:var(--faint);padding:8px 2px 0}
.ex{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:14px}
.ex.done{border-color:var(--ok-soft);box-shadow:inset 0 0 0 1px var(--ok-soft)}
.ex .top{display:flex;gap:10px;align-items:flex-start;justify-content:space-between}
.ex .grpid{font-weight:800;color:var(--ember);font-size:15px;min-width:26px}
.ex .name{font-weight:700;font-size:15px;line-height:1.25;flex:1}
.video{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:32px;font-size:12px;font-weight:700;color:var(--text);
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);padding:0 13px;cursor:pointer;white-space:nowrap}
.video:hover{border-color:var(--ember);color:var(--ember)}
.photowrap{margin-top:12px;display:none;gap:8px;flex-wrap:wrap}
.photowrap.show{display:flex}
.photowrap img{max-width:100%;border-radius:12px;border:1px solid var(--line);display:block}
.photowrap img:only-child{width:100%;object-fit:cover}
.photowrap img:not(:only-child){flex:1 1 46%;min-width:120px;aspect-ratio:1;object-fit:cover}
.soll{margin:10px 0 4px;display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.soll b{color:var(--text);font-variant-numeric:tabular-nums}
.soll .lab{color:var(--faint);text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-weight:700;margin-right:4px}
.sets{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.set{display:grid;grid-template-columns:26px 1fr 1fr 40px;gap:8px;align-items:center}
.set .no{font-size:11px;font-weight:800;color:var(--faint)}
.stp{display:flex;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.stp button{appearance:none;border:0;background:transparent;color:var(--muted);width:36px;height:44px;font-size:17px;cursor:pointer}
.stp button:hover{color:var(--ember)}
.stp .val{flex:1;text-align:center;font-weight:800;font-size:15px;font-variant-numeric:tabular-nums;padding:2px 0}
.stp .val small{display:block;font-size:9px;color:var(--faint);font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin-top:-2px}
.chk{appearance:none;border:2px solid var(--line);width:34px;height:38px;border-radius:10px;cursor:pointer;position:relative;background:var(--panel)}
.chk:checked{background:var(--ok);border-color:var(--ok)}
.chk:checked::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-weight:800;font-size:16px}
.savebar{position:sticky;bottom:0;margin-top:16px;padding:12px 0}
.savebar .btn{width:100%}
.saved-toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--ok);color:#fff;
  padding:10px 18px;border-radius:var(--r-pill);font-weight:700;font-size:14px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.25s}
.saved-toast.show{opacity:1}
.videowrap{margin-top:12px;border-radius:12px;overflow:hidden;border:1px solid var(--line);display:none}
.videowrap.show{display:block}
.videowrap iframe{width:100%;aspect-ratio:16/9;border:0;display:block}
/* Generiertes 9:16-Übungsvideo (fal) — hochkant, zentriert */
.videowrap.vgen{border:0;background:#000;display:none;text-align:center}
.videowrap.vgen.show{display:block}
.videowrap.vgen video{max-width:100%;max-height:70vh;aspect-ratio:9/16;object-fit:contain;
  margin:0 auto;display:block;border-radius:12px;background:#000}
/* Tag-Umschalter */
.dayseg{display:flex;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);padding:4px;margin:4px 0 14px}
.dayseg button{flex:1;appearance:none;border:0;background:transparent;color:var(--muted);font:inherit;font-weight:700;
  font-size:13px;padding:9px 10px;border-radius:var(--r-pill);cursor:pointer;transition:.15s}
.dayseg button.on{background:var(--ember);color:var(--on-ember);box-shadow:0 4px 14px -6px var(--ember)}
.dayview{display:none}
.dayview.on{display:block}
/* Live-Fortschritt pro Tag */
.dayprog{display:flex;align-items:center;gap:10px;margin:2px 2px 12px}
.dayprog .bar{flex:1;height:6px;background:var(--panel-2);border-radius:var(--r-pill);overflow:hidden}
.dayprog .bar i{display:block;height:100%;background:var(--ok);width:0;transition:width .3s}
.dayprog .cnt{font-size:11px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
/* "letztes Mal" */
.lastmal{color:var(--faint);font-size:11px;font-style:italic;align-self:center}
/* Pausen-Timer — zentrales Overlay, Rest wird unscharf */
.rest-overlay{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;
  background:rgba(8,10,12,.5);backdrop-filter:blur(12px) saturate(.8);-webkit-backdrop-filter:blur(12px) saturate(.8)}
.rest-overlay.show{display:flex;animation:fade .2s ease}
.rest-inner{display:flex;flex-direction:column;align-items:center;gap:16px}
.rest-circle{width:210px;height:210px;border-radius:50%;background:var(--ok);color:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  box-shadow:0 24px 70px -14px rgba(70,178,106,.65), inset 0 0 0 6px rgba(255,255,255,.12);
  animation:restpulse 2s ease-in-out infinite}
.rest-circle span{font-size:78px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.rest-circle small{font-size:12px;text-transform:uppercase;letter-spacing:.16em;margin-top:6px;opacity:.9}
.rest-hint{color:#fff;opacity:.7;font-size:13px;font-weight:600}
@keyframes restpulse{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
@media (prefers-reduced-motion:reduce){.rest-circle{animation:none}}

/* Sterne-Feedback */
.feedback{padding:16px;margin-top:16px;text-align:center}
.fb-q{font-weight:800;font-size:15px}
.fb-sub{font-size:12px;color:var(--muted);margin-top:2px}
.stars{display:flex;justify-content:center;gap:4px;margin-top:12px}
.star{appearance:none;border:0;background:transparent;font-size:36px;line-height:1;cursor:pointer;
  color:var(--line);transition:transform .12s, color .12s;padding:0 3px}
.star.on{color:var(--ember)}
.star:hover{transform:scale(1.15)}
.fb-done{font-size:13px;color:var(--ok);font-weight:700;margin-top:10px;opacity:0;transition:opacity .2s}
.fb-done.show{opacity:1}

/* Events */
.eventcard{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:14px 16px;
  border-left:4px solid var(--ember);margin-bottom:10px}
.eventcard.past{border-left-color:var(--faint);opacity:.7}
.ev-top{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.ev-title{font-weight:800;font-size:16px}
.ev-when{font-size:12px;color:var(--ember);font-weight:700;white-space:nowrap}
.eventcard.past .ev-when{color:var(--faint)}
.ev-meta{font-size:12px;color:var(--muted);margin-top:2px}
.ev-desc{font-size:13px;color:var(--muted);line-height:1.5;margin-top:8px}

/* Übungs-DB */
.dbstats{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 14px}
.dbstats .pill{font-variant-numeric:tabular-nums}
.searchbar{display:flex;gap:8px;margin-bottom:14px}
.searchbar input{flex:1}
.exdb-item{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:8px}
.exdb-top{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.exdb-name{font-weight:700;font-size:14px}
.exdb-mg{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.08em}
.exdb-badges{display:flex;gap:5px;margin-top:4px}
.exdb-descr{font-size:12px;color:var(--muted);margin-top:6px}

/* Übungs-DB — volle Breite, Grid */
.dbtoolbar{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:14px}
.dbtoolbar .searchbar{flex:1;min-width:240px;margin:0}
.newexline{min-width:200px}
.sortbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}
.sortlab{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:800;margin-right:4px}
.linkbtn.danger{color:var(--danger);border-color:transparent;background:transparent}
.linkbtn.danger:hover{color:#fff;background:var(--danger)}
.mgfilter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}
.mgsellab{font-size:12px;font-weight:700;color:var(--muted)}
.mgsel{width:auto;min-width:210px}
.mgchip{text-decoration:none;font-size:12px;font-weight:700;padding:6px 12px;border-radius:var(--r-pill);
  background:var(--panel);border:1px solid var(--line);color:var(--muted);transition:.12s}
.mgchip:hover{border-color:var(--ember);color:var(--ember)}
.mgchip.on{background:var(--ember);color:var(--on-ember);border-color:transparent}
.dbcount{font-size:12px;color:var(--faint);margin-bottom:10px;font-weight:600}
.exgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.exg-card{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.exg-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.exg-name{font-weight:700;font-size:14px;line-height:1.25}
.exg-id{color:var(--faint);font-weight:800;font-size:11px;font-variant-numeric:tabular-nums}
.exg-mg{font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.exg-badges{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap}
.muted-pill{color:var(--faint)}
.exg-descr{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.45}
.exg-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
.exg-edit{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);
  width:34px;height:34px;border-radius:9px;cursor:pointer;font-size:14px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  transition:transform var(--dur-press) var(--ease-out),border-color var(--dur-press) var(--ease-out),color var(--dur-press) var(--ease-out)}
.exg-edit:hover{border-color:var(--ember);color:var(--ember)}
.exg-edit:active{transform:scale(.95)}
.exg-num{font-size:11px;font-weight:800;color:var(--faint);font-variant-numeric:tabular-nums}
.pager{display:flex;align-items:center;justify-content:center;gap:16px;margin:18px 0}
.pageinfo{font-size:12px;color:var(--muted);font-weight:600}

/* Coach-Dashboard */
.kpirow{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
@media(max-width:640px){.kpirow{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow)}
.kpi-n{display:block;font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}
.kpi-n em{font-size:16px;color:var(--ember);font-style:normal;margin-left:2px}
.kpi-l{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-top:6px;display:block}
.kpi.warn .kpi-n{color:var(--ok)}
.dash-c.warn{background:#d33a2c22;color:var(--danger-hi);font-size:12px;padding:3px 9px;border-radius:var(--r-pill)}
/* Aufmerksamkeit-Box hervorheben */
.dashcard.attention{border:1.5px solid var(--danger);background:linear-gradient(180deg,var(--danger-soft),transparent 60%),var(--panel);
  box-shadow:0 0 0 4px var(--danger-soft), var(--shadow)}
.dashcard.attention .dash-t{color:var(--danger-hi)}
.dashcard.attention .dash-todo{border-color:#d33a2c44}
.dashcard.attention .dash-todo:hover{border-color:var(--danger)}
.traingrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}
@media(max-width:760px){.traingrid{grid-template-columns:1fr}}
.dashgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;align-items:start}
.dashmasonry{columns:2;column-gap:14px}
.dashmasonry > .dashcard{break-inside:avoid;-webkit-column-break-inside:avoid;margin:0 0 14px}
@media(max-width:820px){.dashmasonry{columns:1}}
.dashcard{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:var(--shadow)}
.dash-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:12px}
.dash-t{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:800}
.dash-c{font-size:15px;font-weight:800;color:var(--ember)}
.dash-c.ok{font-size:11px;background:var(--ok-soft);color:var(--ok);padding:3px 9px;border-radius:var(--r-pill)}
.dash-client{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line);text-decoration:none;color:var(--text)}
.dash-client:first-of-type{border-top:0}
.cc-av.sm{width:32px;height:32px;font-size:12px}
.dc-name{flex:1;font-weight:600;font-size:14px}
.dc-stars{font-size:12px;color:var(--line)}.dc-stars .on{color:var(--ember)}
.dc-when{font-size:11px;color:var(--ok);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.dc-when.muted{color:var(--faint)}
.dash-empty{color:var(--faint);font-size:13px;padding:6px 0}
.dash-msg{display:block;padding:9px 0;border-top:1px solid var(--line);text-decoration:none;color:var(--text)}
.dash-msg:first-of-type{border-top:0}
.dash-msg.unanswered{border-left:3px solid var(--ok);padding-left:10px;margin-left:-10px;background:var(--ok-soft);border-radius:0 8px 8px 0}
.dm-top{display:flex;justify-content:space-between;gap:8px}
.dm-name{font-weight:700;font-size:13px}
.dm-you{color:var(--faint);font-weight:600}
.dm-time{font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}
.dm-text{font-size:13px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-sub2{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:700;margin:10px 0 4px}
.dash-event{display:flex;align-items:baseline;gap:8px;padding:6px 0;font-size:13px}
.de-date{font-weight:700;font-variant-numeric:tabular-nums;color:var(--ember);white-space:nowrap}
.de-title{flex:1;font-weight:600}
.de-time{font-size:11px;color:var(--faint)}
.dash-todo{display:block;font-size:13px;padding:7px 10px;background:var(--panel-2);border:1px solid var(--line);
  border-radius:9px;margin-bottom:5px;text-decoration:none;color:var(--text)}
a.dash-todo:hover{border-color:var(--ember)}

/* Kundenübersicht — Karten-Grid */
.clientgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.clientcard{display:block;background:var(--panel-2);border:1px solid var(--line);border-radius:14px;
  padding:16px;text-decoration:none;color:var(--text);transition:.15s}
.clientcard:hover{border-color:var(--ember);transform:translateY(-2px)}
.cc-top{display:flex;align-items:center;gap:12px}
.cc-av{width:44px;height:44px;border-radius:50%;background:var(--ember);color:var(--on-ember);display:grid;place-items:center;
  font-size:16px;font-weight:800;flex:none;overflow:hidden}
.cc-av img{width:100%;height:100%;object-fit:cover;display:block}
/* Avatar im Kundenprofil-Kopf */
.ehead-id{display:flex;align-items:center;gap:14px;min-width:0}
.ehead-av{width:52px;height:52px;border-radius:50%;flex:none;object-fit:cover;display:block;border:1px solid var(--line)}
.ehead-av.ph{display:grid;place-items:center;background:var(--ember-soft);color:var(--ember);font-weight:800;font-size:18px;text-transform:uppercase}
.bk-titel{font-weight:700;font-size:14px}
.bookform{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.bookform > input[type=text]{width:100%}
.cc-name{flex:1;min-width:0}
.cc-n{font-weight:800;font-size:16px;line-height:1.2}
.cc-abo{font-size:12px;color:var(--muted);margin-top:2px}
.cc-unread{background:var(--ok);color:#fff;font-size:11px;font-weight:800;min-width:20px;height:20px;padding:0 6px;
  border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center}
.cc-training{display:flex;align-items:center;gap:7px;margin-top:12px;font-size:13px;font-weight:600;color:var(--text)}
.cc-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);flex:none;box-shadow:0 0 0 3px var(--ok-soft)}
.cc-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}
.cc-foot{font-size:11px;color:var(--faint);margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}

/* Modal (Bearbeiten-Fenster) */
.modal-overlay{position:fixed;inset:0;z-index:120;display:none;align-items:flex-start;justify-content:center;
  padding:5vh 16px;background:rgba(8,10,12,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);overflow-y:auto}
.modal-overlay.show{display:flex;animation:fade .18s ease}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);
  width:100%;max-width:600px}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;font-size:19px;font-weight:800}
.modal-x{appearance:none;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);
  width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:14px}
.modal-x:hover{color:var(--ember);border-color:var(--ember)}
.modal-body{padding:20px 22px 24px}
/* Modal-Footer: Primär-Aktion unten rechts, klebt beim Scrollen unten */
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;
  border-top:1px solid var(--line);background:var(--panel);border-radius:0 0 18px 18px}
.modal-foot .btn{min-width:130px}
/* Foto-Aktionen: Generieren + Hochladen auf einer Zeile, kompakt */
.photoactions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.photoactions form{margin:0}
.photoupload{display:flex;gap:8px;align-items:center}
.btn.sm{padding:8px 14px;font-size:13px}
.fileinput.sm{padding:8px 11px;font-size:12px;max-width:190px}
/* Video-Test-Block (fal I2V) */
.vidgen-row{display:flex;gap:10px;flex-wrap:wrap}
.vidgen-f{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--faint);
  text-transform:uppercase;letter-spacing:.06em;font-weight:700;flex:1;min-width:130px}
.vidgen-f select{font-size:13px;text-transform:none;letter-spacing:normal;color:var(--text)}
.exvidlist{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0}
.exvid{position:relative;width:150px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel-2)}
.exvid.fav{border-color:var(--ember);box-shadow:0 0 0 2px var(--ember)}
.exvid video{width:100%;aspect-ratio:9/16;object-fit:cover;display:block;background:#000}
.exvid-active{position:absolute;top:6px;left:6px;background:var(--ember);color:var(--on-ember);font-size:10px;
  font-weight:800;padding:3px 8px;border-radius:var(--r-pill);letter-spacing:.02em}
.exvid-bar{display:flex;gap:6px;padding:6px;flex-wrap:wrap;align-items:center}
.exvid-bar form{margin:0}
.exvid-btn{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);
  border-radius:8px;padding:5px 9px;font-size:11px;font-weight:700;cursor:pointer;transition:all .15s ease}
.exvid-btn:hover{color:var(--text);border-color:var(--muted)}
.exvid-btn.fav{flex:1}
.exvid-btn.fav.on{background:var(--ember);border-color:var(--ember);color:var(--on-ember)}
.exvid-btn.danger:hover{color:var(--danger-hi);border-color:var(--danger-hi)}
/* Video-Vorschau im Bearbeiten-Modal */
.videoprev{margin-top:10px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.videoprev[hidden]{display:none}
.videoprev-thumb{position:relative;width:168px;aspect-ratio:16/9;border-radius:10px;overflow:hidden;
  border:1px solid var(--line);cursor:pointer;flex:0 0 auto;background:#000}
.videoprev-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.videoprev-thumb iframe{width:100%;height:100%;border:0;display:block}
.videoprev-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:26px;color:#fff;background:rgba(0,0,0,.28);transition:background .15s ease;pointer-events:none}
.videoprev-thumb:hover .videoprev-play{background:rgba(0,0,0,.42)}
.videoprev-del{appearance:none;background:transparent;border:1px solid var(--line);color:var(--muted);
  border-radius:9px;padding:7px 12px;font-size:12px;font-weight:700;cursor:pointer;
  transition:color .15s ease,border-color .15s ease}
.videoprev-del:hover{color:var(--danger-hi);border-color:var(--danger-hi)}
.photostrip{display:flex;gap:10px;flex-wrap:wrap}
.photothumb{position:relative;width:132px;height:132px;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
/* Foto-Nummer (1..n, links nach rechts) — passt zu «Foto N» in der Video-Auswahl */
.photothumb .pt-num{position:absolute;top:6px;left:50%;transform:translateX(-50%);z-index:2;
  min-width:20px;height:20px;padding:0 5px;border-radius:var(--r-pill);background:rgba(0,0,0,.6);
  color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;
  backdrop-filter:blur(4px)}
.photothumb img{width:100%;height:100%;object-fit:cover;display:block}
.photothumb form{position:absolute;top:6px;right:6px;margin:0;z-index:2}
.photothumb button{appearance:none;border:0;background:rgba(0,0,0,.5);color:#fff;width:24px;height:24px;
  border-radius:50%;cursor:pointer;font-size:12px;line-height:1;display:flex;align-items:center;
  justify-content:center;backdrop-filter:blur(4px);transition:background .15s ease,transform .12s ease}
.photothumb button:hover{background:rgba(0,0,0,.72)}
.photothumb button:active{transform:scale(.92)}
/* Übungsfotos im Kundenportal */
.exfotos{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 2px}
.exfoto{width:112px;aspect-ratio:4/5;border-radius:12px;overflow:hidden;border:1px solid var(--line);
  padding:0;background:var(--panel-2);cursor:zoom-in;display:block;transition:transform .14s var(--ease-out)}
.exfoto:active{transform:scale(.97)}
.exfoto img{width:100%;height:100%;object-fit:cover;display:block}
/* Übungsfotos in der Plan-Ansicht (Coach) — kompakt, anklickbar */
.planfotos{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.planfoto{width:72px;aspect-ratio:4/5;border-radius:10px;overflow:hidden;border:1px solid var(--line);
  background:var(--panel-2);cursor:zoom-in;display:block;transition:transform .14s var(--ease-out),border-color .14s ease}
.planfoto:hover{border-color:var(--ember)}
.planfoto:active{transform:scale(.96)}
.planfoto img{width:100%;height:100%;object-fit:cover;display:block}
/* Lightbox für Übungsfotos */
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.88);
  display:none;align-items:center;justify-content:center;padding:20px;animation:fade .18s ease}
.lightbox.show{display:flex}
.lightbox img{max-width:100%;max-height:88vh;border-radius:14px;object-fit:contain;
  box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lb-x{position:fixed;top:14px;right:16px;width:42px;height:42px;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;border:0;font-size:20px;cursor:pointer;z-index:201}
.lb-x:hover{background:rgba(255,255,255,.24)}

/* ===== Chat ===== */
/* Coach-Auswahl (Buttons) über dem Chatfenster */
.coachpick{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.coachbtn{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 15px;border-radius:var(--r-pill);
  background:var(--panel);border:1px solid var(--line);color:var(--text);font-size:13px;font-weight:700;
  text-decoration:none;transition:border-color .14s var(--ease-out),background-color .14s}
.coachbtn:hover{border-color:var(--ember)}
.coachbtn.on{background:var(--ember);color:var(--on-ember);border-color:transparent}
.coachbtn .cb-badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;
  font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.coachbtn.on .cb-badge{background:var(--on-ember);color:var(--ember)}
.chatwin{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--panel-2);
  border:1px solid var(--line);border-radius:14px;max-height:52vh;overflow-y:auto;margin-bottom:10px}
.coachchat{max-height:340px}
.msg{display:flex;flex-direction:column;max-width:80%}
.msg.me{align-self:flex-end;align-items:flex-end}
.msg.them{align-self:flex-start;align-items:flex-start}
.bubble{padding:9px 13px;border-radius:16px;font-size:14px;line-height:1.4;word-break:break-word}
.msg.me .bubble{background:var(--ember);color:var(--on-ember);border-bottom-right-radius:5px}
.msg.them .bubble{background:var(--panel);border:1px solid var(--line);color:var(--text);border-bottom-left-radius:5px}
.msgtime{font-size:10px;color:var(--faint);margin-top:2px;padding:0 4px}
.chatform{display:flex;gap:8px}
.chatform input{flex:1}
/* schwebende Chat-Blase */
.chatfab{position:fixed;right:16px;bottom:84px;z-index:55;width:54px;height:54px;border-radius:50%;
  background:var(--ember);display:flex;align-items:center;justify-content:center;font-size:24px;
  text-decoration:none;box-shadow:0 10px 26px -6px var(--ember)}
.chatfab:active{transform:scale(.95)}
.chatbadge{position:absolute;top:-2px;right:-2px;min-width:20px;height:20px;padding:0 5px;border-radius:var(--r-pill);
  background:var(--ok);color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;
  border:2px solid var(--ground)}

/* ===== Wissen ===== */
.wisscard{display:block;background:var(--panel-2);border:1px solid var(--line);border-radius:14px;
  padding:16px;margin-bottom:10px;text-decoration:none;color:var(--text);transition:.15s}
.wisscard:hover{border-color:var(--ember);transform:translateY(-1px)}
.wisskat{display:inline-block;font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:800;
  color:var(--ember);background:var(--ember-soft);padding:3px 9px;border-radius:var(--r-pill);margin-bottom:8px}
.wisstitel{font-size:17px;font-weight:800;line-height:1.25}
.wissteaser{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.5}
.wissmore{display:inline-block;margin-top:10px;font-size:12px;font-weight:700;color:var(--ember)}
/* Wissen-Toolbar: zwei gleich grosse Buttons nebeneinander */
.wisstoolbar{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.wisstoolbar form{margin:0}
@media(max-width:520px){.wisstoolbar{grid-template-columns:1fr}}
/* Wissen-Admin-Grid */
.wissgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.wissadmin{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:14px}
.wissadmin.off{opacity:.55}
.wa-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.wa-title{font-weight:800;font-size:15px;line-height:1.25}
.wa-teaser{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.5}
.toggle{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);
  font:inherit;font-size:11px;font-weight:700;padding:5px 11px;border-radius:var(--r-pill);cursor:pointer}
.toggle.on{background:var(--ok);border-color:var(--ok);color:#fff}
.wa-link{font-size:11px;color:var(--ember);font-weight:700;margin-top:8px}
.wa-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
.wisshead{font-size:28px;line-height:1.15;margin:8px 0 0;text-wrap:balance}
.wissbody{padding:22px 22px 26px}
.wissbody p{margin:0 0 15px;line-height:1.7;color:var(--text);font-size:15px}
.wisslead{font-weight:600;color:var(--muted);font-size:16px;line-height:1.6}

/* Coach: Trainings-Feedback — kompakt, 2 pro Zeile, nach Monaten */
/* Trainings-Feedback: kompakte Chips (Datum + Sterne), viele pro Zeile → Detail im Modal */
.fb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:7px;align-items:start}
.fb-month{grid-column:1/-1;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);
  font-weight:800;margin:10px 2px 2px}
.fb-chip{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 6px;border:1px solid var(--line);
  border-radius:10px;background:var(--panel-2);cursor:pointer;font:inherit;
  transition:border-color .14s var(--ease-out),transform .14s var(--ease-out),background .14s}
.fb-chip:hover{border-color:var(--muted);background:var(--panel);transform:translateY(-1px)}
.fb-chip:active{transform:translateY(0) scale(.98)}
.fb-cdate{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}
.fb-stars{font-size:13px;letter-spacing:.5px;white-space:nowrap}
.fb-stars .on{color:var(--ember)}
.fb-stars span:not(.on){color:var(--line)}
.sess-notiz{font-size:12px;color:var(--muted);margin:0 0 10px;font-style:italic}
.fb-archive{margin-top:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);padding:0 12px}
.fb-archive>summary{cursor:pointer;padding:11px 0;font-size:12.5px;font-weight:700;color:var(--ember);list-style:none}
.fb-archive>summary::-webkit-details-marker{display:none}
.fb-archive>summary::before{content:'▸ '}
.fb-archive[open]>summary::before{content:'▾ '}
.fb-archive[open]{padding-bottom:12px}
.sess-ex{padding:8px 0;border-top:1px solid var(--line)}
.modal-body .sess-ex:first-child{border-top:0;padding-top:0}
.sess-exname{font-size:13px}
.sess-exname b{color:var(--ember);margin-right:4px}
.sess-sets{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.sess-set{font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;background:var(--panel);
  border:1px solid var(--line);color:var(--muted);font-variant-numeric:tabular-nums}
.sess-set.done{background:var(--ok-soft);color:var(--ok);border-color:transparent}

/* Übungs-Beschrieb (aus DB) */
.exdescr{font-size:13px;color:var(--muted);line-height:1.5;margin:6px 0 2px;padding:0}

/* Akkordeon */
.ex .chev{color:var(--faint);font-size:18px;transition:transform .2s;margin-left:2px}
.ex.accordion .top,.ex.accordion .soll{cursor:pointer}
.ex.accordion.open .chev{transform:rotate(180deg)}
.ex.accordion .exbody{display:none}
.ex.accordion.open .exbody{display:block;animation:fade .2s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* Tag-Kopf (Plan-Abgrenzung) */
.dayhead{display:flex;align-items:baseline;gap:10px;border-left:4px solid var(--ember);
  padding:2px 0 2px 12px;margin:2px 0 10px}
.dayhead .dayname{font-size:17px;font-weight:800}
.dayhead .dayfokus{font-size:12px;color:var(--faint)}

/* Coach: Übungs-Details-Editor + Messungs-Formular (<details>) */
.exdetails{margin-top:8px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);padding:0 12px}
.exdetails summary{cursor:pointer;padding:10px 0;font-size:13px;font-weight:700;color:var(--ember);list-style:none}
.exdetails summary::-webkit-details-marker{display:none}
.exdetails[open]{padding-bottom:12px}
.exdetails textarea{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:9px 11px;color:var(--text);font:inherit;font-size:14px;resize:vertical}
.exdetails input[type=text],.exdetails input[type=number],.exdetails input[type=date]{margin-top:2px}
.measgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:4px 0 8px}
.measgrid.sites{grid-template-columns:repeat(4,1fr)}
@media(max-width:560px){.measgrid,.measgrid.sites{grid-template-columns:repeat(2,1fr)}}
.measgrid .mini label{margin:0 0 3px}
/* Alle Formularfelder im Raster gleich hoch (Input, Select, Datum) */
.measgrid .mini input,.measgrid .mini select{box-sizing:border-box;height:38px;padding:0 10px;font-size:13px;margin:0}
.measgrid .mini{display:flex;flex-direction:column}
.siteslab{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:700;margin:8px 0 4px}
.bodycharts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
@media(max-width:520px){
  .bodycharts{gap:6px}
  .bodycharts .chartcard{padding:10px 7px}
  .bodycharts .chart-h{flex-direction:column;align-items:flex-start;gap:1px;margin-bottom:4px}
  .bodycharts .chart-t{font-size:8.5px;letter-spacing:.03em}
  .bodycharts .chart-v{font-size:14px;white-space:nowrap}
  .bodycharts .chart-v em{font-size:9px;margin-left:1px}
  .bodycharts .chart-v small{font-size:9px;margin-left:2px}
}
.bodycharts .prog{margin:0}

/* Körpermessung — Detailtabelle mit Ampelfarben */
.ampel-legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:2px 2px 8px}
.al-dot{width:11px;height:11px;border-radius:3px;display:inline-block;margin-left:6px}
.messtable{font-size:11.5px;min-width:auto}
.messtable th{white-space:nowrap;padding:6px 5px}
.messtable td{padding:5px 5px;text-align:center;font-variant-numeric:tabular-nums}
.messtable .site-th{font-size:9.5px}
.messtable td.b{font-weight:800}
.messtable .mm-cell{border-radius:0;min-width:28px}
.messtable .sticky-col{position:sticky;left:0;background:var(--panel-2);text-align:left;font-weight:700;z-index:1}
.messtable thead .sticky-col{background:var(--panel-2)}
/* Zeilen-Aktionen (Bearbeiten / Löschen) in der Datum-Zelle */
.messtable .mdate{white-space:nowrap}
.mrowact{display:flex;gap:4px;margin-top:3px}
.mrowact form{margin:0}
.mact{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);
  width:22px;height:22px;border-radius:5px;font-size:11px;line-height:1;cursor:pointer;padding:0;
  display:inline-flex;align-items:center;justify-content:center;transition:border-color .12s var(--ease-out),color .12s}
.mact:hover{border-color:var(--muted);color:var(--text)}
.mact:active{transform:scale(.92)}
.mact-del:hover{border-color:var(--danger);color:var(--danger-hi)}

/* Detail-Kurve im Modal: Raster + Datenpunkte */
.sparkbig{width:100%;height:auto;display:block;margin-bottom:10px;overflow:visible}
.sparkbig .gridline{stroke:currentColor;opacity:.12;stroke-width:1;stroke-dasharray:3 3;color:var(--ink)}
.sparkbig .gridlabel{fill:var(--muted);font-size:9px;font-family:inherit}
.sparkbig .dot{filter:drop-shadow(0 1px 1px rgba(0,0,0,.15))}
.sparkbig .dotlabel{fill:var(--ink);font-size:9px;font-weight:700;text-anchor:middle;font-family:inherit;paint-order:stroke;stroke:var(--panel);stroke-width:2.4px}

/* Mesozyklus-Historie */
.mesobar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 10px;padding:8px 10px;background:var(--panel-2);border-radius:10px}
.mesolab{margin:0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.mesosel{padding:7px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:13px;font-weight:600;max-width:100%}
.mesohint{font-size:11px;color:var(--muted)}
/* Plan-Historie: Mesozyklus-Auswahl + archivierte Pläne in EINER Karte */
.planhist{margin-top:16px;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.planhist-h{font:800 10px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:12px}
.planhist .mesobar{margin:0;padding:0;background:transparent;border-radius:0}
.archbox{margin:0}
.mesobar + .archbox{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.archbox summary{cursor:pointer;list-style:none;font-size:13px;font-weight:700;color:var(--ember)}
.archbox summary::-webkit-details-marker{display:none}
/* Zwei gleichwertige «Anlegen»-Panels nebeneinander */
.addpanels{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
@media(max-width:640px){.addpanels{grid-template-columns:1fr}}
.addpanels .exdetails{margin-top:0}
.addhint{font-size:12px;color:var(--muted);line-height:1.45;margin:0 0 8px}
/* Fokus-Ring nur um die Summary-Zeile, nicht um das ganze offene Panel */
.exdetails:focus-visible{outline:none}
.exdetails>summary:focus-visible{outline:2px solid var(--ember);outline-offset:2px;border-radius:8px}

/* Food-Protokoll (Coach-Sicht) */
.foodgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin:4px 0 8px}
.foodcard{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.foodimg{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--panel)}
.foodmeta{padding:9px 11px;display:flex;flex-direction:column;gap:5px}
.fooddate{font-size:11px;font-weight:700;color:var(--muted)}
.fooddesc{font-size:13px;font-weight:600;line-height:1.3}
.foodmacros{display:flex;flex-wrap:wrap;gap:5px}
.foodmacros span{font-size:11px;font-weight:700;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:2px 6px;font-variant-numeric:tabular-nums}
.foodnote{font-size:12px;color:var(--muted);font-style:italic}
.foodstatus{align-self:flex-start;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 6px;border-radius:5px}
.foodstatus.analysiert{background:rgba(70,178,106,.16);color:var(--ok-ink)}
.foodstatus.manuell{background:rgba(240,101,31,.14);color:var(--ember-ink)}

/* Zusatzleistungen + Abos */
.services{display:flex;flex-wrap:wrap;gap:14px;margin:4px 0 8px}
.chkline{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text);margin:0}
.chkline input{width:18px;height:18px;accent-color:var(--ember)}
.abobox{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:12px}
.aborow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.abolab{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:700}
.abosince{font-size:12px;color:var(--muted)}
.abolist{display:flex;flex-direction:column;margin-top:4px}
.aboitem{display:flex;align-items:center;gap:10px;padding:9px 2px;border-top:1px solid var(--line)}
.aboitem:first-child{border-top:0}
.abowhen{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.aboaction{margin:0 0 0 auto}
/* Preis pro Abo — rechtsbündig vor der Aktion */
.abopreis{margin-left:auto;font-size:13px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}
.abopreis.muted{font-weight:700;color:var(--muted)}
.aboitem .abopreis ~ .aboaction{margin-left:0}
/* «Abgeschlossen»-Status (vergangene Abos) + Löschen */
.abo-done{margin-left:0}
.abo-done:disabled{color:var(--muted);border-color:var(--line);background:var(--panel);opacity:1;cursor:default}
.abodel{margin:0}
.abolist.past .aboitem{opacity:.82}
.abolist.past .pill.muted-pill{font-weight:700}

/* Export-Leiste (CSV/XLS/PDF) */
.exportbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 12px}
.exportlab{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-right:2px}
.exportbtn{display:inline-flex;align-items:center;gap:5px;text-decoration:none;font-weight:700;font-size:12px;
  color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 12px;transition:.14s;line-height:1}
.exportbtn::before{content:"↓";font-weight:800;opacity:.5}
.exportbtn:hover{border-color:var(--ember);color:var(--ember);transform:translateY(-1px)}
.exportbtn.pdf{border-color:var(--ember);color:var(--ember)}
.exportbtn.pdf:hover{background:var(--ember);color:var(--on-ember)}
.exportbtn.pdf:hover::before{opacity:.9}

/* Abo-Restguthaben / Ablauf */
.aboremain{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.aboremain.low{color:var(--danger)}
.abobar{flex:0 0 70px;height:6px;border-radius:var(--r-pill);background:var(--line);overflow:hidden}
.abobar i{display:block;height:100%;background:var(--ember);border-radius:var(--r-pill)}
.aborenew{font-size:12px;font-weight:600;color:var(--danger);background:rgba(211,58,44,.08);border-radius:8px;padding:6px 10px;margin:2px 0 4px}

/* Personaltrainings / Termine (Kundenseite) */
.ptquick{margin:2px 0 10px}
.ptaddform{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
.ptaddform .mini{margin:0;display:flex;flex-direction:column}
.ptaddform .mini input,.ptaddform .mini select{box-sizing:border-box;height:38px;padding:0 10px;font-size:13px}
.ptaddform > .btn{box-sizing:border-box;height:38px;padding:0 16px;font-size:13px;line-height:38px;align-self:flex-end}
.pthint{font-size:11px;color:var(--muted);margin-top:6px}
.apptlist{display:flex;flex-direction:column;gap:5px;margin-bottom:6px}
.appt{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}
.appt.sm{padding:6px 10px}
.appt.abgesagt{opacity:.55}
.appt-time{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;min-width:90px}
.appt-name{font-weight:700;text-decoration:none;color:var(--text)}
.appt-art{font-size:12px;color:var(--muted)}
.appt-coach{font-size:11px;color:var(--faint);margin-left:2px}
.appt-status{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:var(--r-pill);white-space:nowrap}
.s-absolviert{background:rgba(70,178,106,.16);color:var(--ok-ink)}
.s-geplant{background:rgba(240,101,31,.14);color:var(--ember-ink)}
.s-abgesagt{background:var(--line);color:var(--muted)}
/* Termin-Gruppen + Zeilen-Aktionen im Wissen-Stil (✎ bearbeiten · ✕ löschen) */
.appt-grouplab{font:800 10px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:12px 0 6px}
.appt-grouplab:first-child{margin-top:2px}
.appt-side .exg-edit{width:30px;height:30px;font-size:13px}
.appt-side .appt-done:hover{border-color:var(--ok);color:var(--ok)}
.appt-side .wa-del{border-color:transparent;background:transparent;color:var(--faint)}
.appt-side .wa-del:hover{border-color:transparent;background:transparent;color:var(--danger)}
.appt-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}
.appt-side{display:flex;align-items:center;gap:4px;margin-left:auto}
.appt-lock{font-size:11px;font-weight:700;color:var(--faint);white-space:nowrap;padding:0 4px}
.appt-notiz{flex-basis:100%;font-size:12px;color:var(--muted);font-style:italic}
.dash-event .de-time.warn{color:var(--danger);font-weight:800}

/* Kalender-Agenda */
.cal-day{margin:6px 0 12px}
.cal-dayhead{font-size:13px;font-weight:800;padding:6px 2px;border-bottom:2px solid var(--ember);margin-bottom:6px;display:flex;gap:8px;align-items:baseline}
.cal-wd{color:var(--ember);font-weight:800}
.cal-day .appt{margin-bottom:5px}

/* Tagesansicht (Stundenraster) */
.dv-timeless{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;padding:8px 12px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px}
.dv-tl-lab{font-size:12px;font-weight:700;color:var(--muted)}
.dv-appt.inline{position:static;display:inline-block;padding:5px 10px;border-radius:7px;font-size:12px}
.dv-wrap{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 10px 8px 0;overflow:hidden}
.dv-grid{position:relative;margin-left:56px}
.dv-hline{position:absolute;left:0;right:0;border-top:1px solid var(--line)}
.dv-hlab{position:absolute;left:-56px;width:48px;text-align:right;font-size:11px;font-weight:700;color:var(--muted);transform:translateY(-6px);font-variant-numeric:tabular-nums}
.dv-events{position:absolute;inset:0}
.dv-empty{position:absolute;top:12px;left:12px;color:var(--muted);font-size:13px}
.dv-appt{position:absolute;box-sizing:border-box;border-radius:8px;padding:5px 8px;text-decoration:none;color:#fff;
  overflow:hidden;background:var(--ok-solid);border-left:3px solid rgba(0,0,0,.18);transition:.12s}
.dv-appt:hover{filter:brightness(1.05);transform:translateY(-1px);z-index:3}
.dv-appt.s-geplant{background:var(--ember);color:var(--on-ember)}
.dv-appt.s-absolviert{background:var(--ok-solid)}
.dv-appt.s-abgesagt{background:var(--muted);opacity:.6;text-decoration:line-through}
.dv-time{font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;opacity:.95}
.dv-name{font-size:13px;font-weight:700;line-height:1.15}
.dv-meta{font-size:10px;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Danger-Zone (archivieren / löschen) */
.dangerzone.archived{border:1px solid var(--danger);background:rgba(211,58,44,.06);border-radius:12px;padding:12px 14px;margin:8px 0 4px}
.dz-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.dz-lab{font-size:13px}
.dz-dellink{color:var(--danger);font-weight:700;font-size:13px;cursor:pointer}
.dz-warn{font-size:12px;color:var(--muted);margin:8px 0}
.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn.danger:hover{background:var(--danger-strong)}
.btn.ghost.sm{padding:7px 13px;font-size:12px}

/* Kalender: Drag & Drop */
.cal-cell.dragover{border-color:var(--ember);box-shadow:inset 0 0 0 2px var(--ember)}
.cal-appt[draggable=true]{cursor:grab}
.cal-appt.dragging{opacity:.4}

/* Inaktive Kundenkarte (kein laufendes Abo) */
.clientcard.inactive{opacity:.68}
.clientcard.inactive:hover{opacity:1}

/* Wissen: Sortier-Chips */
.wisssort{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:10px 0 4px}
.wisssort-lab{font-size:12px;font-weight:700;color:var(--muted)}
.sortchip{text-decoration:none;font-size:12px;font-weight:700;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 13px;transition:.14s}
.sortchip:hover{border-color:var(--ember);color:var(--ember)}
.sortchip.on{background:var(--ember);color:var(--on-ember);border-color:var(--ember)}
.katfilter{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:4px 0 14px}
.katchip{font-family:inherit;cursor:pointer;font-size:12px;font-weight:700;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 13px;transition:.14s}
.katchip:hover{border-color:var(--ember);color:var(--ember)}
.katchip.on{background:var(--ember);color:var(--on-ember);border-color:var(--ember)}
.katfilter-count{font-size:11.5px;color:var(--faint);font-weight:600;margin-left:2px}

/* Coach-Dashboard: Aufmerksamkeit + Abo nebeneinander über dem Kalender */
.dashtop2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}
@media(max-width:720px){.dashtop2{grid-template-columns:1fr}}

/* Coach-Dashboard: Monatskalender */
.calcard{margin-bottom:16px}
/* Kalender-Kopf: Titel + Legende links, segmentierte Navigation rechts */
.calhead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}
.calh2{margin:0;font-size:22px;font-weight:800;line-height:1.1}
.calh2 .muted{font-weight:500;font-size:16px}
.calnav{display:inline-flex;align-items:stretch;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--panel);flex:0 0 auto}
.calnav a{text-decoration:none;color:var(--muted);font-weight:800;font-size:15px;padding:7px 13px;line-height:1;display:flex;align-items:center;border-right:1px solid var(--line);transition:.12s}
.calnav a:last-child{border-right:0}
.calnav a:hover{background:var(--panel-2);color:var(--ember)}
.calnav a.calnav-today{font-size:12.5px;letter-spacing:.02em}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:8px}
.cal-wdh{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);text-align:center;padding:2px 0}
.cal-cell{min-height:78px;border:1px solid var(--line);border-radius:9px;background:var(--panel);padding:4px 5px;display:flex;flex-direction:column;gap:2px;text-decoration:none;color:inherit;transition:.12s}
.cal-cell:hover{border-color:var(--muted);box-shadow:0 3px 10px rgba(0,0,0,.10)}
.cal-appt{cursor:default}
.cal-cell.out{background:var(--panel-2);opacity:.45}
.cal-cell.today{border-color:var(--ember);background:rgba(240,101,31,.06)}
.cal-num{font-size:11px;font-weight:700;color:var(--muted);text-align:right}
.cal-cell.today .cal-num{color:var(--ember)}
.cal-appt{display:block;font-size:10px;line-height:1.25;text-decoration:none;color:#fff;background:var(--ok-solid);border-radius:5px;padding:2px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-appt b{font-variant-numeric:tabular-nums;font-weight:800}
.cal-appt.s-geplant,.cal-appt.s-future{background:var(--ember);color:var(--on-ember)}
.cal-appt.s-absolviert,.cal-appt.s-past{background:var(--ok-solid);color:#fff}
.cal-appt.s-abgesagt{background:var(--muted);color:#fff;text-decoration:line-through}
/* Fremde Coaches: grau (dezent), mit Coach-Vorname */
.cal-appt.foreign{background:var(--line-2);color:var(--muted)}
.cal-appt.foreign b{color:var(--muted)}
.cal-appt .ca-coach{font-style:normal;font-weight:700;opacity:.9}
.cal-more{font-size:10px;font-weight:700;color:var(--muted);padding-left:4px}

/* Phasen-Farben (überall): Zukunft = orange (geplant) · Vergangenheit = grün (absolviert) */
.s-future{background:rgba(240,101,31,.14);color:var(--ember-ink)}
.s-past{background:rgba(70,178,106,.16);color:var(--ok-ink)}
.dv-appt.s-future{background:var(--ember);color:var(--on-ember)}
.dv-appt.s-past{background:var(--ok-solid);color:#fff}
.dv-appt.s-abgesagt{background:var(--muted);color:#fff;opacity:.6;text-decoration:line-through}
.dv-appt.foreign{background:var(--line-2);color:var(--text)}
.dv-appt.foreign .dv-meta,.dv-appt.foreign .dv-time{color:var(--muted)}

/* Kalenderseite (gross) */
.callegend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:8px 0 0;font-size:12px;color:var(--muted)}
.callegend span{display:inline-flex;align-items:center;gap:6px}
.callegend .lg{width:10px;height:10px;border-radius:3px;display:inline-block}
.callegend .calhint{color:var(--faint);font-size:11.5px}
.callegend .calhint::before{content:'·';margin-right:12px;color:var(--line)}
.lg.future{background:var(--ember)}.lg.past{background:var(--ok-solid)}.lg.abgesagt{background:var(--muted)}.lg.foreign{background:var(--line-2)}
.calpage{display:flex;flex-direction:column;gap:14px}
.calmain{padding:14px}
/* Neuer-Termin-Formular: Felder horizontal, volle Breite über dem Kalender */
.calnewform{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.calnewform .mini{flex:1 1 120px;margin:0;min-width:110px}
.calnewform .mini label{display:block;margin:0 0 4px}
.calnewform .mini input,.calnewform .mini select{width:100%}
.calnewform .cnf-kunde{flex:2 1 220px;min-width:180px}
.calnewform .cnf-btn{flex:0 0 auto;white-space:nowrap}
/* Kunde-Combobox (Volltextsuche) */
.combo{position:relative}
.combo-input{width:100%}
.combo-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:60;max-height:280px;overflow-y:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.4);padding:4px}
.combo-item{padding:9px 11px;border-radius:7px;cursor:pointer;font-size:14px;color:var(--text);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.combo-item:hover{background:var(--ember-soft);color:var(--ember)}
/* Nächste Termine als horizontale, umbrechende Reihe */
.upcoming-row{display:flex;flex-wrap:wrap;gap:10px}
.upcoming-row .up-item{flex:1 1 240px;min-width:220px;border-top:0;border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;background:var(--panel)}
.upcoming-row .up-item:hover{border-color:var(--muted)}
.calgrid.big{gap:6px}
.calgrid.big .cal-cell{min-height:94px;padding:6px 8px;gap:3px}
.calgrid.big .cal-num{font-size:13px}
.calgrid.big .cal-appt{font-size:11px;padding:3px 7px}
.calgrid.big .cal-wdh{font-size:10.5px;color:var(--faint);padding-bottom:4px}
.up-item{display:flex;align-items:center;gap:10px;padding:9px 4px;border-top:1px solid var(--line);text-decoration:none;color:var(--text)}
.up-item:first-of-type{border-top:0}
.up-date{flex:0 0 44px;font-size:12px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}
.up-body{flex:1;font-size:13px;min-width:0}
.up-body b{font-variant-numeric:tabular-nums}
.up-art{display:block;font-size:11px;color:var(--muted)}
.up-dot{flex:0 0 9px;width:9px;height:9px;border-radius:50%}
.up-dot.s-future{background:var(--ember)}.up-dot.s-past{background:var(--ok-solid)}.up-dot.s-abgesagt{background:var(--muted)}
@media(max-width:820px){.calpage{grid-template-columns:1fr}}

/* Tagesziele (Ernährung, Kunde) */
.zielcard{padding:14px 16px;margin-top:12px}
.zielrow{display:flex;align-items:center;gap:10px;margin-top:8px}
.ziellab{flex:0 0 62px;font-size:12px;font-weight:700;color:var(--muted)}
.zielbar{flex:1;height:9px;border-radius:var(--r-pill);background:var(--line);overflow:hidden}
.zielbar i{display:block;height:100%;background:var(--ember);border-radius:var(--r-pill)}
.zielbar.prot i{background:var(--ok-solid)}
.zielval{flex:0 0 auto;font-size:12px;font-variant-numeric:tabular-nums}
.zielnote{margin-top:10px;font-size:12px;color:var(--muted);line-height:1.4}
.up-note{margin-top:10px;font-size:11px;color:var(--muted);line-height:1.4;text-align:center}

/* Coach-Notizen + KI-Zusammenfassung */
.kisum{border:1px solid var(--line);border-radius:12px;background:var(--panel-2);padding:12px 14px;margin:2px 0 12px}
.kisum-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.kisum-lab{font-weight:800;font-size:13px}
.btn.ghost.sm{padding:7px 13px;font-size:12px}
.kisum-body{margin-top:10px;font-size:13.5px;line-height:1.5}
.kisum-body p{margin:0 0 8px}
.kisum-foot{margin-top:8px;font-size:11px;color:var(--muted)}
.kisum-empty{margin-top:8px;font-size:12px;color:var(--muted)}
.notesbox{margin-bottom:8px}
/* Notiz-Eingabe wie die Suchleiste: Input + Button gleich hoch (align-items:stretch) */
.noteform{display:flex;align-items:stretch;gap:8px;margin-bottom:12px}
.noteform input{flex:1;min-width:0}
.noteform > .btn{flex:0 0 auto;white-space:nowrap}
.notelist{display:flex;flex-direction:column;gap:4px}
.noteitem{display:flex;align-items:baseline;gap:10px;padding:7px 2px;border-top:1px solid var(--line)}
.noteitem:first-child{border-top:0}
.note-date{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 84px}
.note-text{font-size:13px;flex:1;min-width:0}
.note-del{flex:none;background:transparent;border:0;color:var(--faint);cursor:pointer;font-size:14px;line-height:1;padding:2px 4px;border-radius:6px}
.note-del:hover{color:var(--danger);background:var(--danger-soft)}
.note-coach{font-size:11px;color:var(--muted)}
.note-kunde{font-size:11px;font-weight:700;color:var(--ember);background:var(--ember-soft);padding:2px 8px;border-radius:var(--r-pill);margin-left:auto;white-space:nowrap}
.noteitem.from-kunde{background:var(--ember-soft);border-radius:8px;padding-left:8px;padding-right:8px}

/* Gesamt-Dossier-Box in der Sidebar */
.dossierbox{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2)}
.dossierlab{font-weight:800;font-size:13px}
.dossiersub{font-size:11px;color:var(--muted);margin:4px 0 9px;line-height:1.35}
.dossierbtns{display:flex;flex-direction:column;gap:6px}
.dossierbtns .exportbtn{justify-content:center}

/* ===== schönere Link-Buttons ===== */
.linkbtn{display:inline-flex;align-items:center;gap:7px;text-decoration:none;font-weight:700;font-size:13px;
  color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);padding:9px 16px;
  transition:.15s;line-height:1}
.linkbtn:hover{border-color:var(--ember);color:var(--ember);transform:translateY(-1px)}
.linkbtn.sm{padding:7px 13px;font-size:12px}
.linkbtn.ghost{background:transparent;color:var(--muted)}
.linkbtn.ghost:hover{color:var(--ember)}

/* ===== Footer-Tabbar (Kunde) ===== */
body{padding-bottom:76px}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;
  background:color-mix(in srgb, var(--panel) 92%, transparent);backdrop-filter:blur(12px);
  border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;text-decoration:none;
  color:var(--faint);font-size:10.5px;font-weight:700;letter-spacing:.02em;padding:6px 0 4px;border-radius:12px;transition:.15s}
.tabbar a i{font-style:normal;font-size:19px;line-height:1;position:relative;display:inline-flex;align-items:center;justify-content:center}
.tabbar a i svg{width:23px;height:23px;display:block}
.tabbar a.on{color:var(--ember)}
.tabbar a:active{background:var(--panel-2)}
.tabbar6 a{font-size:9.5px}
.tabbar6 a i{font-size:17px}
.tabbar6 a i svg{width:22px;height:22px}
.tabbar7 a{font-size:8.5px;padding:6px 0 4px;letter-spacing:0}
.tabbar7 a i svg{width:21px;height:21px}
.tabbadge{position:absolute;top:-5px;right:-9px;min-width:15px;height:15px;padding:0 4px;border-radius:var(--r-pill);
  background:var(--ok);color:#fff;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center;
  border:1.5px solid var(--ground)}

/* ===== Charts (Fläche + Gradient) ===== */
.chartcard{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:14px}
.chart-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
.chart-t{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:700}
.chart-v{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}
.chart-v em{font-style:normal;font-size:12px;color:var(--muted);font-weight:600}
.chart-v small{font-size:12px;font-weight:700;margin-left:6px}
.chart-v small.down{color:var(--ok)}
.chart-v small.up{color:var(--ember)}
.spark{width:100%;height:60px;display:block}
.bodycharts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media(max-width:520px){.bodycharts{gap:6px}.spark{height:44px}}
/* Coach-KPI-Karten (Körper): gleich hoch, Label über Wert, Sparkline unten bündig */
.bodycharts .clickchart{height:100%}
.bodycharts .chartcard{height:100%;display:flex;flex-direction:column;min-width:0;overflow:hidden}
.bodycharts .chart-h{flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:3px;margin-bottom:8px}
.bodycharts .chart-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.bodycharts .chart-v{white-space:nowrap}
.bodycharts .spark{margin-top:auto}

/* ===== Profil / Info ===== */
.sechead{display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:700;margin:22px 2px 10px}
.sechead-sub{font-size:12.5px;color:var(--faint);margin:-6px 2px 10px}
.infocard{padding:6px 16px}
.inforow{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-top:1px solid var(--line)}
.inforow:first-child{border-top:0}
.inforow .k{color:var(--faint);font-size:13px}
.inforow .v{font-weight:600;text-align:right}

/* ===== Abo-Seite ===== */
.abocard{padding:20px}
.abocard .abolab{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);font-weight:700}
.aboname{font-size:28px;font-weight:800;color:var(--ember);margin-top:4px}
/* Einzelbuchungen (Trainingweekends, Summits) */
.booklist{display:flex;flex-direction:column;gap:8px}
.bookitem{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;padding:12px 14px}
.bookitem.storno{opacity:.6}
.book-main{flex:1;min-width:0}
.book-titel{font-size:14px;font-weight:700;line-height:1.25}
.book-sub{font-size:12px;color:var(--muted);margin-top:2px;font-variant-numeric:tabular-nums}
.book-status{flex:none;font-size:11px;font-weight:800;padding:4px 10px;border-radius:var(--r-pill);
  background:var(--panel-2);color:var(--muted);border:1px solid var(--line);white-space:nowrap}
.book-status.s-bezahlt{background:var(--ok-soft);color:var(--ok-ink);border-color:transparent}
.book-status.s-gebucht{background:var(--ember-soft);color:var(--ember);border-color:transparent}
.book-status.s-storniert{background:var(--danger-soft);color:var(--danger);border-color:transparent}

/* ===== Ernährung ===== */
.daybilanz{padding:16px 18px}
.db-lead{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);font-weight:700;margin-bottom:10px}
.db-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;text-align:center}
.db-grid .db-n{display:block;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text)}
.db-grid small{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.uploadcard{padding:18px;margin-top:14px;display:flex;flex-direction:column;gap:10px}
.up-title{font-size:16px;font-weight:800}
.up-sub{font-size:13px;color:var(--muted);margin-top:-4px}
.fileinput{background:var(--panel-2);border:1px dashed var(--line);border-radius:10px;padding:14px;color:var(--muted);font-size:13px}
.foodlist{display:flex;flex-direction:column;gap:10px}
.fooditem{display:flex;gap:12px;background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:10px;position:relative}
.foodthumb{width:64px;height:64px;border-radius:10px;overflow:hidden;flex:none;background:var(--panel);display:grid;place-items:center;font-size:24px;text-decoration:none}
.foodthumb img{width:100%;height:100%;object-fit:cover}
.foodbody{flex:1;min-width:0}
.foodtop{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.fooddesc{font-weight:700;font-size:14px;line-height:1.3}
.fooddate{font-size:11px;color:var(--faint);white-space:nowrap}
.macros{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.macro{font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:var(--r-pill);background:var(--panel);border:1px solid var(--line);color:var(--muted);font-variant-numeric:tabular-nums}
.macro.kcal{background:var(--ember-soft);color:var(--ember);border-color:transparent}
.macro.ai{background:var(--ok-soft);color:var(--ok);border-color:transparent}
/* Ernährung: vergangene Tage als kompakte Liste mit Tagestotalen (ohne Fotos) */
.pastdays{display:flex;flex-direction:column;gap:8px}
.pday{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:10px 13px}
.pday-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:7px}
.pday-date{font-size:13px;font-weight:700}
.pday-n{font-size:11px;color:var(--faint)}
.pday-macros{display:flex;flex-wrap:wrap;gap:6px}
.pm{font-size:11.5px;font-weight:600;color:var(--muted);padding:3px 9px;border-radius:var(--r-pill);background:var(--panel);border:1px solid var(--line);font-variant-numeric:tabular-nums}
.pm b{color:var(--text);font-weight:800}
.pm.kcal{background:var(--ember-soft);border-color:transparent}
.pm.kcal b{color:var(--ember)}
.fooddel button{position:absolute;top:8px;right:8px;appearance:none;border:0;background:transparent;color:var(--faint);
  cursor:pointer;font-size:14px;padding:2px 6px;border-radius:6px}
.fooddel button:hover{color:var(--ember)}
@media (prefers-reduced-motion:reduce){.dayprog .bar i{transition:none}}
.empty{color:var(--faint);font-size:14px;padding:30px 4px}
.foot{max-width:1080px;margin:26px auto 0;color:var(--faint);font-size:11.5px;text-align:center;line-height:1.6;padding:0 16px;
  display:flex;flex-direction:column;align-items:center;gap:1px}
.foot-by{display:block}

/* ---- Einstellungen: Key-Warnung + Kosten ---- */
.keywarn{background:#fff6e6;border:1px solid #f0c36d;color:#7a5200;border-radius:10px;padding:11px 14px;font-size:13.5px;font-weight:600}
@media (prefers-color-scheme:dark){.keywarn{background:#332800;border-color:#7a5f10;color:#f0cf7a}}
:root[data-theme=dark] .keywarn{background:#332800;border-color:#7a5f10;color:#f0cf7a}
:root[data-theme=light] .keywarn{background:#fff6e6;border-color:#f0c36d;color:#7a5200}
.setcols{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.setgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:900px){.setcols{grid-template-columns:1fr}.setgrid{grid-template-columns:1fr}}
.costgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.costtile{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:12px}
.ct-lab{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:800}
.ct-val{font-size:22px;font-weight:800;margin-top:3px;font-variant-numeric:tabular-nums}
.ct-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.costtab{width:100%;border-collapse:collapse;margin-top:14px;font-size:13px}
.costtab th{text-align:left;color:var(--faint);font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:4px 6px;border-bottom:1px solid var(--line)}
.costtab td{padding:6px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
.costtab td:nth-child(2),.costtab th:nth-child(2){text-align:right;width:90px}
/* Sektions-Zwischentitel (Bilder / Analysen / Texte) */
.costtab tr.cost-sec th{color:var(--text);font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:none;padding-top:14px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.costtab tr.cost-sec:first-child th{padding-top:4px}
.costtab tr.cost-sec th:nth-child(3){text-align:right;font-variant-numeric:tabular-nums}
.costtab td.cost-fn{padding-left:18px;color:var(--muted)}
@media(max-width:560px){.costgrid{grid-template-columns:1fr}}

/* ============================================================
   Motion & Polish (Design Engineer) — additive Feinschliff-Schicht
   Prinzipien: Emil Kowalski / Jakub Krehel. Nur transform/opacity,
   UI-Dauern <300ms, eigene Easing-Kurven, reduced-motion respektiert.
   ============================================================ */
:root{
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --dur-press: 140ms;
  --dur-pop: 190ms;
  /* Typo-Scale — kanonische Grössen für Coach + Portal.
     title/section unten adoptiert; eyebrow/body/small = Vorgabe für NEUE Bauteile. */
  --fs-eyebrow: 12px;   /* Kleinlabel/Augenbraue (uppercase) */
  --fs-title: 22px;     /* Seitentitel */
  --fs-section: 18px;   /* Sektions-Titel */
  --fs-body: 14px;      /* Fliesstext */
  --fs-small: 12.5px;
  /* Radius-Skala — semantisch, deckungsgleich mit der STAHL-Normalisierung unten
     (eine Quelle der Wahrheit; die STAHL-Blöcke zeigen jetzt hierhin) */
  --r-panel: 8px;       /* Karten / Panels / Container */
  --r-control: 6px;     /* Buttons / Inputs / Chips / Segment-Controls aussen */
  --r-seg: 4px;         /* Segment-Innenflächen */
  --r-pill: 999px;      /* voll gerundet (Badges, Fortschrittsbalken) */
}
/* Seitentitel app-weit auf eine Groesse (Konsistenz Coach <-> Portal) */
.ehead h2,.phead h1,.wisshead,.calh2{font-size:var(--fs-title)}

/* Ruhigere Titel + sauberer Fliesstext-Umbruch */
h1,h2,h3,.calh2,.wisshead,.wa-title,.exg-name{text-wrap:balance}
p,.sub,.wa-teaser,.wisslead,.hint span{text-wrap:pretty}

/* Taktiles Druck-Feedback auf gelegentlichen Steuerelementen
   (Stepper/Tabbar bewusst ausgenommen — werden sehr häufig getippt) */
.btn,.linkbtn,.icon-btn,.theme-btn,.modal-x,.exportbtn,.mgchip,.sortchip,
.katchip,.toggle,.calnav a,.dayseg button,.sortchip,.up-item{
  transition-property: transform, background-color, border-color, color, box-shadow, filter;
  transition-duration: var(--dur-press);
  transition-timing-function: var(--ease-out);
}
.btn:active,.linkbtn:active,.icon-btn:active,.theme-btn:active,.modal-x:active,
.exportbtn:active,.mgchip:active,.sortchip:active,.katchip:active,.toggle:active,
.calnav a:active,.dayseg button:active{transform:scale(.97)}
/* Stepper: haeufig getippt -> kein Scale, nur sofortiger Ember-Tint */
.stp button{transition:background-color var(--dur-press) var(--ease-out),color var(--dur-press) var(--ease-out)}
.stp button:active{background:var(--ember-soft);color:var(--ember)}

/* Hover-Lift nur auf echten Zeigern */
@media (hover:hover) and (pointer:fine){
  .exg-card,.wissadmin{transition:transform var(--dur-press) var(--ease-out),
    border-color var(--dur-press) var(--ease-out), box-shadow var(--dur-press) var(--ease-out)}
  .exg-card:hover,.wissadmin:hover{transform:translateY(-2px)}
}

/* Modal: Panel skaliert weich ein statt hart zu erscheinen */
.modal-overlay{transition:opacity var(--dur-pop) var(--ease-out)}
.modal{transform-origin:center}
.modal-overlay.show .modal{animation:modalpop var(--dur-pop) var(--ease-out)}
@keyframes modalpop{from{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:none}}

/* Flash / Fehler / Key-Warnung fahren sanft ein */
.flash-ok,.err,.keywarn{animation:flashin var(--dur-pop) var(--ease-out)}
@keyframes flashin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* Tabellarische Ziffern fuer dynamische Werte (kein Layout-Shift) */
.ct-val,.dbcount,.pageinfo,.up-date{font-variant-numeric:tabular-nums}

/* Sichtbarer Tastatur-Fokus */
:focus-visible{outline:2px solid var(--ember);outline-offset:2px;border-radius:8px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}

/* Reduced Motion: Position/Scale raus, Opacity/Farbe bleibt */
@media (prefers-reduced-motion:reduce){
  .modal-overlay.show .modal,.flash-ok,.err,.keywarn{animation:none}
  .btn:active,.linkbtn:active,.icon-btn:active,.theme-btn:active,.exportbtn:active,
  .mgchip:active,.sortchip:active,.katchip:active,.toggle:active,.calnav a:active,
  .dayseg button:active,.exg-card:hover,.wissadmin:hover,.exg-edit:active{transform:none}
}

/* ===== UX-Block: Tabbar5, Stack-Zeile, Datei-Picker, Termin-Streifen, Events ===== */
.tabbar5 a{font-size:10.5px}
.tabbar5 a i{font-size:19px}

/* Lange Werte gestapelt + linksbündig statt rechtsbündig umbrechend */
.inforow.stack{flex-direction:column;align-items:stretch;gap:3px}
.inforow.stack .v{text-align:left;font-weight:700}

/* Gestylter Datei-Upload (ersetzt native Datei-Auswahl) */
.filepick{display:flex;align-items:center;gap:12px;background:var(--panel-2);border:1px dashed var(--line);
  border-radius:10px;padding:12px 14px;cursor:pointer;text-transform:none;letter-spacing:normal;
  transition:border-color var(--dur-press) var(--ease-out)}
/* Excel wählen + Importieren auf einer Zeile, gleiche Höhe */
.importrow{display:flex;align-items:stretch;gap:10px}
.importrow .filepick{flex:1;min-width:0;margin:0}
.importrow .btn{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center}
.filepick:hover{border-color:var(--ember)}
.filepick.has{border-style:solid;border-color:var(--ok)}
.filepick input[type=file]{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0)}
.fp-btn{flex:0 0 auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:8px 14px;font-weight:700;font-size:13px;color:var(--text);white-space:nowrap}
.filepick:hover .fp-btn{border-color:var(--ember);color:var(--ember)}
.fp-name{flex:1;min-width:0;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filepick.has .fp-name{color:var(--text);font-weight:600}
/* Food-Foto: zwei Buttons (Kamera / Galerie) */
.foodpick{display:flex;gap:10px;margin:4px 0 8px}
.foodpick .fp-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;height:46px;
  border-radius:10px;cursor:pointer;font-size:14px;transition:border-color .14s var(--ease-out),color .14s,background-color .14s}
.foodpick .fp-btn.cam{background:var(--ember);color:var(--on-ember);border-color:transparent}
.foodpick .fp-btn.cam:hover{filter:brightness(1.05)}
.foodpick .fp-btn.gal:hover{border-color:var(--ember);color:var(--ember)}
.uploadcard .fp-name{text-align:center;margin-bottom:10px}
.uploadcard .fp-name.has{color:var(--text);font-weight:600}

/* Nächster-Termin-Streifen (Portal-Training) */
.nextappt{display:flex;align-items:center;gap:12px;background:var(--ember-soft);
  border:1px solid transparent;border-radius:12px;padding:12px 14px;margin:0 0 16px}
.na-ico{font-size:20px;line-height:1}
.na-body{display:flex;flex-direction:column;gap:1px;min-width:0}
.na-lab{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--ember)}
.na-when{font-size:15px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}

/* Event-Mini-Liste (Infos-Seite) */
.eventmini{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.evm{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;text-decoration:none;color:inherit;
  transition:border-color .14s var(--ease-out),background-color .14s}
.evm:hover{border-color:var(--ember);background:var(--ember-soft)}
.evm-go{margin-left:auto;color:var(--faint);font-size:18px;font-weight:700;flex:none}
.evm:hover .evm-go{color:var(--ember)}
/* Event-Detail Meta */
.ev-meta{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.ev-metarow{display:flex;gap:12px;font-size:14px}
.ev-metarow .ev-k{flex:0 0 92px;color:var(--muted);font-weight:600}
.evm-date{flex:0 0 46px;font-size:13px;font-weight:800;color:var(--ember);font-variant-numeric:tabular-nums}
.evm-tbd{font-size:11px;font-weight:600;color:var(--faint);letter-spacing:.02em}
/* Kunden-Messtabelle: volle Breite, kompakt, kein horizontales Scrollen */
.messtable-p{width:100%;min-width:0;border-collapse:collapse;font-size:13.5px;table-layout:fixed;margin-top:10px}
.messtable-p th,.messtable-p td{padding:9px 4px;text-align:center;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;white-space:nowrap}
.messtable-p th:first-child,.messtable-p td:first-child{text-align:left;width:31%}
.messtable-p th:last-child,.messtable-p td:last-child{text-align:right}
.messtable-p th{color:var(--muted);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.messtable-p td{font-weight:600}
.messtable-p td:first-child{font-weight:500;color:var(--muted)}
.messtable-p tbody tr:last-child td{border-bottom:0}
.evm-titel{font-size:14px;font-weight:700;line-height:1.2}
.evm-sub{font-size:12px;color:var(--muted);margin-top:2px}


/* ===== Coach-Kundenseite: Tabs statt Endlos-Scroll ===== */
/* Subnavigation der Kundenseite — im Segset-Stil wie die Sortierung der anderen Sektionen */
.ctabs{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px;margin:0 0 18px;padding:3px;
  background:var(--ground);border:1px solid var(--line);border-radius:6px}
.ctab{appearance:none;border:0;background:transparent;color:var(--muted);
  font:inherit;font-weight:700;font-size:12px;padding:8px 13px;border-radius:4px;cursor:pointer;
  transition:transform var(--dur-press) var(--ease-out),background-color var(--dur-press) var(--ease-out),color var(--dur-press) var(--ease-out)}
.ctab:hover{color:var(--text)}
.ctab:active{transform:scale(.97)}
.ctab.on{background:var(--ember);color:#0c0d0f;font-weight:800}
.tabpane{display:none}
.tabpane.on{display:block;animation:fade .2s ease}
.tabpane > .sectiontitle:first-child{margin-top:0}

/* Plan ins Archiv + Plan-Archiv-Liste */
.dayfoot{display:flex;justify-content:flex-start;gap:8px;padding:12px 12px 14px;margin-top:2px}
.dayfoot form{margin:0}
.btn.ghost.danger{color:#fff;background:var(--danger);border-color:var(--danger)}
.btn.ghost.danger:hover{color:#fff;background:var(--danger-strong);border-color:var(--danger-strong)}
.dayfoot .vlink{font-size:12px}
.archlist{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.archrow{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:8px}
.archrow:hover{background:var(--panel-2)}
.archname{font-weight:600;font-size:13px}

/* ============================================================
   «STAHL» — Performance-Design-Schicht (additiv, gewinnt am Ende)
   Graphit · ein Signal · Zahlen als Scoreboard · Kanten statt Blasen.
   Rührt bestehende Regeln nicht an — überschreibt nur Charakter-Details.
   ============================================================ */

/* — 1 · DISPLAY-TYPO: condensed + uppercase auf kurzen Titeln — */
.phead h1,.ehead h2,.calh2,.d-head h3,.aboname,.login-card h1,.up-title,.calh2 .muted{
  font-family:var(--disp);letter-spacing:.015em}
.phead h1,.ehead h2,.calh2,.aboname,.login-card h1{
  text-transform:uppercase;font-weight:800}
h1,h2{font-family:var(--disp);letter-spacing:.01em}
.sectiontitle{font-family:var(--disp);letter-spacing:.03em;text-transform:uppercase}
/* Sektions-/Klein-Labels schärfer rastern */
.dash-t,.chart-t,.db-lead,.sechead,.daylabel,.grp,.dbstats+*,.exportlab,.abolab{letter-spacing:.14em}

/* — 2 · ZAHLEN ALS SCOREBOARD: Mono, tabellarisch — */
.kpi-n,.stp .val .n,.chart-v,.db-grid .db-n,.ct-val,.aboremain,.appt-time,
.na-when,.dv-time,.up-date,.evm-date,.note-date,.fb-date,.cal-num,.calgrid.big .cal-num{
  font-family:var(--mono);font-variant-numeric:tabular-nums}
.kpi-n{letter-spacing:-.01em}

/* — 3 · SIGNAL-BALKEN + PLATE-BADGE (Kundenportal, das Herz) — */
.ex .grpid{display:inline-grid;place-items:center;min-width:30px;height:24px;padding:0 7px;
  border-radius:5px;background:var(--ember);color:#0c0d0f;font:800 13px/1 var(--mono);flex:none}
.ex.accordion.open{box-shadow:inset 3px 0 0 var(--ember);border-color:var(--line-2)}
.ex.done{box-shadow:inset 3px 0 0 var(--ok);border-color:var(--line-2)}
/* Spec-Strip-Anmutung für die Soll-Zeile */
.soll{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 0;margin:11px 0 2px}
.soll b{font-family:var(--mono)}
/* Ruhiges Info-Badge: erklärt, dass die Soll-Werte Coach-Vorgaben sind */
.soll-badge{font:600 11px/1 var(--sans);color:var(--muted);background:var(--ground);border:1px solid var(--line);
  border-radius:var(--r-pill);padding:6px 11px;white-space:nowrap;align-self:center}

/* Nächster-Termin-Streifen: Signal-Kante links */
.nextappt{border-left:3px solid var(--ember);border-radius:6px;
  background:linear-gradient(90deg,var(--ember-soft),transparent 72%)}

/* — 4 · KPI-TAFEL: dünne Signal-Kante über der wichtigsten Kennzahl — */
.kpi{position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;width:100%;height:2px;background:var(--line-2)}
.kpirow .kpi:nth-child(2)::before{background:var(--ember)}

/* — 5 · LADE-BALKEN: Scheiben-Rasterung (Hantelstangen-Motiv) — */
.dayprog .bar,.abobar,.zielbar,.loadbar{
  background-image:repeating-linear-gradient(90deg,transparent 0 13px, #0000000d 13px 14px)}
:root[data-theme="light"] .dayprog .bar,:root[data-theme="light"] .abobar,
:root[data-theme="light"] .zielbar{background-image:repeating-linear-gradient(90deg,transparent 0 13px,#0000000f 13px 14px)}

/* — 6 · KANTEN STATT BLASEN: Panels 8px, Controls/Chips 6px — */
.card,.login-card,.dashcard,.kpi,.clientcard,.wisscard,.wissadmin,.chartcard,.abocard,.abobox,
.kisum,.dossierbox,.costtile,.fileinput,.filepick,.uploadcard,.fooditem,.foodcard,.eventcard,
.exg-card,.exdb-item,.zielcard,.modal,.dayacc,.exc,.ex,.ac,.mesobar,.dv-wrap,.calmain,
.cal-cell,.evm,.videowrap,.chatwin,.tablewrap,.photothumb,.foodthumb,.foodimg,.exfotos a{
  border-radius:var(--r-panel)}
.btn,.linkbtn,.icon-btn,.theme-btn,.exportbtn,.pill,.mgchip,.sortchip,.katchip,.ctab,
.macro,.foodstatus,.wisskat,.stp,.chk,.set .stp,input[type=email],input[type=password],
input[type=text],input[type=number],select,textarea,.fp-btn,.dayseg,.segbar,.calnav,
.toggle,.appt,.appt-status,.exg-edit,.modal-x{border-radius:var(--r-control)}
/* Segment-Controls: innen mit aussen abstimmen */
.dayseg button,.ctabs .ctab{border-radius:var(--r-seg)}

/* — 7 · CTA: uppercase, athletisch — */
.btn{text-transform:uppercase;letter-spacing:.08em;font-weight:800}
.btn.ghost{text-transform:none;letter-spacing:normal;font-weight:700}

/* — 8 · AKTIV-ZUSTÄNDE schärfer (Signal füllt, nicht «Soft») — */
.dayseg button.on,.ctab.on,.mgchip.on,.sortchip.on,.katchip.on,.tabbar a.on{font-weight:800}
.pill.accent{background:var(--ember);color:#0c0d0f;font-weight:800}
.wisskat{background:var(--ember);color:#0c0d0f}
.brand span{letter-spacing:.24em}

/* — 9 · DESKTOP-NAV: flacher, tab-artig statt Pille — */
.navr .icon-btn{background:transparent;border-color:transparent;color:var(--muted)}
.navr .icon-btn:hover{color:var(--text);background:var(--panel-2)}

/* — 10 · KALENDER-STATUS: Signal = geplant, Grün = absolviert (schon so, hier nur Kante) — */
.cal-cell.today{box-shadow:inset 0 0 0 1px var(--ember)}

/* — 11 · WISSEN-VERWALTUNG: Karten-Aktionen dezent wie Übungen — */
/* Thema als leiser Plain-Text (kein Signal-Pill) */
.wa-top .wisskat{background:transparent;color:var(--faint);padding:0;border-radius:0;
  font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
/* Aktionen unten rechts gruppiert, mit Trennlinie */
.wa-actions{justify-content:flex-end;gap:4px;margin-top:10px}
/* Bearbeiten = Bleistift-Icon (erbt .exg-edit). Löschen = dezentes X, erst bei Hover rot */
.wa-actions .wa-del{border-color:transparent;background:transparent;color:var(--faint)}
.wa-actions .wa-del:hover{border-color:transparent;background:transparent;color:var(--danger)}

/* — 12 · WISSEN-TOOLBAR: kompakter, effizienter (Header-Aktionen + eine Filterzeile) — */
.head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.head-actions .btn{width:auto;padding:10px 15px;font-size:13px}
.filterbar{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;
  padding:9px 12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;margin-bottom:16px}
.filtergroup{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.seglab{font:800 10px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.filterhint{font-size:12px;color:var(--faint)}
/* Sortierung = ein zusammenhängendes Segment-Control (eine Auswahl, solid aktiv) */
.segset{display:inline-flex;flex-wrap:wrap;background:var(--ground);border:1px solid var(--line);border-radius:6px;padding:3px;gap:2px}
.segset a,.segset button{appearance:none;border:0;background:transparent;cursor:pointer;text-decoration:none;font:700 12px/1 var(--sans);color:var(--muted);padding:8px 12px;border-radius:4px;
  transition:transform var(--dur-press) var(--ease-out),background-color var(--dur-press) var(--ease-out),color var(--dur-press) var(--ease-out)}
.segset a:hover,.segset button:hover{color:var(--text)}
.segset button:active{transform:scale(.97)}
.segset a.on,.segset button.on{background:var(--ember);color:#0c0d0f;font-weight:800}
/* Thema = Mehrfachauswahl, aktiv weich (kein Wall aus Rot) */
.katchip.on{background:var(--ember-soft);color:var(--ember);border-color:var(--ember)}

/* — 13 · KI-ENTWURF im «Beitrag schreiben»-Modal — */
.ki-draft{background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--ember);
  border-radius:8px;padding:12px 14px;margin-bottom:18px}
.ki-draft-head{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.ki-draft-head span:first-child{font:800 13px/1 var(--sans)}
.ki-draft-sub{font-size:12px;color:var(--muted);line-height:1.4}
.ki-draft-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ki-draft-row input{flex:1;min-width:180px}
.ki-draft-row .btn.sm{white-space:nowrap;width:auto}
.ki-draft-msg{margin-top:9px;font-size:12.5px;font-weight:600;padding:8px 10px;border-radius:6px}
.ki-draft-msg.ok{background:var(--ok-soft);color:var(--ok)}
.ki-draft-msg.err{background:var(--danger-soft);color:var(--danger)}

/* — 14 · ADMIN-NAV: als Kopfleiste vom Content abgehoben, aktiver Link unterstrichen — */
.topbar-coach{background:var(--panel);border:1px solid var(--line-2);border-radius:10px;
  padding:9px 10px 9px 16px;margin-bottom:36px;box-shadow:0 12px 30px -20px #000b}
.navlinks{display:flex;align-items:center;gap:1px;flex-wrap:wrap}
.navlink{text-decoration:none;font:800 12px/1 var(--sans);letter-spacing:.07em;text-transform:uppercase;
  color:var(--muted);padding:10px 12px;border-bottom:2px solid transparent;
  transition:color var(--dur-press) var(--ease-out),border-color var(--dur-press) var(--ease-out)}
.navlink:hover{color:var(--text)}
.navlink.on{color:var(--text);border-bottom-color:var(--ember)}
.navr .icon-btn.on{color:var(--ember);border-color:var(--ember)}

/* — 15 · ÜBUNGEN: Video- & Foto-Button in gleicher Sprache, Medien im schwebenden Fenster — */
.exg-media{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.mediabtn{appearance:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  font:800 11px/1 var(--sans);letter-spacing:.03em;color:var(--text);
  background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px 11px;
  transition:border-color var(--dur-press) var(--ease-out),color var(--dur-press) var(--ease-out),transform var(--dur-press) var(--ease-out)}
.mediabtn .mb-ic{font-size:12px;line-height:1;color:var(--ember)}
.mediabtn:hover{border-color:var(--ember);color:var(--ember)}
.mediabtn:hover .mb-ic{color:var(--ember)}
.mediabtn:active{transform:scale(.96)}
/* Medien-Modal */
.media-modal{max-width:760px}
.media-video{border-radius:8px;overflow:hidden;border:1px solid var(--line);background:#000}
.media-video iframe{width:100%;aspect-ratio:16/9;border:0;display:block}
.media-video.vgen{border:0;background:transparent;text-align:center}
.media-video.vgen video{max-width:100%;max-height:72vh;aspect-ratio:9/16;object-fit:contain;
  margin:0 auto;display:block;border-radius:12px;background:#000}
.media-fotos{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.media-fotos a{display:block;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.media-fotos img{width:100%;display:block}
/* Foto-Grid im Medien-Modal (mit Favorit/Löschen/Prompt) */
.mediagrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.mgcell{position:relative;margin:0;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--panel-2)}
.mgcell.fav{border-color:var(--ember);box-shadow:0 0 0 2px var(--ember)}
.mg-img{display:block;width:100%;aspect-ratio:4/5;padding:0;border:0;background:#000;cursor:zoom-in;overflow:hidden}
.mg-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s var(--ease-out)}
.mg-img:hover img{transform:scale(1.03)}
.mg-fav,.mg-del{position:absolute;top:8px;width:28px;height:28px;border:0;border-radius:50%;z-index:2;
  background:rgba(0,0,0,.55);color:#fff;font-size:13px;cursor:pointer;display:flex;align-items:center;
  justify-content:center;backdrop-filter:blur(4px);transition:background .15s ease,transform .12s ease}
.mg-fav{left:8px}.mg-del{right:8px}
.mg-fav:hover,.mg-del:hover{background:rgba(0,0,0,.78)}
.mg-fav:active,.mg-del:active{transform:scale(.9)}
.mgcell.fav .mg-fav{background:var(--ember);color:var(--on-ember)}
.mg-prompt{position:absolute;left:0;right:0;bottom:0;height:28px;border:0;border-radius:0;z-index:2;
  background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,.45) 60%,transparent);
  color:#fff;font-size:11px;font-weight:700;cursor:pointer;display:flex;align-items:flex-end;
  justify-content:center;padding-bottom:4px;transition:background .15s ease}
.mg-prompt:hover{background:linear-gradient(to top,rgba(0,0,0,.95),rgba(0,0,0,.6) 60%,rgba(0,0,0,.1))}
.mediahint{margin-top:12px;color:var(--muted);font-size:12px}
/* Foto-Slider (Grossansicht) */
.ps-overlay{position:fixed;inset:0;z-index:200;display:none;background:rgba(6,7,9,.94);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);align-items:center;justify-content:center;padding:24px;gap:10px}
.ps-overlay.show{display:flex;animation:fade .18s ease}
.ps-stage{display:flex;flex-direction:column;align-items:center;gap:16px;max-width:min(92vw,620px)}
#psImg{max-width:100%;max-height:80vh;border-radius:12px;object-fit:contain;
  box-shadow:0 20px 60px rgba(0,0,0,.5);display:block}
.ps-bar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center}
.ps-count{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px;font-weight:700}
.ps-actions{display:flex;gap:10px;flex-wrap:wrap}
.ps-btn{appearance:none;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#fff;
  border-radius:10px;padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer;transition:all .15s ease}
.ps-btn:hover{background:rgba(255,255,255,.14)}
.ps-btn.on{background:var(--ember);border-color:var(--ember);color:var(--on-ember)}
.ps-btn.danger:hover{background:var(--danger-hi);border-color:var(--danger-hi)}
.ps-nav{appearance:none;border:0;background:rgba(255,255,255,.08);color:#fff;width:48px;height:48px;
  border-radius:50%;font-size:28px;line-height:1;cursor:pointer;flex:0 0 auto;transition:background .15s ease}
.ps-nav:hover{background:rgba(255,255,255,.2)}
.ps-close{position:absolute;top:20px;right:24px;appearance:none;border:1px solid rgba(255,255,255,.25);
  background:rgba(0,0,0,.4);color:#fff;width:40px;height:40px;border-radius:50%;font-size:15px;cursor:pointer;transition:border-color .15s ease}
.ps-close:hover{border-color:#fff}
/* Prompt-Overlay über dem Slider halten */
#promptModal{z-index:260}
@media(max-width:520px){.ps-nav{width:40px;height:40px;font-size:22px}}

.archmeta{font-size:12px}
.archrow .aboaction{margin-left:auto}

/* Plan-Editor: Übungs-Steuerung (sortieren/löschen) */
.exctrl{display:flex;gap:3px;flex-shrink:0}
.exctrl form{margin:0}
.exbtn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--muted);
  font-size:14px;cursor:pointer;transition:background .14s var(--ease-out),color .14s,border-color .14s}
.exbtn:hover{background:var(--panel-2);color:var(--text);border-color:var(--muted)}
.exbtn:active{transform:scale(.94)}
.exbtn:disabled{opacity:.3;cursor:not-allowed}
.exbtn:disabled:hover{background:var(--panel);color:var(--muted);border-color:var(--line);transform:none}
.exbtn.danger:hover{border-color:var(--danger);color:var(--danger-hi);background:transparent}

/* Portal: «Neuer Plan»-Hinweis */
.newplan{display:flex;align-items:center;gap:8px;background:var(--ok-soft);border:1px solid var(--ok);
  color:var(--text);border-radius:12px;padding:11px 14px;font-size:14px;margin:0 0 14px;
  animation:fade .3s ease}
.newplan b{color:var(--ok)}

/* Kalender-Export (.ics) */
.na-cal{margin-left:auto;flex-shrink:0;font-size:12px;font-weight:700;color:var(--ember);
  text-decoration:none;border:1px solid var(--ember-soft);border-radius:8px;padding:5px 9px;
  white-space:nowrap;transition:background .14s var(--ease-out)}
.na-cal:hover{background:var(--ember-soft)}
.na-cal.sm{display:inline-block;margin-top:8px}
.cal-appt,.dv-appt{cursor:pointer}
.eventcard[ondblclick]{cursor:pointer}

/* Schnellübersicht (Coach-Kundenseite, über den Tabs) */
.cov{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:2px 0 16px}
.cov4{grid-template-columns:repeat(4,1fr);margin:0 0 18px}
@media(max-width:720px){.cov4{grid-template-columns:repeat(2,1fr)}}
/* Profil-Sektion: Zugang + Ziel + Export (aus der früheren Sidebar) */
.profmeta{margin:0 0 14px}
.profmeta-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
/* Profil-Lese-Ansicht (offen sichtbar: Profil + Adresse) */
.profview{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 14px}
@media(max-width:640px){.profview{grid-template-columns:1fr}}
.pv-card{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:13px 15px}
.pv-h{font:800 10px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:10px}
.pv-list{display:flex;flex-direction:column;gap:0;margin:0}
.pv-list > div{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:7px 0;border-top:1px solid var(--line)}
.pv-list > div:first-child{border-top:0}
.pv-list dt{font-size:12px;color:var(--muted);flex:0 0 auto}
.pv-list dd{margin:0;font-size:13px;font-weight:600;color:var(--text);text-align:right}
.pv-list dd.pv-none{color:var(--faint);font-weight:400}
.pv-list dd a{color:var(--text);text-decoration:none;border-bottom:1px solid var(--line)}
.pv-list dd a:hover{border-bottom-color:var(--muted)}
.cov-tile{position:relative;display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;
  background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:11px 30px 11px 13px;
  cursor:pointer;font:inherit;transition:border-color .16s var(--ease-out),background .16s var(--ease-out),transform .16s var(--ease-out)}
.cov-tile:hover{border-color:var(--muted);background:var(--panel);transform:translateY(-1px)}
.cov-tile:active{transform:translateY(0) scale(.99)}
/* Klick-Indikator oben rechts */
.cov-go{position:absolute;top:10px;right:11px;font-size:15px;line-height:1;color:var(--faint);opacity:.45;
  transition:transform .16s var(--ease-out),opacity .16s var(--ease-out),color .16s var(--ease-out)}
.cov-tile:hover .cov-go{opacity:1;color:var(--muted);transform:translateX(2px)}
/* Warn-Zustand: Abo läuft aus / schwaches Feedback */
.cov-tile.alert{border-color:var(--ember);background:var(--ember-soft)}
.cov-tile.alert .cov-lab{color:var(--ember)}
.cov-tile.alert .cov-go{color:var(--ember);opacity:.8}
.cov-tile.alert:hover{border-color:var(--ember)}
.cov-lab{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--faint)}
.cov-val{font-size:19px;font-weight:800;color:var(--text);line-height:1.15;font-variant-numeric:tabular-nums}
.cov-val.muted{color:var(--faint);font-weight:700}
.cov-val.warn{color:var(--ember)}
.cov-sub{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.cov-stars{letter-spacing:1px;color:var(--line)}.cov-stars .on{color:var(--ember)}

/* Kundentitel (Coach-Kundenseite, ganz oben) */
.cdtitle{margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.cdtitle h1{margin:0;font-size:26px;font-weight:800;line-height:1.1;letter-spacing:-.01em}
.cdtitle-sub{margin-top:3px;font-size:13px;color:var(--muted)}

/* Körperdaten: Kompakt/Detail-Umschaltung + Scroll-Feinschliff */
.messbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:2px 0 8px}
.messbar-hint{font-size:12px}
.messtable.compact .site-col{display:none}
/* Datum-Spalte klebt sauber mit Kantenschatten, wenn seitlich gescrollt wird */
.tablewrap{-webkit-overflow-scrolling:touch}
.messtable .sticky-col{box-shadow:2px 0 5px -2px rgba(0,0,0,.35)}
.ampel-legend[hidden]{display:none}

/* Körperkarte (Silhouette mit farbigen Messpunkten) */
.koerperview{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:14px;margin:2px 0 14px}
.kv-head{margin-bottom:6px}
.kv-title{font-weight:700;font-size:14px}
.bmap{display:flex;flex-direction:column;align-items:center;gap:10px}
.bmap-view{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}
.bmap-stage{position:relative;width:100%;max-width:210px}
.bmap-fig,.bmap-pts{position:absolute;inset:0}
.bmap-fig{background:var(--bm-fill);
  -webkit-mask:var(--sil) center/contain no-repeat;mask:var(--sil) center/contain no-repeat}
.bmap-pts{width:100%;height:100%;
  -webkit-mask:var(--sil) center/contain no-repeat;mask:var(--sil) center/contain no-repeat}
.bmap-legend{display:flex;flex-wrap:wrap;gap:10px 16px;justify-content:center;font-size:12px;color:var(--muted)}
.bml-item{display:inline-flex;align-items:center;gap:6px}
.bml-dot{width:12px;height:12px;border-radius:50%;display:inline-block}
.bmap-hint{font-size:11.5px;text-align:center;max-width:320px}

/* Silhouetten-Füllfarbe (theme-abhängig) */
:root{--bm-fill:#3d424a}
:root[data-theme="light"]{--bm-fill:#cbc5bc}

/* Kunden-Profil: Personalien (Feld-Stack) */
.profedit{padding:18px}
.pf-field{margin-bottom:15px}
.pf-field:last-of-type{margin-bottom:0}
.profedit label{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:700;margin:0 0 5px}
.pf-sub{text-transform:none;letter-spacing:0;color:var(--muted);font-weight:400}
.profedit input{width:100%;padding:11px 13px;font-size:15px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);font:inherit;transition:border-color .14s var(--ease-out)}
.profedit input:focus{outline:none;border-color:var(--ember)}
.pf-static{font-size:16px;font-weight:700;color:var(--text);padding:1px 0}
.pf-note{margin-top:16px;font-size:12px;color:var(--muted);background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;line-height:1.45}
.ovcheck{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-weight:400;font-size:12.5px;color:var(--muted);margin-top:12px;cursor:pointer}
.ovcheck input{width:auto;margin:0}
/* Änderungs-Protokoll + Papierkorb */
.auditlist{display:flex;flex-direction:column;gap:6px}
.auditrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:9px 13px;font-size:13px}
.au-ts{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;flex:0 0 118px}
.au-akt{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:var(--r-pill);
  background:var(--panel-2);color:var(--muted);flex:none}
.akt-erstellt{background:var(--ok-soft);color:var(--ok-ink)}
.akt-geaendert{background:var(--ember-soft);color:var(--ember)}
.akt-geloescht{background:var(--danger-soft);color:var(--danger)}
.akt-archiviert,.akt-wiederhergestellt{background:var(--panel-2);color:var(--muted)}
.au-ent{font-weight:700;flex:0 0 62px;text-transform:capitalize}
.au-who{flex:0 0 150px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.au-who a{color:var(--ember);text-decoration:none}
.au-detail{flex:1;min-width:120px;color:var(--muted)}
.au-actor{font-size:11.5px;color:var(--faint);white-space:nowrap}
@media(max-width:640px){.au-ts{flex-basis:100%}.au-who{flex-basis:auto}.au-detail{flex-basis:100%}}
.datasec{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.datasec-note{flex:1;min-width:220px;font-size:12px;color:var(--muted);line-height:1.45}
.datasec-note code{font-size:11px;background:var(--panel-2);padding:1px 5px;border-radius:5px}
.pf-row{display:flex;gap:10px}
.pf-plz{flex:0 0 92px}
.pf-ort{flex:1}
.profedit .divider{height:1px;background:var(--line);margin:4px 0 15px}
.profedit .btn{margin-top:18px}

/* Kunden-Profil: Abo-Nutzung (PT gemacht/offen) */
.aboitem-p{margin-bottom:16px}
.aboitem-p:last-of-type{margin-bottom:0}
.aboitem-p .aboname{margin-top:0}
.abousage{font-size:14px;color:var(--text);margin:2px 0 7px}
.aboitem-p .abobar{flex:none;width:100%;height:8px}

/* Footer-Signatur */
.foot-heart{color:var(--danger-hi)}
.foot a{color:var(--muted);text-decoration:none;border-bottom:1px solid var(--line)}
.foot a:hover{color:var(--ember);border-color:var(--ember)}

/* Körperdaten: Excel-Import (Coach) */
.importbox{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:13px 14px;margin:2px 0 12px}
.imp-head{font-size:14px;margin-bottom:10px}
.imp-hint{font-size:11.5px;margin-top:8px}

/* Körperkarte: Umschalter Fortschritt/Trainingsfokus + Muskel-Marker */
.bmap-toggle{display:inline-flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:3px;margin-bottom:4px}
.bmt{border:0;background:transparent;color:var(--muted);font:inherit;font-size:12.5px;font-weight:700;
  padding:6px 12px;border-radius:8px;cursor:pointer;transition:background .14s var(--ease-out),color .14s}
.bmt.on{background:var(--ember);color:#0c0d0f}
.bmap-mk{position:absolute;inset:0;width:100%;height:100%}
.bmap-warn{color:var(--ember)}

/* Körperkarte: klickbare Punkte + Info-Zeile */
.bm-hit{cursor:pointer}
.bmap-info{font-size:12px;text-align:center;max-width:320px;line-height:1.45;
  min-height:2.9em;display:flex;align-items:center;justify-content:center}
.bmap-info-on{color:var(--text);font-weight:600}
.bmap-view[hidden]{display:none}

/* Kunden-Portal: Header sticky */
.topbar-kunde{position:sticky;top:0;z-index:60;margin:0 -16px 20px;padding:12px 16px;
  background:var(--ground);border-bottom:1px solid var(--line)}

/* Körperkarte: Vorder-/Rückansicht mit Dreh-Animation */
.bmap-view[data-view="musk"]{perspective:900px}
.bmap-flipstage{transition:transform .19s var(--ease-out)}
.bmap-flipstage.flipping{transform:rotateY(90deg)}
.bmap-flipbar{display:inline-flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:3px}
.flipbtn{border:0;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:700;padding:5px 12px;border-radius:7px;cursor:pointer;transition:background .14s var(--ease-out),color .14s}
.flipbtn.on{background:var(--panel-2);color:var(--text)}
@media (prefers-reduced-motion:reduce){.bmap-flipstage{transition:none}.bmap-flipstage.flipping{transform:none}}

/* Muskel-Marker Vorder-/Rückseite (Zustandsklasse statt hidden — SVG-sicher) */
.mk-side{display:inline}
.mk-side[data-side="back"]{display:none}
.bmap-flipstage.show-back .mk-side[data-side="front"]{display:none}
.bmap-flipstage.show-back .mk-side[data-side="back"]{display:inline}

/* Übungsfoto-Favoriten (nur Favoriten sieht der Kunde) */
.photothumb .pt-fav{left:6px;right:auto}
.photothumb .pt-del{right:6px;left:auto}
.photothumb.fav{border-color:var(--ember);box-shadow:0 0 0 2px var(--ember)}
.photothumb.fav .pt-fav button{background:var(--ember);color:var(--on-ember)}
.photothumb.fav .pt-fav button:hover{background:var(--ember)}
/* Prompt-Balken unten am Foto (flächenbündig, mit Verlauf) + Prompt-Overlay */
.photothumb .pt-prompt{position:absolute;left:0;right:0;bottom:0;width:100%;height:26px;z-index:2;
  border:0;border-radius:0;background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,.5) 60%,transparent);
  color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.02em;text-align:center;
  padding:0 4px 3px;cursor:pointer;display:flex;align-items:flex-end;justify-content:center;
  transition:background .15s ease}
.photothumb .pt-prompt:hover{background:linear-gradient(to top,rgba(0,0,0,.95),rgba(0,0,0,.65) 60%,rgba(0,0,0,.15))}
.prompt-ta{width:100%;box-sizing:border-box;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;
  color:var(--text);background:var(--panel,#12141a);border:1px solid var(--line);border-radius:10px;
  padding:12px;resize:vertical;white-space:pre-wrap}
.prompt-actions{display:flex;align-items:center;gap:12px;margin-top:12px}
.prompt-copied{color:var(--ember);font-weight:700;font-size:13px}

/* ===== Kunden-Dashboard (Startseite) ===== */
.dash{padding-top:4px}
.reveal{opacity:0;transform:translateY(16px);animation:dashrise .55s var(--ease-out) forwards;animation-delay:calc(var(--d,0)*70ms)}
@keyframes dashrise{to{opacity:1;transform:none}}
.dash-hi{font-size:14px;color:var(--muted)}
.dash-title{font-size:26px;font-weight:800;letter-spacing:-.01em;margin:2px 0 16px}
/* Training-Hero */
.dash-hero{position:relative;display:block;overflow:hidden;text-decoration:none;color:var(--on-ember);
  background:linear-gradient(135deg,var(--ember),color-mix(in srgb,var(--ember) 72%,#000));
  border-radius:18px;padding:20px;box-shadow:0 18px 40px -20px color-mix(in srgb,var(--ember) 60%,transparent);
  transition:transform .16s var(--ease-out)}
.dash-hero:active{transform:scale(.985)}
.dh-glow{position:absolute;top:-40%;right:-20%;width:60%;height:180%;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.22),transparent 70%);pointer-events:none}
.dh-top{display:flex;justify-content:space-between;align-items:center;position:relative}
.dh-lab{font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;opacity:.85}
.dh-go{font-size:22px;font-weight:700;opacity:.85}
.dh-plan{font-size:26px;font-weight:800;line-height:1.1;margin:10px 0 3px;position:relative}
.dh-sub{font-size:13px;opacity:.85;position:relative}
.dh-cta{display:inline-block;margin-top:16px;background:rgba(255,255,255,.18);backdrop-filter:blur(4px);
  padding:9px 15px;border-radius:var(--r-pill);font-weight:800;font-size:13px;position:relative}
/* Nächster Termin */
.dash-next{display:flex;align-items:center;gap:12px;background:var(--ember-soft);border:1px solid transparent;
  border-radius:14px;padding:12px 14px;margin-top:12px}
.dn-ic{font-size:20px}
.dn-lab{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--ember)}
.dn-when{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:1px}
/* Stat-Kacheln */
.dash-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}
.dash-stats:has(.dstat:only-child){grid-template-columns:1fr}
.dstat{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:14px 12px;text-align:center}
.ds-n{display:block;font-size:30px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.ds-l{display:block;font-size:11px;color:var(--muted);margin-top:6px;line-height:1.25}
/* Karten */
.dash-card{background:var(--panel-2);border:1px solid var(--line);border-radius:16px;padding:16px;margin-top:12px;
  text-decoration:none;color:inherit;display:block}
.dash-card.link{transition:border-color .14s var(--ease-out)}
.dash-card.link:hover{border-color:var(--ember)}
.dc-head{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);
  margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}
.dc-go{color:var(--faint);font-size:16px}
.dc-row{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;margin-bottom:6px}
.dc-lab{color:var(--muted)}
.dc-val{font-variant-numeric:tabular-nums}
.dc-bar{height:9px;background:var(--line);border-radius:99px;overflow:hidden}
.dc-bar i{display:block;height:100%;width:0;border-radius:99px;background:var(--ember);
  transition:width 1.1s var(--ease-out)}
.dc-bar.prot i{background:var(--ok-solid)}
.dbody{display:flex;gap:10px}
.db-metric{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:11px 8px;text-align:center}
.db-metric b{display:block;font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}
.db-metric small{display:block;font-size:10.5px;color:var(--muted);margin-top:2px}
.db-delta{display:block;font-size:11px;font-weight:800;margin-top:4px;font-variant-numeric:tabular-nums}
/* Schnellzugriff */
.dash-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}
.dash-quick a{display:flex;flex-direction:column;align-items:center;gap:5px;text-decoration:none;color:var(--muted);
  background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:12px 4px;font-size:11px;font-weight:600;
  transition:border-color .14s var(--ease-out),color .14s}
.dash-quick a span{font-size:18px}
.dash-quick a:hover{border-color:var(--ember);color:var(--ember)}
@media(prefers-reduced-motion:reduce){.reveal{animation:none;opacity:1;transform:none}.dc-bar i{transition:none}}
