/*!
 * ============================================================
 *  HL-DENTISTRY — DEPLOYMENT STYLESHEET
 *  Brand: Health Ledger  |  Product: HL-Dentistry v10
 * ============================================================
 *  Design system: Ledger palette (navy #0A2E9E + signal #14C295)
 *  Typography:    Inter, system-ui, -apple-system, Segoe UI, Roboto
 *  Targets:       Mobile phone frame (≤ 899px) + Desktop (≥ 900px)
 *  Last updated:  2026-04-19 — SwissMedAI GmbH
 * ============================================================
 *
 *  USAGE:
 *    1. Load the Inter font in your <head>:
 *         <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
 *    2. Include this stylesheet:
 *         <link rel="stylesheet" href="hl-dentistry.css">
 *    3. Set the favicon (inline data URI version):
 *         <link rel="icon" type="image/svg+xml" href="hl-logo-mark.svg">
 *
 *  CONTENTS:
 *    §1  Design tokens (CSS variables)
 *    §2  Reset & base typography
 *    §3  Phone frame container
 *    §4  Header / navigation / tabs
 *    §5  Content, cards, badges
 *    §6  Odontogram
 *    §7  Forms, buttons, overlays
 *    §8  Patient / PA / ZE components
 *    §9  Email inbox (Nachrichten)
 *    §10 Laboratory module
 *    §11 Administrative portal (Verwaltung)
 *    §12 Dashboard (Management)
 *    §13 Responsive desktop layout (≥ 900px)
 *    §14 Accessibility & motion preferences
 *    §15 Print styles
 * ============================================================
 */

/* ============================================================
   DESIGN SYSTEM — HL-Dentistry v10 (Ledger palette)
   Font: Inter (cross-platform) | Primary: #0A2E9E | Swiss Medical Precision
   ============================================================ */
:root{
  /* Brand — aligned with Ledger palette */
  --navy:       #0A2E9E;
  --navy-light: #0B3BC0;
  --blue:       #2D5BF5;
  --blue-light: #5A82FF;
  --blue-50:    #EBF0FF;
  --blue-25:    #F5F7FF;
  /* Semantic */
  --emerald:    #14C295;
  --emerald-bg: #ECFDF5;
  --amber:      #D97706;
  --amber-bg:   #FFFBEB;
  --crimson:    #C9313D;
  --crimson-bg: #FEF2F2;
  --violet:     #6C47FF;
  --violet-bg:  #F3F0FF;
  /* Neutral — aligned with Ledger grays */
  --text:       #1D1D1F;
  --text-2:     #3A3A3C;
  --text-3:     #6E6E73;
  --text-4:     #86868B;
  --border:     #D2D2D7;
  --border-2:   #C7C7CC;
  --surface:    #F5F5F7;
  --surface-2:  #EEEEEF;
  --white:      #FFFFFF;
  /* Tooth States */
  --t-healthy:  #14C295;
  --t-caries:   #D97706;
  --t-extract:  #C9313D;
  --t-crown:    #6C47FF;
  --t-composite:#2D5BF5;
  --t-bridge:   #DB2777;
  --t-other:    #94A3B8;
  --t-teleskop: #0891B2;
  --t-wurzelrest:#92400E;
  --t-zerstoert: #7F1D1D;
  --t-stift:    #B45309;
  --t-halte:    #E11D48;
  --t-retiniert:#475569;
  --t-fehlt:    #E2E8F0;
  /* Shadows — tuned for Ledger neutrals */
  --sh-sm: 0 1px 2px rgba(29,29,31,0.05);
  --sh-md: 0 4px 12px rgba(29,29,31,0.08);
  --sh-lg: 0 8px 30px rgba(29,29,31,0.12);
  --sh-xl: 0 20px 60px rgba(29,29,31,0.15);
  --sh-blue: 0 4px 20px rgba(10,46,158,0.25);
  --sh-card: 0 1px 3px rgba(29,29,31,0.04), 0 4px 12px rgba(29,29,31,0.06);
  /* Radii */
  --r-sm: 8px; --r-md: 12px; --r-lg: 16px; --r-xl: 20px; --r-full: 9999px;
  /* Transitions */
  --ease: cubic-bezier(0.4,0,0.2,1);
}

*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;background:#E8ECF4;display:flex;justify-content:center;align-items:start;min-height:100vh;padding:20px;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

/* ===== PHONE CONTAINER ===== */
.phone{width:393px;height:852px;background:var(--surface);border-radius:28px;box-shadow:var(--sh-xl),0 0 0 1px rgba(0,0,0,0.05);overflow:hidden;display:flex;flex-direction:column;position:relative}

/* ===== HEADER ===== */
.header{background:linear-gradient(145deg,var(--navy) 0%,var(--navy-light) 40%,var(--blue) 100%);color:#fff;padding:20px;position:relative;overflow:hidden}
.header::before{content:'';position:absolute;top:-40%;right:-20%;width:200px;height:200px;background:radial-gradient(circle,rgba(255,255,255,0.08) 0%,transparent 70%);border-radius:50%}
.header::after{content:'';position:absolute;bottom:-30%;left:-10%;width:160px;height:160px;background:radial-gradient(circle,rgba(255,255,255,0.05) 0%,transparent 70%);border-radius:50%}
.header-big{padding:28px 20px 20px}
.header h1{font-size:22px;font-weight:700;letter-spacing:-0.3px;position:relative;z-index:1}
.header h2{font-size:17px;font-weight:600;position:relative;z-index:1}
.header .sub{font-size:12px;opacity:0.75;margin-top:4px;font-weight:400;position:relative;z-index:1}
.header-row{display:flex;align-items:center;gap:10px;position:relative;z-index:1}
.back-btn{background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.15);color:#fff;cursor:pointer;font-size:18px;padding:6px 10px;border-radius:var(--r-sm);backdrop-filter:blur(8px);transition:background .2s var(--ease)}
.back-btn:hover{background:rgba(255,255,255,0.2)}
.logout-btn{background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.12);color:#fff;padding:6px 14px;border-radius:var(--r-sm);font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;backdrop-filter:blur(8px);transition:all .2s var(--ease)}
.logout-btn:hover{background:rgba(255,255,255,0.2)}

/* ===== STAT CARDS ===== */
.stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;padding:16px 20px 12px}
.stat{background:var(--white);padding:14px 12px;border-radius:var(--r-lg);border:1px solid var(--border);text-align:center;cursor:pointer;transition:all .25s var(--ease);box-shadow:var(--sh-card);position:relative;overflow:hidden}
.stat:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}
.stat::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--r-lg) var(--r-lg) 0 0}
.stat:nth-child(1)::before{background:linear-gradient(90deg,var(--navy),var(--blue))}
.stat:nth-child(2)::before{background:linear-gradient(90deg,var(--violet),#A78BFA)}
.stat:nth-child(3)::before{background:linear-gradient(90deg,var(--amber),#FBBF24)}
.stat .num{font-size:24px;font-weight:800;letter-spacing:-0.5px;margin-top:2px}
.stat .label{font-size:10px;color:var(--text-3);margin-top:4px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px}

/* ===== CONTENT ===== */
.content{flex:1;overflow-y:auto;padding:16px 20px;-webkit-overflow-scrolling:touch;min-height:0}
.section-title{font-size:13px;font-weight:700;color:var(--text-2);margin-bottom:12px;text-transform:uppercase;letter-spacing:0.8px}

/* ===== CARDS ===== */
.card{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--sh-card);margin-bottom:10px;cursor:pointer;transition:all .25s var(--ease)}
.card:hover{box-shadow:var(--sh-md);border-color:var(--border-2)}
.card-row{display:flex;justify-content:space-between;align-items:center}
.card-title{font-size:14px;font-weight:700;color:var(--text)}
.card-sub{font-size:12px;color:var(--text-3);margin-top:3px}

/* ===== BADGES ===== */
.badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.badge{display:inline-flex;align-items:center;gap:3px;padding:4px 10px;border-radius:var(--r-full);font-size:11px;font-weight:600;letter-spacing:0.1px}
.b-active{background:var(--blue-50);color:var(--navy)}
.b-urgent{background:var(--crimson-bg);color:var(--crimson)}
.b-warning{background:var(--amber-bg);color:var(--amber)}
.b-done{background:var(--emerald-bg);color:var(--emerald)}
.b-pending{background:var(--surface-2);color:var(--text-3)}
.b-treat{background:#FEF9E7;color:#78350F;border:1px solid #FDE68A}
.b-purple{background:var(--violet-bg);color:var(--violet)}
.chevron{color:var(--blue);font-size:16px;opacity:0.6;transition:opacity .2s}
.card:hover .chevron{opacity:1}

/* ===== TABS ===== */
.tabs{display:flex;background:var(--white);border-bottom:1px solid var(--border);padding:0 8px}
.tab{flex:1;padding:12px 8px;font-size:11px;font-weight:600;border:none;cursor:pointer;background:transparent;color:var(--text-3);font-family:inherit;position:relative;transition:color .2s var(--ease);text-transform:uppercase;letter-spacing:0.5px}
.tab.active{color:var(--navy)}
.tab.active::after{content:'';position:absolute;bottom:0;left:16%;right:16%;height:2.5px;background:linear-gradient(90deg,var(--navy),var(--blue));border-radius:2px}

/* ===== BOTTOM NAV ===== */
.bottom-nav{display:flex;justify-content:space-around;align-items:center;padding:8px 0 12px;background:var(--white);border-top:1px solid var(--border);box-shadow:0 -4px 12px rgba(0,0,0,0.03)}
.nav-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px;border:none;background:none;cursor:pointer;transition:transform .15s var(--ease)}
.nav-btn:active{transform:scale(0.92)}
.nav-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center}
.nav-icon svg{width:22px;height:22px}
.nav-btn .lbl{font-size:10px;font-weight:600;font-family:inherit}
.nav-btn.active .lbl{color:var(--navy)}
.nav-btn.active svg{color:var(--navy)}
.nav-btn:not(.active) .lbl{color:var(--text-4)}
.nav-btn:not(.active) svg{color:var(--text-4)}
.fab-add{width:46px;height:46px;background:linear-gradient(135deg,var(--navy),var(--blue));border-radius:var(--r-full);border:none;color:#fff;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-blue);transition:all .2s var(--ease)}
.fab-add:hover{transform:scale(1.05)}
.fab-mic{position:absolute;bottom:76px;right:16px;width:50px;height:50px;background:linear-gradient(135deg,var(--navy),var(--blue));border-radius:var(--r-full);border:none;color:#fff;font-size:20px;cursor:pointer;box-shadow:var(--sh-blue);z-index:80;display:flex;align-items:center;justify-content:center;transition:all .2s var(--ease)}
.fab-mic:hover{transform:scale(1.05);box-shadow:0 6px 24px rgba(8,42,153,0.35)}
.fab-mic svg{width:22px;height:22px}
.sync-bar{padding:8px 20px;background:var(--blue-25);border-top:1px solid var(--blue-50);font-size:11px;color:var(--navy);text-align:center;font-weight:500;display:flex;align-items:center;justify-content:center;gap:6px}
.sync-bar svg{width:14px;height:14px;color:var(--emerald)}

/* ===== ODONTOGRAM ===== */
.odo-wrap{padding:16px;background:var(--white);border-radius:var(--r-lg);border:1px solid var(--border);box-shadow:var(--sh-card);position:relative}
.odo-zoom-btn{width:24px;height:24px;border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-3);transition:all .15s;padding:0;font-family:inherit}
.odo-zoom-btn:hover{background:var(--blue-50);color:var(--navy);border-color:var(--blue)}
.odo-zoom-overlay{position:absolute;inset:0;background:rgba(15,23,42,0.92);z-index:200;backdrop-filter:blur(4px)}
.odo-zoom-close{position:absolute;top:14px;right:14px;z-index:202;width:36px;height:36px;border-radius:var(--r-full);background:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.2);color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;line-height:1}
.odo-zoom-close:hover{background:rgba(255,255,255,0.25)}
.odo-zoom-inner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(90deg);transform-origin:center center;width:780px;background:var(--white);border-radius:var(--r-lg);padding:22px 26px;box-shadow:0 20px 60px rgba(0,0,0,0.4);z-index:201}
.odo-zoom-inner .odo-teeth-grid,.odo-zoom-inner .odo-num-row{grid-template-columns:repeat(8,1fr) 18px repeat(8,1fr);gap:5px}
.odo-zoom-inner .odo-teeth-grid .ot{font-size:15px;padding:14px 0;border-radius:8px;letter-spacing:0}
.odo-zoom-inner .odo-num-row{font-size:13px}
.odo-zoom-inner .odo-qbar{margin:8px 0;grid-template-columns:1fr 18px 1fr}
.odo-zoom-inner .odo-qbar-l,.odo-zoom-inner .odo-qbar-r{height:28px;font-size:14px}
.odo-zoom-title{font-size:15px;font-weight:700;color:var(--navy);margin-bottom:14px;text-align:center;letter-spacing:0.3px}
.odo-zoom-sub{font-size:12px;color:var(--text-3);text-align:center;margin-bottom:10px;font-weight:500}
.odo-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.odo-title{font-size:13px;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:0.5px}
.odo-grid{display:flex;gap:3px;justify-content:center;align-items:center}
.odo-grid .sep{width:2px;height:32px;background:linear-gradient(180deg,transparent,var(--border-2),transparent);margin:0 4px;border-radius:1px}
.odo-quad-label{font-size:8px;font-weight:700;color:var(--text-4);text-align:center;margin-bottom:2px;letter-spacing:1px}
.tooth{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:9px;color:#fff;font-weight:700;transition:all .15s var(--ease);cursor:pointer;position:relative;letter-spacing:-0.2px}
.tooth:hover{transform:scale(1.12);z-index:2}
.t-f{background:var(--t-healthy);box-shadow:inset 0 -2px 0 rgba(0,0,0,0.15),0 1px 3px rgba(13,146,118,0.3)}
.t-g{background:var(--t-caries);box-shadow:inset 0 -2px 0 rgba(0,0,0,0.15),0 1px 3px rgba(217,119,6,0.3)}
.t-ex{background:var(--t-extract);box-shadow:inset 0 -2px 0 rgba(0,0,0,0.15),0 1px 3px rgba(201,49,61,0.3)}
.t-c{background:var(--t-composite);box-shadow:inset 0 -2px 0 rgba(0,0,0,0.15),0 1px 3px rgba(61,102,254,0.3)}
.t-kr{background:var(--t-crown);box-shadow:inset 0 -2px 0 rgba(0,0,0,0.15),0 1px 3px rgba(108,71,255,0.3)}
.t-b{background:#FEF9E7;color:#78350F;border:1.5px solid #FDE68A;box-shadow:0 1px 3px rgba(0,0,0,0.06)}
.t-other{background:var(--surface-2);color:var(--text-3);border:1px solid var(--border);font-size:8px}
.odo-divider{height:1.5px;background:linear-gradient(90deg,transparent 5%,var(--border) 20%,var(--border) 80%,transparent 95%);margin:4px 0}
.odo-legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.odo-legend span{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text-3);font-weight:500}
.odo-legend .dot{width:10px;height:10px;border-radius:4px;display:inline-block;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15)}
.odo-num-row{display:grid;grid-template-columns:repeat(8,1fr) 6px repeat(8,1fr);gap:2px;text-align:center;font-size:8px;font-weight:600;color:var(--text-3);line-height:1.4}
.odo-teeth-grid{display:grid;grid-template-columns:repeat(8,1fr) 6px repeat(8,1fr);gap:2px}
.odo-teeth-grid .ot{border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:9px;color:#fff;font-weight:700;padding:5px 0;letter-spacing:-0.3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15)}
.odo-teeth-grid .odo-gap,.odo-num-row .odo-gap{background:none}
.odo-qbar{display:grid;grid-template-columns:1fr 6px 1fr;margin:3px 0}
.odo-qbar-l,.odo-qbar-r{height:20px;border-radius:var(--r-full);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff}
.odo-qbar-l{background:var(--navy)}
.odo-qbar-r{background:var(--blue)}
/* Odontogram View Tabs */
.odo-view-tabs{display:flex;gap:0;margin:0 0 12px;background:var(--surface);border-radius:var(--r-full);padding:3px}
.odo-view-tabs button{flex:1;padding:7px 0;font-size:10px;font-weight:700;border:none;background:none;color:var(--text-3);cursor:pointer;font-family:inherit;border-radius:var(--r-full);transition:all .15s;text-transform:uppercase;letter-spacing:0.3px}
.odo-view-tabs button.active{background:var(--white);color:var(--navy);box-shadow:var(--sh-sm)}
/* Tooth modifier/indicator */
.mod-badge{position:absolute;top:-4px;right:-4px;font-size:7px;font-weight:800;color:var(--navy);background:var(--white);border-radius:3px;padding:0 2px;line-height:1.3;box-shadow:0 0 2px rgba(0,0,0,0.25)}
.ta-ring{outline:2px solid var(--amber);outline-offset:-1px;border-radius:6px}
/* PA Blatt compact grid */
.pab-grid{display:grid;gap:1px;font-size:8px;text-align:center}
.pab-hdr{font-weight:700;color:var(--text-3);padding:3px 0;font-size:7px}
.pab-val{padding:3px 0;background:var(--surface);border-radius:2px;font-weight:600;color:var(--text-2);min-height:18px;display:flex;align-items:center;justify-content:center}
.pab-val.dp{background:var(--crimson-bg);color:var(--crimson);font-weight:700}
.pab-val.md{background:var(--amber-bg);color:var(--amber);font-weight:700}
.pab-val.bop-y{background:var(--crimson);color:#fff;font-weight:700;border-radius:50%;width:14px;height:14px;font-size:7px;margin:auto}
.pab-son-row{display:flex;gap:1px;justify-content:center;overflow-x:auto;padding:4px 0}
.pab-tcell{display:flex;flex-direction:column;align-items:center;min-width:26px;padding:2px 1px}
.pab-tcell .tn{font-size:7px;font-weight:700;color:var(--text-2);line-height:1}
.pab-tcell .md-row{display:flex;gap:1px;align-items:center;margin-top:2px}
.pab-tcell .md-val{font-size:8px;font-weight:600;min-width:11px;text-align:center;padding:1px 2px;border-radius:3px;color:var(--emerald)}
.pab-tcell .md-val.warn{background:var(--amber-bg);color:var(--amber);font-weight:700}
.pab-tcell .md-val.crit{background:var(--crimson);color:#fff;font-weight:700}
.pab-tcell .md-sep{font-size:6px;color:var(--text-4);font-weight:400}
.pab-tcell.absent{opacity:.2}
.pab-edit-link{font-size:10px;color:var(--blue);cursor:pointer;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:3px}
.pab-edit-link:hover{text-decoration:underline}
.pab-section{margin-bottom:6px;border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden}
.pab-section-hdr{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:var(--surface);cursor:pointer;font-size:10px;font-weight:700;color:var(--text-2)}
/* Behandlung/Treatment tab */
.tx-tooth-row{display:flex;gap:2px;justify-content:center;flex-wrap:nowrap;overflow-x:auto;padding:2px 0}
.tx-tooth-cell{display:flex;flex-direction:column;align-items:center;gap:1px;padding:3px 1px;cursor:pointer;border-radius:4px;transition:all .12s;min-width:0;flex:0 0 auto}
.tx-tooth-cell:hover{background:var(--blue-50)}
.tx-tooth-cell.sel{background:var(--blue-50);outline:2px solid var(--navy);outline-offset:-1px}
.tx-tooth-cell .tn{font-size:7px;font-weight:600;color:var(--text-4)}
.tx-tooth-cell .tb{width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:7px;font-weight:700;color:#fff}
.tx-tooth-cell .tc{font-size:6px;font-weight:700;color:var(--amber);margin-top:1px;text-align:center;line-height:1.1}
.tx-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:0;margin-top:10px}
.tx-keys button{height:44px;border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--white);font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;transition:all .12s}
.tx-keys button .k-main{font-size:12px;font-weight:800;color:var(--text)}
.tx-keys button .k-sub{font-size:7px;color:var(--text-3);font-weight:600}
.tx-keys button.ta-key{border-color:var(--amber);background:var(--amber-bg)}
.tx-keys button.ta-key .k-main{color:var(--amber)}
.tx-keys button:active,.tx-keys button:hover{background:var(--navy);border-color:var(--navy)}
.tx-keys button:active .k-main,.tx-keys button:hover .k-main{color:#fff}
.tx-keys button:active .k-sub,.tx-keys button:hover .k-sub{color:rgba(255,255,255,.7)}
/* Odo history bar */
.odo-hist-bar{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}
.odo-hist-bar select{font-size:10px;font-family:inherit;padding:4px 8px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--white);color:var(--text-2);font-weight:600;flex:1}

/* ===== PIPELINE STEPS ===== */
.pipeline-step{padding:8px 12px;font-size:11px;margin-bottom:4px;border-radius:var(--r-sm);display:flex;align-items:center;gap:8px;font-weight:500;transition:all .2s var(--ease)}
.pipeline-step .step-num{width:22px;height:22px;border-radius:var(--r-full);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0}
.pipeline-step.done{background:var(--blue-50);color:var(--navy)}
.pipeline-step.done .step-num{background:var(--navy);color:#fff}
.pipeline-step.current{background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;font-weight:600;box-shadow:var(--sh-blue)}
.pipeline-step.current .step-num{background:rgba(255,255,255,0.25);color:#fff}
.pipeline-step.future{background:var(--surface-2);color:var(--text-4)}
.pipeline-step.future .step-num{background:var(--border);color:var(--text-4)}

/* ===== HKP CARDS ===== */
.hkp-card{border-radius:var(--r-lg);padding:14px 16px;margin-top:12px;display:flex;align-items:center;justify-content:space-between}
.hkp-expired{background:var(--crimson-bg);border:1px solid rgba(201,49,61,0.2)}
.hkp-urgent{background:var(--amber-bg);border:1px solid rgba(217,119,6,0.2)}
.hkp-ok{background:var(--emerald-bg);border:1px solid rgba(13,146,118,0.2)}

/* ===== OVERLAYS ===== */
.overlay{position:absolute;inset:0;background:rgba(15,23,42,0.5);display:flex;align-items:flex-end;z-index:100;backdrop-filter:blur(4px)}
.add-panel{background:var(--white);width:100%;border-top-left-radius:var(--r-xl);border-top-right-radius:var(--r-xl);padding:24px 20px;box-shadow:0 -8px 30px rgba(0,0,0,0.15)}
.add-panel button{display:block;width:100%;padding:14px;margin-bottom:8px;border:none;border-radius:var(--r-md);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .2s var(--ease)}
.add-panel button:hover{transform:translateY(-1px)}

/* ===== KI-DIKTAT ===== */
.dict-panel{position:absolute;bottom:64px;left:0;right:0;background:var(--white);border-top-left-radius:var(--r-xl);border-top-right-radius:var(--r-xl);padding:20px;box-shadow:0 -8px 30px rgba(0,0,0,0.12);z-index:90}
.dict-bar{height:40px;background:linear-gradient(135deg,var(--blue-50),var(--violet-bg));border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--navy);font-weight:600;margin-bottom:12px;position:relative;overflow:hidden}
.dict-bar::after{content:'';position:absolute;left:0;top:0;bottom:0;width:30%;background:linear-gradient(90deg,rgba(8,42,153,0.08),transparent);animation:dictPulse 2s ease-in-out infinite}
@keyframes dictPulse{0%,100%{transform:translateX(-100%)}50%{transform:translateX(400%)}}
.dict-panel textarea{width:100%;padding:12px;border-radius:var(--r-md);border:1px solid var(--border);font-size:12px;font-family:inherit;min-height:60px;resize:none;margin-bottom:12px;outline:none;transition:border .2s}
.dict-panel textarea:focus{border-color:var(--blue)}
.dict-panel .submit{width:100%;padding:12px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;border:none;border-radius:var(--r-md);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;box-shadow:var(--sh-blue)}

/* ===== LOGIN ===== */
.login-bg{display:flex;flex-direction:column;height:100%;background:linear-gradient(155deg,#061F6E 0%,var(--navy) 35%,var(--navy-light) 65%,var(--blue) 100%);position:relative;overflow:hidden}
.login-bg::before{content:'';position:absolute;top:-20%;right:-30%;width:500px;height:500px;background:radial-gradient(circle,rgba(61,102,254,0.15) 0%,transparent 60%);border-radius:50%}
.login-bg::after{content:'';position:absolute;bottom:-20%;left:-20%;width:400px;height:400px;background:radial-gradient(circle,rgba(108,71,255,0.1) 0%,transparent 60%);border-radius:50%}
.login-top{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;position:relative;z-index:1}
.login-logo{width:88px;height:88px;background:rgba(255,255,255,0.08);border-radius:24px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,0.12);box-shadow:0 8px 32px rgba(0,0,0,0.2)}
.login-logo svg{width:48px;height:48px}
.login-title{font-size:28px;font-weight:800;letter-spacing:-0.5px}
.login-subtitle{font-size:13px;opacity:0.7;margin-top:6px;font-weight:400;letter-spacing:0.5px}
.login-form{background:var(--white);border-top-left-radius:28px;border-top-right-radius:28px;padding:36px 24px 28px;box-shadow:0 -12px 40px rgba(0,0,0,0.15);position:relative;z-index:2}
.login-form label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:6px;margin-top:18px;text-transform:uppercase;letter-spacing:0.5px}
.login-form label:first-child{margin-top:0}
.login-form input[type=email],.login-form input[type=password]{width:100%;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:14px;font-family:inherit;transition:all .2s var(--ease);outline:none;background:var(--surface)}
.login-form input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(61,102,254,0.1);background:var(--white)}
.login-btn{width:100%;padding:16px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;border:none;border-radius:var(--r-md);font-size:15px;font-weight:700;cursor:pointer;margin-top:28px;font-family:inherit;transition:all .25s var(--ease);box-shadow:var(--sh-blue);letter-spacing:0.3px}
.login-btn:hover{transform:translateY(-1px);box-shadow:0 6px 24px rgba(8,42,153,0.35)}
.login-forgot{text-align:center;margin-top:16px;font-size:12px;color:var(--blue);cursor:pointer;font-weight:500}
.login-error{background:var(--crimson-bg);color:var(--crimson);padding:12px;border-radius:var(--r-md);font-size:12px;font-weight:600;margin-top:12px;text-align:center;display:none;border:1px solid rgba(201,49,61,0.15)}
.login-version{text-align:center;font-size:10px;color:rgba(255,255,255,0.35);padding:16px;position:relative;z-index:1}

/* ===== MANAGER DASHBOARD ===== */
.mgr-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px 20px}
.mgr-stat{background:var(--white);padding:16px;border-radius:var(--r-lg);border:1px solid var(--border);cursor:pointer;transition:all .25s var(--ease);box-shadow:var(--sh-card);position:relative;overflow:hidden}
.mgr-stat:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}
.mgr-stat .num{font-size:28px;font-weight:800;letter-spacing:-1px}
.mgr-stat .label{font-size:10px;color:var(--text-3);margin-top:2px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px}
.mgr-stat .trend{font-size:10px;font-weight:600;margin-top:8px;display:flex;align-items:center;gap:4px}
.trend-up{color:var(--emerald)}.trend-down{color:var(--crimson)}.trend-flat{color:var(--amber)}
.bar-chart{display:flex;align-items:flex-end;gap:6px;height:100px;margin:12px 0}
.bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}
.bar{width:100%;border-radius:6px 6px 0 0;min-height:4px;transition:height .3s var(--ease)}
.bar-label{font-size:9px;color:var(--text-3);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center}
.bar-val{font-size:9px;font-weight:700;color:var(--text)}
.mgr-section{margin-bottom:20px}
.mgr-section-title{font-size:12px;font-weight:700;color:var(--text-2);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;text-transform:uppercase;letter-spacing:0.8px}
.mgr-table{width:100%;border-collapse:separate;border-spacing:0;font-size:11px;border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}
.mgr-table th{text-align:left;font-weight:600;color:var(--text-3);padding:8px 10px;background:var(--surface);border-bottom:1px solid var(--border);font-size:10px;text-transform:uppercase;letter-spacing:0.5px}
.mgr-table td{padding:8px 10px;border-bottom:1px solid var(--surface-2);color:var(--text)}
.mgr-table tr:last-child td{border-bottom:none}
.mgr-table tr:hover td{background:var(--blue-25)}

