    /* Selbst gehostete Variable Fonts (ein File je Schnitt und Zeichensatz statt eines identischen Files je Gewicht) */
    @font-face {
      font-family:'DM Sans'; font-style:italic; font-weight:400; font-display:swap;
      src:url('/fonts/dmsans-400-italic-latin-ext.woff2') format('woff2');
      unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
    }
    @font-face {
      font-family:'DM Sans'; font-style:italic; font-weight:400; font-display:swap;
      src:url('/fonts/dmsans-400-italic-latin.woff2') format('woff2');
      unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
    }
    @font-face {
      font-family:'DM Sans'; font-style:normal; font-weight:300 700; font-display:swap;
      src:url('/fonts/dmsans-var-normal-latin-ext.woff2') format('woff2');
      unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
    }
    @font-face {
      font-family:'DM Sans'; font-style:normal; font-weight:300 700; font-display:swap;
      src:url('/fonts/dmsans-var-normal-latin.woff2') format('woff2');
      unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
    }
    @font-face {
      font-family:'Playfair Display'; font-style:normal; font-weight:600 700; font-display:swap;
      src:url('/fonts/playfair-var-normal-latin-ext.woff2') format('woff2');
      unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
    }
    @font-face {
      font-family:'Playfair Display'; font-style:normal; font-weight:600 700; font-display:swap;
      src:url('/fonts/playfair-var-normal-latin.woff2') format('woff2');
      unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
    }

    :root {
      --bg: #F3F2EE;
      --surface: #FFFFFF;
      --surface-hover: #F9F9F7;
      --border: #E2E0DA;
      --border-dark: #CBC9C1;
      --text: #1A1917;
      --text-sec: #64635C;
      --text-muted: #9B978E;
      --primary: #2D6A5A;
      --primary-light: #3D8B76;
      --primary-bg: #E8F5F0;
      --success: #047857;
      --success-bg: #ECFDF5;
      --danger: #C53030;
      --danger-bg: #FFF5F5;
      --shadow-sm: 0 1px 3px rgba(0,0,0,0.06);
      --shadow-lg: 0 12px 40px rgba(0,0,0,0.15);
      --radius: 8px;
      --radius-lg: 12px;
      --font: 'DM Sans', -apple-system, sans-serif;
      --font-display: 'Playfair Display', Georgia, serif;
      --row-h: 28px;
    }
    * { margin:0; padding:0; box-sizing:border-box; }
    body { font-family:var(--font); background:var(--bg); color:var(--text); min-height:100vh; min-height:100dvh; }
    body.modal-open { overflow:hidden; }
    ::-webkit-scrollbar { width:6px; height:6px; }
    ::-webkit-scrollbar-track { background:transparent; }
    ::-webkit-scrollbar-thumb { background:var(--border-dark); border-radius:3px; }

    /* === HEADER === */
    .header {
      background:var(--surface); border-bottom:1px solid var(--border);
      height:56px; display:flex; align-items:center; justify-content:space-between;
      padding:0 20px; position:sticky; top:0; z-index:100;
    }
    .logo { font-family:var(--font-display); font-size:1.2rem; color:var(--primary); }
    .logo span { font-family:var(--font); font-weight:400; font-size:0.8rem; color:var(--text-muted); margin-left:6px; }
    .hdr-actions { display:flex; align-items:center; gap:6px; }
    .appointment-offer-basket { position:relative; }
    .appointment-offer-basket-badge { position:absolute; top:-7px; right:-7px; min-width:18px; height:18px; padding:0 5px; border-radius:999px; display:flex; align-items:center; justify-content:center; background:#D92D20; color:#fff; border:2px solid var(--surface); font-size:0.68rem; font-weight:800; line-height:1; }
    .search-wrap { position:relative; margin-left:12px; display:flex; align-items:center; gap:7px; }
    .search-field { position:relative; }
    .search-wrap input { font-family:var(--font); font-size:0.82rem; padding:6px 10px 6px 28px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); color:var(--text); width:180px; transition:width 0.2s; }
    .search-wrap input:focus { width:260px; outline:none; border-color:var(--primary); }
    .search-field::before { content:'🔍'; position:absolute; left:8px; top:50%; transform:translateY(-50%); font-size:0.75rem; pointer-events:none; }
    .search-results { position:absolute; top:100%; left:0; right:0; min-width:320px; max-height:400px; overflow-y:auto; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow-lg); z-index:200; margin-top:4px; }
    .search-results.hidden { display:none; }
    .search-item { padding:10px 12px; border-bottom:1px solid var(--border); cursor:pointer; display:flex; flex-direction:column; gap:2px; }
    .search-item:hover { background:var(--surface-hover); }
    .search-item:last-child { border-bottom:none; }
    .search-item .si-name { font-weight:600; font-size:0.85rem; }
    .search-item .si-detail { font-size:0.75rem; color:var(--text-muted); }
    .search-item .si-emp { display:inline-block; padding:1px 6px; border-radius:10px; font-size:0.7rem; color:#fff; }
    .search-empty { padding:12px; text-align:center; color:var(--text-muted); font-size:0.82rem; }
    .unconfirmed-alert-dot { width:18px; height:18px; border-radius:50%; border:1px solid #9B1C1C; background:#E11D48; cursor:pointer; flex:0 0 auto; box-shadow:0 0 0 0 rgba(225,29,72,0.65); animation:ucPulse 1s infinite; }
    .unconfirmed-alert-dot:hover { transform:scale(1.12); }
    @keyframes ucPulse { 0%{box-shadow:0 0 0 0 rgba(225,29,72,0.65);} 70%{box-shadow:0 0 0 9px rgba(225,29,72,0);} 100%{box-shadow:0 0 0 0 rgba(225,29,72,0);} }
    .uc-rank { margin-bottom:10px; padding:9px 10px; border:1px solid var(--border); border-radius:var(--radius); background:var(--bg); }
    .uc-rank-title { font-size:0.78rem; font-weight:700; color:var(--text-sec); margin-bottom:6px; }
    .uc-rank-list { display:flex; flex-wrap:wrap; gap:6px; }
    .uc-rank-chip { display:inline-flex; align-items:center; gap:5px; padding:3px 8px; border-radius:14px; background:var(--surface); border:1px solid var(--border); font-size:0.74rem; color:var(--text-sec); }
    .uc-rank-dot { width:8px; height:8px; border-radius:50%; border:1px solid rgba(0,0,0,0.12); }
    .bug-btn { border-color:#A94A2A; color:#A33A1F; background:#FFF7ED; font-weight:700; letter-spacing:0; }
    .bug-btn:hover { background:#FED7AA; border-color:#C2410C; color:#7C2D12; }
    .bug-list-head { font-size:0.78rem; font-weight:700; color:var(--text-sec); text-transform:uppercase; letter-spacing:0.04em; margin:4px 0 8px; }
    .bug-list { display:flex; flex-direction:column; gap:8px; max-height:300px; overflow-y:auto; padding-right:4px; }
    .bug-item { border:1px solid var(--border); border-radius:var(--radius); background:var(--surface-hover); padding:10px 11px; }
    .bug-meta { display:flex; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:5px; color:var(--text-muted); font-size:0.74rem; }
    .bug-author { color:var(--text-sec); font-weight:700; }
    .bug-text { white-space:pre-wrap; overflow-wrap:anywhere; font-size:0.86rem; line-height:1.35; color:var(--text); }
    .bug-empty { padding:18px 10px; border:1px dashed var(--border-dark); border-radius:var(--radius); color:var(--text-muted); text-align:center; font-size:0.86rem; }
    .ai-btn { border-color:#7C3AED; color:#6D28D9; background:#F5F3FF; font-weight:700; letter-spacing:0; position:relative; }
    .ai-btn:hover { background:#EDE9FE; border-color:#6D28D9; color:#5B21B6; }
    .ai-badge { position:absolute; top:-6px; right:-6px; min-width:17px; height:17px; padding:0 4px; border-radius:9px; background:#DC2626; color:#fff; font-size:0.62rem; font-weight:700; display:flex; align-items:center; justify-content:center; border:2px solid var(--bg); }
    .ai-badge.hidden { display:none; }
    .ai-item { border:1px solid var(--border); border-radius:var(--radius); background:var(--surface-hover); padding:10px 11px; display:flex; flex-direction:column; gap:5px; }
    .ai-item-head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
    .ai-del { background:none; border:none; color:var(--text-muted); cursor:pointer; font-size:0.85rem; line-height:1; padding:2px 4px; border-radius:4px; flex-shrink:0; }
    .ai-del:hover { color:#DC2626; background:rgba(220,38,38,0.1); }
    .ai-status { align-self:flex-start; font-size:0.68rem; font-weight:700; text-transform:uppercase; letter-spacing:0.04em; padding:1px 8px; border-radius:10px; }
    .ai-status-pending { background:#FEF3C7; color:#92400E; }
    .ai-status-done { background:#D1FAE5; color:#065F46; }
    .ai-status-failed { background:#FEE2E2; color:#991B1B; }
    .ai-text { white-space:pre-wrap; overflow-wrap:anywhere; font-size:0.86rem; line-height:1.35; color:var(--text); }
    .ai-result { font-size:0.78rem; color:var(--text-muted); border-top:1px dashed var(--border); padding-top:5px; white-space:pre-wrap; overflow-wrap:anywhere; }
    .meeting-join-btn { border-color:#2563EB; color:#1D4ED8; background:#EFF6FF; font-weight:700; }
    .meeting-join-btn:hover { background:#DBEAFE; border-color:#1D4ED8; color:#1E3A8A; }
    .user-badge {
      display:flex; align-items:center; gap:6px;
      padding:5px 12px; border-radius:20px;
      background:var(--primary-bg); color:var(--primary);
      font-size:0.8rem; font-weight:500;
    }
    .user-badge .dot { width:8px; height:8px; border-radius:50%; }

    /* === BUTTONS === */
    .btn {
      display:inline-flex; align-items:center; gap:5px;
      padding:7px 14px; border-radius:var(--radius);
      font-family:var(--font); font-size:0.82rem; font-weight:500;
      border:1px solid var(--border); background:var(--surface);
      color:var(--text); cursor:pointer; transition:all 0.15s; white-space:nowrap;
    }
    .btn:hover { background:var(--surface-hover); border-color:var(--border-dark); }
    .btn-p { background:var(--primary); color:#fff; border-color:var(--primary); }
    .btn-p:hover { background:var(--primary-light); }
    .btn-d { color:var(--danger); border-color:var(--danger); background:var(--danger-bg); }
    .btn-d:hover { background:var(--danger); color:#fff; }
    .btn-s { padding:5px 10px; font-size:0.78rem; }
    .btn-icon { width:34px; height:34px; padding:0; display:inline-flex; align-items:center; justify-content:center; }

    /* === NAVIGATION BAR === */
    .nav-title {
      text-align:center; font-weight:600; font-size:1.9rem;
      padding:8px 20px 0; cursor:pointer; color:var(--text);
    }
    .nav-bar {
      background:var(--surface); border-bottom:1px solid var(--border);
      padding:10px 20px; display:flex; align-items:center; gap:12px; flex-wrap:wrap;
    }
    .nav-views { display:flex; gap:0; flex-wrap:wrap; }
    .nav-views .btn { border-radius:0; }
    .nav-views .btn:first-child { border-radius:var(--radius) 0 0 var(--radius); }
    .nav-views .btn:last-child { border-radius:0 var(--radius) var(--radius) 0; }
    .nav-views .btn.active { background:var(--primary); color:#fff; border-color:var(--primary); }

    /* === CALENDAR GRID === */
    .cal-container {
      display:flex; flex:1; overflow:auto;
      margin:12px; border-radius:var(--radius-lg);
      border:1px solid var(--border); background:var(--surface);
      box-shadow:var(--shadow-sm);
    }
    .time-gutter {
      flex-shrink:0; width:56px; background:var(--bg);
      border-right:1px solid var(--border); position:sticky; left:0; z-index:10;
    }
    .time-gutter-header {
      height:auto; min-height:68px; border-bottom:1px solid var(--border);
      display:flex; align-items:flex-end; justify-content:center;
      padding-bottom:4px; font-size:0.65rem; color:var(--text-muted);
    }
    .time-label {
      height:var(--row-h); display:flex; align-items:flex-start; justify-content:flex-end;
      padding-right:8px; padding-top:2px; font-size:0.7rem; color:var(--text-muted);
    }
    .mobile-fab {
      position:fixed; bottom:calc(24px + env(safe-area-inset-bottom)); right:24px; width:56px; height:56px;
      border-radius:50%; background:var(--primary); color:white; border:none;
      font-size:28px; font-weight:300; cursor:pointer; z-index:50;
      box-shadow:var(--shadow-lg); display:flex; align-items:center; justify-content:center;
      line-height:1;
    }
    .mobile-fab.hidden { display:none; }
    .mobile-fab:active { transform:scale(0.92); }
    .absent-sidebar {
      width:140px; min-width:140px; border-right:2px solid var(--border);
      background:var(--bg); padding:0; position:sticky; left:0; z-index:9;
    }
    .absent-sidebar.hidden { display:none; }
    .absent-card {
      padding:10px 10px 8px; border-bottom:1px solid var(--border);
      text-align:center;
    }
    .absent-card .emp-name { font-size:0.82rem; font-weight:500; margin-bottom:4px; display:flex; align-items:center; justify-content:center; gap:4px; }
    .absent-card a { color:var(--primary); font-size:0.72rem; text-decoration:none; }
    .absent-card a:hover { text-decoration:underline; }
    .week-avail-input {
      width:58px; font-size:0.68rem; padding:1px 2px; border:1px solid var(--border);
      border-radius:3px; background:var(--surface); color:var(--text); font-family:var(--font);
    }
    body.is-dragging .week-avail-row, body.is-dragging .week-avail-row * {
      pointer-events:none;
    }
    .emp-columns { display:flex; flex:1; min-width:0; }
    .emp-col {
      /* Beide Zeitfelder samt nativem Uhrensymbol müssen in die Spalte passen. */
      flex:1; min-width:min-content; border-right:1px solid var(--border);
      position:relative;
    }
    .emp-col:last-child { border-right:none; }
    .emp-col.drag-target {
      box-shadow: inset 0 0 0 2px var(--primary);
      background: linear-gradient(0deg, rgba(45,106,90,0.06), rgba(45,106,90,0.06));
    }

    /* === EMPLOYEE COLUMN HEADER === */
    .emp-header {
      border-bottom:1px solid var(--border); padding:8px 8px 6px;
      text-align:center; position:sticky; top:0; z-index:5;
      background:var(--surface); min-height:68px; display:flex;
      flex-direction:column; align-items:center; justify-content:center;
    }
    .emp-name {
      font-weight:600; font-size:0.85rem; margin-bottom:2px;
      display:flex; align-items:center; justify-content:center; gap:5px;
    }
    .emp-name .cdot { width:10px; height:10px; border-radius:50%; display:inline-block; }
    .emp-avail {
      display:flex; align-items:center; justify-content:center; gap:3px;
      font-size:0.75rem; color:var(--text-sec);
    }
    .avail-del-btn {
      border:none; background:var(--danger); color:#fff; width:20px; height:20px;
      border-radius:50%; cursor:pointer; font-weight:700; font-size:12px; line-height:1; padding:0;
      flex:0 0 auto;
    }
    .avail-time-input {
      width:auto; flex:0 0 auto; border:1px solid transparent; border-radius:4px;
      font-family:var(--font); font-size:0.75rem; color:var(--text-sec);
      text-align:center; padding:2px 3px; background:transparent;
      transition:all 0.15s; cursor:pointer;
    }
    .avail-time-input:hover { border-color:var(--border); background:var(--surface-hover); }
    .avail-time-input:focus { outline:none; border-color:var(--primary); background:#fff; box-shadow:0 0 0 2px var(--primary-bg); }
    /* === TIME GRID ROWS === */
    .time-grid { position:relative; }
    .time-row {
      height:var(--row-h); border-top:1px solid var(--border);
      cursor:pointer; transition:background 0.1s;
    }
    .time-row:hover { background:var(--primary-bg); }
    .time-row.quarter { border-top-style:dotted; border-top-color:#ECEAE5; }
    .time-row.half { border-top-color:#E2E0DA; }
    .time-row.outside-avail { background:repeating-linear-gradient(-45deg,transparent,transparent 4px,#e0ddd8 4px,#e0ddd8 9px); cursor:default; }
    .time-row.outside-avail:hover { background:repeating-linear-gradient(-45deg,transparent,transparent 4px,#e0ddd8 4px,#e0ddd8 9px); }

    /* === NOW INDICATOR === */
    .now-line {
      position:absolute; left:0; right:0; height:2px;
      background:var(--danger); z-index:8; pointer-events:none;
    }
    .now-line::before {
      content:''; position:absolute; left:-4px; top:-3px;
      width:8px; height:8px; border-radius:50%; background:var(--danger);
    }

    /* === APPOINTMENTS === */
    .appt {
      position:absolute; left:3px; right:3px;
      border-radius:5px; padding:4px 7px; font-size:0.75rem;
      cursor:pointer; overflow:hidden; z-index:6;
      box-shadow:0 1px 3px rgba(0,0,0,0.15);
      transition:box-shadow 0.15s, transform 0.1s;
      line-height:1.3;
      background-image:var(--appt-treatment-hatch, none);
    }
    .appt.drag-preview {
      pointer-events:none;
      opacity:0.9;
      border:2px dashed rgba(255,255,255,0.8);
      box-shadow:none;
      z-index:7;
    }
    .appt:hover { box-shadow:0 3px 10px rgba(0,0,0,0.2); transform:scale(1.01); }
    .appt .appt-patient { font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .appt .appt-type { opacity:0.85; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:0.7rem; }
    .appt .appt-time { opacity:0.75; font-size:0.68rem; }
    @keyframes appointment-note-alert-blink {
      0%, 44% { opacity:1; }
      45%, 100% { opacity:0.28; }
    }
    .appt .appt-note-alert {
      display:block;
      color:var(--appt-note-alert-color, #DC2626) !important;
      background-color:var(--appt-note-alert-bg, #FFFFFF);
      border-radius:2px;
      padding:0 2px;
      opacity:1;
      font-weight:800;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
      animation:appointment-note-alert-blink 1s steps(1,end) infinite;
    }
    .appt .appt-note-alert-secondary { margin-top:2px; }
    .appt.pending-payment .appt-note-alert {
      color:var(--appt-note-pending-color, #DC2626) !important;
      background-color:var(--appt-note-pending-bg, #FFFFFF);
    }
    /* Abgelaufene Termine haben unabhängig von der Mitarbeiterfarbe einen rosa Grund. */
    .appt.expired .appt-note-alert { color:#DC2626 !important; background-color:#FFFFFF; }
    @media (prefers-reduced-motion: reduce) {
      .appt .appt-note-alert { animation:none; }
    }
    .appt.cancelled {
      opacity:0.4; text-decoration:line-through;
      background-image:var(--appt-treatment-hatch, none), repeating-linear-gradient(-45deg,transparent,transparent 3px,var(--appt-status-stripe, rgba(255,255,255,0.2)) 3px,var(--appt-status-stripe, rgba(255,255,255,0.2)) 6px) !important;
    }
    .appt.pending-payment { background-image:var(--appt-treatment-hatch, none), repeating-linear-gradient(-45deg,transparent,transparent 3px,var(--appt-status-stripe, rgba(255,255,255,0.3)) 3px,var(--appt-status-stripe, rgba(255,255,255,0.3)) 6px) !important; }
    .appt.expired { background-color:#FEE2E2 !important; background-image:none !important; color:#DC2626 !important; }
    .appt.expired .appt-patient, .appt.expired .appt-type, .appt.expired .appt-time { color:#DC2626; }
    .week-appt-chip.expired { background-color:#FEE2E2 !important; background-image:none !important; color:#DC2626 !important; }
    .appt.payment-failed, .week-appt-chip.payment-failed { outline:2px solid #DC2626; outline-offset:-2px; }
    .week-appt-chip.pending-payment { background-image:var(--appt-treatment-hatch, none), repeating-linear-gradient(-45deg,transparent,transparent 3px,var(--appt-status-stripe, rgba(255,255,255,0.3)) 3px,var(--appt-status-stripe, rgba(255,255,255,0.3)) 6px) !important; }
    .pms-icon { position:absolute; top:2px; right:4px; font-size:10px; line-height:1; pointer-events:none; }
    .appt .followup-icon, .appt .together-icon { position:absolute; top:2px; right:4px; font-size:0.6rem; opacity:0.8; }
    .appt .pms-icon + .followup-icon { right:20px; }
    .appt.unconfirmed, .mc-appt.unconfirmed, .mc-appt.unconfirmed .mc-bar, .week-appt-chip.unconfirmed {
      background-image:
        var(--appt-treatment-hatch, none),
        repeating-linear-gradient(45deg, transparent, transparent 3px, rgba(0,0,0,0.12) 3px, rgba(0,0,0,0.12) 4px),
        repeating-linear-gradient(-45deg, transparent, transparent 3px, rgba(0,0,0,0.12) 3px, rgba(0,0,0,0.12) 4px);
    }
    .appt .resize-handle {
      position:absolute; bottom:0; left:0; right:0; height:6px;
      cursor:ns-resize; border-radius:0 0 5px 5px;
    }

    /* === WEEK VIEW === */
    .week-grid { display:none; }
    .week-grid.active { display:flex; flex:1; overflow:auto; margin:12px; border-radius:var(--radius-lg); border:1px solid var(--border); background:var(--surface); flex-direction:column; }
    /* Inhalt nicht per Flex-Shrink stauchen: Der Wrapper (Mobile-Wrap bzw. Mitarbeiter-Spalten) hat ein nicht-sichtbares
       overflow (hidden/auto), wodurch min-height:auto zu 0 wird und Flexbox ihn auf Containerhöhe quetscht — der Überlauf
       wäre abgeschnitten und der Container hätte nichts zu scrollen. flex-shrink:0 hält die natürliche Höhe, overflow:auto
       des Containers übernimmt dann das Scrollen (Mobile + Desktop). */
    .week-grid.active > * { flex-shrink:0; }
    .week-day-schedule { border:1px solid var(--border); border-radius:6px; padding:3px; min-width:0; }
    .week-day-schedule .week-appt-chip { display:flex; width:100%; max-width:none; margin-bottom:0 !important; }
    .week-day-schedule .week-appt-chip + .week-appt-chip { margin-top:2px; }
    .week-vacancy { height:calc(var(--vacancy-minutes) * 1px); }
    .week-cancelled-appointments { margin-top:4px; }
    .week-appt-chip {
      display:inline-flex; align-items:center; gap:5px;
      padding:4px 10px; border-radius:16px; font-size:0.78rem;
      cursor:pointer; border:1px solid rgba(0,0,0,0.08);
      max-width:260px; overflow:hidden;
      background-image:var(--appt-treatment-hatch, none);
    }
    .week-appt-chip .chip-time { font-weight:600; }
    .week-appt-chip .chip-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .week-appt-chip.cancelled { opacity:0.4; text-decoration:line-through; }

    /* === MONTH VIEW === */
    .month-grid { display:none; }
    .month-grid.active { display:block; margin:12px; border-radius:var(--radius-lg); border:1px solid var(--border); background:var(--surface); overflow:hidden; }
    .month-header-row { display:grid; grid-template-columns:repeat(7,1fr); }
    .month-header-cell { padding:8px; text-align:center; font-size:0.75rem; font-weight:600; color:var(--text-muted); text-transform:uppercase; border-bottom:1px solid var(--border); }
    .month-body { display:grid; grid-template-columns:repeat(7,1fr); }
    .month-cell {
      min-height:100px; border-right:1px solid var(--border); border-bottom:1px solid var(--border);
      padding:0; cursor:pointer; transition:background 0.1s; font-size:0.78rem;
    }
    .month-cell:nth-child(7n) { border-right:none; }
    .month-cell:hover { background:var(--surface-hover); }
    .month-cell.other { background:var(--bg); color:var(--text-muted); }
    .month-cell.today { background:var(--primary-bg); }
    .month-cell .mc-day { font-weight:600; font-size:0.78rem; padding:3px 5px; display:inline-block; }
    .month-cell.today .mc-day { background:var(--primary); color:#fff; border-radius:50%; width:22px; height:22px; display:inline-flex; align-items:center; justify-content:center; margin:2px; }
    .mc-timeline { padding:0 3px; margin-top:1px; }
    .mc-timeline-row { position:relative; height:12px; margin-bottom:2px; display:flex; align-items:center; gap:3px; }
    /* Mitarbeiter-Beschriftung je Zeile: farbiger Punkt + Name */
    .mc-emp-label { display:inline-flex; align-items:center; gap:2px; flex-shrink:0; max-width:38px; min-width:0; font-size:0.55rem; color:var(--text-muted); overflow:hidden; white-space:nowrap; }
    .mc-emp-label .cdot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
    .mc-track { position:relative; flex:1; height:100%; min-width:0; }
    .mc-avail { position:absolute; top:0; height:100%; background:var(--bg); border-radius:2px; border-left:2px solid currentColor; }
    .mc-appt { position:absolute; top:0; height:100%; cursor:pointer; min-width:4px; }
    /* Visuelle Füllung als eigene Schicht: nur sie wird beim Hover vergrößert (scaleY),
       damit der Tooltip (Kind des .mc-appt) NICHT mit skaliert wird — sonst erscheint
       das Popup doppelt so hoch. */
    .mc-bar { position:absolute; inset:0; border-radius:2px; transition:transform 0.1s,box-shadow 0.1s; background-image:var(--appt-treatment-hatch, none); }
    .mc-appt:hover { z-index:10; }
    .mc-appt:hover .mc-bar { transform:scaleY(2); box-shadow:0 2px 8px rgba(0,0,0,0.2); }
    .mc-tooltip { display:none; position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%); background:#1A1917; color:#fff; padding:6px 10px; border-radius:6px; font-size:0.72rem; white-space:nowrap; z-index:100; pointer-events:none; line-height:1.4; box-shadow:0 4px 12px rgba(0,0,0,0.3); }
    .mc-tooltip::after { content:''; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:4px solid transparent; border-top-color:#1A1917; }
    .mc-appt:hover .mc-tooltip { display:block; }
    .mc-notes { font-size:0.6rem; color:var(--text-muted); padding:0 3px 2px; line-height:1.3; }
    .mc-badge { display:inline-block; font-size:0.58rem; padding:0 4px; border-radius:3px; margin-right:2px; }
    .mc-badge-note { background:#F6EFCF; color:#7A5C00; }
    .emp-col.vacation-reachable .time-grid, .week-day-cell.vacation-reachable {
      background-image:repeating-linear-gradient(135deg,rgba(190,45,45,.035) 0 6px,rgba(190,45,45,.11) 6px 8px);
    }
    .approval-reservation { outline:2px dashed #9b3c21; outline-offset:-2px; cursor:pointer; }
    .approval-status { font-size:.7rem; font-weight:600; }
    #approvalRequestContent, #approvalInboxContent { overflow-wrap:anywhere; }
    #approvalRequestModal [hidden] { display:none !important; }
    #approvalUnreadBadge { border-radius:12px; padding:1px 6px; background:var(--primary-bg); }
    #calendarLoadError { padding:12px; background:#FFF5F5; color:#9b2c2c; font-weight:600; }
    .mc-badge-vacation { background:#FFF5F5; color:#C53030; }
    @media(max-width:640px){
      .month-cell{min-height:80px;}
      .mc-timeline-row{height:11px;margin-bottom:2px;}
      .mc-emp-label .txt{display:none;}
      .mc-emp-label{max-width:8px;gap:0;}
      .mc-tooltip{font-size:0.72rem;padding:5px 9px;}
      /* Badges lesbar halten statt weiter verkleinern (Finding 2.1/3.3) */
      .mc-badge{font-size:0.62rem;}
      .mc-notes{font-size:0.62rem;}
    }

    /* === SCHEDULE VIEW === */
    .schedule-filter-bar { display:flex; align-items:center; gap:8px; padding:8px 12px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); margin-bottom:12px; flex-wrap:wrap; }
    .schedule-filter-label { font-size:0.72rem; font-weight:600; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.03em; }
    .schedule-filter-chip { display:inline-flex; align-items:center; gap:4px; padding:4px 10px; border-radius:20px; font-size:0.72rem; font-weight:500; cursor:pointer; border:1px solid var(--border); background:var(--surface); color:var(--text); user-select:none; transition:all 0.15s; }
    .schedule-filter-chip .sfc-dot { width:8px; height:8px; border-radius:50%; }
    .schedule-filter-chip.inactive { opacity:0.4; background:var(--bg); }
    .schedule-filter-toggle { display:none; font-family:var(--font); font-size:0.78rem; padding:5px 12px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); color:var(--text-sec); cursor:pointer; margin-bottom:12px; }
    .schedule-grid { border-radius:var(--radius-lg); border:1px solid var(--border); background:var(--surface); overflow:hidden; }
    .schedule-header-row { display:grid; grid-template-columns:repeat(7,1fr); }
    .schedule-header-cell { padding:6px 4px; text-align:center; font-size:0.7rem; font-weight:600; color:var(--text-muted); text-transform:uppercase; border-bottom:1px solid var(--border); }
    .schedule-body { display:grid; grid-template-columns:repeat(7,1fr); }
    .schedule-cell { min-height:100px; border-right:1px solid var(--border); border-bottom:1px solid var(--border); padding:3px 4px; font-size:0.72rem; cursor:pointer; transition:background 0.1s; }
    .schedule-cell:nth-child(7n) { border-right:none; }
    .schedule-cell:hover { background:var(--surface-hover); }
    .schedule-cell.other { background:var(--bg); }
    .schedule-cell.other .sc-day { color:var(--text-muted); }
    .schedule-cell.today { background:var(--primary-bg); }
    .schedule-cell.weekend { background:#FAFAF8; }
    .sc-day { font-weight:600; font-size:0.78rem; margin-bottom:3px; }
    .schedule-cell.today .sc-day { display:inline-flex; align-items:center; justify-content:center; background:var(--primary); color:#fff; border-radius:50%; width:22px; height:22px; }
    .sc-entry { display:flex; align-items:center; gap:3px; padding:1px 0; line-height:1.3; white-space:nowrap; overflow:hidden; }
    .sc-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
    .sc-name { font-weight:500; color:var(--text); font-size:0.68rem; }
    .sc-time { font-size:0.68rem; color:var(--text); font-weight:500; }
    .sc-vacation { font-size:0.6rem; color:var(--danger); display:flex; align-items:center; gap:2px; padding:1px 0; }
    @media(max-width:640px){
      .schedule-filter-bar{display:none;} .schedule-filter-bar.open{display:flex;}
      .schedule-filter-toggle{display:block;}
      .schedule-header-row{display:none;}
      .schedule-body{grid-template-columns:1fr;}
      .schedule-cell{min-height:auto;padding:8px 12px;border-right:none;}
      .schedule-cell.weekend.empty-weekend{display:none;}
      .sc-day{font-size:0.85rem;margin-bottom:4px;} .sc-name,.sc-time{font-size:0.78rem;}
    }

    .schedule-view { display:none; margin:12px; }
    .schedule-view.active { display:block; }
    /* === LOG VIEW === */
    .log-filter-bar { display:flex; align-items:center; gap:10px; margin-bottom:12px; padding:8px 12px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); font-size:0.78rem; flex-wrap:wrap; }
    .log-filter-bar label { color:var(--text-muted); font-weight:500; }
    .log-filter-bar select,.log-filter-bar input { font-family:var(--font); font-size:0.78rem; padding:4px 8px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); color:var(--text); }
    .log-filter-bar .log-count { color:var(--text-muted); font-size:0.72rem; margin-left:auto; }
    .log-table-wrap { border-radius:var(--radius-lg); border:1px solid var(--border); background:var(--surface); overflow-x:auto;
      /* Scroll-Schatten: zeigt an, dass rechts weitere Spalten liegen (Finding 3.6) */
      background-image:linear-gradient(to right,var(--surface) 30%,rgba(255,255,255,0)),linear-gradient(to right,rgba(255,255,255,0),var(--surface) 70%),linear-gradient(to right,rgba(0,0,0,0.08),rgba(0,0,0,0) 6px),linear-gradient(to left,rgba(0,0,0,0.08),rgba(0,0,0,0) 6px);
      background-position:left center,right center,left center,right center; background-repeat:no-repeat;
      background-size:36px 100%,36px 100%,10px 100%,10px 100%; background-attachment:local,local,scroll,scroll; }
    .log-table { width:100%; border-collapse:collapse; font-size:0.78rem; min-width:800px; }
    .log-table thead { background:var(--bg); }
    .log-table th { padding:8px 10px; text-align:left; font-weight:600; font-size:0.72rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.03em; border-bottom:1px solid var(--border); white-space:nowrap; }
    .log-table td { padding:8px 10px; border-bottom:1px solid var(--border); vertical-align:middle; }
    .log-table tbody tr:hover { background:var(--surface-hover); }
    .log-table tbody tr:last-child td { border-bottom:none; }
    .log-action { display:inline-block; padding:2px 8px; border-radius:10px; font-size:0.68rem; font-weight:600; white-space:nowrap; }
    .log-action-created { background:var(--primary-bg); color:var(--primary); }
    .log-action-cancelled { background:var(--danger-bg); color:var(--danger); }
    .log-action-confirmed { background:var(--success-bg); color:var(--success); }
    .log-action-deleted { background:var(--bg); color:var(--text-muted); }
    .log-emp { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
    .log-emp-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
    .log-time { color:var(--text-muted); font-size:0.72rem; white-space:nowrap; }
    .log-date { font-weight:500; white-space:nowrap; }
    .log-pagination { display:flex; align-items:center; justify-content:center; gap:6px; padding:12px; font-size:0.78rem; }
    .log-pagination .btn.pg-active { background:var(--primary); color:#fff; border-color:var(--primary); }

    .log-view { display:none; margin:12px; }
    .log-view.active { display:block; }

    /* === MODAL === */
    .modal-overlay {
      position:fixed; inset:0; z-index:1000;
      background:rgba(0,0,0,0.4); backdrop-filter:blur(4px);
      display:flex; align-items:center; justify-content:center; padding:16px;
      opacity:0; pointer-events:none; transition:opacity 0.2s;
    }
    .modal-overlay.active { opacity:1; pointer-events:all; }
    .modal {
      background:var(--surface); border-radius:var(--radius-lg);
      box-shadow:var(--shadow-lg); width:100%; max-width:500px;
      max-height:90vh; max-height:90dvh; overflow-y:auto; overscroll-behavior:contain;
      transform:translateY(10px); transition:transform 0.2s;
    }
    .modal-overlay.active .modal { transform:translateY(0); }
    .mhdr { padding:18px 22px 0; display:flex; align-items:center; justify-content:space-between; }
    .mhdr h2 { font-family:var(--font-display); font-size:1.15rem; }
    .mclose {
      width:30px; height:30px; border-radius:50%; border:none;
      background:var(--bg); cursor:pointer; font-size:1rem;
      display:flex; align-items:center; justify-content:center;
      color:var(--text-sec); transition:background 0.15s;
    }
    .mclose:hover { background:var(--border); }
    .mbody { padding:18px 22px; }
    .mfoot { padding:14px 22px; border-top:1px solid var(--border); display:flex; gap:8px; justify-content:flex-end; }

    /* === FORMS === */
    .fg { margin-bottom:14px; }
    .fl { display:block; font-size:0.75rem; font-weight:600; color:var(--text-sec); margin-bottom:5px; text-transform:uppercase; letter-spacing:0.04em; }
    .fi, .fs, .ft {
      width:100%; padding:9px 11px; border:1px solid var(--border); border-radius:var(--radius);
      font-family:var(--font); font-size:0.88rem; color:var(--text); background:var(--surface);
      transition:border-color 0.15s;
    }
    .fi:focus, .fs:focus, .ft:focus { outline:none; border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-bg); }
    /* Gesperrte Felder im Termin-Korb (fehlgeschlagener Versand) müssen als gesperrt erkennbar sein. */
    #appointmentOfferBasketModal .fi:disabled { background:var(--bg); color:var(--text-muted); cursor:not-allowed; }
    .ft { resize:vertical; min-height:60px; }
    .fr { display:flex; gap:10px; }
    .fr .fg { flex:1; }
    .fi-color { width:42px; height:42px; padding:2px; border:2px solid var(--border); border-radius:var(--radius); cursor:pointer; background:none; }
    .asa-talk-notes { margin-top:8px; border:1px solid var(--border); border-radius:var(--radius); background:var(--bg); overflow:hidden; }
    .asa-talk-head { display:flex; justify-content:space-between; gap:10px; padding:8px 10px; font-size:0.74rem; font-weight:700; color:var(--text-sec); text-transform:uppercase; letter-spacing:0.04em; border-bottom:1px solid var(--border); }
    .asa-talk-list { display:flex; flex-direction:column; }
    .asa-talk-row { display:flex; align-items:flex-start; gap:8px; padding:9px 10px; font-size:0.86rem; line-height:1.35; color:var(--text); border-bottom:1px solid var(--border); }
    .asa-talk-row:last-child { border-bottom:none; }
    .asa-talk-row input { width:16px; height:16px; margin-top:1px; flex:0 0 auto; cursor:pointer; accent-color:var(--primary); }
    .asa-talk-row input:disabled { cursor:not-allowed; }
    .asa-talk-row.busy { opacity:0.65; }
    .asa-talk-empty, .asa-talk-hint { padding:9px 10px; font-size:0.82rem; color:var(--text-sec); }
    .asa-talk-hint { border-top:1px solid var(--border); background:var(--surface); }

    /* === PIN SCREEN === */
    .pin-screen {
      position:fixed; inset:0; z-index:2000;
      background:linear-gradient(145deg,#2D6A5A,#1a4a3d);
      display:flex; align-items:center; justify-content:center;
    }
    .pin-card {
      background:var(--surface); border-radius:16px; padding:36px;
      box-shadow:var(--shadow-lg); text-align:center;
      width:100%; max-width:370px; margin:20px;
    }
    .pin-card h1 { font-family:var(--font-display); color:var(--primary); font-size:1.5rem; margin-bottom:4px; }
    .pin-card>p { color:var(--text-sec); font-size:0.88rem; margin-bottom:20px; }
    .pin-emp-list { display:flex; flex-direction:column; gap:5px; margin-bottom:16px; max-height:280px; overflow-y:auto; }
    .pin-emp-btn {
      display:flex; align-items:center; gap:10px;
      padding:11px 14px; border-radius:var(--radius);
      border:2px solid var(--border); background:var(--surface);
      cursor:pointer; font-family:var(--font); font-size:0.92rem;
      transition:all 0.15s; text-align:left;
    }
    .pin-emp-btn:hover { border-color:var(--primary); background:var(--primary-bg); }
    .pin-emp-btn.sel { border-color:var(--primary); background:var(--primary-bg); }
    .pin-emp-btn .cdot { width:12px; height:12px; border-radius:50%; flex-shrink:0; }
    .pin-wrap { margin-top:14px; }
    .pin-fi { width:140px; text-align:center; font-size:1.6rem; letter-spacing:10px; padding:10px; border:2px solid var(--border); border-radius:var(--radius); font-family:var(--font); }
    .pin-fi:focus { outline:none; border-color:var(--primary); }
    .pin-err { color:var(--danger); font-size:0.82rem; margin-top:6px; }
    .pin-go { margin-top:16px; width:100%; padding:11px; border-radius:var(--radius); background:var(--primary); color:#fff; border:none; font-family:var(--font); font-size:0.95rem; font-weight:600; cursor:pointer; }
    .pin-go:hover { background:var(--primary-light); }
    .pin-go:disabled { opacity:0.5; cursor:not-allowed; }

    /* === SETTINGS PANEL === */
    .sett-overlay { position:fixed; inset:0; z-index:900; background:rgba(0,0,0,0.3); backdrop-filter:blur(2px); opacity:0; pointer-events:none; transition:opacity 0.25s; }
    .sett-overlay.active { opacity:1; pointer-events:all; }
    .sett-panel { position:fixed; top:0; right:-500px; width:460px; max-width:100vw; height:100vh; height:100dvh; background:var(--surface); box-shadow:var(--shadow-lg); z-index:950; transition:right 0.3s; display:flex; flex-direction:column; }
    .sett-panel:not(.active) { display:none; }
    .sett-panel.active { right:0; }
    .sett-hdr { padding:18px 22px; border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; }
    .sett-hdr h2 { font-family:var(--font-display); font-size:1.15rem; }
    .sett-body { flex:1; overflow-y:auto; padding:18px 22px; }
    .sett-tabs { display:flex; flex-wrap:wrap; gap:0; border-bottom:1px solid var(--border); margin:-18px -22px 18px; padding:0 22px; scrollbar-width:none; }
    .sett-tabs::-webkit-scrollbar { display:none; }
    .sett-tab { padding:10px 10px; font-size:0.78rem; font-weight:500; color:var(--text-muted); border:none; background:none; cursor:pointer; border-bottom:2px solid transparent; font-family:var(--font); transition:all 0.15s; white-space:nowrap; flex-shrink:1; min-width:fit-content; }
    .sett-tab:hover { color:var(--text); }
    .sett-tab.active { color:var(--primary); border-bottom-color:var(--primary); }

    .ecard { border:1px solid var(--border); border-radius:var(--radius); padding:12px 14px; margin-bottom:8px; display:flex; align-items:center; gap:10px; transition:background 0.15s; }
    .ecard:hover { background:var(--surface-hover); }
    .ecard .cdot { width:14px; height:14px; border-radius:50%; flex-shrink:0; }
    .ecard .einfo { flex:1; }
    .ecard .ename { font-weight:600; font-size:0.88rem; }
    .ecard .erole { font-size:0.78rem; color:var(--text-muted); }
    .ecard .eacts { display:flex; gap:3px; }

    .worktime-overview { display:flex; flex-direction:column; gap:10px; }
    .worktime-month { border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); overflow:hidden; }
    .worktime-month > summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; cursor:pointer; font-size:0.84rem; font-weight:600; }
    .worktime-month > summary::-webkit-details-marker { display:none; }
    .worktime-month > summary::before { content:'›'; color:var(--text-muted); font-size:1rem; transition:transform 0.15s; }
    .worktime-month[open] > summary::before { transform:rotate(90deg); }
    .worktime-month-label { flex:1; min-width:0; }
    .worktime-month-total { color:var(--text-muted); font-size:0.76rem; font-weight:500; white-space:nowrap; }
    .worktime-admin-filter { display:flex; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
    .worktime-admin-filter label { font-size:0.75rem; font-weight:600; color:var(--text-sec); text-transform:uppercase; letter-spacing:0.04em; }
    .worktime-admin-filter select { flex:1; min-width:170px; padding:7px 9px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); color:var(--text); font-family:var(--font); font-size:0.82rem; }
    .worktime-employee { border-top:1px solid var(--border); background:var(--surface); }
    .worktime-employee > summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 12px; cursor:pointer; background:var(--surface-hover); font-size:0.8rem; font-weight:600; }
    .worktime-employee > summary::-webkit-details-marker { display:none; }
    .worktime-employee > summary::before { content:'›'; color:var(--text-muted); transition:transform 0.15s; }
    .worktime-employee[open] > summary::before { transform:rotate(90deg); }
    .worktime-employee-name { flex:1; min-width:0; display:flex; align-items:center; gap:6px; }
    .worktime-employee-dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; }
    .worktime-table-wrap { border-top:1px solid var(--border); overflow-x:auto;
      /* Scroll-Schatten (Finding 3.6) */
      background-image:linear-gradient(to right,var(--surface) 30%,rgba(255,255,255,0)),linear-gradient(to right,rgba(255,255,255,0),var(--surface) 70%),linear-gradient(to right,rgba(0,0,0,0.08),rgba(0,0,0,0) 6px),linear-gradient(to left,rgba(0,0,0,0.08),rgba(0,0,0,0) 6px);
      background-position:left center,right center,left center,right center; background-repeat:no-repeat;
      background-size:36px 100%,36px 100%,10px 100%,10px 100%; background-attachment:local,local,scroll,scroll; }
    .worktime-table { width:100%; min-width:420px; border-collapse:collapse; font-size:0.77rem; }
    .worktime-table thead { background:var(--bg); }
    .worktime-table th { padding:7px 9px; text-align:left; font-size:0.68rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.03em; border-bottom:1px solid var(--border); white-space:nowrap; }
    .worktime-table td { padding:8px 9px; border-bottom:1px solid var(--border); white-space:nowrap; }
    .worktime-table tbody tr:last-child td { border-bottom:none; }
    .worktime-table tbody tr:hover { background:var(--surface-hover); }

    /* === TOAST === */
    .toast-box { position:fixed; bottom:20px; right:20px; z-index:3000; display:flex; flex-direction:column; gap:6px; }
    .toast { background:var(--text); color:#fff; padding:10px 18px; border-radius:var(--radius); font-size:0.84rem; box-shadow:var(--shadow-lg); animation:fadeUp 0.3s; max-width:300px; }
    .toast.err { background:var(--danger); }
    .toast.ok { background:var(--primary); }
    @keyframes fadeUp { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }

    /* Doppeltipp-Zoom / versehentlicher Zoom bei schnellen Folge-Taps vermeiden (Finding 3.7) */
    button, .btn, .btn-s, .btn-icon, .appt, .time-row, .week-appt-chip, .mc-cell, .sc-day, .pin-emp-btn, .mobile-fab, .mclose { touch-action:manipulation; }
    /* Auf Touch-Geräten ist Resize deaktiviert — inaktiven Handle nicht die Termin-Unterkante verdecken lassen (Finding 1.3) */
    @media(pointer:coarse){ .appt .resize-handle { display:none; } }

    /* === MOBILE === */
    @media(max-width:768px) {
      /* Header responsiv (Finding 1.1): darf auf zwei Zeilen umbrechen, alle Aktionen bleiben erreichbar */
      .header { padding:6px 12px; gap:6px; height:auto; min-height:56px; flex-wrap:wrap; }
      .logo span { display:none; }
      .search-wrap { margin-left:0; flex:1 1 160px; min-width:120px; }
      .search-field { flex:1; min-width:0; }
      .search-wrap input { width:100%; min-width:0; font-size:16px; }
      .search-wrap input:focus { width:100%; }
      .hdr-actions { gap:4px; flex:1 1 100%; min-width:0; max-width:100%; flex-wrap:wrap; }
      #videoWarning { display:none !important; }
      .user-badge { padding:5px 8px; max-width:90px; }
      .user-badge { overflow:hidden; }
      #userBadge { white-space:nowrap; text-overflow:ellipsis; }
      #gcalRefreshBtn { padding-left:8px; padding-right:8px; }

      /* Suchergebnis-Dropdown nicht aus dem Bildschirm (Finding 2.5): am Suchfeld verankert, Feldbreite statt min-width:320px */
      .search-results { min-width:0; max-height:60dvh; }

      .nav-bar { padding:8px 12px; gap:8px; }
      .nav-title { font-size:clamp(1rem,4.5vw,1.3rem); line-height:1.4; white-space:nowrap; padding:8px 12px 0; }
      .cal-container { margin:8px; }
      .sett-panel { width:100vw; }
      .time-gutter { width:44px; }
      .time-label { font-size:0.72rem; padding-right:4px; }
      .fr { flex-direction:column; gap:0; }

      /* iOS-Zoom bei Fokus vermeiden: Inputs >=16px (Finding 1.2) */
      .fi, .fs, .ft, input, select, textarea { font-size:16px; }
      .avail-time-input, .week-avail-input { font-size:16px; width:auto; min-width:64px; }
      /* Zeit-Inputs in der schmalen Wochen-Spalte schmaler fassen, sonst läuft die Anwesenheits-Zeile über */
      .week-avail-input { width:58px; min-width:58px; }
      .log-filter-bar, .log-filter-bar select, .log-filter-bar input { font-size:16px; }

      /* Touch-Ziele >=44px (Finding 1.3) */
      .btn, .btn-s { min-height:44px; }
      .btn-icon { min-width:44px; min-height:44px; width:44px; height:44px; }
      .mclose { width:40px; height:40px; }
      .avail-del-btn { width:32px; height:32px; font-size:16px; }
      .unconfirmed-alert-dot { width:26px; height:26px; }
      .mfoot { flex-wrap:wrap; }
      .mfoot .btn, .mfoot .btn-s { min-height:44px; }

      /* Schriftuntergrenze auf Mobile: eher vergrößern statt verkleinern (Finding 3.3) */
      .mc-badge { font-size:0.62rem; }
      .mc-notes { font-size:0.62rem; }
      .appt-time { font-size:0.72rem; }
      .sc-name, .sc-time { font-size:0.72rem; }
      .sc-vacation { font-size:0.68rem; }

      /* Modal als Vollbild-Sheet, Tastatur verdeckt Felder weniger (Finding 2.3) */
      .modal-overlay { padding:0; align-items:stretch; }
      .modal { max-width:100%; width:100%; height:100dvh; max-height:100dvh; border-radius:0; }

      /* Toast über dem FAB statt darüber liegend (Finding 3.1) */
      .toast-box { left:12px; right:12px; bottom:calc(88px + env(safe-area-inset-bottom)); align-items:center; }
      .toast { max-width:100%; }

      /* Wochen-Chips füllen die schmale Mitarbeiter-Spalte (größere Touch-Ziele) */
      .week-appt-chip { max-width:100%; width:100%; min-height:34px; }
    }

    /* === DRAG SELECT === */
    .drag-select {
      position:absolute; left:2px; right:2px;
      background:var(--primary); opacity:0.18;
      border-radius:4px; pointer-events:none; z-index:4;
      border:2px solid var(--primary);
      transition:height 0.05s, top 0.05s;
    }
    .time-row.drag-hover { background:var(--primary-bg) !important; }

    .hidden { display:none !important; }
    .app-wrap { display:flex; flex-direction:column; height:calc(100vh - var(--header-h,56px)); height:calc(100dvh - var(--header-h,56px)); }

    .video-banner {
      background: linear-gradient(135deg, #FFF3E0 0%, #FFE0B2 100%);
      border: 1px solid #FFB74D;
      border-radius: var(--radius);
      padding: 14px 16px;
      margin-bottom: 16px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      box-shadow: 0 2px 4px rgba(0,0,0,0.05);
    }
    .video-banner-left {
      display: flex;
      align-items: center;
      gap: 10px;
      flex: 1;
    }
    .video-banner-title {
      font-size: 0.9rem;
      font-weight: 500;
      color: var(--text);
    }
    .video-banner-actions {
      display: flex;
      gap: 8px;
    }

/* Mobil: Log als Karten statt horizontal scrollender 10-Spalten-Tabelle */
@media(max-width:768px) {
  .log-table-wrap { overflow-x:visible; border:none; background:transparent; }
  .log-table { min-width:0; display:block; }
  .log-table thead { display:none; }
  .log-table tbody { display:grid; gap:8px; }
  .log-table tbody tr { display:block; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:6px 10px; }
  .log-table tbody tr:hover { background:var(--surface); }
  .log-table td { display:flex; gap:10px; justify-content:space-between; align-items:baseline; padding:4px 0; border-bottom:none; text-align:right; overflow-wrap:anywhere; }
  .log-table td::before { flex:0 0 84px; text-align:left; font-size:0.68rem; font-weight:600; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.03em; }
  .log-table td:nth-child(1)::before { content:'Zeitpunkt'; }
  .log-table td:nth-child(2)::before { content:'Aktion'; }
  .log-table td:nth-child(3)::before { content:'Von'; }
  .log-table td:nth-child(4)::before { content:'Patient'; }
  .log-table td:nth-child(5)::before { content:'Für'; }
  .log-table td:nth-child(6)::before { content:'Datum'; }
  .log-table td:nth-child(7)::before { content:'Start'; }
  .log-table td:nth-child(8)::before { content:'Ende'; }
  .log-table td:nth-child(9)::before { content:'Untersuchung'; }
  .log-table td:nth-child(10)::before { content:'Bemerkung'; }
  .log-table td[colspan] { justify-content:center; text-align:center; }
  .log-table td[colspan]::before { content:none; }
}
