/* ==========================================================================
   Computer-Freund ServiceOS — Design-System
   Basiert auf dem bestehenden Computer-Freund.at-Branding (Grün/Schwarz/
   Orange), aber als eigenständiges, professionelles internes Werkzeug
   gestaltet — dicht, funktional, ohne verspielte Website-Optik.
   ========================================================================== */

:root {
    --green: #1a9f4c;
    --green-dark: #0f7a39;
    --green-light: #e6f6ec;
    --orange: #ef7b1a;
    --ink: #15191c;
    --ink-soft: #3c4247;
    --muted: #6b7480;
    --paper: #f5f6f4;
    --white: #ffffff;
    --line: #e2e5e1;
    --line-strong: #cdd2cc;
    --danger: #c53030;
    --danger-bg: #fdecec;
    --warning: #a16207;
    --warning-bg: #fef6e6;
    --info-bg: #eef4fb;
    --radius: 6px;
    --shadow: 0 1px 2px rgba(20, 23, 20, 0.06), 0 1px 1px rgba(20, 23, 20, 0.04);
    --sidebar-width: 248px;
    --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

.legacy-content-skin * { box-sizing: border-box; }


.legacy-content-skin a { color: var(--green-dark); text-decoration: none; }
.legacy-content-skin a:hover { text-decoration: underline; }
.legacy-content-skin h1, .legacy-content-skin h2, .legacy-content-skin h3, .legacy-content-skin h4 { font-weight: 700; margin: 0 0 8px; color: var(--ink); }
.legacy-content-skin h1 { font-size: 22px; }
.legacy-content-skin h2 { font-size: 17px; }
.legacy-content-skin h3 { font-size: 14px; text-transform: uppercase; letter-spacing: 0.03em; color: var(--muted); }
.legacy-content-skin p { margin: 0 0 12px; }
.legacy-content-skin table { border-collapse: collapse; width: 100%; }
.legacy-content-skin code, .legacy-content-skin .mono { font-family: var(--mono); }

/* ---------- App-Shell (eingeloggter Bereich) ---------- */
.legacy-content-skin .app-shell { display: flex; min-height: 100vh; }

.legacy-content-skin .sidebar {
    width: var(--sidebar-width);
    flex-shrink: 0;
    background: var(--ink);
    color: #dfe3e0;
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    height: 100vh;
}
.legacy-content-skin .sidebar-brand {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 18px 20px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
}
.legacy-content-skin .sidebar-brand .logo-mark {
    width: 30px; height: 30px; border-radius: 6px;
    background: #fff;
    display: flex; align-items: center; justify-content: center;
    padding: 3px;
}
.legacy-content-skin .sidebar-brand .logo-mark img { width: 100%; height: 100%; object-fit: contain; display: block; }
.legacy-content-skin .sidebar-brand .brand-text { font-weight: 700; color: #fff; font-size: 14px; line-height: 1.2; }
.legacy-content-skin .sidebar-brand .brand-text small { display: block; font-weight: 400; color: #9aa39c; font-size: 11px; }

.legacy-content-skin .sidebar-nav { flex: 1; padding: 12px 10px; overflow-y: auto; }
.legacy-content-skin .sidebar-nav .nav-section { margin-top: 18px; padding: 0 10px 6px; font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: #7d867e; }
.legacy-content-skin .sidebar-nav a {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 10px; border-radius: var(--radius);
    color: #cfd4cf; font-size: 13.5px; font-weight: 500;
    margin-bottom: 2px;
}
.legacy-content-skin .sidebar-nav a:hover { background: rgba(255,255,255,0.06); text-decoration: none; color: #fff; }
.legacy-content-skin .sidebar-nav a.active { background: var(--green); color: #fff; }
.legacy-content-skin .sidebar-nav .icon { width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; flex: none; opacity: 0.9; }
.legacy-content-skin .sidebar-nav .icon .nav-icon { width: 18px; height: 18px; display: block; }

.legacy-content-skin .sidebar-footer { padding: 14px 18px; border-top: 1px solid rgba(255,255,255,0.08); font-size: 12px; color: #9aa39c; }
.legacy-content-skin .sidebar-footer strong { color: #fff; display: block; font-size: 13px; }

.legacy-content-skin .main {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.legacy-content-skin .topbar {
    display: flex; align-items: center; gap: 16px;
    padding: 12px 24px;
    background: var(--white);
    border-bottom: 1px solid var(--line);
    position: sticky; top: 0; z-index: 10;
}
.legacy-content-skin .topbar form.search-form { flex: 1; max-width: 480px; }
.legacy-content-skin .topbar input[type="search"] {
    width: 100%; padding: 8px 12px; border: 1px solid var(--line-strong);
    border-radius: var(--radius); font-size: 13.5px; background: var(--paper);
}
.legacy-content-skin .topbar .spacer { flex: 1; }
.legacy-content-skin .topbar .user-menu { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.legacy-content-skin .topbar .user-role { color: var(--muted); }

/* Mobile Sidebar-Toggle: per Default (Desktop) unsichtbar, siehe
   @media-Regel unten für die Smartphone-Ansicht. Bewusst per CSS-Klasse
   statt inline style="display:none" gesteuert, damit die @media-Regel es
   überschreiben kann (ein inline style hätte Vorrang vor jeder externen
   Regel, egal bei welcher Bildschirmbreite). */
.legacy-content-skin #sidebar-toggle { display: none; }

/* Abdunkelnder Hintergrund hinter der mobilen Sidebar — per Klick schließt
   er das Menü wieder (siehe app.js). Nur relevant unterhalb der 780px-
   Grenze, siehe @media-Regel unten. */
.legacy-content-skin .sidebar-backdrop {
    display: none;
    position: fixed; inset: 0;
    background: rgba(10, 12, 10, 0.45);
    z-index: 40;
}
.legacy-content-skin .sidebar-backdrop.open { display: block; }

.legacy-content-skin .content { padding: 24px; max-width: 1180px; width: 100%; margin: 0 auto; }

/* ---------- Auth-Seiten (Login, 2FA) ---------- */
.legacy-content-skin .guest-shell {
    min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center;
    background: var(--ink);
    background-image: linear-gradient(160deg, #15191c 0%, #0f2318 100%);
    padding: 20px;
}
.legacy-content-skin .guest-card {
    background: var(--white); border-radius: 10px; box-shadow: 0 20px 50px rgba(0,0,0,0.35);
    width: 100%; max-width: 380px; padding: 32px 28px;
}
.legacy-content-skin .guest-card--wide { max-width: 640px; }
.legacy-content-skin .guest-card .logo-row { display: flex; align-items: center; gap: 10px; margin-bottom: 22px; }
.legacy-content-skin .install-steps { display: flex; gap: 6px; margin-bottom: 22px; }
.legacy-content-skin .install-steps span { flex: 1; height: 4px; border-radius: 2px; background: var(--line); }
.legacy-content-skin .install-steps span.done { background: var(--green); }
.legacy-content-skin .req-list { list-style: none; padding: 0; margin: 0 0 18px; }
.legacy-content-skin .req-list li { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 13.5px; }
.legacy-content-skin .req-ok { color: var(--green-dark); font-weight: 600; }
.legacy-content-skin .req-fail { color: var(--danger); font-weight: 600; }
.legacy-content-skin .guest-card .logo-mark { width: 42px; height: 42px; border-radius: 8px; background: var(--green-light); display:flex; align-items:center; justify-content:center; padding: 5px; }
.legacy-content-skin .guest-card .logo-mark img { width: 100%; height: 100%; object-fit: contain; display: block; }
.legacy-content-skin .guest-card h1 { font-size: 18px; margin-bottom: 2px; }
.legacy-content-skin .guest-card .tagline { color: var(--muted); font-size: 12.5px; margin-bottom: 20px; }
.legacy-content-skin .guest-card .field { margin-bottom: 14px; }
.legacy-content-skin .guest-card .btn-primary { width: 100%; }
.legacy-content-skin .guest-help { text-align: center; margin-top: 16px; font-size: 12px; color: #b7bdb8; }

/* ---------- Formulare ---------- */
.legacy-content-skin label { display: block; font-size: 12.5px; font-weight: 600; margin-bottom: 4px; color: var(--ink-soft); }
.legacy-content-skin input[type=text], .legacy-content-skin input[type=email], .legacy-content-skin input[type=password], .legacy-content-skin input[type=search], .legacy-content-skin input[type=number], .legacy-content-skin input[type=date], .legacy-content-skin input[type=datetime-local], .legacy-content-skin select, .legacy-content-skin textarea {
    width: 100%; padding: 8px 10px; border: 1px solid var(--line-strong);
    border-radius: var(--radius); font-size: 13.5px; font-family: var(--font);
    background: var(--white); color: var(--ink);
}
.legacy-content-skin input:focus, .legacy-content-skin select:focus, .legacy-content-skin textarea:focus {
    outline: none; border-color: var(--green); box-shadow: 0 0 0 3px var(--green-light);
}
.legacy-content-skin textarea { resize: vertical; min-height: 70px; }
.legacy-content-skin .field { margin-bottom: 14px; }
.legacy-content-skin .field-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.legacy-content-skin .checkbox-field { display: flex; align-items: center; gap: 8px; }
.legacy-content-skin .checkbox-field input { width: auto; }
.legacy-content-skin .help-text { font-size: 12px; color: var(--muted); margin-top: 4px; }

/* Editierbare Zeilenliste (z. B. Kategorien-Verwaltung) — jede Zeile ist ein
   eigenes <form>, das per CSS als Grid-Zeile dargestellt wird. Vermeidet
   ungültiges HTML (<form> als Kind von <tr>), sieht aber wie eine Tabelle aus. */
.legacy-content-skin .grid-table { display: grid; grid-template-columns: 1fr 110px 110px 120px; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.legacy-content-skin .grid-table .grid-head { display: contents; }
.legacy-content-skin .grid-table .grid-head > span { padding: 10px 12px; font-size: 12px; font-weight: 600; color: var(--muted); background: var(--paper); border-bottom: 1px solid var(--line); }
.legacy-content-skin .grid-table form { display: contents; }
.legacy-content-skin .grid-table form > * { padding: 8px 12px; border-bottom: 1px solid var(--line); display: flex; align-items: center; }
.legacy-content-skin .grid-table form:hover > * { background: var(--green-light); }

/* Einfache Balkendiagramme für den Report-Bereich (reines CSS, keine JS-Chart-
   Bibliothek nötig — vermeidet zusätzliche externe Abhängigkeiten). */
.legacy-content-skin .bar-chart { display: flex; flex-direction: column; gap: 10px; }
.legacy-content-skin .bar-row { display: grid; grid-template-columns: 130px 1fr 90px; align-items: center; gap: 10px; font-size: 13px; }
.legacy-content-skin .bar-track { background: var(--paper); border-radius: 4px; height: 16px; overflow: hidden; border: 1px solid var(--line); }
.legacy-content-skin .bar-fill { background: var(--green); height: 100%; border-radius: 4px 0 0 4px; }
.legacy-content-skin .bar-value { text-align: right; font-family: var(--mono); font-size: 12.5px; color: var(--ink-soft); }
.legacy-content-skin fieldset { border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 16px; }
.legacy-content-skin legend { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; color: var(--muted); padding: 0 6px; }

/* ---------- Buttons ---------- */
.legacy-content-skin .btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    padding: 8px 14px; border-radius: var(--radius); border: 1px solid transparent;
    font-size: 13.5px; font-weight: 600; cursor: pointer; font-family: var(--font);
    line-height: 1.3;
}
.legacy-content-skin .btn-primary { background: var(--green); color: #fff; }
.legacy-content-skin .btn-primary:hover { background: var(--green-dark); text-decoration: none; }
.legacy-content-skin .btn-secondary { background: var(--white); border-color: var(--line-strong); color: var(--ink); }
.legacy-content-skin .btn-secondary:hover { background: var(--paper); text-decoration: none; }
.legacy-content-skin .btn-danger { background: var(--danger); color: #fff; }
.legacy-content-skin .btn-danger:hover { background: #a52626; text-decoration: none; }
.legacy-content-skin .btn-ghost { background: transparent; color: var(--ink-soft); }
.legacy-content-skin .btn-ghost:hover { background: var(--paper); text-decoration: none; }
.legacy-content-skin .btn-sm { padding: 5px 10px; font-size: 12.5px; }
.legacy-content-skin .btn-block { width: 100%; }
.legacy-content-skin .btn[disabled] { opacity: 0.5; cursor: not-allowed; }

/* ---------- Karten / Layout-Bausteine ---------- */
.legacy-content-skin .card { background: var(--white); border: 1px solid var(--line); border-radius: 8px; box-shadow: var(--shadow); padding: 18px 20px; margin-bottom: 18px; }
.legacy-content-skin .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.legacy-content-skin .card-header h2 { margin: 0; }
.legacy-content-skin .grid { display: grid; gap: 18px; }
.legacy-content-skin .grid-2 { grid-template-columns: 2fr 1fr; }
.legacy-content-skin .grid-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .legacy-content-skin .grid-2, .legacy-content-skin .grid-3 { grid-template-columns: 1fr; } }

.legacy-content-skin .kpi-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; margin-bottom: 18px; }
.legacy-content-skin .kpi { background: var(--white); border: 1px solid var(--line); border-radius: 8px; padding: 14px 16px; }
.legacy-content-skin .kpi .kpi-value { font-size: 22px; font-weight: 800; color: var(--ink); }
.legacy-content-skin .kpi .kpi-label { font-size: 12px; color: var(--muted); margin-top: 2px; }
.legacy-content-skin .kpi .kpi-delta { font-size: 11.5px; color: var(--muted); margin-top: 4px; }

/* ---------- Reports: Tab-Navigation + Zeitraum-Filter ---------- */
/* Auch für per JS umgeschaltete Tabs wiederverwendet (siehe Kundenakte
   unten) — deshalb zusätzlich auf <button> gestylt, nicht nur auf <a>. */
.legacy-content-skin .tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin-bottom: 16px; flex-wrap: wrap; }
.legacy-content-skin .tabs a, .legacy-content-skin .tabs button { padding: 9px 14px; font-size: 13.5px; font-weight: 600; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.legacy-content-skin .tabs button { background: none; border-left: none; border-right: none; border-top: none; cursor: pointer; font-family: inherit; }
.legacy-content-skin .tabs a:hover, .legacy-content-skin .tabs button:hover { color: var(--ink); text-decoration: none; }
.legacy-content-skin .tabs a.active, .legacy-content-skin .tabs button.active { color: var(--green-dark); border-bottom-color: var(--green); }
.legacy-content-skin .period-filter { display: flex; align-items: center; gap: 8px; margin-bottom: 18px; flex-wrap: wrap; }
.legacy-content-skin .period-filter select { width: auto; padding: 6px 10px; font-size: 13px; }
.legacy-content-skin .period-filter .period-compare-label { font-size: 12px; color: var(--muted); margin-left: 4px; }

/* ---------- Kundenakte: kompaktes Seitenpanel + Tabs ---------- */
/* Ersetzt die vorherige starre 2-Spalten-Anordnung (Anfrage: "nicht alles
   nur seitlich angeordnet, UI/UX Usability massiv verbessern") — links ein
   schmales, immer sichtbares Panel mit den Angaben, die man beim Arbeiten an
   einem Kundenfall ständig braucht (Kontakt), rechts nach Themen gruppierte
   Tabs statt eines langen zweispaltigen Stapels unzusammenhängender Karten. */
.legacy-content-skin .customer-layout { display: flex; align-items: flex-start; gap: 18px; }
.legacy-content-skin .customer-aside { flex: 0 0 280px; width: 280px; position: sticky; top: 18px; }
.legacy-content-skin .customer-main { flex: 1 1 auto; min-width: 0; }
@media (max-width: 900px) {
    .legacy-content-skin .customer-layout { flex-direction: column; }
    .legacy-content-skin .customer-aside { width: 100%; position: static; }
}

.legacy-content-skin .customer-profile-head { display: flex; align-items: center; gap: 12px; }
.legacy-content-skin .customer-avatar-circle {
    flex: 0 0 46px; width: 46px; height: 46px; border-radius: 50%;
    background: var(--green); color: #fff; display: flex; align-items: center;
    justify-content: center; font-weight: 800; font-size: 15px; letter-spacing: 0.02em;
}
.legacy-content-skin .customer-profile-name-block { min-width: 0; }
.legacy-content-skin .customer-profile-name { display: block; font-size: 15px; line-height: 1.3; }
.legacy-content-skin .customer-quick-actions {
    display: flex; gap: 8px; margin-top: 14px; padding-top: 14px;
    border-top: 1px solid var(--line);
}
.legacy-content-skin .customer-quick-actions .btn { flex: 1 1 0; text-align: center; }

.legacy-content-skin .customer-glance-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
.legacy-content-skin .customer-glance-col { min-width: 0; }
@media (max-width: 900px) {
    .legacy-content-skin .customer-glance-grid { grid-template-columns: 1fr; }
}

/* ---------- Tabellen ---------- */
.legacy-content-skin .table-wrap { overflow-x: auto; }
.legacy-content-skin table.data { font-size: 13.5px; }
.legacy-content-skin table.data th {
    text-align: left; padding: 9px 12px; background: var(--paper);
    border-bottom: 1px solid var(--line-strong); font-size: 11.5px;
    text-transform: uppercase; letter-spacing: 0.02em; color: var(--muted); font-weight: 700;
}
.legacy-content-skin table.data td { padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.legacy-content-skin table.data tr:hover td { background: var(--green-light); }
.legacy-content-skin table.data tr[data-href] { cursor: pointer; }
.legacy-content-skin table.data .num { text-align: right; font-family: var(--mono); }
.legacy-content-skin .empty-state { padding: 40px 20px; text-align: center; color: var(--muted); }

/* ---------- Badges / Status ---------- */
.legacy-content-skin .badge {
    display: inline-block; padding: 3px 9px; border-radius: 999px;
    font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em;
    background: var(--line); color: var(--ink-soft);
}
.legacy-content-skin .badge-green { background: var(--green-light); color: var(--green-dark); }
.legacy-content-skin .badge-orange { background: #fdecd9; color: #ad5b0c; }
.legacy-content-skin .badge-red { background: var(--danger-bg); color: var(--danger); }
.legacy-content-skin .badge-gray { background: #ececec; color: #666; }
.legacy-content-skin .badge-blue { background: #dceafd; color: #0b5ed7; }

/* ---------- Meldungen ---------- */
.legacy-content-skin .alert { padding: 10px 14px; border-radius: var(--radius); margin-bottom: 14px; font-size: 13.5px; border: 1px solid transparent; }
.legacy-content-skin .alert-success { background: var(--green-light); color: var(--green-dark); border-color: #bfe6cd; }
.legacy-content-skin .alert-error { background: var(--danger-bg); color: var(--danger); border-color: #f3c6c6; }
.legacy-content-skin .alert-warning { background: var(--warning-bg); color: var(--warning); border-color: #f2dfa8; }
.legacy-content-skin .alert-info { background: var(--info-bg); color: #2b5a86; border-color: #cddff0; }

/* ---------- Guthaben-Kopf (Kundenakte) ---------- */
.legacy-content-skin .credit-banner {
    display: flex; align-items: center; gap: 24px; flex-wrap: wrap;
    background: linear-gradient(135deg, var(--green-dark), var(--green));
    color: #fff; border-radius: 8px; padding: 16px 20px; margin-bottom: 18px;
}
.legacy-content-skin .credit-banner .metric { }
.legacy-content-skin .credit-banner .metric .value { font-size: 24px; font-weight: 800; }
.legacy-content-skin .credit-banner .metric .label { font-size: 11.5px; opacity: 0.85; text-transform: uppercase; letter-spacing: 0.03em; }
.legacy-content-skin .credit-banner .divider { width: 1px; align-self: stretch; background: rgba(255,255,255,0.25); }

/* ---------- Timer-Widget ---------- */
.legacy-content-skin .timer-widget { display: flex; align-items: center; gap: 14px; background: var(--ink); color: #fff; border-radius: 8px; padding: 14px 18px; margin-bottom: 16px; flex-wrap: wrap; }
.legacy-content-skin .timer-widget .timer-display { font-family: var(--mono); font-size: 26px; font-weight: 700; letter-spacing: 0.03em; min-width: 110px; }
.legacy-content-skin .timer-widget.idle { background: var(--white); color: var(--ink); border: 1px dashed var(--line-strong); }
.legacy-content-skin .timer-widget .timer-actions { display: flex; gap: 8px; margin-left: auto; }
.legacy-content-skin .timer-widget form.flex { flex-wrap: wrap; }
.legacy-content-skin .timer-widget .timer-activity-field { margin-bottom: 0; min-width: 260px; }

/* ---------- Timeline (allgemein, z. B. Kundenportal-Verlauf) ---------- */
.legacy-content-skin .timeline { list-style: none; margin: 0; padding: 0; }
.legacy-content-skin .timeline li { position: relative; padding: 0 0 18px 22px; border-left: 2px solid var(--line); }
.legacy-content-skin .timeline li:last-child { border-color: transparent; padding-bottom: 0; }
.legacy-content-skin .timeline li::before { content: ""; position: absolute; left: -6px; top: 2px; width: 10px; height: 10px; border-radius: 50%; background: var(--green); }
.legacy-content-skin .timeline .timeline-meta { font-size: 12px; color: var(--muted); margin-bottom: 2px; }
.legacy-content-skin .timeline .timeline-body { font-size: 13.5px; }

/* ---------- Ticket-Verlauf: Antworten vs. Interne Notizen ---------- */
/* Backlog-Wunsch 13.09.2026 "Das UI/UX Layout vom Ticketsystem ist nicht gut
   ... Halte dich dabei an führende Hersteller": Zendesk/Freshdesk trennen
   kundensichtbare Antworten und interne Notizen im Verlauf klar farblich UND
   räumlich (grün/weiß vs. gelb-getönter Hintergrund), nicht nur über ein
   kleines Text-Badge wie zuvor. Jeder Eintrag jetzt als eigene "Nachrichten"-
   Karte mit Avatar-Kürzel, analog dem bereits bestehenden Konversations-Look
   führender Ticketsysteme. */
.legacy-content-skin .activity-feed { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.legacy-content-skin .activity-entry {
    display: flex; gap: 12px;
    border: 1px solid var(--line); border-left: 4px solid var(--line-strong);
    border-radius: 8px; padding: 12px 14px; background: var(--white);
}
.legacy-content-skin .activity-entry.visibility-allgemein { border-left-color: var(--green); }
.legacy-content-skin .activity-entry.visibility-intern { border-left-color: var(--warning); background: var(--warning-bg); }
.legacy-content-skin .activity-avatar {
    flex: none; width: 30px; height: 30px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 11.5px; font-weight: 700; color: #fff; background: var(--ink-soft);
}
.legacy-content-skin .activity-entry.visibility-allgemein .activity-avatar { background: var(--green-dark); }
.legacy-content-skin .activity-entry.visibility-intern .activity-avatar { background: var(--warning); }
.legacy-content-skin .activity-main { flex: 1 1 auto; min-width: 0; }
.legacy-content-skin .activity-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.legacy-content-skin .activity-head .activity-author { font-weight: 700; font-size: 13px; }
.legacy-content-skin .activity-head .activity-time { margin-left: auto; font-size: 11.5px; color: var(--muted); white-space: nowrap; }
.legacy-content-skin .activity-body { font-size: 13.5px; white-space: pre-line; }
.legacy-content-skin .activity-empty { padding: 18px; text-align: center; color: var(--muted); font-size: 13px; }

/* Composer: reine CSS-Umschaltung zwischen "Antwort" (kundensichtbar) und
   "Interne Notiz" per verstecktem Radio + Sibling-Selektoren — konsistent
   mit dem bereits bestehenden <details>-Muster dieser Codebasis, ohne neue
   JS-Abhängigkeit einzuführen. */
.legacy-content-skin .composer { position: relative; margin-top: 4px; }
.legacy-content-skin .composer .visibility-toggle-input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.legacy-content-skin .composer-tabs { display: flex; gap: 6px; margin-bottom: 10px; }
.legacy-content-skin .composer-tab {
    display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
    padding: 7px 12px; border-radius: 999px; font-size: 12.5px; font-weight: 700;
    background: var(--paper); color: var(--muted); border: 1px solid var(--line);
    margin: 0;
}
.legacy-content-skin #vis-allgemein:checked ~ .composer-tabs .tab-reply, .legacy-content-skin #vis-intern:checked ~ .composer-tabs .tab-note {
    background: var(--white); border-color: currentColor;
}
.legacy-content-skin #vis-allgemein:checked ~ .composer-tabs .tab-reply { color: var(--green-dark); border-color: var(--green); background: var(--green-light); }
.legacy-content-skin #vis-intern:checked ~ .composer-tabs .tab-note { color: var(--warning); border-color: var(--warning); background: var(--warning-bg); }
.legacy-content-skin .composer-body { border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; background: var(--paper); transition: none; }
.legacy-content-skin #vis-allgemein:checked ~ .composer-body { border-color: #bfe6cd; background: var(--green-light); }
.legacy-content-skin #vis-intern:checked ~ .composer-body { border-color: #f2dfa8; background: var(--warning-bg); }
.legacy-content-skin .composer-body .field-row { margin-bottom: 10px; }
.legacy-content-skin .composer-hint { font-size: 12px; color: var(--muted); margin: -2px 0 10px; }
.legacy-content-skin .composer-actions .reply-submit { display: none; }
.legacy-content-skin .composer-actions .note-submit { display: inline-flex; }
.legacy-content-skin #vis-allgemein:checked ~ .composer-body .reply-submit { display: inline-flex; }
.legacy-content-skin #vis-allgemein:checked ~ .composer-body .note-submit { display: none; }
.legacy-content-skin #vis-intern:checked ~ .composer-body .note-submit { display: inline-flex; }
.legacy-content-skin #vis-intern:checked ~ .composer-body .reply-submit { display: none; }

/* ---------- Ticket-Kopfbereich ---------- */
.legacy-content-skin .ticket-header-badges { display: inline-flex; align-items: center; gap: 6px; vertical-align: middle; margin-left: 8px; }
.legacy-content-skin .ticket-toolbar {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    background: var(--white); border: 1px solid var(--line); border-radius: 8px;
    padding: 10px 14px; margin: -4px 0 14px;
}
.legacy-content-skin .ticket-toolbar form { display: flex; align-items: center; gap: 8px; }
.legacy-content-skin .ticket-toolbar select { width: auto; }

/* ---------- Breadcrumb ---------- */
.legacy-content-skin .breadcrumb { font-size: 12.5px; color: var(--muted); margin-bottom: 10px; }
.legacy-content-skin .breadcrumb a { color: var(--muted); }

/* ---------- Utility ---------- */
.legacy-content-skin .text-muted { color: var(--muted); }
.legacy-content-skin .text-danger { color: var(--danger); }
.legacy-content-skin .text-right { text-align: right; }
.legacy-content-skin .mt-0 { margin-top: 0; }
.legacy-content-skin .mb-0 { margin-bottom: 0; }
.legacy-content-skin .flex { display: flex; }
.legacy-content-skin .flex-between { display: flex; align-items: center; justify-content: space-between; }
.legacy-content-skin .gap-8 { gap: 8px; }
.legacy-content-skin .gap-14 { gap: 14px; }

/* ---------- Dienstplan ---------- */
.legacy-content-skin .status-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; white-space: nowrap; }

.legacy-content-skin .add-shift-details { margin-bottom: 18px; }
.legacy-content-skin .add-shift-details summary { cursor: pointer; list-style: none; display: inline-block; }
.legacy-content-skin .add-shift-details summary::-webkit-details-marker { display: none; }

.legacy-content-skin .dienstplan-day { padding: 14px 0; border-top: 1px solid var(--line); }
.legacy-content-skin .dienstplan-day:first-of-type { border-top: none; }
.legacy-content-skin .dienstplan-day h3 { margin: 0 0 8px; font-size: 14px; color: var(--muted); }

.legacy-content-skin .shift-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.legacy-content-skin .shift-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    background: var(--white);
    border: 1px solid var(--line);
    border-left: 4px solid var(--line);
    border-radius: 6px;
    padding: 10px 14px;
}
.legacy-content-skin .shift-item-main { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.legacy-content-skin .shift-item-actions { display: flex; align-items: center; gap: 8px; }
.legacy-content-skin .shift-item-actions details { display: inline-block; }
.legacy-content-skin .shift-item-actions summary { cursor: pointer; list-style: none; }
.legacy-content-skin .shift-item-actions summary::-webkit-details-marker { display: none; }
.legacy-content-skin .shift-item-actions form { display: inline-block; }

/* ---------- Termine (Redesign, Kundenwunsch 28.09.2026) ---------- */
.legacy-content-skin .appt-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.legacy-content-skin .appt-view-tabs { display: flex; gap: 4px; }
.legacy-content-skin .appt-view-tabs a { padding: 8px 14px; font-size: 13px; font-weight: 600; color: var(--muted); background: var(--white); border: 1px solid var(--line); }
.legacy-content-skin .appt-view-tabs a:first-child { border-radius: var(--radius) 0 0 var(--radius); }
.legacy-content-skin .appt-view-tabs a:last-child { border-radius: 0 var(--radius) var(--radius) 0; border-left: none; }
.legacy-content-skin .appt-view-tabs a.active { background: var(--green); border-color: var(--green); color: #fff; }
.legacy-content-skin .appt-view-tabs a:hover { text-decoration: none; }

.legacy-content-skin .appt-filter-form { display: flex; gap: 12px; align-items: end; flex-wrap: wrap; margin-bottom: 16px; }
.legacy-content-skin .appt-filter-form .field { margin-bottom: 0; }

.legacy-content-skin #appointments-poll-banner { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.legacy-content-skin #appointments-poll-banner[hidden] { display: none; }

.legacy-content-skin tr.appt-row-external { background: var(--paper); }
.legacy-content-skin tr.appt-row-external td { color: var(--ink-soft); }
.legacy-content-skin .appt-inline-actions { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.legacy-content-skin .appt-inline-actions details { display: inline-block; }
.legacy-content-skin .appt-inline-actions summary { cursor: pointer; list-style: none; }
.legacy-content-skin .appt-inline-actions summary::-webkit-details-marker { display: none; }
.legacy-content-skin .appt-inline-actions form.appt-assign-form { display: inline-flex; }
.legacy-content-skin .appt-inline-actions select { padding: 4px 8px; font-size: 12.5px; }
.legacy-content-skin .appt-edit-form { margin-top: 8px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px; min-width: 280px; }

.legacy-content-skin .appt-cal-nav { display: flex; align-items: center; gap: 10px; }
.legacy-content-skin .appt-cal-nav h2 { margin: 0; min-width: 130px; text-align: center; }
.legacy-content-skin .appt-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 8px; overflow: hidden; margin-top: 12px; }
.legacy-content-skin .appt-cal-weekday { background: var(--paper); padding: 6px 8px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; color: var(--muted); text-align: center; }
.legacy-content-skin .appt-cal-day { background: var(--white); min-height: 108px; padding: 6px 8px; display: flex; flex-direction: column; gap: 4px; }
.legacy-content-skin .appt-cal-day.is-outside { background: var(--paper); }
.legacy-content-skin .appt-cal-day.is-outside .appt-cal-day-num { color: #b7bdb8; }
.legacy-content-skin .appt-cal-day.is-today { box-shadow: inset 0 0 0 2px var(--green); }
.legacy-content-skin .appt-cal-day-num { font-size: 12px; font-weight: 700; color: var(--muted); }
.legacy-content-skin .appt-cal-event { display: block; font-size: 11px; padding: 2px 6px; border-radius: 4px; background: var(--green-light); color: var(--green-dark); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.legacy-content-skin .appt-cal-event.is-external { background: #ececec; color: #555; }
.legacy-content-skin .appt-cal-event.is-cancelled { background: var(--danger-bg); color: var(--danger); text-decoration: line-through; }
.legacy-content-skin .appt-cal-more { font-size: 11px; color: var(--muted); }

/* Nachbesserung 01.10.2026 (Larkon-"apps-calendar"-Kalender) — siehe
   identischer, unscoped Block in app.css für die ausführliche Begründung. */
.legacy-content-skin .appt-fc-layout { display: flex; gap: 20px; align-items: flex-start; margin-top: 16px; }
.legacy-content-skin .appt-fc-sidebar { width: 230px; flex: 0 0 230px; }
.legacy-content-skin .appt-fc-main { flex: 1 1 auto; min-width: 0; }
.legacy-content-skin .appt-fc-legend h3 { font-size: 12px; font-weight: 700; margin: 0 0 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }
.legacy-content-skin .appt-fc-legend-item { display: flex; align-items: center; gap: 8px; font-size: 13px; margin-bottom: 8px; }
.legacy-content-skin .appt-fc-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; flex: 0 0 10px; }
.legacy-content-skin .appt-fc-dot.is-cancelled-dot { background: var(--danger); }
.legacy-content-skin .appt-fc-dot.is-rescheduled-dot { background: #ad5b0c; }
.legacy-content-skin #appointments-calendar { background: var(--white); border: 1px solid var(--line); border-radius: 8px; padding: 14px; }
.legacy-content-skin #appointments-calendar .fc-event.is-cancelled { opacity: 0.55; text-decoration: line-through; }
.legacy-content-skin #appointments-calendar .fc-event.is-done { opacity: 0.7; }
.legacy-content-skin #appointments-calendar .fc-event.is-rescheduled { box-shadow: inset 3px 0 0 #ad5b0c; }
.legacy-content-skin #appointments-calendar .fc-toolbar-title { font-size: 18px; }
.legacy-content-skin #appointments-calendar .fc-button-primary { background: var(--green); border-color: var(--green); }
.legacy-content-skin #appointments-calendar .fc-button-primary:hover { background: var(--green-dark); border-color: var(--green-dark); }
.legacy-content-skin #appointments-calendar .fc-button-primary:disabled { background: var(--green); border-color: var(--green); opacity: 0.65; }
@media (max-width: 860px) {
    .legacy-content-skin .appt-fc-layout { flex-direction: column; }
    .legacy-content-skin .appt-fc-sidebar { width: 100%; flex: 1 1 auto; }
}

/* Kundenwunsch 25.09.2026: Quill-Rich-Text-Editor für E-Mail-Vorlagen/
   -Signatur (siehe assets/js/email-template-editor.js) — nur das
   Editor-Gehäuse selbst, Quill liefert sein eigenes .ql-*-Styling
   (assets/vendor/quill/quill.snow.css) mit. */
.legacy-content-skin .quill-editor-container { margin-bottom: 14px; }
.legacy-content-skin .quill-editor-container .ql-container { min-height: 180px; font-size: 14px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; }
.legacy-content-skin .quill-editor-container .ql-toolbar { border-top-left-radius: 6px; border-top-right-radius: 6px; }

/* Kundenwunsch 27.09.2026 ("Drag & Drop wie im Template"): eigene Klasse
   (siehe app.css für die Begründung), hier an Larkons .dropzone-Optik
   angelehnt (gestrichelter Rahmen auf leicht getöntem Grund). */
.legacy-content-skin .file-dropzone {
    position: relative; border: 2px dashed var(--bs-border-color, var(--line-strong));
    border-radius: 6px; padding: 26px 20px; text-align: center;
    background: var(--bs-secondary-bg, var(--paper));
    transition: border-color .15s, background-color .15s;
}
.legacy-content-skin .file-dropzone.is-dragover { border-color: var(--green); background: var(--green-light); }
.legacy-content-skin .file-dropzone-icon { font-size: 24px; opacity: .5; margin-bottom: 6px; }
.legacy-content-skin .file-dropzone-text { font-size: 13.5px; color: var(--muted); }
.legacy-content-skin .file-dropzone-input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }

@media (max-width: 780px) {
    .legacy-content-skin .sidebar { position: fixed; left: -260px; top: 0; z-index: 50; transition: left .2s; }
    .legacy-content-skin .sidebar.open { left: 0; }
    .legacy-content-skin .content { padding: 14px; }
    .legacy-content-skin .topbar { padding: 10px 14px; flex-wrap: wrap; row-gap: 8px; }
    .legacy-content-skin #sidebar-toggle { display: inline-flex; order: 1; }
    .legacy-content-skin .topbar .search-form { order: 3; flex: 1 1 100%; max-width: none; }
    .legacy-content-skin .topbar .spacer { display: none; }
    .legacy-content-skin .topbar .user-menu { order: 2; margin-left: auto; }
    .legacy-content-skin .topbar .user-menu span { display: none; }
    .legacy-content-skin .timer-widget form.flex { margin-left: 0 !important; width: 100%; align-items: stretch !important; }
    .legacy-content-skin .timer-widget .timer-activity-field { min-width: 0; width: 100%; }
}