/* ===== LAB VIEW ===== */
.lab-cols{display:flex;gap:10px;flex:1;overflow-x:auto;padding:12px 16px;-webkit-overflow-scrolling:touch}
.lab-col{flex:1;min-width:165px;background:var(--surface);border-radius:var(--r-lg);padding:10px;display:flex;flex-direction:column;border:1px solid var(--border)}
.lab-col-head{font-size:11px;font-weight:700;text-align:center;padding:10px;border-radius:var(--r-md);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}
.lab-col-count{background:rgba(255,255,255,0.7);padding:2px 8px;border-radius:var(--r-full);font-size:10px}
.lab-card{background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);padding:12px;margin-bottom:8px;box-shadow:var(--sh-sm);cursor:pointer;transition:all .2s var(--ease)}
.lab-card:hover{box-shadow:var(--sh-md);border-color:var(--blue);transform:translateY(-1px)}
.lab-card-name{font-size:12px;font-weight:700;color:var(--text)}
.lab-card-type{font-size:10px;color:var(--text-3);margin-top:2px}
.lab-card-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.lab-card-info{font-size:9px;color:var(--text-3);background:var(--surface-2);padding:3px 7px;border-radius:var(--r-full);font-weight:500}
.lab-card-heim{font-size:9px;color:var(--navy);background:var(--blue-50);padding:3px 7px;border-radius:var(--r-full);font-weight:600}
.lab-move-btn{display:block;width:100%;padding:7px;margin-top:6px;border:none;border-radius:var(--r-sm);font-size:10px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .2s var(--ease)}
.lab-move-fwd{background:var(--blue-50);color:var(--navy)}.lab-move-fwd:hover{background:var(--navy);color:#fff}
.lab-move-back{background:var(--surface-2);color:var(--text-3)}.lab-move-back:hover{background:var(--border)}
.lab-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:0 16px 8px}
.lab-summary-item{text-align:center;padding:10px;background:var(--white);border-radius:var(--r-md);border:1px solid var(--border);box-shadow:var(--sh-sm)}
.lab-summary-num{font-size:18px;font-weight:800;letter-spacing:-0.5px}
.lab-summary-lbl{font-size:9px;color:var(--text-3);margin-top:2px;font-weight:500}
.lab-detail{position:absolute;inset:0;background:var(--white);z-index:95;display:flex;flex-direction:column}
.lab-timeline{position:relative;padding-left:20px;margin:12px 0}
.lab-timeline-item{position:relative;padding-bottom:20px;padding-left:16px;border-left:2px solid var(--border)}
.lab-timeline-item.done{border-left-color:var(--emerald)}
.lab-timeline-item.current{border-left-color:var(--navy)}
.lab-timeline-dot{position:absolute;left:-7px;top:2px;width:12px;height:12px;border-radius:var(--r-full);border:2px solid var(--border);background:var(--white)}
.lab-timeline-item.done .lab-timeline-dot{background:var(--emerald);border-color:var(--emerald)}
.lab-timeline-item.current .lab-timeline-dot{background:var(--navy);border-color:var(--navy);box-shadow:0 0 0 4px rgba(8,42,153,0.15)}

/* ===== KI-ASSISTENT ===== */
.ai-fab{position:absolute;bottom:76px;right:72px;width:50px;height:50px;background:linear-gradient(135deg,var(--violet),var(--navy));border-radius:var(--r-full);border:none;color:#fff;font-size:13px;cursor:pointer;box-shadow:0 4px 20px rgba(108,71,255,0.3);z-index:80;display:flex;align-items:center;justify-content:center;font-weight:800;font-family:inherit;letter-spacing:-0.5px;transition:all .2s var(--ease)}
.ai-fab:hover{transform:scale(1.05)}
.ai-panel{position:absolute;inset:0;background:var(--white);z-index:95;display:flex;flex-direction:column}
.ai-header{background:linear-gradient(135deg,var(--violet) 0%,var(--navy) 100%);color:#fff;padding:20px;display:flex;align-items:center;gap:12px}
.ai-header .ai-icon{width:40px;height:40px;background:rgba(255,255,255,0.12);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.1)}
.ai-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.ai-msg{max-width:85%;padding:12px 16px;border-radius:var(--r-lg);font-size:12px;line-height:1.6}
.ai-msg.user{align-self:flex-end;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;border-bottom-right-radius:4px}
.ai-msg.bot{align-self:flex-start;background:var(--surface);color:var(--text);border-bottom-left-radius:4px;border:1px solid var(--border)}
.ai-msg .source{display:inline-block;margin-top:8px;padding:3px 8px;border-radius:var(--r-full);font-size:9px;font-weight:600}
.ai-msg .source{background:var(--violet-bg);color:var(--violet)}
.ai-msg .db-source{background:var(--blue-50);color:var(--navy)}
.ai-input-row{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:var(--white)}
.ai-input{flex:1;padding:12px 16px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:12px;font-family:inherit;outline:none;transition:border .2s}
.ai-input:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(108,71,255,0.1)}
.ai-send{width:42px;height:42px;background:linear-gradient(135deg,var(--violet),var(--navy));border:none;border-radius:var(--r-md);color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s var(--ease)}
.ai-send:hover{transform:scale(1.05)}
.ai-suggestions{display:flex;gap:6px;flex-wrap:wrap;padding:0 16px 10px}
.ai-sug{padding:8px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-full);font-size:10px;color:var(--text-2);cursor:pointer;font-family:inherit;font-weight:600;transition:all .2s var(--ease)}
.ai-sug:hover{background:var(--violet-bg);color:var(--violet);border-color:var(--violet)}
.ai-typing{display:flex;gap:4px;align-items:center;padding:12px 16px}
.ai-typing span{width:6px;height:6px;background:var(--text-4);border-radius:var(--r-full);animation:aiDot 1.4s infinite}
.ai-typing span:nth-child(2){animation-delay:.2s}
.ai-typing span:nth-child(3){animation-delay:.4s}
@keyframes aiDot{0%,80%,100%{opacity:.3}40%{opacity:1}}

