/* ============================================================
   KICKDESK DESIGNSYSTEM · gemeinsame Tokens & Komponenten
   Eine Quelle für App (Browser/iOS/Android) + Website.
   Marke = variabel (White-Label) · Status = fest (semantisch).
   ============================================================ */

:root {
  --bg:#FAFAF7; --surface:#FFFFFF; --surface-2:#F2F1EC;
  --ink:#0A0A0A; --ink-muted:rgba(10,10,10,0.62); --ink-subtle:rgba(10,10,10,0.42);
  --line:rgba(15,31,20,0.10); --line-strong:rgba(15,31,20,0.18);
  --shadow-sm:0 1px 2px rgba(15,31,20,0.06);
  --shadow-md:0 6px 18px rgba(15,31,20,0.08),0 1px 3px rgba(15,31,20,0.06);
  --shadow-lg:0 24px 60px rgba(15,31,20,0.12),0 4px 12px rgba(15,31,20,0.06);
  --ok:#16A34A; --wait:#D98E04; --crit:#D92D20; --info:#2563EB; --neutral:#6B7280;
  --r-sm:8px; --r-md:12px; --r-lg:18px; --r-xl:24px; --r-pill:999px;
  --font-display:'Arial Black','Helvetica Neue',Impact,sans-serif;
  --font-body:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
  --font-mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
}
[data-theme="dark"]{
  --bg:#0A0A0A; --surface:#141413; --surface-2:#1C1C1A;
  --ink:#F5F5F4; --ink-muted:rgba(245,245,244,0.64); --ink-subtle:rgba(245,245,244,0.44);
  --line:rgba(255,255,255,0.10); --line-strong:rgba(255,255,255,0.18);
  --shadow-sm:0 1px 2px rgba(0,0,0,0.4); --shadow-md:0 6px 18px rgba(0,0,0,0.5); --shadow-lg:0 24px 60px rgba(0,0,0,0.6);
  --ok:#34D058; --wait:#F0B429; --crit:#F26157; --info:#5B8DEF; --neutral:#8B95A1;
}
[data-brand="demo"]{ --brand:#1FBF3D; --brand-2:#0F8F2A; --brand-ink:#06210C; }
[data-brand="blau"]{ --brand:#2563EB; --brand-2:#1D4FBF; --brand-ink:#FFFFFF; }
[data-brand="rot"] { --brand:#C0392B; --brand-2:#9E2D21; --brand-ink:#FFFFFF; }
[data-theme="dark"][data-brand="demo"]{ --brand:#2BD24C; --brand-ink:#06210C; }

*,*::before,*::after{ box-sizing:border-box; }
.kd, .kd *{ font-family:var(--font-body); }
.display{ font-family:var(--font-display); letter-spacing:-0.03em; }

/* icons */
.ic{ width:20px; height:20px; flex:0 0 auto; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.ic--sm{ width:16px; height:16px; } .ic--lg{ width:24px; height:24px; }

/* badges */
.badge{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; padding:5px 10px; border-radius:var(--r-pill); line-height:1; }
.badge .dot{ width:7px; height:7px; border-radius:50%; }
.badge--ok{ color:var(--ok); background:color-mix(in srgb,var(--ok) 14%,transparent);} .badge--ok .dot{background:var(--ok);}
.badge--wait{ color:var(--wait); background:color-mix(in srgb,var(--wait) 16%,transparent);} .badge--wait .dot{background:var(--wait);}
.badge--crit{ color:var(--crit); background:color-mix(in srgb,var(--crit) 14%,transparent);} .badge--crit .dot{background:var(--crit);}
.badge--info{ color:var(--info); background:color-mix(in srgb,var(--info) 14%,transparent);} .badge--info .dot{background:var(--info);}
.badge--neutral{ color:var(--neutral); background:color-mix(in srgb,var(--neutral) 16%,transparent);} .badge--neutral .dot{background:var(--neutral);}

/* buttons */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; font:inherit; font-weight:600; font-size:14px; padding:11px 18px; border-radius:var(--r-pill); border:1px solid transparent; cursor:pointer; min-height:44px; white-space:nowrap; transition:filter .15s,border-color .15s,transform .1s; }
.btn:active{ transform:translateY(1px); }
.btn--primary{ background:var(--brand); color:var(--brand-ink); }
.btn--primary:hover{ filter:brightness(1.06); }
.btn--secondary{ background:var(--surface); color:var(--ink); border-color:var(--line-strong); }
.btn--secondary:hover{ background:var(--surface-2); }
.btn--ghost{ background:transparent; color:var(--ink); border-color:var(--line-strong); }
.btn--sm{ padding:8px 13px; font-size:13px; min-height:38px; }
.btn--block{ width:100%; }

/* metric tile */
.c-metric{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); padding:14px; }
.c-metric__num{ font-family:var(--font-display); font-size:26px; letter-spacing:-0.03em; }
.c-metric__lbl{ font-size:12px; color:var(--ink-muted); margin-top:2px; }
.c-metric__trend{ font-size:11.5px; font-weight:600; margin-top:7px; display:inline-flex; align-items:center; gap:4px; }

/* task list */
.c-task{ display:flex; align-items:center; gap:12px; padding:13px 14px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); }
.c-task + .c-task{ margin-top:8px; }
.c-task__icon{ width:36px; height:36px; border-radius:10px; display:grid; place-items:center; flex:0 0 auto; }
.c-task__body{ flex:1; min-width:0; }
.c-task__title{ font-size:14px; font-weight:600; }
.c-task__meta{ font-size:12px; color:var(--ink-muted); margin-top:2px; }
.c-task__act{ color:var(--ink-subtle); }

/* entity row */
.c-entity{ display:flex; align-items:center; gap:12px; padding:11px 14px; background:var(--surface); border:1px solid var(--line); }
.c-entity:first-child{ border-radius:var(--r-md) var(--r-md) 0 0; }
.c-entity:last-child{ border-radius:0 0 var(--r-md) var(--r-md); }
.c-entity + .c-entity{ border-top:0; }
.c-entity__avatar{ width:38px; height:38px; border-radius:50%; flex:0 0 auto; display:grid; place-items:center; font-weight:700; font-size:13px; color:#fff; background:var(--neutral); }
.c-entity__body{ flex:1; min-width:0; }
.c-entity__name{ font-size:14px; font-weight:600; }
.c-entity__meta{ font-size:12px; color:var(--ink-muted); margin-top:1px; }

/* section label */
.kd-seclabel{ display:flex; align-items:center; justify-content:space-between; margin:0 0 10px; }
.kd-seclabel h4{ margin:0; font-size:13px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; color:var(--ink-subtle); }
.kd-seclabel a{ font-size:13px; font-weight:600; color:var(--brand); text-decoration:none; display:inline-flex; align-items:center; gap:3px; }

/* ---- Compat: alte Badge-Klassen auf neue kd-ds.css-Varianten mappen ---- */
.kd-pill--ok, .status-badge.status-aktiv { color:var(--ok); background:color-mix(in srgb,var(--ok) 14%,transparent); }
.kd-pill--warn, .status-badge.status-warning, .status-badge.status-gesperrt { color:var(--wait); background:color-mix(in srgb,var(--wait) 16%,transparent); }
.kd-pill--err, .status-badge.status-danger { color:var(--crit); background:color-mix(in srgb,var(--crit) 14%,transparent); }
.kd-pill--info { color:var(--info); background:color-mix(in srgb,var(--info) 14%,transparent); }
.status-badge.status-passantrag, .status-badge.status-unterlagen_erhalten { color:var(--info); background:color-mix(in srgb,var(--info) 14%,transparent); }
/* Passwesen-Pipeline-Status (fest, nicht markenabhängig) */
:root { --st-fehlt:var(--crit); --st-ange:var(--wait); --st-hoch:var(--info); --st-pruef:#7C3AED; --st-ok:var(--ok); }
[data-theme="dark"] { --st-pruef:#A78BFA; }

/* ---- Hero-Event-Card (.hero-ev) ---- */
.hero-ev{ border-radius:var(--r-lg); padding:16px; background:color-mix(in srgb,var(--brand) 12%,var(--surface)); border:1px solid color-mix(in srgb,var(--brand) 26%,transparent); }
.hero-ev__top{ display:flex; align-items:center; gap:8px; font-size:12px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--brand); }
.hero-ev__top .ic{ width:14px; height:14px; flex-shrink:0; }
.hero-ev__title{ font-size:19px; font-weight:700; margin-top:8px; color:var(--ink); }
.hero-ev__meta{ display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:8px; font-size:13px; color:var(--ink-muted); }
.hero-ev__meta span{ display:inline-flex; align-items:center; gap:5px; }
.hero-ev__meta .ic{ width:13px; height:13px; flex-shrink:0; }
.hero-ev__foot{ display:flex; align-items:center; gap:10px; margin-top:14px; flex-wrap:wrap; }
.hero-ev__resp{ font-size:13px; color:var(--ink-muted); }
.hero-ev__resp b{ color:var(--ink); }
.hero-ev--none{ background:var(--surface-2); border-color:var(--line); }
.hero-ev--none .hero-ev__top{ color:var(--ink-muted); }
.hero-ev--none .hero-ev__title{ color:var(--ink-muted); font-weight:500; }

/* ---- Section wrapper & stack ---- */
.kd-sec{ margin-top:24px; }
.kd-stack{ display:flex; flex-direction:column; gap:8px; }

/* ---- Teamseite (mt-*) ---- */
.mt-page{ max-width:1100px; margin:0 auto 32px; padding:.6rem .8rem 5rem; }
.mt-head{ display:flex; align-items:center; gap:14px; margin-bottom:16px; }
.mt-head__photo{ width:52px; height:52px; border-radius:14px; object-fit:cover; flex-shrink:0; border:1px solid var(--line); }
.mt-head__crest{ width:52px; height:52px; border-radius:14px; background:var(--brand); color:var(--brand-ink); display:grid; place-items:center; font-family:var(--font-display); font-size:15px; font-weight:900; flex-shrink:0; letter-spacing:-.02em; }
.mt-head__eyebrow{ font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-muted); }
.mt-head__name{ font-family:var(--font-display); font-size:clamp(22px,4vw,34px); font-weight:900; color:var(--ink); margin:4px 0 0; line-height:1.1; letter-spacing:-.02em; }
.mt-statstrip{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:16px; }
.mt-stat{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); padding:12px 14px; text-align:center; }
.mt-stat strong{ display:block; font-family:var(--font-display); font-size:26px; font-weight:900; color:var(--ink); line-height:1; }
.mt-stat span{ display:block; font-size:11px; font-weight:700; color:var(--ink-muted); text-transform:uppercase; letter-spacing:.04em; margin-top:4px; }
.mt-stat--warn strong{ color:var(--crit); }
.mt-stat--warn{ border-color:color-mix(in srgb,var(--crit) 30%,var(--line)); }
.mt-taskbar{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:20px; }
.mt-taskpill{ display:inline-flex; align-items:center; gap:5px; padding:7px 12px; border-radius:var(--r-pill); background:var(--surface); border:1px solid var(--line-strong); color:var(--ink); font-size:13px; font-weight:600; text-decoration:none; cursor:pointer; font-family:inherit; transition:background .12s,border-color .12s; white-space:nowrap; }
.mt-taskpill:hover{ background:var(--surface-2); }
.mt-taskpill--primary{ background:var(--brand); border-color:var(--brand); color:var(--brand-ink); }
.mt-taskpill--primary:hover{ filter:brightness(1.06); }
.mt-taskpill--active{ background:color-mix(in srgb,var(--brand) 12%,var(--surface)); border-color:var(--brand); color:var(--brand); }
/* ---- Nachrichten / Inbox ---- */
.kd-inbox{ max-width:720px; margin:0 auto; padding:.8rem 0 6rem; }
.kd-inbox__head{ display:flex; align-items:baseline; justify-content:space-between; padding:.4rem .9rem 1rem; gap:.6rem; }
.kd-inbox__title{ font-family:var(--font-display); font-weight:900; font-size:clamp(22px,3vw,28px); letter-spacing:-0.02em; margin:0; color:var(--ink); }
.kd-inbox__meta{ color:var(--ink-muted); font-size:.82rem; font-weight:600; }
.kd-inbox__meta strong{ color:var(--brand); }
.kd-inbox__toolbar{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; padding:0 .9rem .8rem; border-bottom:1px solid var(--line); }
.kd-inbox__search{ flex:1 1 220px; min-width:200px; max-width:360px; display:flex; align-items:center; gap:6px; background:var(--surface-2); border:1px solid var(--line); border-radius:9px; padding:6px 10px; color:var(--ink-muted); }
.kd-inbox__search input{ flex:1; border:0; background:transparent; color:var(--ink); font-size:.9rem; outline:0; padding:2px 4px; }
.kd-inbox__search input::placeholder{ color:var(--ink-muted); }
.kd-inbox__chip{ background:var(--surface-2); color:var(--ink); border:1px solid var(--line); border-radius:var(--r-pill); padding:6px 14px; font-size:.82rem; font-weight:700; text-decoration:none; cursor:pointer; transition:background .12s,border-color .12s; font-family:inherit; }
.kd-inbox__chip:hover{ border-color:var(--brand); color:var(--brand); }
.kd-inbox__chip.is-on{ background:var(--brand); color:var(--brand-ink); border-color:var(--brand); }
.kd-inbox__chip--action{ background:color-mix(in srgb,var(--brand) 10%,var(--surface)); color:var(--brand); border-color:var(--brand); }
.kd-inbox__chip--action:hover{ background:var(--brand); color:var(--brand-ink); }
.kd-inbox__list{ list-style:none; padding:0; margin:0; border-top:1px solid var(--line); }
.kd-inbox__row{ display:grid; grid-template-columns:44px 1fr auto; gap:12px; align-items:center; padding:12px 16px; border-bottom:1px solid var(--line); text-decoration:none; color:inherit; background:var(--surface); }
.kd-inbox__row:hover{ background:var(--surface-2); }
.kd-inbox__row[data-unread="true"]{ background:color-mix(in srgb,var(--brand) 5%,transparent); }
.kd-inbox__row[data-unread="true"]:hover{ background:color-mix(in srgb,var(--brand) 8%,transparent); }
.kd-inbox__avatar{ width:44px; height:44px; border-radius:50%; background:color-mix(in srgb,var(--brand) 14%,var(--surface)); color:var(--brand); display:inline-flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:900; font-size:13px; letter-spacing:-0.04em; flex-shrink:0; }
.kd-inbox__row[data-unread="true"] .kd-inbox__avatar{ background:var(--brand); color:var(--brand-ink); }
.kd-inbox__body{ min-width:0; }
.kd-inbox__topline{ display:flex; justify-content:space-between; gap:8px; align-items:baseline; }
.kd-inbox__partner{ font-weight:700; font-size:14.5px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kd-inbox__row[data-unread="true"] .kd-inbox__partner{ font-weight:800; }
.kd-inbox__time{ color:var(--ink-muted); font-size:11.5px; flex-shrink:0; font-weight:500; }
.kd-inbox__preview{ color:var(--ink-muted); font-size:12.5px; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kd-inbox__row[data-unread="true"] .kd-inbox__preview{ color:var(--ink); }
.kd-inbox__context{ margin-top:2px; font-size:10.5px; color:var(--ink-subtle); letter-spacing:.03em; }
.kd-inbox__unread{ background:var(--brand); color:var(--brand-ink); font-family:var(--font-display); font-size:11px; font-weight:900; padding:2px 7px; border-radius:var(--r-pill); min-width:22px; text-align:center; flex-shrink:0; }
.kd-inbox__empty{ padding:3rem 1rem; text-align:center; color:var(--ink-subtle); font-size:.9rem; }
.kd-inbox__empty__icon{ font-size:2.5rem; margin-bottom:.6rem; opacity:.5; }
.kd-inbox__fab{ position:fixed; right:1rem; bottom:calc(5.5rem + env(safe-area-inset-bottom, 0px)); width:56px; height:56px; border-radius:50%; background:var(--brand); color:var(--brand-ink); box-shadow:0 8px 24px color-mix(in srgb,var(--brand) 30%,transparent); display:inline-flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:1.75rem; font-weight:900; line-height:1; text-decoration:none; z-index:30; border:0; }
.kd-inbox__fab:active{ transform:scale(.94); }
@media(min-width:900px){ .kd-inbox__fab{ bottom:1.5rem; right:1.5rem; } }
/* audience toggle (Nachricht verfassen) */
.kd-aud-toggle{ display:grid; grid-template-columns:repeat(3,1fr); gap:.5rem; }
.kd-aud-opt{ display:flex; flex-direction:column; align-items:center; gap:.2rem; padding:.7rem .4rem; border:2px solid var(--line); border-radius:10px; cursor:pointer; background:var(--surface); color:var(--ink); transition:all .15s; }
.kd-aud-opt:has(input:checked){ border-color:var(--brand); background:color-mix(in srgb,var(--brand) 10%,var(--surface)); }
.kd-aud-opt__icon{ font-size:1.3rem; }
.kd-aud-opt__label{ font-weight:600; font-size:.9rem; }
.kd-aud-opt__count{ font-size:.78rem; color:var(--ink-muted); }
.kd-aud-opt:has(input:checked) .kd-aud-opt__count{ color:var(--brand); font-weight:600; }
@media(max-width:720px){ .kd-aud-toggle{ grid-template-columns:1fr!important; } }

/* ---- Tabs ---- */
.kd-tabs{ display:flex; gap:2px; border-bottom:2px solid var(--line); margin-bottom:20px; overflow-x:auto; scrollbar-width:none; }
.kd-tabs::-webkit-scrollbar{ display:none; }
.kd-tab{ display:inline-flex; align-items:center; gap:6px; padding:9px 14px; background:transparent; border:none; border-bottom:3px solid transparent; margin-bottom:-2px; font:inherit; font-size:14px; font-weight:600; color:var(--ink-muted); cursor:pointer; white-space:nowrap; transition:color .15s,border-color .15s; }
.kd-tab:hover{ color:var(--ink); }
.kd-tab--active{ color:var(--brand); border-bottom-color:var(--brand); }
.kd-tab__badge{ display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 5px; border-radius:var(--r-pill); font-size:11px; font-weight:700; color:#fff; background:var(--brand); }
.kd-panel{ min-height:100px; }


/* ---- Kalender (kdcal-*) ---- */
/* ============== Theme-Tokens (Event-Farben) ============== */
.kdcal {
    --training: #16a34a;
    --training-soft: #dcfce7;
    --training-text: #14532d;
    --spiel: var(--brand);
    --spiel-soft: var(--primary-soft);
    --spiel-text: #7f1d1d;
    --freundschaft: #f59e0b;
    --freundschaft-soft: #fef3c7;
    --freundschaft-text: #78350f;
    --turnier: #8b5cf6;
    --turnier-soft: #ede9fe;
    --turnier-text: #4c1d95;
    --conflict: #dc2626;
    --primary-soft: color-mix(in srgb,var(--brand) 12%,var(--surface));
}
[data-theme="dark"] .kdcal {
    --training-soft: rgba(22,163,74,.18);
    --training-text: #86efac;
    --spiel-soft: rgba(220,38,38,.18);
    --spiel-text: #fca5a5;
    --freundschaft-soft: rgba(245,158,11,.18);
    --freundschaft-text: #fcd34d;
    --turnier-soft: rgba(139,92,246,.18);
    --turnier-text: #c4b5fd;
}

/* ============== Toolbar ============== */
.kdcal-toolbar {
    display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
    padding:.7rem .9rem;
    background:var(--surface);
    border:1px solid var(--line);
    border-radius:10px 10px 0 0;
    border-bottom:0;
}
.kdcal-nav-btn {
    width:32px;height:32px;
    border:1px solid var(--line);
    background:var(--surface);
    color:var(--ink-muted);
    border-radius:6px;
    cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;
    text-decoration:none;
    font-size:1rem;
}
.kdcal-nav-btn:hover { background:var(--surface-2);color:var(--ink); }
.kdcal-today-btn {
    height:32px;padding:0 .8rem;
    border:1px solid var(--line);
    background:var(--surface);color:var(--ink);
    border-radius:6px;cursor:pointer;
    font-size:.85rem;font-weight:500;
    text-decoration:none;display:inline-flex;align-items:center;
}
.kdcal-today-btn:hover { background:var(--surface-2); }
.kdcal-title {
    font-size:.95rem;font-weight:600;color:var(--ink);
    margin-left:.3rem;
}
.kdcal-title small {
    color:var(--ink-muted);font-weight:500;margin-left:.4rem;
}
.kdcal-mode-group {
    display:inline-flex;
    background:var(--surface-2);
    border:1px solid var(--line);
    border-radius:8px;
    padding:2px;
    margin-left:.4rem;
}
.kdcal-mode-group a {
    height:26px;padding:0 .8rem;
    display:inline-flex;align-items:center;
    border:0;background:transparent;
    color:var(--ink-muted);
    border-radius:6px;cursor:pointer;
    font-size:.8rem;font-weight:600;
    text-decoration:none;
}
.kdcal-mode-group a[aria-pressed="true"] {
    background:var(--brand);color:var(--brand-ink);
}
.kdcal-sep { width:1px;height:20px;background:var(--line); }
.kdcal-filter {
    height:32px;padding:0 .7rem;
    border:1px solid var(--line);
    background:var(--surface);color:var(--ink);
    border-radius:6px;cursor:pointer;
    font-size:.8rem;
}

/* ============== Canvas ============== */
.kdcal-canvas {
    background:var(--surface);
    border:1px solid var(--line);
    border-top:0;
    border-radius:0 0 10px 10px;
    overflow:hidden;
}

/* ============== Tag-Tabs (Plan-Mode) ============== */
.kdcal-day-tabs {
    display:flex;
    border-bottom:1px solid var(--line);
    background:var(--surface);
    overflow-x:auto;
}
/* Desktop: Tag-Tabs nur ueber der ResourceTimeline, nicht ueber der Sidebar.
   Mobile: zusaetzliche Tag-Tabs oberhalb der Sidebar einblenden.
   Bug-Fix 16.05.2026: auf Mobile nur die --mobile-Variante zeigen,
   die in kdcal-plan-main wuerde sonst zusaetzlich rendern. */
.kdcal-day-tabs--mobile { display:none; }
@media(max-width:900px) {
    .kdcal-day-tabs--mobile { display:flex; }
    .kdcal-plan-main > .kdcal-day-tabs:not(.kdcal-day-tabs--mobile) { display:none; }
}
.kdcal-day-tab {
    flex:1;min-width:90px;
    padding:.55rem .4rem;
    text-align:center;
    border:0;border-right:1px solid var(--line);
    background:transparent;cursor:pointer;
    font-family:inherit;color:var(--ink);
    text-decoration:none;
    display:block;
}
/* Auf schmalen Screens (Phone) alle 7 Tage in einer Zeile zeigen.
   Ohne diese Regel pass min-width:90px*7=630px nicht aufs iPhone. */
@media(max-width:720px) {
    .kdcal-day-tabs--mobile .kdcal-day-tab { min-width:0; padding:.5rem .15rem; }
    .kdcal-day-tabs--mobile .kdcal-day-tab__name { font-size:.6rem; }
    .kdcal-day-tabs--mobile .kdcal-day-tab__date { font-size:.95rem; }
    .kdcal-day-tabs--mobile .kdcal-day-tab__count { font-size:.6rem; }
}
.kdcal-day-tab:last-child { border-right:0; }
.kdcal-day-tab[aria-pressed="true"] {
    background:var(--surface-2);
    box-shadow:inset 0 -2px 0 var(--brand);
}
.kdcal-day-tab[data-today="true"] .kdcal-day-tab__name { color:var(--brand); }
.kdcal-day-tab__name { font-size:.65rem;font-weight:700;color:var(--ink-muted);letter-spacing:.06em; }
.kdcal-day-tab__date { font-size:1rem;font-weight:600;color:var(--ink);margin-top:1px; }
.kdcal-day-tab__count {
    margin-top:2px;display:inline-flex;align-items:center;gap:3px;
    font-size:.65rem;color:var(--ink-muted);
}
.kdcal-day-tab__count[data-conflict="true"] { color:var(--conflict);font-weight:600; }
.kdcal-day-tab__count .dot { width:5px;height:5px;border-radius:50%;background:var(--conflict); }
.kdcal-day-tab__ff {
    margin-top:2px;font-size:.58rem;font-weight:700;line-height:1.2;
    max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.kdcal-day-tab__ff[data-typ="feiertag"] { color:#16a34a; }
.kdcal-day-tab__ff[data-typ="ferien"]   { color:#f59e0b; }

/* ============== Plan-View ============== */
.kdcal-plan { display:grid;grid-template-columns:1fr 300px; }
@media(max-width:900px) { .kdcal-plan { grid-template-columns:1fr; } }
.kdcal-plan-main {
    border-right:1px solid var(--line);
    min-width:0;
    overflow-x:auto;
}
@media(max-width:900px) {
    .kdcal-plan-main {
        display:block;
        border-right:0;
        border-bottom:1px solid var(--line);
    }
}

.kdcal-rt-grid {
    display:grid;
    grid-template-columns:130px 1fr;
    min-width:760px;
}
.kdcal-rt-headers {
    grid-column:2;
    display:grid;
    grid-template-columns:repeat(15, 1fr);
    background:var(--surface-2);
    border-bottom:1px solid var(--line);
}
.kdcal-rt-header-cell {
    padding:.4rem .2rem;text-align:center;
    font-size:.65rem;color:var(--ink-muted);font-weight:500;
    border-right:1px solid var(--line);
}
.kdcal-rt-resource {
    padding:0 .8rem;
    display:flex;flex-direction:column;justify-content:center;
    border-right:1px solid var(--line);
    border-bottom:1px solid var(--line);
    background:var(--surface);
    min-height:60px;
}
.kdcal-rt-resource__name { font-size:.85rem;font-weight:600;color:var(--ink); }
.kdcal-rt-resource__meta {
    font-size:.7rem;color:var(--ink-muted);
    display:flex;align-items:center;gap:.3rem;margin-top:2px;
}
.kdcal-rt-resource__split {
    font-size:.6rem;font-weight:600;
    padding:1px 4px;background:var(--surface-2);border-radius:3px;
    color:var(--ink-muted);
}
.kdcal-rt-row {
    position:relative;
    height:64px;
    border-bottom:1px solid var(--line);
}
.kdcal-rt-row[data-split="true"] { height:96px; }
.kdcal-rt-row[data-split="3"] { height:132px; }
.kdcal-rt-row[data-split="4"] { height:176px; }
.kdcal-rt-row__half {
    position:relative;
    height:48px;
    border-bottom:1px dashed var(--line);
}
.kdcal-rt-row[data-split="3"] .kdcal-rt-row__half { height:44px; }
.kdcal-rt-row[data-split="4"] .kdcal-rt-row__half { height:44px; }
.kdcal-rt-row__half:last-child { border-bottom:0; }
.kdcal-rt-row__half-label {
    position:absolute;left:4px;top:3px;
    font-size:.6rem;color:var(--ink-subtle);font-weight:600;
    z-index:1;
}
.kdcal-rt-cells {
    position:absolute;inset:0;
    display:grid;grid-template-columns:repeat(15, 1fr);
    pointer-events:none;
}
.kdcal-rt-cells > div {
    border-right:1px solid var(--line);
}

.kdcal-rt-event {
    position:absolute;top:3px;bottom:3px;
    border-radius:4px;
    padding:3px 6px;
    font-size:.7rem;line-height:1.2;
    background:var(--surface);
    border:1px solid;
    cursor:pointer;
    overflow:hidden;
    box-shadow:0 1px 2px rgba(0,0,0,.04);
    display:flex;flex-direction:column;justify-content:center;
}
.kdcal-rt-event[data-lane="1"] { top:50%;bottom:3px; }
.kdcal-rt-event[data-lane="0"][data-stacked="true"] { top:3px;bottom:50%; }
.kdcal-rt-event[data-type="training"] { background:var(--training-soft);border-color:var(--training);color:var(--training-text); }
.kdcal-rt-event[data-type="spiel"] { background:var(--spiel-soft);border-color:var(--spiel);color:var(--spiel-text); }
.kdcal-rt-event[data-type="freundschaft"] { background:var(--freundschaft-soft);border-color:var(--freundschaft);color:var(--freundschaft-text); }
.kdcal-rt-event[data-type="turnier"] { background:var(--turnier-soft);border-color:var(--turnier);color:var(--turnier-text); }
.kdcal-rt-event[data-conflict="true"] {
    border-color:var(--conflict);border-width:2px;
    box-shadow:0 0 0 1px var(--surface), 0 0 0 3px var(--conflict);
    z-index:2;
}
.kdcal-rt-event__top { display:flex;align-items:center;gap:5px;font-weight:600;font-size:.7rem; }
.kdcal-rt-event__time { font-size:.65rem;opacity:.85;font-weight:500; }
.kdcal-rt-event__title { font-weight:600;font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.kdcal-conflict-badge {
    background:var(--conflict);color:#fff;
    font-size:.55rem;font-weight:700;
    padding:1px 4px;border-radius:3px;margin-left:auto;
}
.kdcal-overlap-badge {
    border:1px dashed currentColor;
    font-size:.55rem;font-weight:700;
    padding:1px 4px;border-radius:3px;margin-left:auto;
    background:rgba(255,255,255,.36);
}

/* ============== Sidebar ============== */
.kdcal-side {
    background:var(--surface-2);
    display:flex;flex-direction:column;
    min-width:0;
}
@media(max-width:900px) {
    .kdcal-side { background:var(--surface); }
}
.kdcal-side__section { min-width:0; }
.kdcal-side__section {
    padding:.85rem 1rem;
    border-bottom:1px solid var(--line);
}
.kdcal-side__section:last-child { border-bottom:0; }
.kdcal-side__head {
    display:flex;align-items:baseline;justify-content:space-between;
    margin-bottom:.6rem;
}
.kdcal-side__head h3 {
    margin:0;
    font-size:.7rem;font-weight:700;
    color:var(--ink-muted);
    letter-spacing:.08em;text-transform:uppercase;
}
.kdcal-side__hint { font-size:.65rem;color:var(--ink-subtle); }

.kdcal-heatmap {
    display:grid;
    grid-template-columns:24px repeat(7, 1fr);
    gap:2px;
}
.kdcal-heatmap__day-btn {
    text-align:center;
    font-size:.6rem;font-weight:700;
    color:var(--ink-muted);
    padding:3px 0;
    letter-spacing:.05em;
    border:0;background:transparent;
    border-radius:3px;cursor:pointer;
    font-family:inherit;
    text-decoration:none;
    display:block;
}
.kdcal-heatmap__day-btn:hover { background:var(--surface);color:var(--ink); }
.kdcal-heatmap__day-btn[data-active="true"] {
    background:var(--brand);color:var(--brand-ink);
}
.kdcal-heatmap__day-btn[data-today="true"]:not([data-active="true"]) {
    color:var(--brand);
}
.kdcal-heatmap__hour {
    font-size:.55rem;color:var(--ink-subtle);
    padding:2px 2px 2px 0;text-align:right;font-variant-numeric:tabular-nums;
}
.kdcal-heatmap__cell {
    height:14px;border-radius:2px;
    background:var(--surface-2);
    cursor:pointer;
    transition:transform .1s;
}
.kdcal-heatmap__cell:hover { transform:scale(1.15); }
.kdcal-heatmap__cell[data-load="1"] { background:#d1fae5; }
.kdcal-heatmap__cell[data-load="2"] { background:#6ee7b7; }
.kdcal-heatmap__cell[data-load="3"] { background:#10b981; }
.kdcal-heatmap__cell[data-load="4"] { background:#047857; }
.kdcal-heatmap__cell[data-conflict="true"] { background:var(--conflict); }
.kdcal-heatmap__cell[data-active="true"] {
    outline:1.5px solid var(--brand);outline-offset:0;
}
[data-theme="dark"] .kdcal-heatmap__cell { background:rgba(255,255,255,.04); }
[data-theme="dark"] .kdcal-heatmap__cell[data-load="1"] { background:rgba(22,163,74,.30); }
[data-theme="dark"] .kdcal-heatmap__cell[data-load="2"] { background:rgba(22,163,74,.45); }
[data-theme="dark"] .kdcal-heatmap__cell[data-load="3"] { background:rgba(22,163,74,.65); }
[data-theme="dark"] .kdcal-heatmap__cell[data-load="4"] { background:rgba(22,163,74,.85); }

.kdcal-legend {
    display:flex;gap:.5rem;flex-wrap:wrap;
    margin-top:.6rem;font-size:.6rem;color:var(--ink-muted);
}
.kdcal-legend__item { display:inline-flex;align-items:center;gap:3px; }
.kdcal-legend__sw { width:10px;height:10px;border-radius:2px; }

.kdcal-agenda { display:flex;flex-direction:column;gap:4px;max-height:420px;overflow-y:auto; }
.kdcal-agenda__item {
    display:flex;gap:.6rem;
    padding:.5rem;
    border-radius:6px;
    border-left:3px solid transparent;
    background:var(--surface);
    cursor:pointer;
}
.kdcal-agenda__item:hover { box-shadow:0 1px 3px rgba(0,0,0,.08); }
.kdcal-agenda__item[data-type="training"] { border-left-color:var(--training); }
.kdcal-agenda__item[data-type="spiel"] { border-left-color:var(--spiel); }
.kdcal-agenda__item[data-type="freundschaft"] { border-left-color:var(--freundschaft); }
.kdcal-agenda__item[data-type="turnier"] { border-left-color:var(--turnier); }
.kdcal-agenda__time {
    display:flex;flex-direction:column;
    min-width:42px;
    font-variant-numeric:tabular-nums;line-height:1.1;
}
.kdcal-agenda__time strong { font-size:.78rem;font-weight:600;color:var(--ink); }
.kdcal-agenda__time small { font-size:.65rem;color:var(--ink-muted);margin-top:1px; }
.kdcal-agenda__main { flex:1;min-width:0; }
.kdcal-agenda__title {
    font-size:.78rem;font-weight:600;color:var(--ink);
    display:flex;align-items:center;gap:5px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.kdcal-agenda__sub {
    font-size:.7rem;color:var(--ink-muted);
    margin-top:2px;
    display:flex;gap:4px;flex-wrap:wrap;
}
.kdcal-chip-conflict {
    display:inline-flex;align-items:center;
    background:rgba(220,38,38,.15);color:var(--conflict);
    font-size:.6rem;font-weight:700;
    padding:1px 5px;border-radius:3px;
}
.kdcal-empty {
    padding:1.2rem;text-align:center;
    color:var(--ink-subtle);font-size:.75rem;font-style:italic;
}

.kdcal-summary { display:flex;flex-direction:column;gap:4px;font-size:.78rem; }
.kdcal-summary__row {
    display:flex;justify-content:space-between;align-items:center;
    padding:4px 0;
}
.kdcal-summary__row strong { color:var(--ink-muted);font-weight:500; }
.kdcal-summary__count {
    background:var(--surface);
    padding:1px 8px;border-radius:10px;
    font-weight:600;font-size:.75rem;
    border:1px solid var(--line);
}
.kdcal-summary__count[data-tone="conflict"] {
    background:rgba(220,38,38,.15);
    color:var(--conflict);
    border-color:transparent;
}

/* ============== Week-View ============== */
.kdcal-week { overflow-x:auto; }
.kdcal-week-grid {
    display:grid;grid-template-columns:56px repeat(7, minmax(110px,1fr));
    min-width:840px;
}
.kdcal-week-corner {
    border-right:1px solid var(--line);
    border-bottom:1px solid var(--line);
}
.kdcal-week-day-head {
    padding:.6rem .4rem;text-align:center;
    border-right:1px solid var(--line);
    border-bottom:1px solid var(--line);
    background:var(--surface-2);
}
.kdcal-week-day-head[data-today="true"] {
    background:var(--primary-soft);
}
.kdcal-week-day-head__name {
    font-size:.65rem;font-weight:700;color:var(--ink-muted);letter-spacing:.08em;
}
.kdcal-week-day-head[data-today="true"] .kdcal-week-day-head__name { color:var(--brand); }
.kdcal-week-day-head__date { font-size:1.1rem;font-weight:600;color:var(--ink);margin-top:1px; }

.kdcal-week-time-col { border-right:1px solid var(--line); }
.kdcal-week-time-cell {
    height:48px;
    padding:3px 5px 0 0;text-align:right;
    font-size:.6rem;color:var(--ink-subtle);font-weight:500;
    border-bottom:1px solid var(--line);
}
.kdcal-week-day-col {
    border-right:1px solid var(--line);
    position:relative;
}
.kdcal-week-day-col[data-today="true"] {
    background:linear-gradient(180deg, var(--primary-soft), transparent 30%);
}
.kdcal-week-cell {
    height:48px;border-bottom:1px solid var(--line);
}
.kdcal-week-event {
    position:absolute;
    border-radius:4px;
    padding:3px 5px;
    font-size:.65rem;line-height:1.2;
    background:var(--surface);
    border:1px solid;
    cursor:pointer;
    overflow:hidden;
    box-shadow:0 1px 2px rgba(0,0,0,.04);
    display:flex;flex-direction:column;gap:1px;
}
.kdcal-week-event[data-type="training"] { background:var(--training-soft);border-color:var(--training);color:var(--training-text); }
.kdcal-week-event[data-type="spiel"] { background:var(--spiel-soft);border-color:var(--spiel);color:var(--spiel-text); }
.kdcal-week-event[data-type="freundschaft"] { background:var(--freundschaft-soft);border-color:var(--freundschaft);color:var(--freundschaft-text); }
.kdcal-week-event[data-type="turnier"] { background:var(--turnier-soft);border-color:var(--turnier);color:var(--turnier-text); }
.kdcal-week-event[data-conflict="true"] {
    border-color:var(--conflict);border-width:2px;
    box-shadow:0 0 0 1px var(--surface), 0 0 0 3px var(--conflict);
    z-index:2;
}
.kdcal-week-event__time { font-size:.6rem;opacity:.85;font-weight:500; }
.kdcal-week-event__title { font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.kdcal-week-event__pitch {
    display:inline-flex;align-items:center;gap:2px;
    font-size:.55rem;font-weight:500;
    padding:1px 3px;
    background:rgba(0,0,0,.08);border-radius:2px;
    align-self:flex-start;
}
[data-theme="dark"] .kdcal-week-event__pitch { background:rgba(255,255,255,.10); }

@media(max-width:900px) {
    .kdcal-week { display:block; }
}

/* ============== Mobile Tages-Ansicht (Mockup 13 / #192) ============== */
.kdcal-mday { display:none; }
@media(max-width:900px) {
    .kdcal-plan-main .kdcal-rt-grid { display:none; }
    .kdcal-plan .kdcal-side .kdcal-side__section--day-agenda { display:none; }
    .kdcal-mday { display:block; padding:.5rem .6rem .8rem; }
}
.kdcal-mday__conflict {
    margin:.4rem 0 .9rem;
    padding:.7rem .85rem;
    background:rgba(220,38,38,.10);
    border:1px solid var(--conflict);
    border-left:4px solid var(--conflict);
    border-radius:8px;
    color:var(--conflict);
    font-size:.78rem;line-height:1.4;
}
.kdcal-mday__conflict-head {
    display:block;font-weight:700;font-size:.85rem;margin-bottom:.3rem;
    color:var(--conflict);
}
.kdcal-mday__conflict-list { list-style:none;padding:0;margin:0; }
.kdcal-mday__conflict-list li { padding:2px 0;color:var(--ink); }
.kdcal-mday__conflict-list li strong { color:var(--conflict);font-weight:700; }

.kdcal-mday__section {
    margin-bottom:.85rem;
    background:var(--surface);
    border:1px solid var(--line);
    border-radius:10px;
    overflow:hidden;
}
.kdcal-mday__header {
    padding:.55rem .8rem;
    background:var(--surface-2);
    border-bottom:1px solid var(--line);
    display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;
}
.kdcal-mday__title { font-weight:700;font-size:.9rem;color:var(--ink); }
.kdcal-mday__meta { font-size:.7rem;color:var(--ink-muted);font-weight:500;margin-left:auto; }
.kdcal-mday__split-chip {
    display:inline-block;
    margin-left:.4rem;
    padding:1px 6px;
    background:var(--primary-soft);color:var(--brand);
    border:1px solid var(--brand);
    border-radius:4px;
    font-size:.6rem;font-weight:700;letter-spacing:.04em;
    vertical-align:middle;
}

.kdcal-mday__slot {
    display:flex;align-items:center;gap:.7rem;
    padding:.6rem .8rem;
    min-height:44px;
    border-bottom:1px solid var(--line);
    text-decoration:none;color:inherit;
    background:var(--surface);
}
.kdcal-mday__slot:last-child { border-bottom:0; }
.kdcal-mday__slot[data-editable="true"] { cursor:pointer; }
.kdcal-mday__slot[data-conflict="true"] {
    background:rgba(220,38,38,.08);
    box-shadow:inset 3px 0 0 var(--conflict);
}
.kdcal-mday__slot[data-overlap="true"]:not([data-conflict="true"]) {
    box-shadow:inset 3px 0 0 var(--ink-muted);
}
.kdcal-mday__time {
    font-weight:700;font-size:.85rem;color:var(--ink);
    min-width:54px;
    display:flex;flex-direction:column;line-height:1.15;
    flex-shrink:0;
}
.kdcal-mday__time small { font-size:.65rem;font-weight:500;color:var(--ink-muted); }
.kdcal-mday__body { flex:1;min-width:0; }
.kdcal-mday__row1 {
    display:flex;align-items:center;gap:.4rem;
    font-size:.82rem;font-weight:600;color:var(--ink);
    line-height:1.25;flex-wrap:wrap;
}
.kdcal-mday__team {
    padding:1px 6px;border-radius:4px;
    font-size:.65rem;font-weight:700;letter-spacing:.02em;
    background:var(--surface-2);color:var(--ink);
    border:1px solid var(--line);
    flex-shrink:0;
}
.kdcal-mday__row2 {
    margin-top:3px;
    font-size:.72rem;color:var(--ink-muted);
    display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
}
.kdcal-mday__type-dot {
    width:7px;height:7px;border-radius:50%;flex-shrink:0;
    display:inline-block;
}
.kdcal-mday__slot[data-type="training"] .kdcal-mday__type-dot { background:var(--training); }
.kdcal-mday__slot[data-type="spiel"] .kdcal-mday__type-dot { background:var(--spiel); }
.kdcal-mday__slot[data-type="freundschaft"] .kdcal-mday__type-dot { background:var(--freundschaft); }
.kdcal-mday__slot[data-type="turnier"] .kdcal-mday__type-dot { background:var(--turnier); }
.kdcal-mday__chev {
    color:var(--ink-subtle);font-size:1.15rem;flex-shrink:0;
    font-weight:300;line-height:1;
}
.kdcal-mday__slot:not([data-editable="true"]) .kdcal-mday__chev { visibility:hidden; }
.kdcal-mday__badge-conflict {
    background:var(--conflict);color:#fff;
    font-size:.55rem;font-weight:700;letter-spacing:.04em;
    padding:1px 5px;border-radius:3px;
}
.kdcal-mday__badge-overlap {
    border:1px dashed var(--ink-muted);
    font-size:.55rem;font-weight:700;letter-spacing:.04em;
    padding:1px 5px;border-radius:3px;color:var(--ink-muted);
}
.kdcal-mday__empty {
    padding:1.5rem .8rem;
    text-align:center;
    color:var(--ink-subtle);font-size:.85rem;
    background:var(--surface);
    border:1px dashed var(--line);
    border-radius:10px;
}

.kdcal-mday__fab {
    position:fixed;
    right:1rem;bottom:calc(5.5rem + env(safe-area-inset-bottom, 0px));
    width:56px;height:56px;
    border-radius:50%;
    background:var(--brand);color:var(--brand-ink);
    box-shadow:0 6px 18px rgba(0,0,0,.25);
    display:none;align-items:center;justify-content:center;
    font-size:1.75rem;font-weight:300;line-height:1;
    text-decoration:none;z-index:200;
    border:0;
}
.kdcal-mday__fab:active { transform:scale(.94); }
@media(max-width:900px) { .kdcal-mday__fab { display:flex; } }

.kdcal-mobile-hint {
    display:none;
    padding:.7rem 1rem;
    background:var(--surface-2);
    color:var(--ink-muted);
    font-size:.78rem;
    text-align:center;
    border-bottom:1px solid var(--line);
}
@media(max-width:900px) {
    .kdcal-mobile-hint { display:none; }
}

/* Editierbare Events: visuelle Andeutung (Cursor) */
.kdcal-rt-event[data-editable="true"],
.kdcal-week-event[data-editable="true"],
.kdcal-agenda__item[data-editable="true"] { cursor:pointer; }
.kdcal-rt-event[data-editable="true"] { cursor:grab; }
.kdcal-rt-event.kdcal-dragging { opacity:.4;cursor:grabbing; }
.kdcal-rt-row.kdcal-drop-over,
.kdcal-rt-row__half.kdcal-drop-over { background:var(--primary-soft); }
.kdcal-day-tab.kdcal-drop-over {
    background:var(--primary-soft);
    box-shadow:inset 0 0 0 2px var(--brand);
}
.kdcal-drop-indicator {
    position:absolute;top:2px;bottom:2px;
    width:2px;background:var(--brand);
    z-index:20;pointer-events:none;
    box-shadow:0 0 4px var(--brand);
}
.kdcal-drop-indicator::after {
    content:attr(data-time);
    position:absolute;left:4px;top:0;
    background:var(--brand);color:var(--brand-ink);
    font-size:.65rem;font-weight:700;
    padding:1px 5px;border-radius:3px;white-space:nowrap;
}

/* Edit-Modal */
.kdcal-modal {
    display:none;position:fixed;inset:0;
    background:rgba(0,0,0,.5);z-index:1000;
    align-items:center;justify-content:center;padding:1rem;
}
.kdcal-modal-inner {
    background:var(--surface);color:var(--ink);
    border:1px solid var(--line);border-radius:12px;
    padding:1.5rem;width:100%;max-width:480px;
    max-height:90vh;overflow-y:auto;
    box-shadow:0 20px 60px rgba(0,0,0,.3);
}
.kdcal-modal-inner h3 { margin:0 0 1.2rem;color:var(--brand);font-size:1.1rem; }
.kdcal-modal-inner label {
    display:block;color:var(--ink-muted);font-size:.8rem;font-weight:500;
    margin:.7rem 0 .25rem;
}
.kdcal-modal-inner input,
.kdcal-modal-inner select {
    background:var(--surface);color:var(--ink);
    border:1px solid var(--line);border-radius:6px;
    padding:.5rem .7rem;width:100%;font-family:inherit;font-size:.9rem;
}
.kdcal-modal-inner .row2 { display:grid;grid-template-columns:1fr 1fr;gap:.6rem; }
.kdcal-modal-inner .actions {
    display:flex;gap:.5rem;justify-content:space-between;
    margin-top:1.2rem;flex-wrap:wrap;
}
.kdcal-modal-inner button {
    padding:.5rem 1rem;border-radius:6px;font-weight:600;cursor:pointer;
    font-size:.85rem;border:1px solid var(--line);
    background:var(--surface);color:var(--ink);
}
.kdcal-modal-inner button.primary { background:var(--brand);color:var(--brand-ink);border-color:var(--brand); }
.kdcal-modal-inner button.danger { background:#dc2626;color:#fff;border-color:#dc2626; }

/* ============================================================
   Wizard-Shell (.kd-wiz) — wiederverwendbares Schritt-Muster.
   Redesign 2026 · Kap. 8 #9 / Audit 2 #4. Rein praesentational;
   static/js/kd-wizard.js steuert das Stepping + Pflichtfeld-Check.
   Marke != Status: --brand nur fuer Fortschritt + Primaeraktion.
   ============================================================ */
.kd-wiz{ --kd-wiz-max:640px; max-width:var(--kd-wiz-max); }
.kd-wiz__head{ margin:0 0 18px; }
.kd-wiz__headrow{ display:flex; align-items:center; gap:12px; min-height:38px; }
.kd-wiz__back{ width:38px; height:38px; border-radius:11px; border:1px solid var(--line-strong); background:var(--surface); color:var(--ink); display:grid; place-items:center; cursor:pointer; flex:0 0 auto; }
.kd-wiz__back:hover{ background:var(--surface-2); }
.kd-wiz__back[hidden]{ display:none; }
.kd-wiz__steplbl{ font-size:12px; font-weight:700; color:var(--ink-muted); letter-spacing:.02em; }
.kd-wiz__progress{ height:5px; border-radius:3px; background:var(--surface-2); margin:12px 0 0; overflow:hidden; }
.kd-wiz__progress i{ display:block; height:100%; width:0; background:var(--brand); border-radius:3px; transition:width .3s cubic-bezier(.2,.8,.2,1); }
.kd-wiz__step{ display:none; }
.kd-wiz__step.is-active{ display:block; animation:kd-wiz-in .25s ease; }
@keyframes kd-wiz-in{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
.kd-wiz__title{ font-family:var(--font-display); font-size:21px; letter-spacing:-0.02em; margin:2px 0 6px; color:var(--ink); }
.kd-wiz__sub{ font-size:14px; color:var(--ink-muted); margin:0 0 18px; }
.kd-wiz__nav{ margin-top:20px; }
/* Pflichtfeld-Markierung (semantisch, nicht markenabhaengig) */
.kd-req{ color:var(--crit); }

/* ============================================================
   Barrierefreiheit (Audit-3 #8) — additiver Baseline-Pass.
   Sichtbare Tastatur-Fokus-Ringe (:focus-visible stoert Maus-Nutzer
   nicht) + Reduced-Motion. Kein Markup-/Verhaltenseingriff.
   Status wird in den kd-ds-Komponenten ohnehin nie NUR ueber Farbe
   getragen (Icon + Text + .dot zusaetzlich).
   ============================================================ */
.btn:focus-visible,
.c-task:focus-visible,
.c-metric:focus-visible,
.c-entity:focus-visible,
.kd-wiz__back:focus-visible,
.kd-seclabel a:focus-visible,
.vz-link:focus-visible,
.kd a:focus-visible,
.kd button:focus-visible{
  outline:2px solid var(--brand);
  outline-offset:2px;
  border-radius:var(--r-sm,8px);
}
@media (prefers-reduced-motion: reduce){
  .kd-wiz__step.is-active{ animation:none; }
  .kd-wiz__progress i{ transition:none; }
  .btn{ transition:none; }
  .c-task, .c-metric, .c-entity{ transition:none; }
}