/* ===== E-MAIL INBOX ===== */
.msg-tabs{display:flex;background:var(--white);border-bottom:1px solid var(--border);padding:0 8px}
.msg-tab{flex:1;padding:12px;font-size:11px;font-weight:600;border:none;cursor:pointer;background:transparent;color:var(--text-3);font-family:inherit;position:relative;transition:color .2s}
.msg-tab.active{color:var(--navy)}
.msg-tab.active::after{content:'';position:absolute;bottom:0;left:16%;right:16%;height:2.5px;background:linear-gradient(90deg,var(--navy),var(--blue));border-radius:2px}
.msg-tab .msg-badge-count{position:absolute;top:4px;right:20%;background:var(--crimson);color:#fff;font-size:8px;font-weight:700;padding:1px 5px;border-radius:var(--r-full)}
.msg-list{flex:1;overflow-y:auto}
.msg-item{display:flex;gap:10px;padding:12px 20px;border-bottom:1px solid var(--surface-2);cursor:pointer;transition:background .15s;align-items:flex-start}
.msg-item:hover{background:var(--surface)}
.msg-item.unread{background:var(--blue-25)}
.msg-item.unread .em-sender{font-weight:800;color:var(--text)}
.msg-item.unread .em-subject{font-weight:700;color:var(--text)}
.em-avatar{width:34px;height:34px;border-radius:var(--r-full);background:linear-gradient(135deg,var(--navy),var(--blue));display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;flex-shrink:0}
.msg-body{flex:1;min-width:0}
.em-sender{font-size:12px;font-weight:600;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.em-subject{font-size:13px;font-weight:600;color:var(--text);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-preview{font-size:11px;color:var(--text-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.em-date{font-size:10px;color:var(--text-4);font-weight:500;flex-shrink:0;text-align:right;min-width:50px}
.msg-unread-dot{width:8px;height:8px;background:var(--blue);border-radius:var(--r-full);flex-shrink:0;margin-top:13px}
/* Email detail */
.msg-detail{position:absolute;inset:0;background:var(--white);z-index:95;display:flex;flex-direction:column}
.msg-detail-body{flex:1;overflow-y:auto;padding:20px}
.em-detail-hdr{background:var(--surface);border-radius:var(--r-md);padding:14px;margin-bottom:16px;font-size:11px;line-height:1.8;color:var(--text-3)}
.em-detail-hdr strong{color:var(--text);font-weight:700}
.msg-detail-title{font-size:17px;font-weight:700;color:var(--text);margin-bottom:12px;line-height:1.3}
.msg-detail-text{font-size:13px;line-height:1.7;color:var(--text-2)}
.msg-detail-action{margin-top:16px;padding:14px;background:var(--blue-50);border-radius:var(--r-md);cursor:pointer;text-align:center;font-size:13px;font-weight:600;color:var(--navy);transition:all .2s var(--ease)}
.msg-detail-action:hover{background:var(--navy);color:#fff}
.em-reply-bar{padding:12px 20px;border-top:1px solid var(--border);background:var(--surface);display:flex;gap:8px}
.em-reply-btn{flex:1;padding:10px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;background:var(--white);color:var(--text-2);display:flex;align-items:center;justify-content:center;gap:6px;transition:all .15s}
.em-reply-btn:hover{border-color:var(--navy);color:var(--navy)}
/* Email compose */
.msg-compose{position:absolute;bottom:0;left:0;right:0;background:var(--white);border-top-left-radius:var(--r-xl);border-top-right-radius:var(--r-xl);padding:24px 20px;box-shadow:0 -8px 30px rgba(0,0,0,0.12);z-index:96}
.msg-compose select,.msg-compose input,.msg-compose textarea{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:12px;font-family:inherit;margin-bottom:4px;outline:none;transition:border .2s}
.msg-compose select:focus,.msg-compose input:focus,.msg-compose textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(61,102,254,0.1)}
.msg-compose textarea{min-height:100px;resize:none}
.msg-compose-send{width:100%;padding:14px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;border:none;border-radius:var(--r-md);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;box-shadow:var(--sh-blue);display:flex;align-items:center;justify-content:center;gap:8px}
.em-field-label{font-size:10px;font-weight:600;color:var(--text-3);margin-bottom:4px;margin-top:10px;text-transform:uppercase;letter-spacing:0.5px}
.em-field-label:first-child{margin-top:0}
.msg-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;color:var(--text-4)}
.msg-empty .icon{font-size:40px;margin-bottom:12px;opacity:0.5}
.msg-empty .text{font-size:12px;font-weight:600}
.nav-badge{position:relative}
.nav-badge-count{position:absolute;top:-4px;right:-8px;background:var(--crimson);color:#fff;font-size:8px;font-weight:700;padding:1px 5px;border-radius:var(--r-full);min-width:14px;text-align:center}

/* ===== PA TRACKER ===== */
.pa-timeline{margin:8px 0}
.pa-step{display:flex;align-items:flex-start;gap:12px;position:relative}
.pa-step:last-child .pa-line{display:none}
.pa-dot{width:28px;height:28px;border-radius:var(--r-full);display:flex;align-items:center;justify-content:center;font-size:9px;flex-shrink:0;position:relative;z-index:1;font-weight:700}
.pa-dot.done{background:var(--emerald);color:#fff;box-shadow:0 2px 6px rgba(13,146,118,0.3)}
.pa-dot.current{background:var(--navy);color:#fff;box-shadow:0 0 0 5px rgba(8,42,153,0.15)}
.pa-dot.future{background:var(--surface-2);color:var(--text-4);border:1.5px solid var(--border)}
.pa-line{position:absolute;left:13px;top:28px;bottom:-4px;width:2px;background:var(--border)}
.pa-line.done{background:var(--emerald)}
.pa-info{flex:1;padding:4px 0 18px}
.pa-label{font-size:12px;font-weight:600;color:var(--text)}
.pa-date{font-size:10px;color:var(--text-3);margin-top:3px}
.pa-countdown{display:inline-block;font-size:9px;font-weight:700;padding:3px 8px;border-radius:var(--r-full);margin-left:6px}
.pa-countdown.due{background:var(--amber-bg);color:var(--amber)}
.pa-countdown.overdue{background:var(--crimson-bg);color:var(--crimson)}
.pa-countdown.ok{background:var(--emerald-bg);color:var(--emerald)}
.pa-odo-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--r-full);font-size:10px;font-weight:700;cursor:pointer;transition:all .15s var(--ease)}
.pa-odo-badge:hover{transform:scale(1.03)}
.pa-comment-box{margin-top:12px;padding:14px;background:var(--surface);border-radius:var(--r-md);border:1px solid var(--border)}

/* ===== SEARCH ===== */
.search-input{width:100%;padding:12px 16px;border-radius:var(--r-md);border:1.5px solid rgba(255,255,255,0.15);font-size:13px;font-family:inherit;background:rgba(255,255,255,0.1);color:#fff;backdrop-filter:blur(8px);outline:none;transition:all .2s}
.search-input::placeholder{color:rgba(255,255,255,0.5)}
.search-input:focus{background:rgba(255,255,255,0.15);border-color:rgba(255,255,255,0.3)}
.search-input-light{background:var(--surface);color:var(--text);border-color:var(--border)}
.search-input-light::placeholder{color:var(--text-4)}
.search-input-light:focus{border-color:var(--blue);background:var(--white)}

/* ===== PIPELINE KANBAN ===== */
.pipeline-kanban{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;-webkit-overflow-scrolling:touch}
.kanban-col{min-width:100px;flex:1}
.kanban-header{font-size:9px;font-weight:700;color:var(--navy);margin-bottom:8px;text-align:center;text-transform:uppercase;letter-spacing:0.5px}
.kanban-card{background:var(--white);border:1px solid var(--border);padding:8px;border-radius:var(--r-sm);margin-bottom:4px;font-size:9px;font-weight:600;color:var(--text);text-align:center;box-shadow:var(--sh-sm);transition:all .15s var(--ease)}
.kanban-card:hover{box-shadow:var(--sh-md);border-color:var(--blue)}

/* ===== RESPONSIVE DESKTOP ===== */
@media(min-width:900px){
  body{padding:0;background:var(--surface)}
  .phone.desktop-mode{width:100%;height:100vh;border-radius:0;box-shadow:none;max-width:none;margin:0;display:flex;flex-direction:row;overflow:hidden}
  /* Sidebar */
  .dk-sidebar{width:240px;min-width:240px;height:100vh;background:linear-gradient(180deg,var(--navy) 0%,#061F6E 100%);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}
  .dk-sidebar-logo{padding:24px 20px 16px;display:flex;align-items:center;gap:12px}
  .dk-sidebar-logo svg{width:32px;height:32px;color:#fff}
  .dk-sidebar-logo-text{font-size:16px;font-weight:800;color:#fff;letter-spacing:-0.3px}
  .dk-sidebar-logo-sub{font-size:10px;color:rgba(255,255,255,0.5);margin-top:2px}
  .dk-sidebar-nav{flex:1;padding:12px 10px;overflow-y:auto}
  .dk-nav-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--r-md);font-size:13px;font-weight:600;color:rgba(255,255,255,0.65);cursor:pointer;transition:all .15s;border:none;background:none;width:100%;text-align:left;font-family:inherit}
  .dk-nav-item:hover{background:rgba(255,255,255,0.08);color:rgba(255,255,255,0.9)}
  .dk-nav-item.active{background:rgba(255,255,255,0.12);color:#fff}
  .dk-nav-item svg{width:18px;height:18px;flex-shrink:0}
  .dk-nav-divider{height:1px;background:rgba(255,255,255,0.08);margin:10px 14px}
  .dk-sidebar-user{padding:16px 20px;border-top:1px solid rgba(255,255,255,0.08);display:flex;align-items:center;gap:10px}
  .dk-sidebar-user-avatar{width:34px;height:34px;border-radius:var(--r-full);background:rgba(255,255,255,0.12);display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;flex-shrink:0}
  .dk-sidebar-user-info{flex:1;min-width:0}
  .dk-sidebar-user-name{font-size:12px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dk-sidebar-user-role{font-size:10px;color:rgba(255,255,255,0.5);margin-top:1px}
  /* Main area */
  .dk-main{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--surface)}
  .dk-topbar{padding:18px 32px;background:var(--white);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
  .dk-topbar h1{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-0.3px}
  .dk-topbar-sub{font-size:12px;color:var(--text-3);margin-top:2px}
  .dk-body{flex:1;overflow-y:auto;padding:24px 32px;min-height:0}
  /* Desktop stat cards — 4 across */
  .dk-body .mgr-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
  .dk-body .mgr-stat{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;box-shadow:var(--sh-card)}
  .dk-body .mgr-section{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;box-shadow:var(--sh-card);margin-bottom:20px}
  .dk-body .mgr-section-title{font-size:14px;margin-bottom:16px}
  .dk-body .card{box-shadow:none;border:1px solid var(--border)}
  /* Desktop tabs — inline pills */
  .dk-tabs{display:flex;gap:6px;padding:0 32px 0;background:var(--white);border-bottom:1px solid var(--border);flex-shrink:0}
  .dk-tabs button{padding:10px 18px;font-size:12px;font-weight:600;border:none;cursor:pointer;background:transparent;color:var(--text-3);font-family:inherit;position:relative;transition:color .2s}
  .dk-tabs button.active{color:var(--navy)}
  .dk-tabs button.active::after{content:'';position:absolute;bottom:0;left:12px;right:12px;height:2.5px;background:linear-gradient(90deg,var(--navy),var(--blue));border-radius:2px}
  /* Verwaltung desktop: content panel (sub-nav is now in the sidebar) */
  .dk-verw-content{flex:1;overflow-y:auto;min-height:0}
  /* Override mobile admin styles inside desktop Verwaltung */
  .dk-verw-content .header{display:none}
  .dk-verw-content .bottom-nav{display:none}
  .dk-verw-content .content{padding:20px 28px}
  .dk-verw-content .fab{bottom:24px;right:24px;position:absolute}
  .dk-verw-content .sec-label{margin:0 -28px 12px}
  .dk-verw-content .filter-bar{margin:0 -28px 12px}
  .dk-verw-content .tab-bar{border-bottom:1px solid var(--border)}
  .dk-verw-content .lab-summary{border-bottom:1px solid var(--border)}
  .dk-verw-content .einv-tabs{border-bottom:1px solid var(--border)}
  .dk-verw-content .card{box-shadow:none;border:1px solid var(--border)}
  /* Desktop login — full viewport, centered card */
  .phone.desktop-login{width:100%;height:100vh;border-radius:0;box-shadow:none;max-width:none;margin:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(155deg,#061F6E 0%,var(--navy) 35%,var(--navy-light) 65%,var(--blue) 100%);position:relative;overflow:hidden}
  .phone.desktop-login::before{content:'';position:absolute;top:-10%;right:-10%;width:600px;height:600px;background:radial-gradient(circle,rgba(61,102,254,0.12) 0%,transparent 60%);border-radius:50%}
  .phone.desktop-login::after{content:'';position:absolute;bottom:-15%;left:-10%;width:500px;height:500px;background:radial-gradient(circle,rgba(108,71,255,0.08) 0%,transparent 60%);border-radius:50%}
  .dk-login-card{background:var(--white);border-radius:20px;box-shadow:0 24px 80px rgba(0,0,0,0.25);width:420px;max-width:90%;padding:40px;position:relative;z-index:1}
  .dk-login-header{text-align:center;margin-bottom:32px}
  .dk-login-header .login-logo{margin:0 auto 16px;width:72px;height:72px;background:rgba(8,42,153,0.08);border:1px solid var(--border)}
  .dk-login-header .login-logo svg{color:var(--navy)}
  .dk-login-header .login-title{font-size:24px;font-weight:800;color:var(--navy);letter-spacing:-0.5px}
  .dk-login-header .login-subtitle{font-size:12px;color:var(--text-3);margin-top:4px}
  .dk-login-card label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:6px;margin-top:18px;text-transform:uppercase;letter-spacing:0.5px}
  .dk-login-card label:first-of-type{margin-top:0}
  .dk-login-card input{width:100%;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:14px;font-family:inherit;outline:none;background:var(--surface);transition:all .2s var(--ease);box-sizing:border-box}
  .dk-login-card input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(61,102,254,0.1);background:var(--white)}
  .dk-login-card .login-btn{margin-top:24px}
  .dk-login-card .login-error{background:var(--crimson-bg);color:var(--crimson);padding:12px;border-radius:var(--r-md);font-size:12px;font-weight:600;margin-top:12px;text-align:center;display:none;border:1px solid rgba(201,49,61,0.15)}
  .dk-login-card .login-forgot{text-align:center;margin-top:14px;font-size:12px;color:var(--blue);cursor:pointer;font-weight:500}
  .dk-login-version{position:absolute;bottom:20px;left:0;right:0;text-align:center;font-size:11px;color:rgba(255,255,255,0.35);z-index:1}
}

/* ===== SCROLLBAR ===== */
.content::-webkit-scrollbar,.ai-messages::-webkit-scrollbar,.msg-list::-webkit-scrollbar{width:3px}
.content::-webkit-scrollbar-track,.ai-messages::-webkit-scrollbar-track,.msg-list::-webkit-scrollbar-track{background:transparent}
.content::-webkit-scrollbar-thumb,.ai-messages::-webkit-scrollbar-thumb,.msg-list::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:4px}

/* ===== LAB FILTERS & CREATE FORM ===== */
.lab-filters{display:flex;gap:6px;padding:10px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--white);border-bottom:1px solid var(--border)}
.lab-filter{padding:7px 14px;border-radius:var(--r-full);font-size:10px;font-weight:600;border:1.5px solid var(--border);cursor:pointer;font-family:inherit;background:var(--white);color:var(--text-3);white-space:nowrap;transition:all .2s var(--ease)}
.lab-filter.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.lab-filter:hover:not(.active){border-color:var(--navy);color:var(--navy)}
.lab-search-row{padding:8px 16px;background:var(--white);border-bottom:1px solid var(--border)}
.lab-search-row input{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:12px;font-family:inherit;outline:none;transition:border .2s}
.lab-search-row input:focus{border-color:var(--blue)}
.lab-create-overlay{position:absolute;inset:0;background:var(--white);z-index:95;display:flex;flex-direction:column;overflow-y:auto}
.lab-form{padding:20px;display:flex;flex-direction:column;gap:16px;flex:1;overflow-y:auto}
.lab-form-group{display:flex;flex-direction:column;gap:5px}
.lab-form-label{font-size:10px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:0.5px}
.lab-form-label .req{color:var(--crimson);margin-left:2px}
.lab-form-select,.lab-form-input{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:13px;font-family:inherit;outline:none;transition:border .2s;background:var(--white);color:var(--text);-webkit-appearance:none;appearance:none}
.lab-form-select:focus,.lab-form-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(61,102,254,0.1)}
.lab-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.lab-form-pills{display:flex;gap:6px;flex-wrap:wrap}
.lab-form-pill{padding:8px 16px;border-radius:var(--r-full);font-size:12px;font-weight:600;border:1.5px solid var(--border);cursor:pointer;font-family:inherit;background:var(--white);color:var(--text-2);transition:all .15s var(--ease)}
.lab-form-pill.selected{background:var(--navy);color:#fff;border-color:var(--navy)}
.lab-form-pill:hover:not(.selected){border-color:var(--navy);color:var(--navy)}
.lab-form-teeth{display:flex;gap:4px;flex-wrap:wrap}
.lab-form-tooth{width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;border:1.5px solid var(--border);cursor:pointer;font-family:inherit;background:var(--white);color:var(--text-2);transition:all .15s var(--ease)}
.lab-form-tooth.selected{background:var(--navy);color:#fff;border-color:var(--navy)}
.lab-form-tooth:hover:not(.selected){border-color:var(--blue);color:var(--navy)}
.lab-form-submit{width:100%;padding:14px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;border:none;border-radius:var(--r-md);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;box-shadow:var(--sh-blue);transition:all .2s var(--ease)}
.lab-form-submit:hover{transform:translateY(-1px);box-shadow:0 6px 24px rgba(8,42,153,0.35)}
.lab-form-cancel{width:100%;padding:12px;background:var(--surface-2);color:var(--text-3);border:none;border-radius:var(--r-md);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.vita-dot{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--r-full);font-size:9px;font-weight:700;background:var(--amber-bg);color:var(--amber);border:1px solid rgba(217,119,6,0.2)}
.lab-patient-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--r-full);font-size:9px;font-weight:600;background:var(--violet-bg);color:var(--violet);border:1px solid rgba(108,71,255,0.15)}
.lab-card-stage{display:inline-flex;padding:2px 8px;border-radius:var(--r-full);font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:0.3px}

/* ===== ACCESSIBILITY & TOUCH ===== */
button,a,.card,.tab,.msg-tab,.nav-btn,.tooth,.lab-card,.msg-item,.ai-sug,.login-forgot,.kanban-card{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button:focus-visible,.tab:focus-visible,.card:focus-visible,.nav-btn:focus-visible,.tooth:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,.ai-sug:focus-visible{outline:3px solid var(--blue);outline-offset:2px;border-radius:var(--r-sm)}
.login-forgot:focus-visible,.msg-item:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important}}

/* ===== PA §22a COMPLIANCE ===== */
.pa-step-card{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;transition:all .2s var(--ease);margin-bottom:6px}
.pa-step-card:hover{box-shadow:var(--sh-md);border-color:var(--blue)}
.pa-step-card.s-done{border-left:3px solid var(--emerald)}
.pa-step-card.s-current{border-left:3px solid var(--navy);background:var(--blue-25);box-shadow:var(--sh-card)}
.pa-step-card.s-future{opacity:0.5;cursor:default}
.pa-step-card.s-future:hover{box-shadow:none;border-color:var(--border)}
.pa-grid-wrap{overflow-x:auto;margin:10px 0;-webkit-overflow-scrolling:touch}
.pa-grid{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden;font-variant-numeric:tabular-nums}
.pa-gc{background:var(--white);padding:3px 1px;font-size:9px;font-weight:600;text-align:center;line-height:1.3}
.pa-gc.hdr{background:var(--surface);font-size:7px;font-weight:700;color:var(--text-3);padding:4px 2px}
.pa-gc.lbl{background:var(--surface);font-size:8px;font-weight:600;color:var(--text-2);text-align:left;padding:3px 5px}
.pa-gc.dp{color:var(--crimson);font-weight:700}
.pa-gc.md{color:var(--amber)}
.pa-gc.bop-y{background:var(--crimson);color:#fff;font-size:7px;font-weight:700;border-radius:2px}
.pa-gc.ext{color:var(--text-4);font-size:7px}
.pa-entry-overlay{position:absolute;inset:0;background:var(--white);z-index:96;display:flex;flex-direction:column}
.pa-numpad{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:0 24px}
.pa-numpad button{height:52px;border-radius:var(--r-md);border:1.5px solid var(--border);background:var(--white);font-size:20px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .12s var(--ease);color:var(--text);touch-action:manipulation}
.pa-numpad button:active,.pa-numpad button:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.pa-stoer-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:6px}
.pa-ait-card{background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px;margin-bottom:8px}

/* ===== PA PIANO LAYOUT (unified) ===== */
.pa-piano-section{margin-bottom:10px}
.pa-piano-label{font-size:11px;font-weight:700;color:var(--text);margin-bottom:6px}
.pa-piano-jaw-label{font-size:8px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:2px;margin-top:6px}
.pa-piano-jaw-label:first-child{margin-top:0}
.pa-piano-row{display:flex;gap:1px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:2px 0}
.pa-piano-sep{width:2px;background:linear-gradient(180deg,transparent,var(--border-2),transparent);margin:0 3px;flex-shrink:0;align-self:stretch}
/* Unified cell: tooth num + M/D + BOP dot + Lok grade */
.pa-piano-cell{display:flex;flex-direction:column;align-items:center;min-width:20px;flex:1;cursor:pointer;transition:all .12s var(--ease);gap:1px}
.pa-piano-cell .pa-tn{font-size:7px;font-weight:700;color:var(--text-3);line-height:1}
.pa-piano-cell .pa-vals{display:flex;flex-direction:column;align-items:center;width:100%;border-radius:4px;padding:2px 1px;background:var(--surface);border:1.5px solid var(--border);transition:all .12s}
.pa-piano-cell .pa-vals.active{border-color:var(--navy);background:var(--blue-25);box-shadow:0 0 0 2px rgba(8,42,153,0.15)}
.pa-piano-cell .pa-vm,.pa-piano-cell .pa-vd{font-size:9px;font-weight:700;line-height:1.2;text-align:center;min-width:12px}
.pa-piano-cell .pa-vm.editing,.pa-piano-cell .pa-vd.editing{color:var(--navy);text-decoration:underline}
.pa-piano-cell .pa-vsep{font-size:4px;color:var(--text-4);line-height:1}
.pa-piano-cell .pa-bop-dot{width:6px;height:6px;border-radius:var(--r-full);border:1px solid var(--border);background:var(--white);transition:all .12s;margin:1px 0}
.pa-piano-cell .pa-bop-dot.active{background:var(--crimson);border-color:var(--crimson)}
.pa-piano-cell .pa-lok-val{font-size:7px;font-weight:700;color:var(--text-4);line-height:1}
.pa-piano-cell .pa-lok-val.lok-1{color:var(--amber)}
.pa-piano-cell .pa-lok-val.lok-2{color:var(--crimson)}
.pa-piano-cell .pa-lok-val.lok-3{color:#fff;background:var(--crimson);border-radius:2px;padding:0 2px}
.pa-piano-cell.absent{opacity:0.15;pointer-events:none}
.pa-v-ok{color:var(--emerald)}
.pa-v-warn{color:var(--amber)}
.pa-v-crit{color:var(--crimson);font-weight:800}
/* Inline numpad */
.pa-inline-numpad{background:var(--surface);border:1px solid var(--border);padding:10px 12px;border-radius:var(--r-md);margin-top:10px}
.pa-np-label{font-size:12px;font-weight:700;color:var(--navy);text-align:center;margin-bottom:8px}
.pa-np-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.pa-np-grid button{height:42px;border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--white);font-size:18px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .12s var(--ease);color:var(--text);touch-action:manipulation}
.pa-np-grid button:active,.pa-np-grid button:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
/* Risk factor bar */
.pa-risk-bar{display:flex;gap:5px;flex-wrap:wrap;align-items:center;padding:8px 0;margin-bottom:8px}
.pa-risk-badge{padding:3px 8px;border-radius:var(--r-full);font-size:9px;font-weight:700;letter-spacing:0.2px;border:1px solid var(--border);color:var(--text-4);background:var(--white);transition:all .12s}
.pa-risk-badge.active{background:var(--crimson-bg);color:var(--crimson);border-color:rgba(201,49,61,0.2)}
.pa-risk-edit-btn{width:24px;height:24px;border-radius:var(--r-full);border:1px solid var(--border);background:var(--white);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .12s;margin-left:auto;flex-shrink:0}
.pa-risk-edit-btn:hover{background:var(--blue-25);border-color:var(--blue)}

/* ===== ODONTOGRAM EDITOR ===== */
.odo-compact{display:grid;grid-template-columns:repeat(8,1fr) 4px repeat(8,1fr);gap:2px;margin:6px 0}
.odo-compact .ot{width:100%;aspect-ratio:1;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:7px;font-weight:700;color:#fff;cursor:pointer;transition:all .12s;position:relative;min-height:0;padding:1px}
.odo-compact .ot .tn{font-size:6px;font-weight:600;opacity:.85;line-height:1}
.odo-compact .ot .ts{font-size:8px;font-weight:800;line-height:1.1}
.odo-compact .odo-mid{background:none;grid-row:span 1}
.odo-qtabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:10px}
.odo-qtabs button{flex:1;padding:10px 0;font-size:13px;font-weight:700;border:none;background:none;color:var(--text-3);cursor:pointer;font-family:inherit;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}
.odo-qtabs button.active{color:var(--navy);border-bottom-color:var(--navy)}
.odo-teeth-row{display:flex;gap:4px;justify-content:center;margin:8px 0}
.odo-teeth-row .ot-big{width:38px;height:38px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;cursor:pointer;border:2px solid transparent;transition:all .12s}
.odo-teeth-row .ot-big.sel{border-color:var(--navy);box-shadow:0 0 0 3px rgba(8,42,153,0.25)}
.odo-status-row{display:flex;gap:4px;justify-content:center;margin:4px 0}
.odo-status-row .st-cell{width:38px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;background:var(--surface);border:1px solid var(--border);color:var(--text-2)}
.odo-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:0 16px;margin-top:12px}
.odo-keys button{height:56px;border-radius:var(--r-md);border:1.5px solid var(--border);background:var(--white);font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:all .12s}
.odo-keys button .k-main{font-size:18px;font-weight:800;color:var(--text)}
.odo-keys button .k-sub{font-size:8px;color:var(--text-3);font-weight:600}
.odo-keys button:active,.odo-keys button:hover{background:var(--navy);border-color:var(--navy)}
.odo-keys button:active .k-main,.odo-keys button:hover .k-main{color:#fff}
.odo-keys button:active .k-sub,.odo-keys button:hover .k-sub{color:rgba(255,255,255,.7)}

/* ===== DASHBOARD TASKS ===== */
.task-toggle{display:flex;gap:0;background:var(--surface);border-radius:var(--r-full);padding:3px;margin:12px 0 8px}
.task-toggle button{flex:1;padding:8px 12px;border:none;border-radius:var(--r-full);font-size:11px;font-weight:600;background:none;color:var(--text-3);cursor:pointer;font-family:inherit;transition:all .15s}
.task-toggle button.active{background:var(--white);color:var(--navy);box-shadow:var(--sh-sm)}
.task-card{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:6px;cursor:pointer;transition:all .15s}
.task-card:hover{box-shadow:var(--sh-md);border-color:var(--blue)}
.task-card.done{opacity:.55;border-left:3px solid var(--emerald)}
.task-check{width:22px;height:22px;border-radius:var(--r-full);border:2px solid var(--border-2);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .12s;cursor:pointer}
.task-check.checked{background:var(--emerald);border-color:var(--emerald);color:#fff}

/* ===== 174a FORM WIZARD ===== */
.f174-overlay{position:absolute;inset:0;background:var(--white);z-index:96;display:flex;flex-direction:column}
.f174-progress{height:3px;background:var(--surface-2);border-radius:2px;margin:0 20px 16px;overflow:hidden}
.f174-progress-bar{height:100%;background:linear-gradient(90deg,var(--navy),var(--blue));border-radius:2px;transition:width .3s var(--ease)}
.f174-q{font-size:14px;font-weight:700;color:var(--navy);line-height:1.4;margin-bottom:12px}
.f174-q .req{color:var(--crimson);font-weight:800}
.f174-opt{display:flex;align-items:center;gap:10px;padding:14px;background:var(--white);border:1.5px solid var(--border);border-radius:var(--r-md);margin-bottom:8px;cursor:pointer;transition:all .12s;font-size:13px;font-weight:500;color:var(--text)}
.f174-opt:hover{border-color:var(--blue)}
.f174-opt.sel{border-color:var(--navy);background:var(--blue-25)}
.f174-opt .radio{width:20px;height:20px;border-radius:var(--r-full);border:2px solid var(--border-2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.f174-opt.sel .radio{border-color:var(--navy);background:var(--navy)}
.f174-opt.sel .radio::after{content:"";width:8px;height:8px;border-radius:var(--r-full);background:#fff}
.f174-check{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:6px;cursor:pointer;font-size:12px;color:var(--text)}
.f174-check .cb{width:18px;height:18px;border-radius:4px;border:2px solid var(--border-2);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .12s}
.f174-check.sel .cb{background:var(--navy);border-color:var(--navy)}
.f174-check.sel .cb::after{content:"\2713";color:#fff;font-size:11px;font-weight:700}
.f174-nav{display:flex;gap:10px;padding:16px 20px;border-top:1px solid var(--border);background:var(--white)}
.f174-nav button{flex:1;padding:14px;border-radius:var(--r-md);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;border:none;transition:all .12s}
.f174-nav .back{background:var(--surface);color:var(--text-2)}
.f174-nav .next{background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;box-shadow:var(--sh-blue)}
.f174-nav .next:disabled{opacity:.4;cursor:default}
.f174-form-row{display:flex;align-items:center;justify-content:space-between;padding:14px;background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:8px}
.f174-form-row .date{font-size:13px;font-weight:600;color:var(--text)}
.f174-form-row .actions{display:flex;gap:8px}
.f174-form-row .act-btn{width:34px;height:34px;border-radius:var(--r-full);border:1.5px solid var(--border);background:var(--white);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--blue);transition:all .12s}
.f174-form-row .act-btn:hover{background:var(--blue-25);border-color:var(--blue)}

/* ===== v6: FURKATION ROW ===== */
.pa-furk-row{display:flex;gap:4px;justify-content:center;padding:2px 0}
.pa-furk-cell{display:flex;flex-direction:column;align-items:center;min-width:28px;cursor:pointer}
.pa-furk-cell .pa-tn{font-size:7px;font-weight:700;color:var(--text-3)}
.pa-furk-val{font-size:8px;font-weight:700;width:22px;height:16px;border-radius:3px;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);color:var(--text-4)}
.pa-furk-val.fk-1{background:var(--amber-bg);color:var(--amber)}
.pa-furk-val.fk-2{background:var(--crimson-bg);color:var(--crimson)}
.pa-furk-val.fk-3{background:var(--crimson);color:#fff}

/* ===== v6: OFFLINE MODE ===== */
.sync-bar.offline{background:var(--amber-bg);border-top-color:rgba(217,119,6,0.2);color:var(--amber)}

/* ===== v6: TOOTH PLANNED OVERLAY ===== */
.tooth-planned{background:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(255,255,255,0.3) 2px,rgba(255,255,255,0.3) 4px)}

/* ===== v6: NOTIFICATION TOAST ===== */
.notif-toast{position:absolute;top:0;left:0;right:0;padding:12px 20px;z-index:120;font-size:12px;font-weight:600;color:#fff;display:flex;align-items:center;gap:8px;animation:toastSlide .3s ease}
@keyframes toastSlide{from{transform:translateY(-100%)}to{transform:translateY(0)}}

/* ===== ADMIN PORTAL v3 CSS ===== */
/* MENU */
.menu-btn{background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.18);color:#fff;width:36px;height:36px;border-radius:var(--r-sm);font-size:18px;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1}
.menu-backdrop{position:absolute;inset:0;z-index:300;background:rgba(0,0,0,0.35);border-radius:28px}
.menu-dropdown{position:absolute;top:60px;right:14px;z-index:301;background:#fff;border-radius:var(--r-lg);box-shadow:0 8px 32px rgba(0,0,0,0.22);min-width:188px;overflow:hidden}
.menu-item{display:flex;align-items:center;gap:10px;padding:13px 18px;font-size:13px;font-weight:600;color:var(--text);cursor:pointer;border:none;background:none;width:100%;text-align:left;font-family:inherit;transition:background .15s}
.menu-item:hover{background:var(--surface-2)}
.menu-item.menu-divider{border-top:1px solid var(--border);color:var(--crimson)}
.menu-item.menu-divider:hover{background:#fff5f5}
/* ADMIN TABS */
.tab-bar{display:flex;background:var(--white);border-bottom:1px solid var(--border);flex-shrink:0}
.tab-btn{flex:1;padding:12px 8px;font-size:12px;font-weight:600;border:none;cursor:pointer;background:transparent;color:var(--text-3);font-family:inherit;position:relative;transition:color .2s var(--ease);text-transform:uppercase;letter-spacing:0.5px}
.tab-btn.active{color:var(--navy)}
.tab-btn.active::after{content:'';position:absolute;bottom:0;left:16%;right:16%;height:2.5px;background:linear-gradient(90deg,var(--navy),var(--blue));border-radius:2px}
/* FILTER BAR */
.filter-bar{padding:10px 16px;background:var(--white);border-bottom:1px solid var(--border);display:flex;gap:8px;flex-shrink:0}
.filter-btn{flex:1;padding:9px 12px;border-radius:var(--r-md);font-size:13px;font-weight:700;font-family:inherit;border:1.5px solid var(--border);background:var(--surface);color:var(--text-3);cursor:pointer;transition:all .2s var(--ease);display:flex;align-items:center;justify-content:center;gap:6px}
.filter-btn.f-offen{background:var(--amber-bg);color:var(--amber);border-color:var(--amber)}
.filter-btn.f-erledigt{background:var(--emerald-bg);color:var(--emerald);border-color:var(--emerald)}
.filter-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.dot-o{background:var(--amber)}.dot-e{background:var(--emerald)}
.f-count{font-size:10px;padding:1px 7px;border-radius:var(--r-full);font-weight:700}
.fc-o{background:var(--amber);color:#fff}.fc-e{background:var(--emerald);color:#fff}.fc-n{background:var(--surface-2);color:var(--text-4)}
/* WEEK LABEL */
.week-label{padding:10px 20px;font-size:12px;font-weight:700;color:var(--navy);background:var(--blue-25);border-bottom:1px solid var(--blue-50);letter-spacing:0.3px;flex-shrink:0}
/* ACCORDION */
.bh-section{border-bottom:1px solid var(--border)}
.bh-header{padding:14px 20px;display:flex;align-items:center;gap:10px;cursor:pointer;background:var(--white);transition:background .15s var(--ease);user-select:none;-webkit-user-select:none}
.bh-header:active{background:var(--surface)}
.bh-avatar{width:36px;height:36px;border-radius:var(--r-full);background:linear-gradient(135deg,var(--navy),var(--blue));display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700;flex-shrink:0}
.bh-name{font-size:14px;font-weight:700;color:var(--text)}
.bh-badge{font-size:11px;font-weight:600;padding:3px 10px;border-radius:var(--r-full)}
.bh-badge.bc-o{background:var(--amber-bg);color:var(--amber)}
.bh-badge.bc-e{background:var(--emerald-bg);color:var(--emerald)}
.bh-badge.bc-n{background:var(--surface-2);color:var(--text-4)}
.bh-badge.bc-all{background:var(--blue-50);color:var(--navy)}
.bh-body{overflow:hidden;transition:max-height .3s var(--ease);max-height:0}
.bh-body.open{max-height:2000px}
/* ADMIN TASK CARDS */
.task-list{padding:10px 16px 6px}
.task-card.tc-o{border-left:3px solid var(--amber)}
.task-card.tc-e{border-left:3px solid var(--emerald)}
.task-card.tc-a{border-left:3px solid var(--navy)}
.task-name{font-size:14px;font-weight:700;color:var(--text)}
.task-date{font-size:11px;color:var(--text-4);margin-top:2px;font-weight:500}
.task-row{display:flex;align-items:center;gap:6px;margin-top:7px;flex-wrap:wrap}
.task-heim{font-size:11px;color:var(--text-3);display:flex;align-items:center;gap:3px}
.tbadge{font-size:11px;font-weight:600;padding:3px 10px;border-radius:var(--r-full);display:inline-flex;align-items:center;gap:3px}
.tb-beh{background:var(--blue-50);color:var(--navy)}
.tb-o{background:var(--amber-bg);color:var(--amber)}
.tb-e{background:var(--emerald-bg);color:var(--emerald)}
.task-empty{padding:18px 16px;text-align:center;color:var(--text-4);font-size:12px;font-weight:500;font-style:italic}
/* FAB */
.fab{position:fixed;bottom:80px;right:calc(50% - 196px + 16px);width:52px;height:52px;background:linear-gradient(135deg,var(--navy),var(--blue));border-radius:var(--r-full);border:none;color:#fff;font-size:26px;font-weight:300;cursor:pointer;box-shadow:var(--sh-blue);z-index:90;display:flex;align-items:center;justify-content:center;transition:all .2s var(--ease);font-family:inherit;line-height:1}
.fab:hover{transform:scale(1.05);box-shadow:0 6px 24px rgba(8,42,153,0.35)}
/* OVERLAY */
.overlay-bg{position:fixed;inset:0;background:rgba(15,23,42,0.5);z-index:100;display:flex;align-items:flex-end;justify-content:center;backdrop-filter:blur(4px)}
.overlay-sheet{background:var(--white);border-top-left-radius:24px;border-top-right-radius:24px;width:393px;max-height:90vh;overflow-y:auto;padding:24px 20px 36px;box-shadow:0 -8px 40px rgba(0,0,0,0.2)}
.overlay-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.overlay-title{font-size:17px;font-weight:700;color:var(--text)}
.overlay-close{background:var(--surface-2);border:none;border-radius:var(--r-full);width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;color:var(--text-3);transition:all .2s var(--ease)}
.overlay-close:hover{background:var(--border);color:var(--text)}
/* FORM */
.form-label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:6px;margin-top:16px;text-transform:uppercase;letter-spacing:0.5px}
.form-label:first-of-type{margin-top:0}
.form-input{width:100%;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:14px;font-family:inherit;transition:all .2s var(--ease);outline:none;background:var(--surface);color:var(--text)}
.form-input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(61,102,254,0.1);background:var(--white)}
.form-select{width:100%;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:14px;font-family:inherit;outline:none;background:var(--surface);color:var(--text);appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236E6E73' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;cursor:pointer}
.form-select:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(61,102,254,0.1)}
.pat-toggle{display:flex;gap:6px;margin-bottom:4px}
.pat-pill{flex:1;padding:10px;border-radius:var(--r-md);font-size:13px;font-weight:600;font-family:inherit;border:1.5px solid var(--border);background:var(--surface);color:var(--text-3);cursor:pointer;transition:all .15s var(--ease);text-align:center}
.pat-pill.active{background:var(--blue-50);color:var(--navy);border-color:var(--blue)}
.save-btn{width:100%;padding:15px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;border:none;border-radius:var(--r-md);font-size:15px;font-weight:700;cursor:pointer;margin-top:24px;font-family:inherit;box-shadow:var(--sh-blue);transition:all .25s var(--ease)}
.save-btn:hover{transform:translateY(-1px)}
.form-err{background:var(--crimson-bg);color:var(--crimson);padding:10px 14px;border-radius:var(--r-md);font-size:12px;font-weight:600;margin-top:10px;display:none;border:1px solid rgba(201,49,61,0.12)}
/* SEC / DAY LABELS */
.sec-label{padding:12px 20px 8px;font-size:11px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:0.8px;background:var(--surface-2);border-bottom:1px solid var(--border)}
.day-label{padding:8px 16px 4px;font-size:10px;font-weight:700;color:var(--navy);text-transform:uppercase;letter-spacing:0.6px;border-top:1px solid var(--border);margin-top:4px;display:flex;align-items:center;gap:6px}
.day-label:first-child{border-top:none;margin-top:0}
/* MEIN TABS */
.mein-tabs{display:flex;gap:6px;padding:10px 16px;background:var(--white);border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto}
.mein-tab{padding:7px 14px;border-radius:var(--r-full);font-size:12px;font-weight:600;font-family:inherit;border:1.5px solid var(--border);background:var(--surface);color:var(--text-3);cursor:pointer;transition:all .15s var(--ease);white-space:nowrap}
.mein-tab.mt-active{background:var(--navy);color:#fff;border-color:var(--navy)}
/* MINI CARDS */
.mini-card{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;margin-bottom:8px;box-shadow:var(--sh-card);display:flex;align-items:center;gap:10px}
.mini-card-body{flex:1;min-width:0}
.mini-name{font-size:13px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-sub{font-size:11px;color:var(--text-3);margin-top:3px;display:flex;align-items:center;gap:3px}
.mini-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:var(--r-full)}
.mb-ze{background:var(--violet-bg);color:var(--violet)}
.mb-late{background:var(--crimson-bg);color:var(--crimson)}
/* PA DOTS */
.pa-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}
.pa-dot.green{background:var(--emerald)}.pa-dot.amber{background:var(--amber)}.pa-dot.red{background:var(--crimson)}
.pa-due{font-size:10px;font-weight:600;margin-top:4px}
.pa-due.green{color:var(--emerald)}.pa-due.amber{color:var(--amber)}.pa-due.red{color:var(--crimson)}
.mein-content{padding:10px 16px 4px}
.mein-empty{padding:20px 16px;text-align:center;color:var(--text-4);font-size:12px;font-style:italic}
/* ALERTS */
.weit-lab-alert{border:2px solid var(--amber)!important;box-shadow:0 0 0 3px rgba(217,119,6,0.12),var(--sh-card)!important}
.ze-haertefall{border:2px solid var(--crimson)!important;box-shadow:0 0 0 3px rgba(201,49,61,0.1),var(--sh-card)!important}
.weit-lab-banner{display:flex;align-items:center;gap:6px;padding:7px 10px;background:var(--amber-bg);border-radius:var(--r-sm);font-size:11px;font-weight:700;color:var(--amber);border-bottom:1px solid rgba(217,119,6,0.15);margin:-2px -2px 6px -2px;border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg)}
/* REASSIGN */
.reassign-btn{background:var(--blue-50);color:var(--navy);border:none;border-radius:var(--r-sm);padding:5px 10px;font-size:11px;font-weight:700;font-family:inherit;cursor:pointer;transition:all .15s var(--ease);white-space:nowrap}
.reassign-btn:hover{background:var(--navy);color:#fff}
/* WEITERFUEHREND */
.weit-steps{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:6px 2px 2px}
.weit-step{font-size:10px;font-weight:600;padding:3px 8px;border-radius:var(--r-full);display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.ws-done{background:var(--emerald-bg);color:var(--emerald)}
.ws-current{background:var(--navy);color:#fff}
.ws-future{background:var(--surface-2);color:var(--text-4)}
.ws-dot{width:6px;height:6px;border-radius:50%;background:#fff;flex-shrink:0}
.ws-arrow{color:var(--text-4);font-size:12px;line-height:1;padding:0 1px}
/* ROUTE */
.route-box{margin:10px 16px 4px;background:var(--blue-25);border:1px solid var(--blue-50);border-radius:var(--r-lg);padding:12px 14px}
.route-header{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--navy);margin-bottom:10px}
.route-total{margin-left:auto;font-size:10px;font-weight:600;background:var(--navy);color:#fff;padding:2px 8px;border-radius:var(--r-full)}
.route-stops{display:flex;flex-direction:column}
.route-stop{display:flex;gap:10px;min-height:36px}
.route-stop-left{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:12px}
.route-dot{width:10px;height:10px;border-radius:50%;background:var(--navy);border:2px solid var(--white);box-shadow:0 0 0 2px var(--navy);flex-shrink:0;margin-top:2px}
.route-line{flex:1;width:2px;background:var(--blue-50);margin:3px 0}
.route-stop-body{padding-bottom:10px;flex:1}
.route-stop-name{font-size:12px;font-weight:700;color:var(--navy)}
.route-stop-addr{font-size:10px;color:var(--text-3);margin-top:1px}
.route-stop-time{font-size:10px;color:var(--text-3);margin-top:4px;display:flex;align-items:center;gap:3px;font-weight:500}
/* EINVERSTÄNDNIS */
.einv-tabs{display:flex;background:var(--white);border-bottom:1px solid var(--border);flex-shrink:0}
.einv-tab{flex:1;padding:11px 8px;font-size:11px;font-weight:600;border:none;cursor:pointer;background:transparent;color:var(--text-3);font-family:inherit;position:relative;transition:color .2s var(--ease);letter-spacing:0.3px}
.einv-tab.active{color:var(--navy)}
.einv-tab.active::after{content:'';position:absolute;bottom:0;left:12%;right:12%;height:2.5px;background:linear-gradient(90deg,var(--navy),var(--blue));border-radius:2px}
.einv-badge{position:absolute;top:5px;right:18%;background:var(--crimson);color:#fff;font-size:8px;font-weight:700;padding:1px 5px;border-radius:var(--r-full);min-width:14px;text-align:center}
.einv-card{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px;margin-bottom:8px;box-shadow:var(--sh-card)}
.einv-card-name{font-size:14px;font-weight:700;color:var(--text)}
.einv-card-sub{font-size:11px;color:var(--text-3);margin-top:3px;display:flex;align-items:center;gap:4px}
.einv-card-row{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}
.einv-betreuer{font-size:11px;color:var(--text-3);display:flex;align-items:center;gap:4px}
.einv-action{display:flex;gap:6px;margin-top:10px}
.einv-btn{flex:1;padding:8px;border:none;border-radius:var(--r-md);font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .15s var(--ease)}
.einv-btn-primary{background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff}
.einv-btn-secondary{background:var(--surface-2);color:var(--text-3)}
/* ARCHIV */
.archiv-search-bar{padding:8px 14px;background:var(--white);border-bottom:1px solid var(--border);flex-shrink:0}
.archiv-search-input{width:100%;padding:8px 14px;border:1.5px solid var(--border);border-radius:var(--r-full);font-size:12px;font-family:inherit;background:var(--surface);outline:none;color:var(--text)}
.archiv-search-input:focus{border-color:var(--blue);background:#fff}
.archiv-year-tabs{display:flex;gap:6px;padding:8px 14px;overflow-x:auto;border-bottom:1px solid var(--border);background:var(--white);flex-shrink:0}
.archiv-year-tabs::-webkit-scrollbar{display:none}
.archiv-year-btn{padding:5px 13px;border-radius:var(--r-full);border:1.5px solid var(--border);background:var(--surface-2);font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;color:var(--text-2);white-space:nowrap;flex-shrink:0}
.archiv-year-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.archiv-month-tabs{display:flex;gap:4px;padding:6px 14px;overflow-x:auto;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}
.archiv-month-tabs::-webkit-scrollbar{display:none}
.archiv-month-btn{padding:4px 10px;border-radius:var(--r-full);border:1px solid var(--border);background:var(--white);font-size:10px;font-weight:700;cursor:pointer;font-family:inherit;color:var(--text-3);white-space:nowrap;flex-shrink:0}
.archiv-month-btn.active{background:var(--blue);color:#fff;border-color:var(--blue)}
.archiv-card{background:var(--white);border-radius:var(--r-lg);border:1px solid var(--border);padding:12px 14px;margin-bottom:8px;box-shadow:var(--sh-card)}
.archiv-card-name{font-size:14px;font-weight:700;color:var(--text)}
.archiv-card-sub{font-size:11px;color:var(--text-3);display:flex;align-items:center;gap:4px;margin-top:3px}
.archiv-card-dates{font-size:11px;color:var(--text-2);margin-top:8px;display:flex;flex-direction:column;gap:3px}
/* DATE FIELDS */
.date-field{margin-top:6px}
.date-field label{font-size:10px;font-weight:700;color:var(--text-3);display:block;margin-bottom:3px;text-transform:uppercase;letter-spacing:0.4px}
.date-field input[type=date]{width:100%;padding:7px 10px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:12px;font-family:inherit;background:var(--surface);color:var(--text);outline:none}
.date-field input[type=date]:focus{border-color:var(--blue);background:#fff}
/* ADMIN HEADER INNER */
.header-inner{display:flex;justify-content:space-between;align-items:start;position:relative;z-index:1}
  w.document.close();
  setTimeout(function(){w.print();},600);
}
function customTreatments(p){
  var t=[];
  function add(name){if(name&&!PROTH_COSTS[name]&&t.indexOf(name)===-1)t.push(name);}
  add(p.ok);
  add(p.uk);
  (p.okExtras||[]).forEach(add);
  (p.ukExtras||[]).forEach(add);
  return t;
}
function generateEinvPDF(idx){
  var p=EINVERSTAENDNIS[idx];if(!p)return;
  var custom=customTreatments(p);
  if(custom.length){
    var prices={};
    custom.forEach(function(t){prices[t]=['','','',''];});
    S.customPricePop_2={idx:idx,treatments:custom,prices:prices,err:''};
    render();return;
  }
  doGenerateEinvPDF(idx,{});
}
function doGenerateEinvPDF(idx,extraCosts){
  var p=EINVERSTAENDNIS[idx];if(!p)return;
  var now=new Date(),MONTHS=['Januar','Februar','M\u00e4rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
  var dateStr=now.getDate()+'. '+MONTHS[now.getMonth()]+' '+now.getFullYear();
  var todayIso=now.toISOString().split('T')[0];
  if(!p.pdfGeneratedDate)p.pdfGeneratedDate=todayIso;
  if(!p.zustimmung){p.zustimmung='angefragt';p.angefragt=fmtShort(TODAY);S.einvTab_2='angefragt';}
  render();
  try{_openPrintWindow('Einverst\u00e4ndnis \u2013 '+p.name,buildEinvLetterPages(p,dateStr,true,extraCosts));}catch(e){console.error('PDF error:',e);}
}
function setCustomPrice(t,i,v){
  if(S.customPricePop_2&&S.customPricePop_2.prices[t])S.customPricePop_2.prices[t][i]=v;
}
function saveCustomPricePDF(){
  var pop=S.customPricePop_2;
  var extraCosts={};
  var valid=true;
  pop.treatments.forEach(function(t){
    var vals=pop.prices[t].map(function(v){return v===''?null:parseFloat(v);});
    if(vals.some(function(v){return v===null||isNaN(v);})){valid=false;}
    else extraCosts[t]=vals;
  });
  if(!valid){S.customPricePop_2.err='Bitte alle Preisfelder ausf\u00fcllen.';render();return;}
  var idx=pop.idx;
  S.customPricePop_2=null;
  doGenerateEinvPDF(idx,extraCosts);
  render();
}
function renderCustomPricePopup(){
  var pop=S.customPricePop_2;if(!pop)return'';
  var p=EINVERSTAENDNIS[pop.idx]||{};
  var cols=[{label:'60\u00a0%',col:'var(--crimson)'},{label:'70\u00a0%',col:'var(--amber)'},{label:'75\u00a0%',col:'var(--blue)'},{label:'H\u00e4rtefall',col:'var(--emerald)'}];
  var h='<div style="position:absolute;inset:0;background:rgba(0,0,0,0.45);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px" onclick="S.customPricePop_2=null;render()">'
    +'<div style="background:#fff;border-radius:var(--r-lg);width:100%;padding:22px 18px 24px;box-shadow:0 8px 32px rgba(0,0,0,0.18)" onclick="event.stopPropagation()">'
      +'<div style="font-size:15px;font-weight:700;color:var(--navy);margin-bottom:3px">Individuelle Preise</div>'
      +'<div style="font-size:11px;color:var(--text-3);margin-bottom:16px">'+p.name+' \u2022 Eigenanteil Patient in \u20ac</div>';
  pop.treatments.forEach(function(t){
    h+='<div style="font-size:11px;font-weight:600;color:var(--text-2);margin-bottom:6px">'+t+'</div>'
      +'<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px">';
    cols.forEach(function(col,i){
      h+='<div>'
        +'<div style="font-size:9px;font-weight:700;color:'+col.col+';margin-bottom:3px;text-align:center">'+col.label+'</div>'
        +'<input type="number" min="0" value="'+(pop.prices[t][i]||'')+'" placeholder="0" oninput="setCustomPrice(\''+t.replace(/'/g,"\\'")+'\',' +i+',this.value)" style="width:100%;padding:7px 5px;border:1.5px solid #dde3ec;border-radius:var(--r-md);font-size:12px;font-family:inherit;text-align:center;box-sizing:border-box">'
      +'</div>';
    });
    h+='</div>';
  });
  if(pop.err){h+='<div style="font-size:11px;color:var(--crimson);font-weight:600;margin-bottom:10px">'+pop.err+'</div>';}
  h+='<div style="display:flex;gap:10px">'
      +'<button onclick="S.customPricePop_2=null;render()" style="flex:1;padding:11px;border:1.5px solid #dde3ec;border-radius:var(--r-md);background:var(--bg-2);color:var(--text-2);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer">Abbrechen</button>'
      +'<button onclick="saveCustomPricePDF()" style="flex:1;padding:11px;border:none;border-radius:var(--r-md);background:var(--navy);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer">PDF erstellen</button>'
    +'</div>'
    +'</div></div>';
  return h;
}
function generateAllEinvPDFs(){
  var todayIso=new Date().toISOString().split('T')[0];
  var neuList=EINVERSTAENDNIS.filter(function(p){return !p.zustimmung;}).slice().sort(function(a,b){return a.heim.localeCompare(b.heim,'de');});
  neuList.forEach(function(p){if(!p.pdfGeneratedDate)p.pdfGeneratedDate=todayIso;});
  if(!neuList.length)return;
  var now=new Date(),MONTHS=['Januar','Februar','M\u00e4rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
  var dateStr=now.getDate()+'. '+MONTHS[now.getMonth()]+' '+now.getFullYear();
  var body='';
  neuList.forEach(function(p,i){body+=buildEinvLetterPages(p,dateStr,i===0);});
  _openPrintWindow('Einverst\u00e4ndnis Bundle \u2013 '+neuList.length+' Patienten',body);
}
function renderEinverstaendnis(){
  var et=S.einvTab_2||'neu';
  var q=(S.einvSearch_2||'').toLowerCase().trim();
  var nNeu=EINVERSTAENDNIS.filter(function(p){return !p.zustimmung;}).length;
  var nAngef=EINVERSTAENDNIS.filter(function(p){return p.zustimmung==='angefragt';}).length;
  var nZug=EINVERSTAENDNIS.filter(function(p){return p.zustimmung==='zugestimmt';}).length;
  var nProg=EINVERSTAENDNIS.filter(function(p){return p.zustimmung==='abrechnen';}).length;
  var h='<div class="header"><div class="header-inner">'
    +'<div><h1>Einverst\u00e4ndnis</h1><div class="sub">Zustimmung Pat. / Betreuer</div></div>'
    +MENU_BTN_2
  +'</div></div>';
  /* search bar */
  h+='<div class="archiv-search-bar">'
    +'<input class="archiv-search-input" type="search" placeholder="Suche in allen Tabs &amp; Archive\u2026" value="'+q.replace(/&/g,'&amp;').replace(/"/g,'&quot;')+'" oninput="S.einvSearch_2=this.value;render()">'
  +'</div>';
  if(!q){
    /* normal tabs */
    h+='<div class="einv-tabs">';
    [['neu','Neu',nNeu],['angefragt','Angefragt',nAngef],['zugestimmt','Zugestimmt',nZug],['abrechnen','Abrechnen',nProg]].forEach(function(t){
      h+='<button class="einv-tab'+(et===t[0]?' active':'')+'" onclick="S.einvTab_2=\''+t[0]+'\';render()">'
        +t[1]+(t[2]>0?'<span class="einv-badge">'+t[2]+'</span>':'')
      +'</button>';
    });
    h+='</div>';
  }
  h+='<div class="content">';
  if(q){
    /* === SEARCH MODE === */
    function statusInfo(p){
      if(!p.zustimmung)return{label:'Neu',col:'var(--navy)',bg:'var(--blue-50)'};
      if(p.zustimmung==='angefragt')return{label:'Angefragt',col:'var(--amber)',bg:'var(--amber-bg)'};
      if(p.zustimmung==='zugestimmt')return{label:'Zugestimmt',col:'var(--emerald)',bg:'var(--emerald-bg)'};
      if(p.zustimmung==='abrechnen')return{label:'Abrechnen',col:'var(--violet)',bg:'var(--violet-bg)'};
      return{label:p.zustimmung,col:'var(--text-3)',bg:'var(--surface-2)'};
    }
    var allRecs=[];
    EINVERSTAENDNIS.forEach(function(p){allRecs.push(Object.assign({},p,{_src:'einv'}));});
    ARCHIV.forEach(function(p){allRecs.push(Object.assign({},p,{_src:'archiv',zustimmung:'__archiv__'}));});
    var results=allRecs.filter(function(p){return(p.name+' '+p.heim).toLowerCase().indexOf(q)!==-1;});
    if(!results.length){
      h+='<div style="padding:40px;text-align:center;color:var(--text-4);font-size:12px;font-style:italic">Keine Ergebnisse f\u00fcr \u201e'+S.einvSearch_2+'\u201c</div>';
    } else {
      h+='<div style="padding:10px 16px 4px">';
      results.forEach(function(p){
        var isArchiv=p._src==='archiv';
        var si=isArchiv?{label:'Archive',col:'var(--emerald)',bg:'var(--emerald-bg)'}:statusInfo(p);
        h+='<div class="einv-card">'
          +'<div style="display:flex;align-items:flex-start;justify-content:space-between;gap:8px">'
            +'<div>'
              +'<div class="einv-card-name">'+p.name+'</div>'
              +'<div class="einv-card-sub">'+ICO.pin+' '+p.heim+'</div>'
            +'</div>'
            +'<span style="font-size:9px;font-weight:700;padding:3px 8px;border-radius:var(--r-full);white-space:nowrap;flex-shrink:0;background:'+si.bg+';color:'+si.col+'">'+si.label+'</span>'
          +'</div>';
        if(p.ok||p.uk){h+='<div style="margin-top:7px;display:flex;gap:5px;flex-wrap:wrap">'+jawBadge('OK',p.ok)+jawBadge('UK',p.uk)+'</div>';}
        if(isArchiv){
          h+='<div style="margin-top:7px;font-size:11px;color:var(--text-3);display:flex;flex-direction:column;gap:2px">'
            +(p.eingliederungsdatum?'<span>Eingliederung: '+fmtArchivDate(p.eingliederungsdatum)+'</span>':'')
            +(p.rechnungsdatum?'<span>Rechnung: '+fmtArchivDate(p.rechnungsdatum)+'</span>':'')
          +'</div>';
        } else if(p.betreuer){
          h+='<div class="einv-betreuer" style="margin-top:7px">'
            +'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="11" height="11"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>'
            +p.betreuer
          +'</div>';
        }
        h+='</div>';
      });
      h+='</div>';
    }
  } else {
    /* === NORMAL TAB MODE === */
    var list=EINVERSTAENDNIS.filter(function(p){
      if(et==='neu')return !p.zustimmung;
      if(et==='angefragt')return p.zustimmung==='angefragt';
      if(et==='zugestimmt')return p.zustimmung==='zugestimmt';
      return p.zustimmung==='abrechnen';
    }).slice().sort(function(a,b){return a.heim.localeCompare(b.heim,'de');});
    if(list.length===0){
      h+='<div style="padding:40px;text-align:center;color:var(--text-4);font-size:12px;font-weight:500;font-style:italic">Keine Eintr\u00e4ge</div>';
    } else {
      if(et==='neu'){
        h+='<div style="padding:10px 16px 0">'
          +'<button onclick="generateAllEinvPDFs()" style="width:100%;padding:10px;border:1.5px dashed #b8cfe8;border-radius:var(--r-md);background:var(--bg-2);color:var(--navy);font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px">'
            +ICO.pdf+' Alle PDFs erstellen &amp; drucken ('+list.length+' Patienten)'
          +'</button>'
        +'</div>';
      }
      if(et==='zugestimmt'&&list.length>0){
        h+='<div style="padding:10px 16px 0">'
          +'<button onclick="downloadZugestimmtListe()" style="width:100%;padding:10px;border:1.5px dashed var(--emerald);border-radius:var(--r-md);background:var(--emerald-bg,#f0faf4);color:var(--emerald);font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px">'
            +ICO.pdf+' Liste herunterladen ('+list.length+' Patienten)'
          +'</button>'
        +'</div>';
      }
      h+='<div style="padding:10px 16px 4px">';
      list.forEach(function(p){
        var origIdx=EINVERSTAENDNIS.indexOf(p);
        h+='<div class="einv-card">'
          +'<div class="einv-card-name">'+p.name+'</div>'
          +'<div class="einv-card-sub">'+ICO.pin+' '+p.heim+'</div>';
        if(et==='neu'){
          if(p.ok||p.uk){
            h+='<div style="margin-top:8px;display:flex;gap:6px;flex-wrap:wrap">'
              +jawBadge('OK',p.ok)+jawBadge('UK',p.uk)
            +'</div>';
          }
          h+='<div class="einv-action">'
            +'<button class="einv-btn einv-btn-secondary" onclick="setEinvState('+origIdx+',\'abrechnen\')">Abrechnen</button>'
            +'<button class="einv-btn" style="background:var(--bg-2);color:var(--navy);border:1.5px solid #b8cfe8;display:flex;align-items:center;justify-content:center;gap:5px" onclick="generateEinvPDF('+origIdx+')">'+ICO.pdf+' PDF erstellen</button>'
          +'</div>';
        } else if(et==='angefragt'){
          h+='<div class="einv-card-row">'
            +jawBadge('OK',p.ok)+jawBadge('UK',p.uk)
          +'</div>'
          +'<div class="einv-betreuer" style="margin-top:7px">'
            +'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="11" height="11"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>'
            +p.betreuer
            +(p.angefragt?'<span style="margin-left:auto;font-size:10px;color:var(--text-4)">'+p.angefragt+'</span>':'')
          +'</div>'
          +'<div class="einv-action"><button class="einv-btn einv-btn-primary" onclick="openZugestimmtPopup('+origIdx+')">Zugestimmt setzen</button></div>';
        } else if(et==='zugestimmt'){
          var hfLabel=p.haertefall===true?'Ja':p.haertefall===false?'Nein':'\u2014';
          var zaLabel=p.zaZustimmung===true?'Ja':p.zaZustimmung===false?'Nein':'\u2014';
          var hfCol=p.haertefall===true?'var(--emerald)':p.haertefall===false?'var(--crimson)':'var(--text-4)';
          var zaCol=p.zaZustimmung===true?'var(--emerald)':p.zaZustimmung===false?'var(--crimson)':'var(--text-4)';
          h+='<div class="einv-card-row">'
            +jawBadge('OK',p.ok)+jawBadge('UK',p.uk)
          +'</div>'
          +'<div style="margin-top:8px;display:flex;gap:12px;font-size:11px">'
            +'<span style="color:var(--text-3)">H\u00e4rtefall: <strong style="color:'+hfCol+'">'+hfLabel+'</strong></span>'
            +'<span style="color:var(--text-3)">ZA: <strong style="color:'+zaCol+'">'+zaLabel+'</strong></span>'
            +(p.zugestimmtDate?'<span style="color:var(--text-4);margin-left:auto;font-size:10px">'+fmtArchivDate(p.zugestimmtDate)+'</span>':'')
          +'</div>'
          +'<div class="einv-betreuer" style="margin-top:7px">'
            +'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="11" height="11"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>'
            +p.betreuer
          +'</div>'
          +'<div class="einv-action"><button class="einv-btn einv-btn-primary" onclick="setEinvState('+origIdx+',\'abrechnen\')">Abrechnen setzen</button></div>';
        } else {
          h+='<div class="einv-card-row">'
            +jawBadge('OK',p.ok)+jawBadge('UK',p.uk)
          +'</div>'
          +'<div class="einv-betreuer" style="margin-top:7px">'
            +'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="11" height="11"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>'
            +p.betreuer
            +(p.angefragt?'<span style="margin-left:auto;font-size:10px;color:var(--text-4)">'+p.angefragt+'</span>':'')
          +'</div>'
          +'<div class="date-field"><label>Eingliederungsdatum</label><input type="date" value="'+(p.eingliederungsdatum||'')+'" onchange="setEinvDate('+origIdx+',\'eingliederungsdatum\',this.value)"></div>'
          +'<div class="date-field"><label>Rechnungsdatum</label><input type="date" value="'+(p.rechnungsdatum||'')+'" onchange="setEinvDate('+origIdx+',\'rechnungsdatum\',this.value)"></div>'
          +(p.eingliederungsdatum&&p.rechnungsdatum?'<div style="margin-top:6px;font-size:10px;color:var(--emerald);font-weight:600">'+ICO.check+' Wird archiviert\u2026</div>':'');
        }
        h+='</div>';
      });
      h+='</div>';
    }
  }
  h+='</div>';
  if(!q&&et==='neu'){
    h+='<button class="fab" onclick="openEinvAdd()">+</button>';
  }
  h+=renderAdminBottomNav_2('einverstaendnis');
  return h;
}
function setEinvState(idx,state){
  var p=EINVERSTAENDNIS[idx];if(!p)return;
  p.zustimmung=state;
  if(state==='angefragt'||state==='abrechnen')p.angefragt=fmtShort(TODAY);
  render();
}
function setEinvDate(idx,field,val){
  var p=EINVERSTAENDNIS[idx];if(!p)return;
  p[field]=val;
  if(p.eingliederungsdatum&&p.rechnungsdatum){
    ARCHIV.push({name:p.name,heim:p.heim,ok:p.ok,uk:p.uk,betreuer:p.betreuer,
      archivedDate:p.rechnungsdatum,archivedReason:'abgerechnet',
      eingliederungsdatum:p.eingliederungsdatum,rechnungsdatum:p.rechnungsdatum,
      pdfGeneratedDate:p.pdfGeneratedDate||null});
    EINVERSTAENDNIS.splice(idx,1);
    var y=p.rechnungsdatum.substr(0,4);
    var m=p.rechnungsdatum.substr(5,2);
    S.adminPage_2='archiv';S.archivTab_2='abgerechnet';S.archivYear_2=y;S.archivMonth_2=m;
  }
  render();
}
function openZugestimmtPopup(idx){
  S.zugestimmtPopup_2=idx;
  S.zugestimmtForm_2={date:'',haertefall:null,za:null};
  S.zugestimmtErr_2='';
  render();
}
function closeZugestimmtPopup(){S.zugestimmtPopup_2=null;render();}
function saveZugestimmt(){
  var f=S.zugestimmtForm_2;
  if(!f.date){S.zugestimmtErr_2='Bitte Datum eintragen.';render();return;}
  if(f.haertefall===null){S.zugestimmtErr_2='Bitte H\u00e4rtefall ausw\u00e4hlen.';render();return;}
  var idx=S.zugestimmtPopup_2;
  var p=EINVERSTAENDNIS[idx];if(!p)return;
  p.zustimmung='zugestimmt';
  p.zugestimmtDate=f.date;
  p.haertefall=f.haertefall;
  p.zaZustimmung=f.za;
  if(!p.angefragt)p.angefragt=fmtShort(TODAY);
  S.zugestimmtPopup_2=null;
  S.einvTab_2='zugestimmt';
  render();
}
function renderZugestimmtPopup(){
  var f=S.zugestimmtForm_2;
  var idx=S.zugestimmtPopup_2;
  var p=EINVERSTAENDNIS[idx]||{};
  function tog(field,val){
    return '<button onclick="S.zugestimmtForm_2.'+field+'='+(val?'true':'false')+';render()" style="flex:1;padding:8px 6px;border-radius:var(--r-md);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;border:'+(f[field]===val?'2px solid var(--navy)':'1.5px solid #dde3ec')+';background:'+(f[field]===val?'var(--navy)':'var(--bg-2)')+';color:'+(f[field]===val?'#fff':'var(--text-2)')+'">'+( val?'Ja':'Nein')+'</button>';
  }
  var h='<div style="position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:200;display:flex;align-items:center;justify-content:center;padding:24px" onclick="closeZugestimmtPopup()">'
    +'<div style="background:#fff;border-radius:var(--r-lg);width:100%;max-width:340px;padding:24px 20px 28px;box-shadow:0 8px 32px rgba(0,0,0,0.18)" onclick="event.stopPropagation()">'
      +'<div style="font-size:15px;font-weight:700;color:var(--navy);margin-bottom:4px">Zugestimmt setzen</div>'
      +'<div style="font-size:12px;color:var(--text-3);margin-bottom:18px">'+p.name+' \u2022 '+p.heim+'</div>'
      +'<div style="font-size:11px;font-weight:600;color:var(--text-2);margin-bottom:6px">Datum der Zustimmung</div>'
      +'<input type="date" value="'+(f.date||'')+'" oninput="S.zugestimmtForm_2.date=this.value;render()" style="width:100%;padding:9px 11px;border:1.5px solid #dde3ec;border-radius:var(--r-md);font-size:13px;font-family:inherit;box-sizing:border-box;margin-bottom:14px">'
      +'<div style="font-size:11px;font-weight:600;color:var(--text-2);margin-bottom:6px">H\u00e4rtefall</div>'
      +'<div style="display:flex;gap:8px;margin-bottom:14px">'+tog('haertefall',true)+tog('haertefall',false)+'</div>'
      +'<div style="font-size:11px;font-weight:600;color:var(--text-2);margin-bottom:6px">ZA Zustimmung</div>'
      +'<div style="display:flex;gap:8px;margin-bottom:18px">'+tog('za',true)+tog('za',false)+'</div>';
  if(S.zugestimmtErr_2){
    h+='<div style="font-size:11px;color:var(--crimson);margin-bottom:10px;font-weight:600">'+S.zugestimmtErr_2+'</div>';
  }
  h+='<div style="display:flex;gap:10px">'
      +'<button onclick="closeZugestimmtPopup()" style="flex:1;padding:11px;border:1.5px solid #dde3ec;border-radius:var(--r-md);background:var(--bg-2);color:var(--text-2);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer">Abbrechen</button>'
      +'<button onclick="saveZugestimmt()" style="flex:1;padding:11px;border:none;border-radius:var(--r-md);background:var(--navy);color:#fff;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer">Speichern</button>'
    +'</div>'
  +'</div>'
  +'</div>';
  return h;
}
function downloadZugestimmtListe(){
  var list=EINVERSTAENDNIS.filter(function(p){return p.zustimmung==='zugestimmt';}).slice().sort(function(a,b){return a.name.localeCompare(b.name,'de');});
  var rows=list.map(function(p){
    var nameParts=p.name.split(',');
    var nachname=nameParts[0]?nameParts[0].trim():'';
    var vorname=nameParts[1]?nameParts[1].trim():'';
    var ok=p.ok||'\u2014';
    var uk=p.uk||'\u2014';
    var hf=p.haertefall===true?'Ja':p.haertefall===false?'Nein':'\u2014';
    var za=p.zaZustimmung===true?'Ja':p.zaZustimmung===false?'Nein':'\u2014';
    var dt=p.zugestimmtDate?fmtArchivDate(p.zugestimmtDate):'\u2014';
    return '<tr><td>'+nachname+'</td><td>'+vorname+'</td><td>'+p.heim+'</td><td>'+ok+'</td><td>'+uk+'</td><td>'+hf+'</td><td>'+za+'</td><td>'+dt+'</td></tr>';
  }).join('');
    +'<h2>Zugestimmte Patienten \u2013 '+new Date().toLocaleDateString('de-DE')+'</h2>'
    +'<table><thead><tr><th>Nachname</th><th>Vorname</th><th>Pflegeheim</th><th>OK</th><th>UK</th><th>H\u00e4rtefall</th><th>ZA</th><th>Datum</th></tr></thead><tbody>'+rows+'</tbody></table>'
    +'<p style="margin-top:16px;font-size:10px;color:#999">Erstellt am '+new Date().toLocaleString('de-DE')+'</p>';
  _openPrintWindow('Zugestimmt \u2013 Liste',body);
}
function openEinvAdd(){
  S.einvAdd_2=true;
  S.einvAddForm_2={patType:'existing',existingPatId:'',nachname:'',vorname:'',heim:'',ok:null,uk:null,okExtras:[],ukExtras:[],betreuer:''};
  S.einvAddErr_2='';
  render();
}
function closeEinvAdd(){S.einvAdd_2=false;render();}
function saveEinvAdd(){
  var f=S.einvAddForm_2;
  var name='',heim=f.heim;
  if(f.patType==='existing'){
    if(!f.existingPatId){S.einvAddErr_2='Bitte Patient ausw\u00e4hlen.';render();return;}
    var ep=EXISTING_PATIENTS.find(function(p){return p.id===f.existingPatId;});
    name=ep.name;heim=ep.heim;
  } else {
    if(!f.nachname.trim()||!f.vorname.trim()){S.einvAddErr_2='Bitte Vor- und Nachname eingeben.';render();return;}
    name=f.nachname.trim()+', '+f.vorname.trim();
  }
  if(!heim){S.einvAddErr_2='Bitte Pflegeheim ausw\u00e4hlen.';render();return;}
  if(!f.ok&&!f.uk&&!f.okExtras.length&&!f.ukExtras.length){S.einvAddErr_2='Bitte mindestens eine Kieferbehandlung ausw\u00e4hlen.';render();return;}
  EINVERSTAENDNIS.unshift({name:name,heim:heim,ok:f.ok,uk:f.uk,okExtras:f.okExtras.slice(),ukExtras:f.ukExtras.slice(),betreuer:f.betreuer||'',zustimmung:null});
  S.einvAdd_2=false;
  render();
}
function renderEinvAdd(){
  var f=S.einvAddForm_2;
  var h='<div class="overlay-bg" onclick="closeEinvAdd()">'
    +'<div class="overlay-sheet" onclick="event.stopPropagation()">'
      +'<div class="overlay-header">'
        +'<div class="overlay-title">Patient hinzuf\u00fcgen</div>'
        +'<button class="overlay-close" onclick="closeEinvAdd()">\u00d7</button>'
      +'</div>';
  /* patient type toggle */
  h+='<div class="pat-toggle">'
    +'<button class="pat-pill'+(f.patType==='existing'?' active':'')+'" onclick="S.einvAddForm_2.patType=\'existing\';S.einvAddForm_2.existingPatId=\'\';render()">Bestehend</button>'
    +'<button class="pat-pill'+(f.patType==='new'?' active':'')+'" onclick="S.einvAddForm_2.patType=\'new\';render()">Neu</button>'
  +'</div>';
  if(f.patType==='existing'){
    h+='<label class="form-label">Patient ausw\u00e4hlen</label>'
      +'<select class="form-select" id="einvExPat" onchange="S.einvAddForm_2.existingPatId=this.value;var ep=EXISTING_PATIENTS.find(function(p){return p.id===this.value;});if(ep)S.einvAddForm_2.heim=ep.heim;render()">'
        +'<option value="">Patient w\u00e4hlen\u2026</option>';
    EXISTING_PATIENTS.forEach(function(p){
      h+='<option value="'+p.id+'"'+(f.existingPatId===p.id?' selected':'')+'>'+p.name+'</option>';
    });
    h+='</select>';
    if(f.existingPatId){
      var ep2=EXISTING_PATIENTS.find(function(p){return p.id===f.existingPatId;});
      if(ep2)h+='<div style="margin-top:6px;font-size:12px;color:var(--text-3);padding:8px 12px;background:var(--surface-2);border-radius:var(--r-md)"><b>Pflegeheim:</b> '+ep2.heim+'</div>';
    }
  } else {
    h+='<label class="form-label">Nachname</label><input class="form-input" id="einvNach" placeholder="Nachname" value="'+f.nachname+'" oninput="S.einvAddForm_2.nachname=this.value">'
      +'<label class="form-label">Vorname</label><input class="form-input" id="einvVor" placeholder="Vorname" value="'+f.vorname+'" oninput="S.einvAddForm_2.vorname=this.value">'
      +'<label class="form-label">Pflegeheim</label>'
      +'<select class="form-select" id="einvHeim" onchange="S.einvAddForm_2.heim=this.value"><option value="">Heim w\u00e4hlen\u2026</option>';
    PFLEGEHEIME.forEach(function(ph){h+='<option value="'+ph.name+'"'+(f.heim===ph.name?' selected':'')+'>'+ph.name+'</option>';});
    h+='</select>';
  }
  /* OK jaw selector */
  var EXTRA_OPTIONS=['Unterf\u00fctterung','Br\u00fccke','Implantat','Krone'];
  h+='<label class="form-label" style="margin-top:18px">Oberkiefer (OK)</label>'
    +'<div style="display:flex;gap:6px;flex-wrap:wrap">';
  PROTH_OPTIONS.forEach(function(opt){
    h+='<button class="pat-pill'+(f.ok===opt?' active':'')+'" style="flex:none;font-size:12px" onclick="S.einvAddForm_2.ok=S.einvAddForm_2.ok===\''+opt+'\'?null:\''+opt+'\';render()">'+opt+'</button>';
  });
  EXTRA_OPTIONS.forEach(function(opt){
    var sel=(f.okExtras||[]).indexOf(opt)!==-1;
    h+='<button class="pat-pill'+(sel?' active':'')+'" style="flex:none;font-size:12px" onclick="var ex=S.einvAddForm_2.okExtras||[];var idx=ex.indexOf(\''+opt+'\');if(idx===-1)ex.push(\''+opt+'\');else ex.splice(idx,1);S.einvAddForm_2.okExtras=ex;render()">'+opt+'</button>';
  });
  h+='</div>';
  h+='<label class="form-label" style="margin-top:14px">Unterkiefer (UK)</label>'
    +'<div style="display:flex;gap:6px;flex-wrap:wrap">';
  PROTH_OPTIONS.forEach(function(opt){
    h+='<button class="pat-pill'+(f.uk===opt?' active':'')+'" style="flex:none;font-size:12px" onclick="S.einvAddForm_2.uk=S.einvAddForm_2.uk===\''+opt+'\'?null:\''+opt+'\';render()">'+opt+'</button>';
  });
  EXTRA_OPTIONS.forEach(function(opt){
    var sel=(f.ukExtras||[]).indexOf(opt)!==-1;
    h+='<button class="pat-pill'+(sel?' active':'')+'" style="flex:none;font-size:12px" onclick="var ex=S.einvAddForm_2.ukExtras||[];var idx=ex.indexOf(\''+opt+'\');if(idx===-1)ex.push(\''+opt+'\');else ex.splice(idx,1);S.einvAddForm_2.ukExtras=ex;render()">'+opt+'</button>';
  });
  h+='</div>';
  /* betreuer */
  h+='<label class="form-label" style="margin-top:14px">Betreuer / Patient selbst</label>'
    +'<input class="form-input" id="einvBetreuer" placeholder="z.B. Tochter (M. Braun) oder Patient selbst" value="'+f.betreuer+'" oninput="S.einvAddForm_2.betreuer=this.value">';
  h+='<div class="form-err" id="einvErr"'+(S.einvAddErr_2?' style="display:block"':'')+'>'+S.einvAddErr_2+'</div>';
  h+='<button class="save-btn" onclick="saveEinvAdd()">Hinzuf\u00fcgen</button>';
  h+='</div></div>';
  return h;
}

/* === ARCHIVE PAGE === */
function renderArchiv(){
  var at=S.archivTab_2||'abgerechnet';
  var q=(S.archivSearch_2||'').toLowerCase().trim();
  var odList=overduePatients();
  var MONTH_NAMES=['Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
  var h='<div class="header"><div class="header-inner">'
    +'<div><h1>Archive</h1><div class="sub">Abgerechnete Patienten</div></div>'
    +MENU_BTN_2
  +'</div></div>';
  h+='<div class="archiv-search-bar">'
    +'<input class="archiv-search-input" type="search" placeholder="Suche in Archive\u2026" value="'+q.replace(/&/g,'&amp;').replace(/"/g,'&quot;')+'" oninput="S.archivSearch_2=this.value;render()">'
  +'</div>';
  if(!q){
    h+='<div class="einv-tabs">'
      +'<button class="einv-tab'+(at==='abgerechnet'?' active':'')+'" onclick="S.archivTab_2=\'abgerechnet\';render()">Abgerechnet</button>'
      +'<button class="einv-tab'+(at==='unbeantwortet'?' active':'')+'" onclick="S.archivTab_2=\'unbeantwortet\';render()">Unbeantwortet'
        +(odList.length?'<span class="einv-badge">'+odList.length+'</span>':'')
      +'</button>'
    +'</div>';
  }
  h+='<div class="content">';
  if(q){
    var allRecs=ARCHIV.map(function(p){return Object.assign({},p,{_source:'abgerechnet'});})
      .concat(odList.map(function(p){return Object.assign({},p,{_source:'unbeantwortet'});}));
    var results=allRecs.filter(function(p){return(p.name+' '+p.heim).toLowerCase().indexOf(q)!==-1;});
    if(!results.length){
      h+='<div style="padding:40px;text-align:center;color:var(--text-4);font-size:12px;font-style:italic">Keine Ergebnisse</div>';
    } else {
      h+='<div style="padding:10px 16px 4px">';
      results.forEach(function(p){h+=renderArchivCard(p);});
      h+='</div>';
    }
  } else if(at==='abgerechnet'){
    var years=uniqSorted(ARCHIV.map(function(p){return p.archivedDate.substr(0,4);}));
    if(!years.length){
      h+='<div style="padding:40px;text-align:center;color:var(--text-4);font-size:12px;font-style:italic">Noch keine archivierten Eintr\u00e4ge</div>';
    } else {
      var cy=S.archivYear_2||(years[years.length-1]);
      var yearRecs=ARCHIV.filter(function(p){return p.archivedDate.substr(0,4)===cy;});
      var usedMonths=uniqSorted(yearRecs.map(function(p){return p.archivedDate.substr(5,2);}));
      var cm=S.archivMonth_2;
      var finalRecs=cm?yearRecs.filter(function(p){return p.archivedDate.substr(5,2)===cm;}):yearRecs;
      h+='<div class="archiv-year-tabs">';
      years.forEach(function(y){h+='<button class="archiv-year-btn'+(cy===y?' active':'')+'" onclick="S.archivYear_2=\''+y+'\';S.archivMonth_2=null;render()">'+y+'</button>';});
      h+='</div>';
      h+='<div class="archiv-month-tabs">'
        +'<button class="archiv-month-btn'+(cm===null?' active':'')+'" onclick="S.archivMonth_2=null;render()">Alle ('+yearRecs.length+')</button>';
      usedMonths.forEach(function(m){
        var cnt=yearRecs.filter(function(p){return p.archivedDate.substr(5,2)===m;}).length;
        h+='<button class="archiv-month-btn'+(cm===m?' active':'')+'" onclick="S.archivMonth_2=\''+m+'\';render()">'+MONTH_NAMES[parseInt(m)-1]+' ('+cnt+')</button>';
      });
      h+='</div>';
      if(!finalRecs.length){
        h+='<div style="padding:40px;text-align:center;color:var(--text-4);font-size:12px;font-style:italic">Keine Eintr\u00e4ge</div>';
      } else {
        h+='<div style="padding:10px 16px 4px">';
        finalRecs.forEach(function(p){h+=renderArchivCard(Object.assign({},p,{_source:'abgerechnet'}));});
        h+='</div>';
      }
    }
  } else {
    if(!odList.length){
      h+='<div style="padding:40px;text-align:center;color:var(--text-4);font-size:12px;font-style:italic">Keine \u00fcberf\u00e4lligen Eintr\u00e4ge</div>';
    } else {
      h+='<div style="padding:10px 16px 4px">';
      odList.forEach(function(p){h+=renderArchivCard(Object.assign({},p,{_source:'unbeantwortet'}));});
      h+='</div>';
    }
  }
  h+='</div>';
  h+=renderAdminBottomNav_2('archiv');
  return h;
}

/* === TEXTEDITOR === */
function renderTexteditor(){
  var T=EINV_LETTER_TEXTS;
  function ta(key,rows,hint){
    return '<textarea rows="'+(rows||3)+'" oninput="EINV_LETTER_TEXTS[\''+key+'\']=this.value" style="width:100%;padding:9px 11px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:12px;font-family:inherit;line-height:1.5;resize:vertical;box-sizing:border-box;color:var(--text-1)">'
      +T[key].replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')
    +'</textarea>'+(hint?'<div style="font-size:9px;color:var(--text-4);margin-top:2px">'+hint+'</div>':'');
  }
  function sec(label){return '<div style="font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:0.7px;margin:16px 0 8px">'+label+'</div>';}
  function lbl(t){return '<div style="font-size:11px;font-weight:600;color:var(--navy);margin-bottom:4px">'+t+'</div>';}
  var h='<div class="header"><div class="header-inner">'
    +'<div><h1>Texteditor</h1><div class="sub">Einverst\u00e4ndnisschreiben</div></div>'
    +MENU_BTN_2
  +'</div></div>';
  h+='<div class="content" style="padding:16px;overflow-y:auto">';
  h+='<div style="font-size:11px;color:var(--text-3);background:var(--blue-50);border-radius:var(--r-md);padding:10px 12px;margin-bottom:14px;line-height:1.5">'
    +'<strong>Tipp:</strong> Schreibe <code style="background:rgba(0,0,0,0.06);padding:1px 5px;border-radius:3px">{{behandlung}}</code> dort, wo der Behandlungsname erscheinen soll.'
  +'</div>';
  h+=sec('Anrede & Einleitung');
  h+=lbl('Anrede')+ta('gruss',1)+'<div style="height:8px"></div>';
  h+=lbl('Einleitungssatz')+ta('intro',4,'Nutze {{behandlung}} für den Behandlungsnamen.');
  h+=sec('Ist die Behandlung wirklich notwendig?');
  h+=lbl('Überschrift')+ta('h_notwendig',1)+'<div style="height:8px"></div>';
  h+=lbl('Text')+ta('t_notwendig',4);
  h+=sec('Was kostet die Anfertigung?');
  h+=lbl('Überschrift')+ta('h_kosten',1)+'<div style="height:8px"></div>';
  h+=lbl('Text')+ta('t_kosten',5)+'<div style="height:8px"></div>';
  h+=lbl('Härtefall-Hinweis (nach Tabelle)')+ta('t_haertefall',4);
  h+=sec('Teilabrechnung im Todesfall');
  h+=lbl('Überschrift')+ta('h_todesfall',1)+'<div style="height:8px"></div>';
  h+=lbl('Text')+ta('t_todesfall',4);
  h+=sec('Wie lange dauert es?');
  h+=lbl('Überschrift')+ta('h_dauer',1)+'<div style="height:8px"></div>';
  h+=lbl('Text')+ta('t_dauer',3);
  h+=sec('Wie geht es nun weiter?');
  h+=lbl('Überschrift')+ta('h_weiter',1)+'<div style="height:8px"></div>';
  h+=lbl('Text')+ta('t_weiter',3)+'<div style="height:8px"></div>';
  h+=lbl('Kontaktinformation')+ta('t_kontakt',2);
  h+=sec('Abschluss');
  h+=lbl('Unterschrift / Name')+ta('signatur',1)+'<div style="height:8px"></div>';
  h+=lbl('WICHTIG-Box')+ta('wichtig',3);
  h+='</div>';
  h+=renderAbrechnungNav('texteditor');
  return h;
}

/* === ABRECHNUNG === */
function renderAbrechnung(){
  var h='<div class="header"><div class="header-inner">'
    +'<div><h1>Abrechnung</h1><div class="sub">Preisliste &amp; Dokumente</div></div>'
    +MENU_BTN_2
  +'</div></div>';
  h+='<div class="content" style="padding:16px;display:flex;flex-direction:column;gap:12px">';
  function card(page,icon,title,sub){
    return '<button onclick="S.adminPage_2=\''+page+'\';render()" style="width:100%;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 16px;display:flex;align-items:center;gap:14px;cursor:pointer;font-family:inherit;text-align:left;box-shadow:var(--sh-sm)">'
      +'<div style="width:42px;height:42px;border-radius:var(--r-md);background:var(--blue-50);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--navy)">'+icon+'</div>'
      +'<div><div style="font-size:14px;font-weight:700;color:var(--navy)">'+title+'</div><div style="font-size:11px;color:var(--text-3);margin-top:2px">'+sub+'</div></div>'
    +'</button>';
  }
  h+=card('zepreisliste','<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>','ZE Preisliste','Eigenanteil Patient nach KK-Zuschuss');
  h+=card('texteditor','<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><line x1="17" y1="10" x2="3" y2="10"/><line x1="21" y1="6" x2="3" y2="6"/><line x1="21" y1="14" x2="3" y2="14"/><line x1="17" y1="18" x2="3" y2="18"/></svg>','Texteditor','Einverständnisschreiben bearbeiten');
  h+=card('pflegeheime','<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>','Pflegeheime','Einrichtungen verwalten');
  h+='</div>';
  h+=renderAbrechnungNav('abrechnung');
  return h;
}

/* === ZE PREISLISTE === */
var ZE_PREISLISTE=['Modellgussprothese','Teleskopprothese','Unterfütterung','Vollprothese'].reduce(function(arr,t){
  var c=PROTH_COSTS[t]||[0,0,0,0];
  arr.push({behandlung:t+' OK',p60:c[0],p70:c[1],p75:c[2],hf:c[3]});
  arr.push({behandlung:t+' UK',p60:c[0],p70:c[1],p75:c[2],hf:c[3]});
  return arr;
},[]);
function updatePrice(t,i,v){
  var n=parseFloat(v);
  if(!isNaN(n)&&n>=0&&PROTH_COSTS[t])PROTH_COSTS[t][i]=n;
}
function renderZEPreisliste(){
  var cols=[{pct:'60\u00a0%',col:'var(--crimson)',bg:'#fff5f5'},{pct:'70\u00a0%',col:'var(--amber)',bg:'var(--amber-bg)'},{pct:'75\u00a0%',col:'var(--blue)',bg:'var(--blue-50)'},{pct:'HF',col:'var(--emerald)',bg:'var(--emerald-bg)'}];
  var h='<div class="header"><div class="header-inner">'
    +'<div><h1>ZE Preisliste</h1><div class="sub">Eigenanteil Patient nach KK-Zuschuss</div></div>'
    +MENU_BTN_2
  +'</div></div>';
  h+='<div class="content" style="padding:16px">';
  /* column legend */
  h+='<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:16px">';
  cols.forEach(function(l){
    h+='<div style="background:'+l.bg+';border-radius:var(--r-md);padding:8px 6px;text-align:center">'
      +'<div style="font-size:11px;font-weight:700;color:'+l.col+'">'+l.pct+'</div>'
      +'<div style="font-size:9px;color:var(--text-3);margin-top:2px">KK zahlt</div>'
    +'</div>';
  });
  h+='</div>';
  /* one card per treatment type, OK+UK share the same prices */
  Object.keys(PROTH_COSTS).forEach(function(t){
    var c=PROTH_COSTS[t];
    h+='<div style="background:#fff;border:1px solid var(--border);border-radius:var(--r-md);padding:12px;margin-bottom:10px">'
      +'<div style="font-size:12px;font-weight:700;color:var(--navy);margin-bottom:10px">'+t+'</div>'
      +'<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:6px">';
    cols.forEach(function(col,i){
      h+='<div style="background:'+col.bg+';border-radius:var(--r-sm);padding:4px">'
        +'<div style="font-size:9px;font-weight:700;color:'+col.col+';text-align:center;margin-bottom:3px">'+col.pct+'</div>'
        +'<input type="number" min="0" value="'+c[i]+'" oninput="updatePrice(\''+t.replace(/'/g,"\\'")+'\',' +i+',this.value)" style="width:100%;padding:5px 3px;border:1.5px solid '+col.col.replace('var(--','').replace(')','')+'33;border-radius:var(--r-sm);font-size:12px;font-weight:700;font-family:inherit;text-align:center;background:transparent;color:'+col.col+';box-sizing:border-box">'
        +'<div style="font-size:9px;color:var(--text-4);text-align:center;margin-top:2px">\u20ac</div>'
      +'</div>';
    });
    h+='</div></div>';
  });
  h+='<div style="margin-top:4px;padding:10px 12px;background:var(--surface-2);border-radius:var(--r-md);font-size:10px;color:var(--text-3);line-height:1.5">'
    +'Preise direkt bearbeitbar. HF\u00a0= H\u00e4rtefall (KK zahlt 100\u00a0%, kein Eigenanteil).'
  +'</div>';
  h+='</div>';
  h+=renderAbrechnungNav('zepreisliste');
  return h;
}

/* === PFLEGEHEIME === */
function openHeimEdit(i){
  S.heimEdit_2=i;
  var ph=i===-1?{name:'',strasse:'',plz:''}:PFLEGEHEIME[i];
  S.heimEditForm_2={name:ph.name,strasse:ph.strasse,plz:ph.plz};
  render();
}
function saveHeimEdit(){
  var f=S.heimEditForm_2;
  if(!f.name.trim())return;
  if(S.heimEdit_2===-1){PFLEGEHEIME.push({name:f.name.trim(),strasse:f.strasse.trim(),plz:f.plz.trim()});}
  else{PFLEGEHEIME[S.heimEdit_2]={name:f.name.trim(),strasse:f.strasse.trim(),plz:f.plz.trim()};}
  S.heimEdit_2=null;render();
}
function deleteHeimEdit(){PFLEGEHEIME.splice(S.heimEdit_2,1);S.heimEdit_2=null;render();}
function renderPflegeheime(){
  var sorted=PFLEGEHEIME.map(function(ph,i){return{ph:ph,i:i};}).sort(function(a,b){return a.ph.name.localeCompare(b.ph.name,'de');});
  var h='<div class="header"><div class="header-inner">'
    +'<div><h1>Pflegeheime</h1><div class="sub">'+PFLEGEHEIME.length+' Einrichtungen</div></div>'
    +MENU_BTN_2
  +'</div></div>';
  h+='<div class="content" style="overflow-y:auto">';
  sorted.forEach(function(obj){
    var ph=obj.ph,i=obj.i;
    h+='<button onclick="openHeimEdit('+i+')" style="width:100%;display:flex;align-items:center;justify-content:space-between;padding:13px 16px;background:#fff;border:none;border-bottom:1px solid var(--border);cursor:pointer;font-family:inherit;text-align:left">'
      +'<div>'
        +'<div style="font-size:13px;font-weight:600;color:var(--navy)">'+ph.name+'</div>'
        +'<div style="font-size:11px;color:var(--text-3);margin-top:2px">'+ph.strasse+' &middot; '+ph.plz+'</div>'
      +'</div>'
      +'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16" style="flex-shrink:0;color:var(--text-4)"><polyline points="9 18 15 12 9 6"/></svg>'
    +'</button>';
  });
  h+='<button onclick="openHeimEdit(-1)" style="width:100%;padding:14px 16px;background:none;border:none;border-top:1px solid var(--border);cursor:pointer;font-size:13px;font-weight:600;color:var(--blue);display:flex;align-items:center;gap:8px;font-family:inherit">'
    +'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" width="16" height="16"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>'
    +'Pflegeheim hinzuf\u00fcgen'
  +'</button>';
  h+='</div>';
  h+=renderAbrechnungNav('pflegeheime');
  if(S.heimEdit_2!==null){
    var f=S.heimEditForm_2,isNew=S.heimEdit_2===-1;
    h+='<div style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.4);z-index:200;border-radius:28px">'
      +'<div style="background:#fff;border-radius:var(--r-lg);padding:20px;width:calc(100% - 48px);box-shadow:0 8px 32px rgba(0,0,0,0.2)">'
        +'<div style="font-size:15px;font-weight:700;color:var(--navy);margin-bottom:16px">'+(isNew?'Neues Pflegeheim':'Pflegeheim bearbeiten')+'</div>'
        +'<div style="font-size:11px;font-weight:600;color:var(--navy);margin-bottom:4px">Name</div>'
        +'<input class="form-input" value="'+f.name.replace(/"/g,'&quot;')+'" placeholder="Name des Pflegeheims" oninput="S.heimEditForm_2.name=this.value" style="width:100%;box-sizing:border-box;margin-bottom:10px">'
        +'<div style="font-size:11px;font-weight:600;color:var(--navy);margin-bottom:4px">Stra\u00dfe</div>'
        +'<input class="form-input" value="'+f.strasse.replace(/"/g,'&quot;')+'" placeholder="Stra\u00dfe und Hausnummer" oninput="S.heimEditForm_2.strasse=this.value" style="width:100%;box-sizing:border-box;margin-bottom:10px">'
        +'<div style="font-size:11px;font-weight:600;color:var(--navy);margin-bottom:4px">PLZ / Ort</div>'
        +'<input class="form-input" value="'+f.plz.replace(/"/g,'&quot;')+'" placeholder="PLZ und Ort" oninput="S.heimEditForm_2.plz=this.value" style="width:100%;box-sizing:border-box;margin-bottom:16px">'
        +'<div style="display:flex;gap:8px">'
          +(isNew?'':'<button onclick="deleteHeimEdit()" style="padding:10px 14px;border:1.5px solid var(--crimson);border-radius:var(--r-md);background:none;color:var(--crimson);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit">L\u00f6schen</button>')
          +'<button onclick="S.heimEdit_2=null;render()" style="flex:1;padding:10px;border:1.5px solid var(--border);border-radius:var(--r-md);background:none;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text-2)">Abbrechen</button>'
          +'<button onclick="saveHeimEdit()" style="flex:1;padding:10px;border:none;border-radius:var(--r-md);background:var(--navy);color:#fff;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit">Speichern</button>'
        +'</div>'
      +'</div>'
    +'</div>';
  }
  return h;
}

/* === ADMIN RENDER (now renderAdminPortal_2 below) === */


/* ===== renderAdminPortal_2 — Admin Portal Main Dispatcher ===== */
function renderAdminPortal_2(){
  var app=document.getElementById('app');
  app.className='phone';
  var page=S.adminPage_2||'uebersicht';
  var html='';
  if(page==='uebersicht') html=renderHome_2();
  else if(page==='labor') html=renderLab_2();
  else if(page==='einverstaendnis') html=renderEinverstaendnis();
  else if(page==='archiv') html=renderArchiv();
  else if(page==='behandler') html=renderBehandler_2();
  else if(page==='abrechnung') html=renderAbrechnung();
  else if(page==='zepreisliste') html=renderZEPreisliste();
  else if(page==='texteditor') html=renderTexteditor();
  else if(page==='pflegeheime') html=renderPflegeheime();
  /* Admin hamburger */
  if(S.showMenu_2) html+=renderMenu_2();
  /* Overlays */
  if(S.showAdd_2) html+=renderAdd_2();
  if(S.reassignIdx_2!==null) html+=renderReassign();
  if(S.einvAdd_2) html+=renderEinvAdd();
  if(S.zugestimmtPopup_2!==null) html+=renderZugestimmtPopup();
  if(S.customPricePop_2) html+=renderCustomPricePopup();
  if(S.showAddBehandler) html+=renderAddBehandlerModal();
  if(S.editBehandler) html+=renderEditBehandlerModal();
  if(S.labCreate_2) html+=renderLabCreate_2();
  if(S.labDetail_2!==null&&!S.labCreate_2) html+=renderLabDetail_2();
  app.innerHTML=html;
}

/* ===== renderMenu_2 — Admin Hamburger Menu ===== */
function toggleMenu_2(){S.showMenu_2=!S.showMenu_2;render();}
function closeMenu_2(){S.showMenu_2=false;render();}
function renderMenu_2(){
  if(!S.showMenu_2)return'';
  return '<div class="menu-backdrop" onclick="closeMenu_2()"></div>'
    +'<div class="menu-dropdown">'
      +'<button class="menu-item" onclick="closeMenu_2();S.adminMode=false;S.screen=\'home\';render()"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="14" height="14"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/><line x1="8" y1="14" x2="8" y2="14"/><line x1="12" y1="14" x2="12" y2="14"/><line x1="16" y1="14" x2="16" y2="14"/><line x1="8" y1="18" x2="8" y2="18"/><line x1="12" y1="18" x2="12" y2="18"/></svg> Wochenplan</button>'
      +'<button class="menu-item" onclick="closeMenu_2();S.adminMode=false;S.screen=\'manager\';S.mgrTab=\'\u00dcbersicht\';render()"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="14" height="14"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg> Management</button>'
      +'<button class="menu-item" onclick="closeMenu_2();S.adminMode=true;S.adminPage_2=\'uebersicht\';render()"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="14" height="14"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg> Verwaltung</button>'
      +'<button class="menu-item menu-divider" onclick="closeMenu_2();doLogout()"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="14" height="14"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/></svg> Abmelden</button>'
    +'</div>';
}

</script>
</body>
</html>

/* ============================================================
 * §15 PRINT STYLES
 * Minimal, paper-optimised output for patient records, reports.
 * ============================================================ */
@media print {
  @page { size: A4; margin: 18mm 15mm; }

  /* Strip UI chrome */
  body { background: #fff !important; padding: 0 !important; color: #000 !important; font-family: 'Inter', system-ui, sans-serif; }
  .phone { width: 100% !important; height: auto !important; box-shadow: none !important; border-radius: 0 !important; overflow: visible !important; }
  .bottom-nav, .fab, .fab-mic, .fab-add, .ai-fab,
  .menu-btn, .menu-dropdown, .menu-backdrop,
  .overlay, .overlay-bg, .overlay-sheet,
  .sync-bar, .notif-toast,
  .dk-sidebar, .dk-topbar, .dk-tabs,
  .msg-compose, .lab-create-overlay,
  .f174-nav, .odo-zoom-btn, .odo-zoom-overlay { display: none !important; }

  /* Flatten colors — no gradients on paper */
  .header, .header-big {
    background: #fff !important;
    color: #000 !important;
    border-bottom: 1.5pt solid #000 !important;
    padding: 0 0 10mm 0 !important;
  }
  .header::before, .header::after { display: none !important; }
  .header h1, .header h2 { color: #000 !important; font-size: 20pt !important; }
  .header .sub { color: #333 !important; opacity: 1 !important; }

  /* Cards become outlined blocks */
  .card, .mini-card, .lab-card, .einv-card, .archiv-card {
    box-shadow: none !important;
    border: 0.5pt solid #999 !important;
    page-break-inside: avoid;
    background: #fff !important;
  }

  /* Typography adjustments */
  body, .content { font-size: 10pt !important; line-height: 1.5 !important; }
  .card-title, .mini-name, .msg-detail-title { font-size: 12pt !important; font-weight: 700 !important; }
  .card-sub, .mini-sub, .msg-preview { font-size: 9pt !important; color: #555 !important; }

  /* Tables */
  .mgr-table { border: 0.5pt solid #333 !important; }
  .mgr-table th { background: #f0f0f0 !important; color: #000 !important; }
  .mgr-table td, .mgr-table th { border-bottom: 0.3pt solid #ccc !important; }

  /* Badges — keep monochrome */
  .badge, .tbadge, .mini-badge, .msg-tag {
    border: 0.5pt solid #666 !important;
    background: #fff !important;
    color: #000 !important;
    padding: 1pt 5pt !important;
  }

  /* Odontogram — preserve but flatten */
  .odo-wrap { border: 0.5pt solid #666 !important; box-shadow: none !important; page-break-inside: avoid; }
  .tooth, .odo-teeth-grid .ot { box-shadow: none !important; color: #000 !important; border: 0.3pt solid #666 !important; }

  /* Hide any interactive overlays */
  .msg-detail, .lab-detail, .pa-entry-overlay, .f174-overlay { position: static !important; }

  /* Page breaks */
  .mgr-section, .odo-wrap, .einv-card, .msg-detail { page-break-inside: avoid; }
  h1, h2 { page-break-after: avoid; }

  /* Preserve link emphasis */
  a { color: #0A2E9E !important; text-decoration: underline; }

  /* URLs after links (for print-only) */
  a[href]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #666; }
  a[href^="javascript"]::after, a[href^="#"]::after { content: ""; }
}
