*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
/* Runde Null statt Schrägstrich-Null: DM Mono hat nur eine durchgestrichene Null (per
   Font-Feature nicht abschaltbar). Wir überschreiben daher nur die Ziffern (0–9) der
   Familie 'DM Mono' mit den Ziffern aus DM Sans (runde Null). Gleiche gstatic-URL wie der
   Fliesstext → kein zusätzlicher Download. Muss nach dem Google-Fonts-Link stehen (tut es). */
@font-face{font-family:'DM Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format('woff2');unicode-range:U+0030-0039;}
@font-face{font-family:'DM Mono';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format('woff2');unicode-range:U+0030-0039;}
:root[data-theme="light"]{--bg:#F5F4EE;--bg-accent:#EDEBE2;--surface:#FFFFFF;--surface-2:#FAFAF6;--border:#E2E0D8;--border-strong:#CCC9BE;--text:#1A1A17;--text-secondary:#5A5852;--text-muted:#8A887E;--text-faint:#B5B2A6;--accent:#15407A;--accent-hover:#0F2F5C;--accent-light:#E8EFF7;--accent-soft:#F3F7FB;--success:#3B6D11;--success-bg:#E8F1DA;--success-border:#C0DD97;--warning:#854F0B;--warning-bg:#FCEFD5;--warning-border:#F2C97A;--danger:#8B2828;--danger-bg:#F7ECEC;--danger-border:#E8B5B5;--shadow-sm:0 1px 2px rgba(20,18,12,.04);--shadow:0 1px 3px rgba(20,18,12,.06),0 0 0 1px rgba(20,18,12,.02);--shadow-lg:0 12px 32px rgba(20,18,12,.10),0 4px 8px rgba(20,18,12,.04);--header-bg:#0F1B2E;--header-text:#F5F4EE;--header-text-muted:rgba(245,244,238,.5)}
:root[data-theme="dark"]{--bg:#0E0E0C;--bg-accent:#161614;--surface:#1A1A17;--surface-2:#22221F;--border:#2A2A26;--border-strong:#3A3A35;--text:#F5F4EE;--text-secondary:#B5B2A6;--text-muted:#8A887E;--text-faint:#5A5852;--accent:#6B9FE0;--accent-hover:#85B5EE;--accent-light:#152944;--accent-soft:#101D2E;--success:#7AB840;--success-bg:#1B2E10;--success-border:#2D4B1A;--warning:#D89B4A;--warning-bg:#2E1F0A;--warning-border:#523818;--danger:#E07878;--danger-bg:#2A1414;--danger-border:#4E2424;--shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow:0 1px 3px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.03);--shadow-lg:0 12px 32px rgba(0,0,0,.6),0 4px 8px rgba(0,0,0,.3);--header-bg:#0F1B2E;--header-text:#F5F4EE;--header-text-muted:rgba(245,244,238,.4)}
html,body{height:100%}
body{font-family:'DM Sans',system-ui,sans-serif;font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:'ss01','ss02','cv11'}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;color:inherit}
a{color:inherit;text-decoration:none;cursor:pointer}
.mono{font-family:'DM Mono',ui-monospace,monospace;font-feature-settings:'ss01'}
.display{font-family:'Fraunces',Georgia,serif;font-weight:500;letter-spacing:-.01em}

/* LOGIN */
.login-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg);z-index:1000}
.login-screen.hidden{display:none}
.login-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse 80% 60% at 80% 20%,var(--accent-light) 0%,transparent 50%),radial-gradient(ellipse 60% 80% at 20% 100%,var(--accent-soft) 0%,transparent 60%);opacity:.5}
.login-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:42px 44px;width:400px;box-shadow:var(--shadow-lg)}
.login-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:10px}
.login-logo{height:64px;width:auto;display:block}
.login-brand .name{font-size:18px;font-weight:600;letter-spacing:-.01em}
.login-brand .name span{color:var(--accent)}
.login-tagline{font-size:12px;color:var(--text-muted);margin-bottom:36px;letter-spacing:.04em;text-transform:uppercase;font-weight:500}
.login-title{font-family:'Fraunces',Georgia,serif;font-size:24px;font-weight:500;margin-bottom:6px;letter-spacing:-.015em}
.login-subtitle{font-size:13px;color:var(--text-secondary);margin-bottom:28px}
.field{margin-bottom:14px}
.field label{display:block;font-size:11px;font-weight:500;color:var(--text-secondary);margin-bottom:5px;letter-spacing:.04em;text-transform:uppercase}
.field .input,.field input[type=text],.field input[type=password],.field input[type=email],.field input[type=number],.field input[type=date],.field select,.field textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:13.5px;transition:all .12s}
.field input:focus,.field select:focus,.field textarea:focus,.field .input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
/* Platzhalter/Beispielwerte immer grau (Text-Eingaben und Dropdowns mit noch leerer Auswahl) */
.field input::placeholder,.field textarea::placeholder,.field .input::placeholder{color:var(--text-muted);opacity:1}
.field select.ph-select.is-empty{color:var(--text-muted)}
.field textarea{resize:vertical;min-height:80px;font-family:inherit}
.login-actions{margin-top:24px}
.login-help{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:12px;color:var(--text-muted)}
.login-help a{color:var(--accent);font-weight:500}
.login-version{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font-size:11px;color:var(--text-faint);letter-spacing:.05em;text-transform:uppercase}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:7px;font-size:13px;font-weight:500;border:1px solid transparent;transition:all .12s;white-space:nowrap}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-hover)}
.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}
.btn-secondary:hover{background:var(--bg-accent);border-color:var(--border-strong)}
.btn-ghost{color:var(--text-secondary)}
.btn-ghost:hover{background:var(--bg-accent);color:var(--text)}
.btn-danger{background:var(--surface);color:var(--danger);border-color:var(--danger-border)}
.btn-danger:hover{background:var(--danger-bg)}
.btn-success{background:var(--surface);color:var(--success);border-color:var(--success-border)}
.btn-success:hover{background:var(--success-bg)}
.btn-block{width:100%}
.btn-sm{padding:6px 11px;font-size:12px;gap:5px}
.btn-icon{padding:7px;width:32px;height:32px}

/* APP SHELL */
.app{display:none;flex-direction:column;height:100vh;overflow:hidden}
.app.active{display:flex}
.app-header{display:flex;align-items:center;height:54px;padding:0 18px;gap:14px;background:var(--header-bg);color:var(--header-text);flex-shrink:0;border-bottom:1px solid rgba(255,255,255,.04)}
.brand-mini{display:flex;align-items:center;gap:9px}
.brand-mini .logo{display:flex;align-items:center;height:26px}
.brand-mini .logo img{height:26px;width:auto;display:block}
.brand-mini .logo svg{width:15px;height:15px}
.brand-mini .name{font-size:14px;font-weight:600;letter-spacing:.01em}
.brand-mini .name span{color:#7AABDC}
.header-divider{width:1px;height:18px;background:rgba(255,255,255,.1)}
.header-context{font-size:11px;color:var(--header-text-muted);letter-spacing:.08em;text-transform:uppercase;font-weight:500}
.header-search{flex:1;max-width:420px;position:relative;margin:0 auto}
.header-search input{width:100%;padding:7px 11px 7px 32px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);border-radius:7px;color:var(--header-text);font-size:12.5px;transition:all .12s}
.header-search input:focus{outline:none;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2)}
.header-search input::placeholder{color:rgba(255,255,255,.35)}
.header-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:rgba(255,255,255,.4)}
.header-shortcut{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-family:'DM Mono',monospace;font-size:10px;background:rgba(255,255,255,.08);padding:2px 6px;border-radius:4px;color:rgba(255,255,255,.5)}
.header-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:7px;color:var(--header-text-muted);transition:all .12s}
.header-btn:hover{background:rgba(255,255,255,.08);color:var(--header-text)}
.header-btn svg{width:16px;height:16px}
.header-user{display:flex;align-items:center;gap:9px;padding:5px 11px 5px 5px;border-radius:8px;cursor:pointer;transition:background .12s}
.header-user:hover{background:rgba(255,255,255,.06)}
.user-avatar{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#5A8FCF,#15407A);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:10px}
.user-info{display:flex;flex-direction:column;line-height:1.2}
.user-name{font-size:12px;font-weight:500}
.user-role{font-size:10px;color:var(--header-text-muted)}
.app-body{flex:1;display:flex;overflow:hidden}

/* SIDEBAR */
.sidebar{width:220px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;transition:width .2s ease}
.sb-collapsed .sidebar{width:54px}
.sb-collapsed .sidebar .nav-label,.sb-collapsed .sidebar .nav-section-title,.sb-collapsed .sidebar .nav-badge{display:none}
.sb-collapsed .sidebar .nav-item{justify-content:center;padding:9px 0}
.sb-collapsed .sidebar .sidebar-footer{padding:10px 8px}
.sb-collapsed .sidebar .sb-help{justify-content:center}
.sb-collapsed .sidebar .sb-help span{display:none}
.sidebar-nav{flex:1;overflow-y:auto;padding:14px 10px}
.nav-section{margin-bottom:18px}
.nav-section-title{font-size:10px;font-weight:500;color:var(--text-faint);letter-spacing:.1em;text-transform:uppercase;padding:0 10px 7px}
.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .12s;white-space:nowrap;margin-bottom:2px}
.nav-item:hover{background:var(--bg-accent);color:var(--text)}
.nav-item.active{background:var(--accent-light);color:var(--accent)}
.nav-icon{width:17px;height:17px;flex-shrink:0;color:var(--text-muted);display:flex;align-items:center;justify-content:center}
.nav-icon svg{width:17px;height:17px}
.nav-item.active .nav-icon{color:var(--accent)}
.nav-badge{margin-left:auto;font-size:10px;padding:1px 6px;border-radius:4px;background:var(--bg-accent);color:var(--text-muted);font-family:'DM Mono',monospace;font-weight:500}
.nav-item.active .nav-badge{background:var(--accent);color:#fff}
/* Core-Modul (Objekte) etwas prominenter: kräftigere Schrift + Akzentkante */
.nav-item.nav-core{font-weight:600;color:var(--text)}
.nav-item.nav-core .nav-icon{color:var(--accent)}
.nav-item.nav-core:not(.active){box-shadow:inset 2px 0 0 var(--accent)}
.nav-item.nav-core .nav-badge{background:var(--accent-light);color:var(--accent)}
.sidebar-footer{border-top:1px solid var(--border);padding:10px}
.sb-help{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:6px;font-size:12px;color:var(--text-muted);cursor:pointer;transition:all .12s}
.sb-help:hover{background:var(--bg-accent);color:var(--text)}
.sb-help svg{width:15px;height:15px;flex-shrink:0}

/* MAIN */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;background:var(--bg)}
.view{display:none;flex:1;flex-direction:column;overflow:hidden}
.view.active{display:flex}
.page-header{padding:20px 28px 18px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;min-height:187px;display:flex;flex-direction:column;justify-content:center}
.page-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.page-title{font-family:'Fraunces',Georgia,serif;font-size:22px;font-weight:500;letter-spacing:-.015em}
.page-subtitle{font-size:13px;color:var(--text-secondary);margin-top:3px}
.page-actions{display:flex;gap:7px;flex-shrink:0;align-items:center}
.breadcrumb{display:flex;align-items:center;gap:6px;font-size:12px;margin-bottom:10px;color:var(--text-muted);flex-wrap:wrap}
.breadcrumb a:hover{color:var(--text)}
.breadcrumb .sep{color:var(--text-faint);font-size:10px}
.breadcrumb .current{color:var(--text);font-weight:500}
.page-body{flex:1;overflow:auto;padding:24px 28px}

/* DASHBOARD */
.dashboard-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:18px;transition:all .15s}
.stat-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}
.stat-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.stat-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--accent-light);color:var(--accent)}
.stat-icon svg{width:17px;height:17px}
.stat-trend{font-size:11px;font-weight:600;padding:2px 6px;border-radius:4px}
.stat-trend.up{color:var(--success);background:var(--success-bg)}
.stat-trend.down{color:var(--danger);background:var(--danger-bg)}
.stat-value{font-family:'Fraunces',Georgia,serif;font-size:30px;font-weight:500;letter-spacing:-.02em;line-height:1}
.stat-unit{font-family:'DM Sans',sans-serif;font-size:14px;color:var(--text-muted);margin-left:4px;font-weight:400}
.stat-label{font-size:12px;color:var(--text-secondary);margin-top:6px;letter-spacing:.02em}
.dashboard-row{display:grid;grid-template-columns:2fr 1fr;gap:14px;margin-bottom:24px}
@media(max-width:1100px){.dashboard-row{grid-template-columns:1fr}.dashboard-grid{grid-template-columns:repeat(2,1fr)}}
.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.card-header{padding:16px 18px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.card-title{font-size:14px;font-weight:600;letter-spacing:-.005em}
.card-subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}
.card-body{padding:16px 18px}
.card-body.tight{padding:10px 6px}
.activity-list{display:flex;flex-direction:column}
.activity-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:7px;transition:background .12s}
.activity-item:hover{background:var(--bg-accent)}
.activity-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.activity-dot.blue{background:var(--accent)}
.activity-dot.green{background:var(--success)}
.activity-dot.amber{background:var(--warning)}
.activity-dot.gray{background:var(--text-faint)}
.activity-content{flex:1;min-width:0}
.activity-text{font-size:13px;color:var(--text)}
.activity-text strong{font-weight:600}
.activity-meta{font-size:11px;color:var(--text-muted);margin-top:1px;font-family:'DM Mono',monospace}
.shortcut-list{display:flex;flex-direction:column;gap:5px}
.shortcut-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:7px;cursor:pointer;transition:all .12s;border:1px solid transparent}
.shortcut-item:hover{background:var(--bg-accent);border-color:var(--border)}
.shortcut-icon{width:32px;height:32px;border-radius:7px;background:var(--accent-light);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.shortcut-icon svg{width:15px;height:15px}
.shortcut-content{flex:1;min-width:0}
.shortcut-title{font-size:13px;font-weight:500}
.shortcut-desc{font-size:11px;color:var(--text-muted);margin-top:1px}

/* PROJECT CARDS */
.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:1100px){.project-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.project-grid{grid-template-columns:1fr}}
.project-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;cursor:pointer;transition:all .15s;position:relative;overflow:hidden}
.project-card:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-1px)}
.project-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);opacity:0;transition:opacity .15s}
.project-card:hover::before{opacity:1}
.project-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:10px}
.project-emoji{font-size:24px}
.project-id-tag{font-family:'DM Mono',monospace;font-size:10.5px;color:var(--text-muted);background:var(--bg-accent);padding:2px 7px;border-radius:4px;letter-spacing:.04em;font-weight:500;margin-bottom:6px;display:inline-block}
.project-status{font-size:10px;font-weight:500;padding:2px 8px;border-radius:10px;letter-spacing:.04em;text-transform:uppercase}
.project-status.active{background:var(--success-bg);color:var(--success);border:1px solid var(--success-border)}
.project-status.draft{background:var(--bg-accent);color:var(--text-muted);border:1px solid var(--border-strong)}
.project-status.archived{background:var(--warning-bg);color:var(--warning);border:1px solid var(--warning-border)}
.project-name{font-family:'Fraunces',Georgia,serif;font-size:17px;font-weight:500;letter-spacing:-.01em;margin-bottom:4px}
.project-customer{font-size:12px;color:var(--text-muted);margin-bottom:14px}
.project-stats{display:flex;gap:14px;padding-top:12px;border-top:1px solid var(--border)}
.project-stat{display:flex;flex-direction:column}
.project-stat-value{font-family:'DM Mono',monospace;font-size:13px;font-weight:500;color:var(--text)}
.project-stat-label{font-size:10px;color:var(--text-faint);letter-spacing:.04em;text-transform:uppercase;margin-top:2px}

/* PROJECT DETAIL with TABS */
.proj-header{padding:16px 24px 0;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}
.proj-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:14px}
.proj-header-left{flex:1;min-width:0}
.proj-id-row{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
.proj-id-pill{font-family:'DM Mono',monospace;font-size:11px;color:var(--accent);background:var(--accent-light);padding:2px 8px;border-radius:5px;font-weight:500;letter-spacing:.04em}
.proj-version{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted);background:var(--bg-accent);padding:2px 8px;border-radius:5px;display:inline-flex;align-items:center;gap:5px}
.proj-version svg{width:11px;height:11px}
.proj-status-tag{font-size:10px;font-weight:500;padding:2px 8px;border-radius:10px;letter-spacing:.04em;text-transform:uppercase}
.proj-name{font-family:'Fraunces',Georgia,serif;font-size:24px;font-weight:500;letter-spacing:-.015em;line-height:1.2}
.proj-meta{font-size:12px;color:var(--text-muted);margin-top:4px}
.proj-actions{display:flex;gap:7px;align-items:center;flex-shrink:0}
.proj-actions select{padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:12px;color:var(--text);font-family:inherit}
.proj-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-top:4px;overflow-x:auto}
.proj-tab{padding:11px 18px 13px;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;transition:all .12s;display:flex;align-items:center;gap:7px;white-space:nowrap}
.proj-tab:hover{color:var(--text)}
.proj-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.proj-tab svg{width:14px;height:14px}
.proj-tab-badge{font-size:10px;background:var(--bg-accent);color:var(--text-muted);padding:1px 6px;border-radius:4px;font-family:'DM Mono',monospace;font-weight:500;margin-left:2px}
.proj-tab.active .proj-tab-badge{background:var(--accent-light);color:var(--accent)}
.proj-tab-content{flex:1;display:none;overflow:hidden;flex-direction:column}
.proj-tab-content.active{display:flex}

/* OBJEKTE TAB */
.objekte-layout{flex:1;display:flex;overflow:hidden}
.proj-sidebar{width:260px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;transition:width .2s,opacity .2s}
.proj-sidebar.collapsed{width:0;opacity:0;border-right:none}
.proj-sidebar-header{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.proj-sidebar-title{font-size:11px;font-weight:500;color:var(--text-faint);letter-spacing:.1em;text-transform:uppercase}
.tree{flex:1;overflow-y:auto;padding:6px 6px 14px}
.tree-row{display:flex;align-items:center;gap:4px;padding:5px 8px;border-radius:6px;cursor:pointer;transition:background .1s;font-size:13px;color:var(--text-secondary);user-select:none}
.tree-row:hover{background:var(--bg-accent)}
.tree-row.active{background:var(--accent-light);color:var(--accent);font-weight:500}
.tree-toggle{width:14px;height:14px;display:flex;align-items:center;justify-content:center;color:var(--text-faint);flex-shrink:0;transition:transform .12s}
.tree-toggle.open{transform:rotate(90deg)}
.tree-toggle.leaf{opacity:0;pointer-events:none}
.tree-toggle svg{width:9px;height:9px}
.tree-icon{font-size:13px;flex-shrink:0;width:16px;text-align:center}
.tree-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree-count{font-size:10px;color:var(--text-faint);font-family:'DM Mono',monospace;flex-shrink:0;padding:0 2px}
.tree-row.active .tree-count{color:var(--accent);opacity:.7}
.tree-children{padding-left:16px}
.objekte-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.obj-toolbar{display:flex;align-items:center;gap:8px;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}
.obj-toolbar-divider{width:1px;height:18px;background:var(--border)}
.obj-info{font-size:11.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.obj-content{flex:1;display:flex;overflow:hidden;min-width:0}
.obj-list{flex:1;overflow:auto;padding:16px 20px}
.subfolder-section{margin-bottom:22px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.subfolder-section-title{font-size:11px;font-weight:500;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;padding-bottom:7px;border-bottom:1px solid var(--border);margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}
.subfolder-section-title-count{font-family:'DM Mono',monospace;color:var(--text-muted);font-weight:500;text-transform:none;letter-spacing:0}
.subfolder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.subfolder-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px;cursor:pointer;display:flex;align-items:center;gap:11px;transition:all .12s}
.subfolder-card:hover{background:var(--surface-2);border-color:var(--accent);transform:translateX(2px)}
.subfolder-emoji{font-size:18px;flex-shrink:0}
.subfolder-name{font-size:13px;font-weight:500;line-height:1.3}
.subfolder-meta{font-size:11px;color:var(--text-muted);font-family:'DM Mono',monospace;margin-top:2px}
.subfolder-arrow{margin-left:auto;color:var(--text-faint);opacity:0;transition:opacity .12s;font-size:14px}
.subfolder-card:hover .subfolder-arrow{opacity:1;color:var(--accent)}
.empty-folder{text-align:center;padding:60px 20px;color:var(--text-muted)}
.empty-folder-icon{font-size:48px;margin-bottom:10px;opacity:.5}
.empty-folder-title{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500;margin-bottom:5px;color:var(--text)}
.empty-folder-text{font-size:13px;color:var(--text-muted);margin-bottom:18px}

/* OBJECT TABLE */
.objects-section{margin-top:18px}
.table-wrapper{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.table-scroll{overflow-x:auto}
table.objects{width:100%;border-collapse:collapse;font-size:11.5px;min-width:1400px}
table.objects th,table.objects td{border-right:1px solid var(--border)}
table.objects th:last-child,table.objects td:last-child{border-right:none}
.th-group{text-align:center;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:6px 8px;border-bottom:1px solid var(--border);color:var(--text-muted);background:var(--surface-2)}
.th-group.nb{background:var(--success-bg);color:var(--success)}
.th-group.neb{background:var(--warning-bg);color:var(--warning)}
.th-sub{font-size:10.5px;font-weight:500;color:var(--text-secondary);padding:7px 8px;text-align:center;background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap}
.th-sub.nb{background:rgba(122,184,64,.08);color:var(--success)}
.th-sub.neb{background:rgba(216,155,74,.08);color:var(--warning)}
.sep-l{border-left:1.5px solid var(--border-strong)!important}
table.objects tbody td{padding:6px 8px;border-bottom:1px solid var(--border);vertical-align:middle}
table.objects tbody tr:last-child td{border-bottom:none}
table.objects tbody tr{cursor:pointer;transition:background .1s}
table.objects tbody tr:hover td{background:var(--surface-2)}
table.objects tbody tr.selected td{background:var(--accent-light)}
.tr-total td{background:var(--bg-accent)!important;border-bottom:2px solid var(--border-strong)!important;padding:8px 8px!important}
.tr-total .lbl{font-size:10.5px;font-weight:600;color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;padding-left:10px}
.c-nr{font-family:'DM Mono',monospace;font-size:10.5px;color:var(--text-muted);white-space:nowrap}
.c-art{text-align:center;width:38px}
.art-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:5px;font-size:13px}
.art-G{background:#E6F0FA;color:#1A4778}
.art-A{background:#E7F3D8;color:#3B6D11}
.art-S{background:#FBE9CC;color:#854F0B}
[data-theme="dark"] .art-G{background:rgba(107,159,224,.15);color:#85B5EE}
[data-theme="dark"] .art-A{background:rgba(122,184,64,.15);color:#9ECF6F}
[data-theme="dark"] .art-S{background:rgba(216,155,74,.15);color:#E0B978}
.c-name{white-space:nowrap;padding-left:6px!important}
.c-name-main{font-weight:500;font-size:12px;color:var(--text)}
.c-name-sub{font-size:10.5px;color:var(--text-faint);margin-top:1px}
.c-num{text-align:right;color:var(--text-secondary);font-family:'DM Mono',monospace;font-size:11px;padding-right:10px!important;white-space:nowrap}
.c-num.strong{color:var(--text);font-weight:500}
.c-num.nb{color:var(--success)}
.c-num.neb{color:var(--warning)}
.c-int{text-align:center;font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted);white-space:nowrap}
.c-int.nb{color:var(--success)}
.c-int.neb{color:var(--warning)}
.c-bb{text-align:center;font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted)}
.c-ph{text-align:center;font-family:'DM Mono',monospace;font-weight:500;font-size:11px;color:var(--text-secondary)}
.c-check{text-align:center;font-size:13px}
.c-check.yes{color:var(--success)}
.c-bem{font-size:11px;color:var(--text-muted);min-width:120px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Spezialarbeiten-Liste: Nr. schmal (wie Gebäude), Wochen-/h-W-Spalten schmal, mehr Platz für Bezeichnung/Bemerkung */
table.objects.sp-liste th[data-col="nb_w"],table.objects.sp-liste th[data-col="neb_w"]{width:60px;white-space:normal;line-height:1.2}
table.objects.sp-liste td[data-col="nb_w"],table.objects.sp-liste td[data-col="neb_w"]{width:60px}
table.objects.sp-liste th[data-col="nb_hw"],table.objects.sp-liste td[data-col="nb_hw"],table.objects.sp-liste th[data-col="neb_hw"],table.objects.sp-liste td[data-col="neb_hw"]{width:50px}
table.objects.sp-liste td[data-col="nr"],table.objects.sp-liste th[data-col="nr"]{width:1%;white-space:nowrap}
table.objects.sp-liste .c-bem{min-width:220px;max-width:none;white-space:nowrap}

/* DETAIL PANEL */
.detail-panel{width:320px;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}
.detail-panel.hidden{display:none}
.detail-header{padding:16px 18px 14px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:11px}
.detail-title-area{flex:1;min-width:0}
.detail-art-line{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.detail-name{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500;letter-spacing:-.01em;line-height:1.2}
.detail-zusatz{font-size:12px;color:var(--text-muted);margin-top:3px}
.detail-nr{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-faint);letter-spacing:.02em;margin-top:7px;display:flex;align-items:center;gap:6px}
.detail-nr-tag{padding:1px 6px;background:var(--bg-accent);border-radius:4px;color:var(--text-secondary)}
.detail-body{flex:1;overflow-y:auto;padding:14px 18px}
.detail-section{margin-bottom:18px}
.detail-section-title{font-size:10px;font-weight:600;color:var(--text-faint);letter-spacing:.1em;text-transform:uppercase;padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:8px}
.detail-section-title.nb{color:var(--success)}
.detail-section-title.neb{color:var(--warning)}
.detail-row{display:flex;align-items:baseline;gap:12px;padding:5px 0;font-size:12px}
.detail-key{color:var(--text-muted);min-width:95px;flex-shrink:0}
.detail-value{font-family:'DM Mono',monospace;color:var(--text);flex:1;text-align:right;font-size:12px}
.detail-value.text{font-family:'DM Sans',sans-serif;text-align:left;font-size:12px}
.detail-actions{padding:11px 18px;border-top:1px solid var(--border);display:flex;gap:8px}
.detail-actions .btn{flex:1}
.modal-close{width:32px;height:32px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all .12s}
.modal-close:hover{background:var(--bg-accent);color:var(--text)}
.modal-close svg{width:16px;height:16px}

/* TAB CONTENTS (general) */
.tab-scroll{flex:1;overflow:auto;padding:24px 32px}
.tab-section{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:18px;overflow:hidden}
.tab-section-header{padding:14px 20px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.tab-section-title-area{flex:1;min-width:0}
.tab-section-title{font-family:'Fraunces',Georgia,serif;font-size:16px;font-weight:500;letter-spacing:-.005em}
.tab-section-desc{font-size:12px;color:var(--text-muted);margin-top:2px}
.tab-section-body{padding:18px 20px}
.form-row{display:flex;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid var(--border)}
.form-row:last-child{border-bottom:none}
.form-row-label{flex:1;min-width:0}
.form-row-label-text{font-size:13.5px;font-weight:500}
.form-row-desc{font-size:12px;color:var(--text-muted);margin-top:2px;line-height:1.4}
.form-row-control{flex-shrink:0;display:flex;justify-content:flex-end;align-items:center;gap:6px}
.form-row-control input,.form-row-control select,.form-row-control textarea{width:240px;padding:8px 11px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:13px;color:var(--text);font-family:inherit}
.form-row-control input:focus,.form-row-control select:focus,.form-row-control textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
.form-row-control input[type=date]{font-family:'DM Mono',monospace;font-size:12.5px}
.form-row-control input.mono{font-family:'DM Mono',monospace}
.form-row-suffix{font-size:11px;color:var(--text-muted)}

/* CONTACTS */
.contact-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.contact-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px}
.contact-card-header{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.contact-role-tag{font-size:10px;font-weight:600;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase}
.contact-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:13px;flex-shrink:0}
.contact-name{font-family:'Fraunces',Georgia,serif;font-size:16px;font-weight:500;letter-spacing:-.005em}
.contact-info{display:flex;flex-direction:column;gap:6px;font-size:12.5px}
.contact-line{display:flex;align-items:center;gap:9px;color:var(--text-secondary)}
.contact-line svg{width:13px;height:13px;color:var(--text-faint);flex-shrink:0}
.contact-line a{color:var(--accent)}
.contact-line a:hover{text-decoration:underline}

/* PENSEN */
.pensen-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:14px;flex-wrap:wrap}
.pensen-summary{display:flex;gap:22px;flex-wrap:wrap}
.pensen-summary-item{display:flex;flex-direction:column}
.pensen-summary-val{font-family:'DM Mono',monospace;font-size:16px;font-weight:500;color:var(--text)}
.pensen-summary-lbl{font-size:10.5px;color:var(--text-faint);letter-spacing:.04em;text-transform:uppercase;margin-top:1px}
.pensen-table{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.pensen-table table{width:100%;border-collapse:collapse;font-size:13px}
.pensen-table th{text-align:left;font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;padding:11px 14px;background:var(--surface-2);border-bottom:1px solid var(--border)}
.pensen-table th.numeric{text-align:right}
.pensen-table th.center{text-align:center}
.pensen-table td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
.pensen-table tr:last-child td{border-bottom:none}
.pensen-table tr:hover td{background:var(--surface-2)}
.pensen-table td.numeric{text-align:right;font-family:'DM Mono',monospace;font-size:12.5px}
.pensen-row{display:flex;align-items:center;gap:11px}
.pensen-avatar-sm{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#5A8FCF,#15407A);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:11px;flex-shrink:0}
.pensen-row-info{display:flex;flex-direction:column;line-height:1.3}
.pensen-row-name{font-weight:500;font-size:13px}
.pensen-row-fn{font-size:11.5px;color:var(--text-muted)}
.pensen-bar-cell{display:flex;align-items:center;gap:10px}
.pensen-bar-mini{width:70px;height:5px;background:var(--bg-accent);border-radius:3px;overflow:hidden;flex-shrink:0}
.pensen-bar-mini-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s}
.pensen-bar-mini-fill.warning{background:var(--warning)}
.pensen-bar-mini-fill.danger{background:var(--danger)}
.pensen-bar-mini-fill.success{background:var(--success)}
.pensen-drag-ghost{opacity:.45;background:var(--accent-soft)}
/* Zuteilung: Plan-Karten (Container-Liste) */
.zut-plan-card{display:flex;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:10px}
.zut-plan-card.aktiv{border-color:var(--accent-light);box-shadow:inset 3px 0 0 var(--accent)}
.zut-plan-main{flex:1;min-width:0}
.zut-plan-top{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.zut-plan-name{font-weight:600;font-size:14px}
.zut-plan-pill{font-size:9.5px;font-weight:600;padding:1px 7px;border-radius:5px;text-transform:uppercase;letter-spacing:.03em}
.zut-plan-pill.aktiv{background:var(--accent-light);color:var(--accent)}
.zut-plan-basis{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:5px}
.zut-basis-tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-secondary);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:3px 8px}
.zut-plan-meta{font-size:11px;color:var(--text-faint)}
.zut-plan-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
/* Zuteilung-Detail: Zwei-Spalten mit Matrix */
.zut-detail-bar{padding:16px 28px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}
.zut-back{font-size:12px;color:var(--text-muted);text-decoration:none}
.zut-back:hover{color:var(--accent)}
.zut-detail-title{font-family:'Fraunces',Georgia,serif;font-size:20px;margin-top:5px}
.zut-detail-sub{font-size:12.5px;color:var(--text-muted);margin-top:3px}
/* Kopf rechts: Abdeckung + Speichern-Button */
.zut-detail-right{display:flex;align-items:flex-end;gap:24px}
.zut-detail-save{display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.zut-detail-save .btn{white-space:nowrap}
.zut-autosave{font-size:10.5px;color:var(--success)}
/* Abdeckung (oben rechts) */
.zut-coverage{text-align:right;min-width:210px;flex-shrink:0}
.zut-coverage-val{font-family:'Fraunces',Georgia,serif;font-size:28px;font-weight:500;line-height:1;color:var(--accent)}
.zut-coverage-lbl{font-size:11.5px;color:var(--text-muted);margin-top:4px}
.zut-coverage-bar{height:6px;background:var(--bg-accent);border-radius:3px;overflow:hidden;margin-top:7px}
.zut-coverage-bar i{display:block;height:100%;width:0;background:var(--accent);border-radius:3px;transition:width .2s ease}
.zut2-layout{display:flex;flex:1;min-height:0}
.zut2-left{width:290px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;overflow:hidden}
.zut2-left-head{padding:14px 16px;font-size:11px;font-weight:600;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border)}
.zut2-pensen{overflow-y:auto;padding:9px}
.zut2-pensum{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:9px;cursor:pointer;border:1px solid transparent;margin-bottom:3px;transition:background .12s,border-color .12s}
.zut2-pensum:hover{background:var(--surface-2)}
.zut2-pensum.active{background:var(--accent-soft);border-color:var(--accent-light);box-shadow:inset 2px 0 0 var(--accent)}
.zut2-pensum-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zut2-pensum-meta{font-size:11px;color:var(--text-muted);margin-top:1px}
/* Auslastungsbalken je Person */
.zut2-util{margin-top:6px}
.zut2-util-line{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.zut2-util-txt{font-size:10.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.zut2-util-pct{font-size:10.5px;color:var(--text-secondary);font-weight:600;font-family:'DM Mono',monospace;white-space:nowrap}
.zut2-util-bar{height:5px;background:var(--bg-accent);border-radius:3px;overflow:hidden;margin-top:3px;display:flex}
.zut2-util-bar i{display:block;height:100%;width:0;transition:width .2s ease}
.zut2-bar-abw{background:var(--border-strong)}
.zut2-bar-work{background:var(--accent)}
.zut2-bar-work.over{background:var(--danger)}
/* Kapazitäts-Herleitung je Person: Soll − Abwesenheiten = Kapazität */
.zut2-auf{margin-top:8px;border-top:1px solid var(--border);padding-top:6px}
.zut2-auf-row{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;color:var(--text-muted);line-height:1.65;font-variant-numeric:tabular-nums}
.zut2-auf-row span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zut2-auf-row.minus span:last-child{color:var(--danger)}
.zut2-auf-row.total{color:var(--text);font-weight:600;border-top:1px solid var(--border);margin-top:3px;padding-top:3px}
.zut2-auf-row.total b{color:var(--accent)}
.zut2-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.zut2-hint{display:flex;gap:9px;align-items:flex-start;padding:11px 15px;margin:14px 20px 4px;background:var(--accent-soft);border:1px solid var(--accent-light);border-radius:9px;font-size:12.5px;color:var(--text-secondary)}
.zut2-matrix-wrap{flex:1;overflow:auto;padding:12px 20px 22px}
.zut2-matrix{border-collapse:collapse;font-size:13px;white-space:nowrap;width:100%}
.zut2-matrix th{position:sticky;top:0;background:var(--surface-2);border-bottom:1px solid var(--border);padding:9px 13px;font-size:11px;font-weight:600;color:var(--text-muted);text-align:right;z-index:1}
.zut2-matrix th.num,.zut2-matrix td.num,.zut2-total-col{width:1%;min-width:68px}
.zut2-matrix th.zut2-name-col{text-align:left}
.zut2-sub{font-weight:400;color:var(--text-faint);font-size:9px}
.zut2-matrix td{padding:8px 13px;border-bottom:1px solid var(--border);text-align:right;font-variant-numeric:tabular-nums}
.zut2-name-col{text-align:left!important;position:sticky;left:0;background:var(--surface);z-index:1;min-width:230px}
.zut2-matrix th.zut2-name-col{z-index:2}
.zut2-row:hover .zut2-name-col{background:var(--surface-2)}
.zut2-toggle{display:inline-block;width:16px;cursor:pointer;color:var(--text-muted);user-select:none;font-size:11px}
.zut2-leaf{display:inline-block;width:16px}
.zut2-ic{margin:0 5px}
.zut2-name{font-size:13px}
.zut2-ordner{font-weight:600;background:var(--surface-2)}
.zut2-ordner .zut2-name-col{background:var(--surface-2)}
.zut2-ordner.e0 .zut2-name{color:var(--accent)}
/* Verschachtelung sichtbar: Ordner tiefer = eigener Farbton + Führungslinie */
.zut2-ordner.e1{background:var(--accent-soft)}
.zut2-ordner.e1 .zut2-name-col{background:var(--accent-soft)}
.zut2-ordner.e1 .zut2-name{color:var(--text)}
.zut2-ordner.e2,.zut2-ordner.e3,.zut2-ordner.e4,.zut2-ordner.e5{background:var(--bg-accent)}
.zut2-ordner.e2 .zut2-name-col,.zut2-ordner.e3 .zut2-name-col,.zut2-ordner.e4 .zut2-name-col,.zut2-ordner.e5 .zut2-name-col{background:var(--bg-accent)}
.zut2-ordner.e2 .zut2-name,.zut2-ordner.e3 .zut2-name{color:var(--text-secondary)}
/* Führungslinie links in der Namensspalte nach Tiefe */
.zut2-row[data-ebene="1"] .zut2-name-col{box-shadow:inset 3px 0 0 var(--accent-light)}
.zut2-row[data-ebene="2"] .zut2-name-col{box-shadow:inset 3px 0 0 var(--border-strong)}
.zut2-row[data-ebene="3"] .zut2-name-col{box-shadow:inset 3px 0 0 var(--accent)}
.zut2-row[data-ebene="4"] .zut2-name-col,.zut2-row[data-ebene="5"] .zut2-name-col{box-shadow:inset 3px 0 0 var(--warning)}
/* Objektzeilen unter Unterordnern: Zahlen etwas zurückhaltender */
.zut2-objekt[data-ebene="3"] .zc-txt,.zut2-objekt[data-ebene="4"] .zc-txt,.zut2-objekt[data-ebene="5"] .zc-txt{opacity:.9}
.zut2-total-row{font-weight:700;background:var(--bg-accent)}
.zut2-total-row .zut2-name-col{background:var(--bg-accent)}
.zut2-total-cell,.zut2-total-col{font-weight:600}
.zut2-grouprow th{text-align:center;font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:6px 13px;background:var(--surface-2)}
.zut2-grouprow th.mitte{text-align:center}
.zut2-grouprow th.blk-nb{color:var(--success)}
.zut2-grouprow th.blk-neb{color:var(--warning)}
.zut2-grouprow th.blk-gr{color:var(--accent)}
.zut2-matrix .blk-sep{border-left:1.5px solid var(--border-strong)}
.zut2-matrix th.blk-nb{color:var(--success)}
.zut2-matrix th.blk-neb{color:var(--warning)}
.zut2-matrix th.blk-gr{color:var(--accent)}
/* Zuteilbare Zellen: grün = offen, grau/durchgestrichen = komplett zugeteilt */
.zut2-cell{position:relative}
.zut2-cell .zc-txt{position:relative;z-index:1}
.zut2-cell.has-val{cursor:pointer;background:var(--success-bg)}
.zut2-cell.has-val .zc-txt{color:var(--text-secondary)}
.zut2-cell.has-val::before{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--fill,0%);background:var(--border-strong);opacity:.45;z-index:0;transition:width .2s ease}
.zut2-cell.zc-mine::before{background:var(--accent-light);opacity:1}
.zut2-cell.zc-mine{box-shadow:inset 3px 0 0 var(--accent)}
.zut2-cell.zc-mine .zc-txt{color:var(--accent);font-weight:600}
.zut2-cell.zc-full{background:var(--bg-accent);cursor:default}
.zut2-cell.zc-full .zc-txt{color:var(--text-muted);text-decoration:line-through}
.zut2-cell.zc-full.zc-mine .zc-txt{color:var(--accent)}
.zut2-cell.has-val:not(.zc-full):hover{box-shadow:inset 0 0 0 2px var(--accent-light)}
.zut2-cell.zc-mine.has-val:not(.zc-full):hover{box-shadow:inset 3px 0 0 var(--accent),inset 0 0 0 2px var(--accent-light)}
/* Stift-Symbol für genaue Eingabe (nur Objektzellen) */
.zc-edit-btn{position:absolute;left:6px;top:50%;transform:translateY(-50%);opacity:.5;cursor:pointer;color:var(--accent);font-size:12px;line-height:1;z-index:3;transition:opacity .1s}
.zut2-row:hover .zc-edit-btn{opacity:.75}
.zut2-cell:hover .zc-edit-btn{opacity:1}
.zc-edit-btn:hover{opacity:1}
.zut2-cell.zc-editing .zc-edit-btn{display:none}
/* Inline-Eingabefeld: deckt die Zelle sauber ab (statt über dem Stift zu liegen) */
.zc-edit{position:absolute;inset:2px 3px;padding:0 8px;border:1px solid var(--accent);border-radius:6px;
  background:var(--surface);color:var(--text);font-size:12.5px;font-family:'DM Sans',system-ui,sans-serif;
  text-align:right;font-variant-numeric:tabular-nums;box-shadow:0 0 0 2px var(--accent-light);z-index:4}
.zc-edit:focus{outline:none}
.pensen-table tr .drag-handle{margin-right:2px}

/* Spaltenauswahl der Objektliste im PDF-Reiter */
.ol-spalten{padding:12px 14px;margin:2px 0 8px;background:var(--surface-2);
  border:1px solid var(--border);border-radius:10px}
.ol-sp-kopf{font-size:12.5px;font-weight:600;margin-bottom:10px}
.ol-sp-kopf span{display:block;font-weight:400;font-size:11.5px;color:var(--text-muted);margin-top:2px}
.ol-sp-gruppe{display:flex;gap:12px;align-items:flex-start;padding:6px 0;border-top:1px solid var(--border)}
.ol-sp-gruppe:first-of-type{border-top:none}
.ol-sp-g{min-width:170px;font-size:12px;font-weight:600;display:flex;align-items:center;gap:7px;cursor:pointer}
.ol-sp-cols{display:flex;flex-wrap:wrap;gap:5px 14px;flex:1}
.ol-sp-c{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:6px;cursor:pointer}
.ol-sp-fix{font-size:11.5px;color:var(--text-faint);background:var(--bg-accent);
  padding:1px 8px;border-radius:20px;align-self:center}

/* Titelbild-Upload im PDF-Reiter (unter dem Abschnitt „Titelblatt") */
.tb-upload{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 14px;
  margin:2px 0 8px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px}
.tb-thumb{width:104px;height:66px;object-fit:cover;border-radius:7px;border:1px solid var(--border);
  background:var(--bg-accent);flex-shrink:0}
.tb-thumb.tb-leer{display:flex;align-items:center;justify-content:center;font-size:11px;
  color:var(--text-faint)}
.tb-info{flex:1;min-width:150px}
.tb-name{font-size:13px;font-weight:600}
.tb-hint{font-size:11.5px;color:var(--text-muted);margin-top:2px}
.tb-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* Das native <input type=file> bringt einen grauen Systemknopf mit, der sich
   nicht gestalten laesst. Darum unsichtbar (aber bedienbar) machen und das
   zugehoerige <label> wie einen normalen Knopf auftreten lassen. */
.tb-file{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.tb-file:focus-visible + .tb-file-label{outline:2px solid var(--accent);outline-offset:2px}
/* line-height wie beim <button>, sonst steht das Label 2px hoeher daneben */
.tb-file-label{cursor:pointer;line-height:normal}
.tb-dateiname{font-size:11.5px;color:var(--text-muted);max-width:190px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* PDF-Export: Laderad während das PDF im Hintergrund erzeugt wird */
.pdf-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;
  justify-content:center;background:rgba(20,20,18,.32)}
.pdf-overlay[hidden]{display:none}
.pdf-overlay-box{background:var(--surface);border:1px solid var(--border);
  border-radius:12px;padding:26px 34px;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.18)}
.pdf-spinner{width:34px;height:34px;margin:0 auto 14px;border-radius:50%;
  border:3px solid var(--bg-accent);border-top-color:var(--accent);
  animation:pdf-spin .8s linear infinite}
@keyframes pdf-spin{to{transform:rotate(360deg)}}
.pdf-overlay-text{font-size:15px;font-weight:600;color:var(--text)}
.pdf-overlay-sub{font-size:12px;color:var(--text-muted);margin-top:4px}
.settings-row-disabled{opacity:.5}
.settings-row-disabled .switch{cursor:not-allowed}
.settings-row-warn{font-size:11.5px;color:var(--warning);margin-top:3px}

/* ===== Wochenplanung: Raster ===== */
.hinweis-box{padding:16px 18px;background:var(--accent-soft);border:1px solid var(--accent-light);border-radius:9px;font-size:12.5px;color:var(--text-secondary);line-height:1.55}
.wp-we-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);margin-right:8px;cursor:pointer}
.wp2-person-bar{display:flex;align-items:center;gap:8px;padding:10px 0;flex-wrap:wrap}
.wp2-person-label{font-size:11px;font-weight:600;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;margin-right:4px}
.wp2-person-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 11px 5px 7px;border:2px solid transparent;border-radius:20px;cursor:pointer;transition:all .12s;font-size:12px;font-weight:500;background:var(--bg-accent);color:var(--text-secondary)}
.wp2-person-pill:hover{border-color:currentColor}
.wp2-person-pill.active{background:var(--pill-bg,#E6F0FA);color:var(--pill-col,#15407A);border-color:var(--pill-col,#15407A)}
.wp2-person-avatar{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;flex-shrink:0}
.wp2-person-none{font-size:11.5px;color:var(--text-muted);padding:5px 10px;border:1px dashed var(--border);border-radius:20px;cursor:pointer;background:none}
.wp2-person-none.active{border-color:var(--danger);color:var(--danger);background:var(--danger-bg)}
/* Touren-Leiste (farbige Gruppen) */
.wp2-tour-bar{display:flex;align-items:center;gap:8px;padding:2px 0 6px;flex-wrap:wrap}
.wp2-tour-pill{display:inline-flex;align-items:center;border:2px solid transparent;border-radius:20px;background:var(--t-bg,#eee);overflow:hidden}
.wp2-tour-pill.active{border-color:var(--t-col,#333)}
.wp2-tour-select{display:inline-flex;align-items:center;gap:6px;padding:5px 4px 5px 10px;border:0;background:none;cursor:pointer;font-size:12px;font-weight:500;color:var(--t-col,#333)}
.wp2-tour-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.wp2-tour-ico{border:0;background:none;cursor:pointer;color:var(--t-col,#333);opacity:.55;font-size:11px;padding:5px 4px}
.wp2-tour-ico:hover{opacity:1}
.wp2-tour-add{border:1px dashed var(--border);border-radius:20px;background:none;cursor:pointer;font-size:11.5px;color:var(--text-muted);padding:5px 11px}
.wp2-tour-add:hover{border-color:var(--accent);color:var(--accent)}
.wp2-tour-editor{display:inline-flex;align-items:center;gap:8px;padding:4px 8px;background:var(--bg-accent);border:1px solid var(--border);border-radius:9px}
.wp2-tour-input{border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-size:12px;width:150px}
.wp2-tour-farben{display:inline-flex;gap:4px}
.wp2-farb-dot{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}
.wp2-farb-dot.sel{border-color:var(--text)}
.wp2-tour-hint{font-size:11.5px;color:var(--text-muted);margin:0 0 10px}
.wp2-cell-slot.tour{border:1px solid currentColor}

/* ===== Abo-Übersicht (nur Master) ===== */
.abo-badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap;border:1px solid transparent}
.abo-badge.zahlend{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}
.abo-badge.test{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-light)}
.abo-badge.kein{background:var(--bg-accent);color:var(--text-muted);border-color:var(--border-strong)}
.abo-badge.ablauf{background:var(--danger-bg);color:var(--danger);border-color:var(--warning-border)}
.abo-chip{display:inline-block;padding:1px 7px;margin:1px;border-radius:4px;background:var(--bg-accent);color:var(--text-secondary);font-size:10.5px}
.abo-offen{color:var(--danger);font-weight:600}
.abo-warn{color:var(--warning);font-weight:600;font-size:11px}
.abo-filter{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.abo-filter a{padding:5px 12px;border:1px solid var(--border);border-radius:20px;font-size:12px;color:var(--text-secondary);text-decoration:none}
.abo-filter a:hover{border-color:var(--border-strong)}
.abo-filter a.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}

/* ===== Grundriss-Editor ===== */
.gr-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.gr-status{font-size:12px;color:var(--text-muted);padding:3px 9px;background:var(--bg-accent);border-radius:6px}
.gr-hint{font-size:12.5px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-light);border-radius:8px;padding:8px 12px;margin-bottom:10px}
.gr-stage{border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--bg-accent);height:calc(100vh - 250px);min-height:420px}
.gr-stage svg{display:block;width:100%;height:100%;cursor:crosshair;touch-action:none;background:#fff}
.gr-panel{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding:10px 12px;background:var(--bg-accent);border:1px solid var(--border);border-radius:9px;font-size:12.5px}
.gr-check{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-secondary);white-space:nowrap}
.gr-panel select,.gr-panel input[type=text],.gr-panel input[type=number]{padding:5px 8px;border:1px solid var(--border);border-radius:6px;font-size:12.5px}
.wp2-capacity-wrap{display:flex;align-items:center;gap:16px;padding:9px 12px;background:var(--bg-accent);border:1px solid var(--border);border-radius:9px;overflow-x:auto;margin-bottom:12px}
.wp2-cap-item{display:flex;align-items:center;gap:7px;flex-shrink:0}
.wp2-cap-avatar{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:700;color:#fff;flex-shrink:0}
.wp2-cap-info{min-width:76px}
.wp2-cap-name{font-size:11px;font-weight:500;color:var(--text);white-space:nowrap}
.wp2-cap-nums{font-size:10px;color:var(--text-muted)}
.wp2-cap-bar{width:80px;height:7px;background:var(--border);border-radius:4px;overflow:hidden}
.wp2-cap-bar-fill{height:100%;border-radius:4px;transition:width .3s;background:var(--success)}
.wp2-cap-bar-fill.warn{background:var(--warning)}
.wp2-cap-bar-fill.full{background:var(--danger)}
.wp2-grid-wrap{overflow:auto;border:1px solid var(--border);border-radius:9px}
.wp2-grid{border-collapse:collapse;min-width:100%;table-layout:fixed}
.wp-col-obj{width:240px}
.wp-col-day{width:82px}
.wp-col-offen{width:46px}
.wp2-grid th,.wp2-grid td{border:1px solid var(--border)}
.wp2-grid thead th{background:var(--bg-accent);padding:7px 8px;font-size:11px;font-weight:600;color:var(--text-secondary);text-align:center;white-space:nowrap;position:sticky;top:0;z-index:2}
.wp2-grid thead th.obj-head{text-align:left;min-width:150px;max-width:170px;background:var(--surface);position:sticky;left:0;z-index:3}
.wp2-grid thead th.weekend{background:#f4f2ea}
.wp-th-lbl{font-size:10px;font-weight:400;color:var(--text-faint)}
.wp-th-offen{width:40px}
/* Tageslimit-Zeile (aktive Person) */
.wp-dl-row th{background:var(--surface);padding:2px 6px;font-weight:400;border-top:none}
.wp-dl-head{font-size:10px;color:var(--text-muted);text-transform:none;letter-spacing:0}
.wp-dl{font-size:10px;color:var(--text-faint)}
.wp-dl.used{color:var(--text-secondary)}
.wp-dl.over{color:var(--danger);font-weight:600}
/* Ordnerzeilen: weisse Zeilen mit sichtbarem Tagesraster, gleiche Hoehe wie Objektzeilen */
.wp-fold-cell{background:var(--surface);padding:0;line-height:0;cursor:pointer;user-select:none;position:sticky;left:0;z-index:1;border-left:3px solid var(--accent-light)}
.wp2-folder-row .wp2-day-cell{cursor:pointer}
.wp2-folder-row:hover td{background:var(--accent-soft)}
.wp-fold-inner{display:flex;align-items:center;gap:7px;min-height:53px;padding:7px 14px 7px 0;box-sizing:border-box;line-height:1.3}
.wp-fold-toggle{display:inline-block;width:16px;text-align:center;color:var(--text-secondary);font-size:12px;flex-shrink:0}
.wp-fold-icon{flex-shrink:0;font-size:14px}
.wp-fold-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.wp-fold-anz{font-size:11px;color:var(--text-faint);flex-shrink:0}
.wp2-obj-cell{background:var(--surface);padding:7px 10px;position:sticky;left:0;z-index:1;min-width:170px;max-width:200px;border-left:3px solid transparent}
.wp-todo .wp2-obj-cell{border-left-color:var(--warning-border)}
.wp-done .wp2-obj-cell{border-left-color:var(--success-border)}
.wp-done .wp2-obj-name{color:var(--text-secondary)}
.wp2-obj-name{font-size:13px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wp2-obj-meta{font-size:11px;color:var(--text-muted);margin-top:2px;display:flex;gap:7px}
.wp2-obj-meta .tag-int{color:var(--accent);font-weight:500}
/* Tageszellen: standardmässig weiss; sind alle Intervalle verteilt, beige */
.wp2-day-cell{width:74px;min-width:60px;text-align:center;vertical-align:middle;padding:5px 3px;cursor:pointer;transition:background .1s;background:var(--surface)}
.wp2-day-cell.weekend{background:#faf9f4}
.wp2-day-cell:hover{background:var(--accent-soft)}
.wp-done .wp2-day-cell{background:var(--bg-accent)}
.wp-done .wp2-day-cell:hover{background:var(--border)}
.wp2-cell-slot{display:inline-flex;align-items:center;justify-content:center;padding:2px 6px;margin:1px;border-radius:4px;font-size:10.5px;font-weight:700;cursor:pointer}
.wp2-offen-cell{text-align:center;font-size:11px;font-weight:600;color:var(--text-muted)}
.wp2-offen-cell.warn{color:var(--warning)}
.wp2-offen-cell.ok{color:var(--success)}
.wp-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(10px);background:var(--text);color:var(--bg);padding:9px 16px;border-radius:8px;font-size:12.5px;opacity:0;pointer-events:none;transition:all .2s;z-index:1000}
.wp-toast.show{opacity:.95;transform:translateX(-50%) translateY(0)}

/* IST/SOLL-Vergleich: Kennzahl-Karten */
.istsoll-cards{display:flex;gap:12px;flex-wrap:wrap}
.istsoll-card{flex:1;min-width:150px;border:1px solid var(--border);border-radius:10px;padding:13px 15px;background:var(--surface)}
.istsoll-card .k-lbl{font-size:10px;color:var(--text-faint);letter-spacing:.07em;text-transform:uppercase;margin-bottom:6px}
.istsoll-card .k-val{font-family:'Fraunces',Georgia,serif;font-size:25px;color:var(--accent);line-height:1.1}
.istsoll-card .k-sub{font-size:11px;color:var(--text-muted);margin-top:4px}
.istsoll-card.neg{border-color:var(--danger-border);background:var(--danger-bg)}
.istsoll-card.neg .k-val{color:var(--danger)}
.istsoll-card.pos{border-color:var(--success-border);background:var(--success-bg)}
.istsoll-card.pos .k-val{color:var(--success)}

/* ZUTEILUNG */
.zuteilung-layout{flex:1;display:flex;overflow:hidden}
.zut-left{width:340px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}
.zut-left-header{padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.zut-left-title{font-size:11px;font-weight:600;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;margin-bottom:3px}
.zut-left-desc{font-size:12px;color:var(--text-muted)}
.zut-left-body{flex:1;overflow-y:auto;padding:10px}
.zut-pensum-item{padding:14px;border:1px solid var(--border);border-radius:9px;margin-bottom:8px;cursor:pointer;transition:all .12s;background:var(--surface)}
.zut-pensum-item:hover{border-color:var(--border-strong);background:var(--surface-2)}
.zut-pensum-item.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.zut-pensum-head{display:flex;align-items:center;gap:11px;margin-bottom:10px}
.zut-pensum-info{flex:1;min-width:0}
.zut-pensum-name{font-size:13.5px;font-weight:500;line-height:1.2}
.zut-pensum-meta{font-size:11px;color:var(--text-muted);margin-top:1px}
.zut-pensum-status{font-family:'DM Mono',monospace;font-size:11px;font-weight:500;text-align:right}
.zut-pensum-status.ok{color:var(--success)}
.zut-pensum-status.warning{color:var(--warning)}
.zut-pensum-status.danger{color:var(--danger)}
.zut-pensum-bar{height:5px;background:var(--bg-accent);border-radius:3px;overflow:hidden;margin-bottom:5px}
.zut-pensum-bar-fill{height:100%;background:var(--accent);border-radius:3px}
.zut-pensum-bar-fill.success{background:var(--success)}
.zut-pensum-bar-fill.warning{background:var(--warning)}
.zut-pensum-bar-fill.danger{background:var(--danger)}
.zut-pensum-hours{display:flex;justify-content:space-between;font-size:10.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.zut-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.zut-header{padding:14px 20px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:14px}
.zut-header-info{flex:1;min-width:0}
.zut-header-title{font-family:'Fraunces',Georgia,serif;font-size:17px;font-weight:500;letter-spacing:-.005em}
.zut-header-meta{font-size:12px;color:var(--text-muted);margin-top:2px}
.zut-body{flex:1;overflow:auto;padding:20px}
.zut-section-title{font-size:11px;font-weight:600;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;padding-bottom:7px;border-bottom:1px solid var(--border);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}
.zut-section-title-count{font-family:'DM Mono',monospace;color:var(--text-muted);font-weight:500;text-transform:none;letter-spacing:0}
.zut-assignment-card{background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:12px 14px;margin-bottom:8px;display:flex;align-items:center;gap:12px}
.zut-assignment-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:7px;background:var(--accent-light);color:var(--accent);flex-shrink:0;font-size:14px}
.zut-assignment-info{flex:1;min-width:0}
.zut-assignment-name{font-size:13.5px;font-weight:500}
.zut-assignment-path{font-family:'DM Mono',monospace;font-size:10.5px;color:var(--text-faint);margin-top:1px}
.zut-assignment-time{font-family:'DM Mono',monospace;font-size:13px;font-weight:500;color:var(--accent);text-align:right}
.zut-assignment-time-lbl{font-size:10px;color:var(--text-faint);letter-spacing:.04em;text-transform:uppercase;margin-top:1px;text-align:right}
.zut-unassigned-card{background:var(--bg-accent);border:1px dashed var(--border-strong);border-radius:9px;padding:12px 14px;margin-bottom:8px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:all .12s}
.zut-unassigned-card:hover{background:var(--accent-soft);border-color:var(--accent);border-style:solid}
.zut-unassigned-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:7px;background:var(--bg);color:var(--text-muted);flex-shrink:0;font-size:14px}

/* PDF SETTINGS */
.pdf-layout{flex:1;display:flex;overflow:hidden}
.pdf-config{flex:1;overflow:auto;padding:24px 28px;min-width:0}
.pdf-preview-pane{width:380px;border-left:1px solid var(--border);background:var(--surface-2);overflow:hidden;display:flex;flex-direction:column;flex-shrink:0}
.pdf-preview-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:var(--surface)}
.pdf-preview-title{font-size:11px;font-weight:600;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase}
.pdf-preview-body{flex:1;overflow:auto;padding:18px;display:flex;justify-content:center}
.pdf-preview-doc{width:100%;max-width:300px;background:white;border:1px solid var(--border);box-shadow:0 4px 20px rgba(0,0,0,.08);padding:20px;font-size:9px;line-height:1.5;color:#222;border-radius:3px}
.pdf-prev-h1{font-family:'Fraunces',Georgia,serif;font-size:16px;font-weight:500;margin-bottom:3px;color:#15407A}
.pdf-prev-meta{font-size:8px;color:#777;margin-bottom:14px;font-family:'DM Mono',monospace}
.pdf-prev-section{margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #eee}
.pdf-prev-section:last-child{border-bottom:none}
.pdf-prev-h2{font-family:'Fraunces',Georgia,serif;font-size:11px;font-weight:500;color:#15407A;margin-bottom:5px}
.pdf-prev-bar{height:4px;background:#eee;border-radius:2px;margin:6px 0}
.pdf-prev-mini-table{width:100%;border-collapse:collapse;font-size:7px}
.pdf-prev-mini-table td{padding:2px 3px;border-bottom:1px solid #f0f0f0}
.pdf-template-bar{display:flex;align-items:center;justify-content:space-between;background:var(--accent-soft);border:1px solid var(--accent-light);border-radius:10px;padding:12px 16px;margin-bottom:20px;gap:14px}
.pdf-template-info{flex:1;min-width:0}
.pdf-template-name{font-size:13px;font-weight:500}
.pdf-template-desc{font-size:11.5px;color:var(--text-muted);margin-top:1px}
.pdf-template-select{padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:12px;min-width:240px;font-family:inherit;color:var(--text)}
.pdf-section-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:12px;overflow:hidden;transition:all .15s}
.pdf-section-head{padding:14px 18px;display:flex;align-items:center;gap:14px;cursor:pointer;transition:background .1s}
.pdf-section-head:hover{background:var(--surface-2)}
.pdf-section-level{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;background:var(--accent-light);color:var(--accent);font-family:'DM Mono',monospace;font-size:11px;font-weight:600;flex-shrink:0}
.pdf-section-info{flex:1;min-width:0}
.pdf-section-name{font-size:13.5px;font-weight:500;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pdf-section-desc{font-size:11.5px;color:var(--text-muted);margin-top:2px;line-height:1.4}
.pdf-section-options{padding:0 18px 14px;border-top:1px solid var(--border)}
.pdf-section-card.collapsed .pdf-section-options{display:none}
.pdf-option-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.pdf-option-row:last-child{border-bottom:none}
.pdf-option-info{flex:1;min-width:0}
.pdf-option-name{font-size:13px;font-weight:500}
.pdf-option-desc{font-size:11.5px;color:var(--text-muted);margin-top:1px}

/* SWITCH */
.switch{position:relative;width:38px;height:22px;background:var(--border-strong);border-radius:11px;cursor:pointer;transition:background .15s;flex-shrink:0}
.switch::after{content:'';position:absolute;left:2px;top:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.switch.on{background:var(--accent)}
.switch.on::after{transform:translateX(16px)}
.switch.small{width:32px;height:18px}
.switch.small::after{width:14px;height:14px}
.switch.small.on::after{transform:translateX(14px)}

/* STAMMDATEN */
.stammdaten-layout{display:flex;gap:24px}
.std-sidebar{width:200px;flex-shrink:0}
.std-nav-item{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:7px;font-size:13px;color:var(--text-secondary);cursor:pointer;transition:all .12s;margin-bottom:2px}
.std-nav-item:hover{background:var(--bg-accent);color:var(--text)}
.std-nav-item.active{background:var(--surface);color:var(--accent);font-weight:500;box-shadow:var(--shadow-sm)}
.std-nav-item svg{width:15px;height:15px;color:var(--text-muted);flex-shrink:0}
.std-nav-item.active svg{color:var(--accent)}
.std-content{flex:1;min-width:0}
.data-table{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.data-table table{width:100%;border-collapse:collapse;font-size:13px}
.data-table th{text-align:left;font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;padding:11px 14px;background:var(--surface-2);border-bottom:1px solid var(--border)}
.data-table th.numeric{text-align:right}
.data-table th.center{text-align:center}
.data-table td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
.data-table tr:last-child td{border-bottom:none}
.data-table tr:hover td{background:var(--surface-2)}
.data-table td.numeric{text-align:right;font-family:'DM Mono',monospace}
.data-table td.center{text-align:center}
.data-table .actions{display:flex;gap:4px;justify-content:flex-end}
.data-table .actions .btn{padding:4px 7px;font-size:11px}
.tag{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:10px;font-size:10.5px;font-weight:500;letter-spacing:.02em}
.tag.kuerzel{background:var(--accent-light);color:var(--accent);font-family:'DM Mono',monospace}
.tag.green{background:var(--success-bg);color:var(--success);border:1px solid var(--success-border)}
.tag.amber{background:var(--warning-bg);color:var(--warning);border:1px solid var(--warning-border)}
.check-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%}
.check-icon.yes{background:var(--success-bg);color:var(--success)}
.check-icon.no{background:transparent;color:var(--text-faint)}
.check-icon svg{width:11px;height:11px}

/* USERS */
.user-row{display:flex;align-items:center;gap:11px}
.user-row .avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#5A8FCF,#15407A);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:11px;flex-shrink:0}
.user-info-cell{display:flex;flex-direction:column;line-height:1.3}
.user-info-cell .n{font-weight:500;font-size:13px}
.user-info-cell .e{font-size:11.5px;color:var(--text-muted)}
.role-tag{display:inline-flex;padding:3px 9px;border-radius:11px;font-size:11px;font-weight:500;letter-spacing:.02em}
.role-tag.admin{background:#EAE0F4;color:#5B2A85;border:1px solid #C7A8DD}
.role-tag.mitarbeiter{background:var(--accent-light);color:var(--accent);border:1px solid var(--border)}
.role-tag.kunde{background:var(--success-bg);color:var(--success);border:1px solid var(--success-border)}
[data-theme="dark"] .role-tag.admin{background:#2A1B3A;color:#C7A8DD;border-color:#3F2A55}
.status-dot{display:inline-flex;align-items:center;gap:6px;font-size:12px}
.status-dot::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--text-faint)}
.status-dot.online::before{background:var(--success)}

/* SETTINGS */
.settings-section{margin-bottom:28px}
.settings-title{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500;margin-bottom:3px}
.settings-desc{font-size:13px;color:var(--text-muted);margin-bottom:14px}
.settings-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.settings-row{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);gap:18px}
.settings-row:last-child{border-bottom:none}
.settings-row-info{flex:1;min-width:0}
.settings-row-label{font-size:13.5px;font-weight:500}
.settings-row-desc{font-size:12px;color:var(--text-muted);margin-top:2px;line-height:1.4}
.theme-toggle{display:flex;background:var(--bg-accent);border-radius:7px;padding:2px;gap:2px}
.theme-toggle button{display:flex;align-items:center;gap:6px;padding:6px 11px;border-radius:5px;font-size:12px;font-weight:500;color:var(--text-muted);transition:all .12s}
.theme-toggle button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}
.theme-toggle svg{width:13px;height:13px}

/* MODALS */
.overlay{display:none;position:fixed;inset:0;background:rgba(15,18,12,.45);z-index:200;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px)}
.overlay.open{display:flex}
.modal{background:var(--surface);border-radius:12px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden;animation:modalIn .18s ease-out}
@keyframes modalIn{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
.modal-header{padding:18px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;justify-content:space-between;flex-shrink:0}
.modal-header-left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.modal-art-badge{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;font-size:16px;flex-shrink:0}
.modal-title{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500;letter-spacing:-.01em}
.modal-subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}
.modal-body{flex:1;overflow-y:auto;padding:18px 22px}
.modal-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:9px;flex-shrink:0;background:var(--surface-2)}
.modal-footer-left{font-size:12px;color:var(--text-muted)}
.modal-footer-right{display:flex;gap:8px}
.form-section{margin-bottom:20px}
.form-section:last-child{margin-bottom:0}
.form-section-title{font-size:10.5px;font-weight:600;color:var(--text-faint);letter-spacing:.1em;text-transform:uppercase;padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:12px}
.form-section-title.nb{color:var(--success);background:var(--success-bg);margin:-3px -22px 12px;padding:6px 22px;border-bottom-color:var(--success-border)}
.form-section-title.neb{color:var(--warning);background:var(--warning-bg);margin:-3px -22px 12px;padding:6px 22px;border-bottom-color:var(--warning-border)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px}
.grid-4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:11px}
.field-calc{width:100%;padding:9px 12px;border:1px dashed var(--border-strong);border-radius:7px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text-muted);background:var(--bg-accent);font-style:italic}

/* Objekttyp-Dropdown mit Objektfaktor (Bezeichnung links, Faktor rechtsbündig grau) */
.fsel-native{display:none}
.fsel{position:relative}
.fsel-btn{width:100%;display:flex;align-items:center;gap:8px;padding:9px 34px 9px 12px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:13.5px;text-align:left;cursor:pointer;transition:all .12s}
.fsel-btn::after{content:'';position:absolute;right:13px;top:50%;width:7px;height:7px;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);transform:translateY(-70%) rotate(45deg)}
.fsel.open .fsel-btn,.fsel-btn:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
.fsel-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fsel-placeholder{color:var(--text-muted)}
.fsel-f{margin-left:auto;flex-shrink:0;color:var(--text-muted);font-size:12.5px;font-variant-numeric:tabular-nums}
.fsel-menu{display:none;position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:50;background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;box-shadow:var(--shadow-lg);padding:4px}
.fsel.open .fsel-menu{display:block}
.fsel-search{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:13px;margin-bottom:4px}
.fsel-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
.fsel-list{max-height:240px;overflow-y:auto}
.fsel-opt{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13.5px;color:var(--text)}
.fsel-opt:hover,.fsel-opt.active{background:var(--bg-accent)}
.fsel-opt.sel{background:var(--accent-light)}
/* Objekttyp-Dropdown: Basisname oben, Zusatzbezeichnung (Klammerinhalt) grau darunter */
.fsel-opt .fsel-l{display:flex;flex-direction:column;align-items:flex-start;gap:1px;white-space:normal}
.fsel-l-main{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fsel-sub{font-size:11px;color:var(--text-muted);line-height:1.2}
/* nach oben aufklappen, wenn unten zu wenig Platz ist (z. B. Grundreinigungs-Felder) */
.fsel.fsel-up .fsel-menu{top:auto;bottom:calc(100% + 4px)}
/* gesperrtes Dropdown (z. B. GR bei Lichtschacht) */
.fsel.fsel-disabled{opacity:.5;pointer-events:none}
/* Drag & Drop zum Sortieren (Objekte/Ordner) */
.drag-handle{cursor:grab;color:var(--text-faint);user-select:none;font-size:11px;padding-right:2px}
.drag-handle:active{cursor:grabbing}
.drag-ghost{opacity:.5;background:var(--bg-accent)}
/* Beim Ziehen: Baum-Ordner als Drop-Ziele sichtbar/treffbar machen */
body.dnd-aktiv .tree-children{min-height:10px;border-left:2px dashed var(--accent-light);margin-left:8px}
body.dnd-aktiv .tree-row{outline:1px dashed transparent}
body.dnd-aktiv .tree-children .sortable-ghost{height:20px;background:var(--accent-light);border-radius:4px}
/* Objekt-Popup: Anhänge rechts daneben (Hauptpopup bleibt mittig & gleich gross) */
/* Haupt-Formular + Anhänge nebeneinander wenn Platz, sonst umbrechen (kein fixer Breakpoint) */
/* Hauptpopup zentriert im Bildschirm, Anhänge-Panel rechts daneben (nicht die ganze
   Gruppe zusammen zentriert). Grid: leere Spalte links = gleich breit wie Anhänge rechts. */
.obj-modal-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,780px) minmax(0,1fr);gap:16px;align-items:start;margin:auto;width:100%;max-width:1460px}
.obj-modal-wrap > .obj-haupt{grid-column:2;width:100%;max-width:780px}
.obj-anhaenge{grid-column:3;width:100%;max-width:340px;min-width:0;align-self:start}
@media (max-width:1100px){
  .obj-modal-wrap{grid-template-columns:1fr;justify-items:center}
  .obj-modal-wrap > .obj-haupt,.obj-anhaenge{grid-column:1}
}

/* Ordner-Zeile in der gemeinsamen Objektliste: gleiche Spalten/Höhe wie eine
   Objektzeile, nur andere Hintergrundfarbe + Ordner-Symbol. */
.objects tbody tr.folder-row>td{background:var(--accent-soft)}
.objects tbody tr.folder-row:hover>td{background:var(--accent-light)}
.objects tbody tr.folder-row .c-name-main{font-weight:600}
.objects tbody tr.folder-row .folder-ic{font-size:14px}
.objects tbody tr.folder-row .c-action{white-space:nowrap}
.objects tbody tr.folder-row .c-action form{margin:0}
.objects tbody tr.folder-row .c-action .c-dup-btn{font-size:12px;vertical-align:middle}

/* Innere Reiter des Berechnungsmoduls */
.btab-content{display:none}
.btab-content.active{display:block}

/* Berechnungsstand-Leiste (Versionen) */
.stand-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:9px 12px;margin-bottom:16px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}
.stand-bar-left{display:flex;align-items:center;gap:9px;flex-wrap:wrap;color:var(--text-muted)}
.stand-bar-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.stand-bar-select{padding:5px 9px;border:1px solid var(--border);border-radius:7px;font-size:12.5px;background:var(--surface);color:var(--text);min-width:240px}
.stand-frozen{font-size:11.5px;color:var(--warning);background:var(--warning-bg);border:1px solid var(--warning-border);padding:2px 9px;border-radius:11px;font-weight:500}
.stand-bar-right{display:flex;align-items:center;gap:7px}

/* Kontakte-Reiter: Kartenraster */
.kontakt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.kontakt-card{position:relative;border:1px solid var(--border);border-radius:12px;padding:16px;background:var(--surface)}
.kontakt-card.haupt{border-color:var(--accent-light);box-shadow:inset 0 0 0 1px var(--accent-light)}
.kontakt-haupt-tag{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:600;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-light);padding:2px 7px;border-radius:11px}
.kontakt-card-head{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.kontakt-avatar{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;color:#fff;background:linear-gradient(135deg,var(--accent),#0F1B2E);flex-shrink:0}
.kontakt-rolle{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600}
.kontakt-name{font-size:14.5px;font-weight:600}
.kontakt-info{display:flex;flex-direction:column;gap:6px}
.kontakt-line{font-size:12.5px;color:var(--text-secondary);display:flex;align-items:center;gap:7px}
.kontakt-line a{color:var(--accent);text-decoration:none}
.kontakt-actions{display:flex;gap:6px;margin-top:12px;padding-top:11px;border-top:1px solid var(--border)}

/* Gesperrtes Feld (z.B. gespiegelter Spezialarbeit-Block bei Periode „Jahr") */
.field.feld-gesperrt{opacity:.55}

/* Aktive Zeile bei Pfeiltasten-Navigation in der Objektliste (leicht blau) */
.objects tbody tr.obj-row.row-active td{background:var(--accent-light)}
.objects tbody tr.folder-row.row-active>td{background:var(--accent-light);box-shadow:inset 0 1px 0 0 var(--accent),inset 0 -1px 0 0 var(--accent)}
.objects tbody tr.folder-row.row-active>td:first-child{box-shadow:inset 0 1px 0 0 var(--accent),inset 0 -1px 0 0 var(--accent),inset 1px 0 0 0 var(--accent)}
.objects tbody tr.folder-row.row-active>td:last-child{box-shadow:inset 0 1px 0 0 var(--accent),inset 0 -1px 0 0 var(--accent),inset -1px 0 0 0 var(--accent)}

/* Pflichtfelder im Objekt-Popup dezent hervorheben (leicht getönter Blauton) */
.obj-haupt .field-required{
  background:var(--accent-light);
  box-shadow:inset 0 0 0 1px var(--accent);
  border-radius:8px;
  padding:8px 10px;
  margin:-2px 0;
}

/* Kompakte Dichte fürs Objekt-Formular: möglichst alles ohne Scrollen sichtbar */
.modal-compact .modal-header{padding:12px 18px}
.modal-compact .modal-title{font-size:16px}
.modal-compact .modal-body{padding:12px 18px}
.modal-compact .modal-footer{padding:9px 18px}
.modal-compact .form-section{margin-bottom:10px}
.modal-compact .form-section-title{font-size:10px;padding-bottom:3px;margin-bottom:7px}
.modal-compact .form-section-title.nb,.modal-compact .form-section-title.neb{margin:-1px -18px 7px;padding:4px 18px}
.modal-compact .grid-2{grid-template-columns:repeat(3,1fr);gap:6px 10px}
/* Aussenanlage-Grundangaben: oberste Zeile volle Breite (Objekttyp breit, Aussenanlagetyp normal),
   Zusatzbezeichnung volle Breite, Anzahl schmal */
.modal-compact .grid-2.ga-aussen{grid-template-columns:2fr 1fr}
.grid-2.ga-aussen .field:has(#id_zusatz){grid-column:1 / -1}
.grid-2.ga-aussen .field:has(#id_anzahl){grid-column:1 / -1;max-width:150px}
.modal-compact .field{margin-bottom:7px}
.modal-compact .field label{margin-bottom:2px;font-size:10px}
.modal-compact .field .input,.modal-compact .field input,.modal-compact .field select,
.modal-compact .field textarea,.modal-compact .fsel-btn{padding:5px 9px;font-size:12.5px}
.modal-compact .fsel-btn{padding:5px 30px 5px 9px}
.modal-compact .field textarea{min-height:44px}
.modal-compact .field .field-calc{padding:5px 9px;font-size:12.5px;line-height:16px}

/* Normalbetrieb / Nebenbetrieb nebeneinander als farbige Panels (wie Mockup) */
.nb-neb{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.nbp{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface)}
.nbp .form-section-title{margin:0;border-radius:0}
.modal-compact .nbp .form-section-title.nb,.modal-compact .nbp .form-section-title.neb{margin:0;padding:5px 11px}
.nbp-fields{display:flex;align-items:flex-start;gap:12px;padding:10px}
.nbp-fields .field{margin-bottom:0}
.nbp-fields .iv-split{flex:0 0 auto}
.nbp-fields .field:not(.iv-split){flex:0 0 auto}
.nbp input[type=number]{max-width:96px}
@media (max-width:560px){.nb-neb{grid-template-columns:1fr}}

/* Intervall aufgeteilt: Zahl × Einheit (nur gültige Kombinationen) */
.iv-native{display:none}
.iv-row{display:flex;align-items:center;gap:6px}
.iv-zahl{flex:0 0 62px}
.iv-einheit{flex:0 0 86px}
.iv-x{flex:0 0 auto;color:var(--text-muted);font-size:12px}

/* Mehrfach-Auswahl (Korrektur/Zuschlag) mit Wert rechts grau */
.mksel-native{display:none}
.mksel{position:relative;min-width:0}
/* Grid-Felder dürfen schrumpfen → Spaltenbreite bleibt fix, egal wie viel gewählt ist */
.grid-2 .field,.grid-3 .field,.grid-4 .field{min-width:0}
.mksel-btn{width:100%;display:flex;align-items:center;gap:8px;padding:9px 30px 9px 12px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:13.5px;text-align:left;cursor:pointer}
.mksel-btn::after{content:'';position:absolute;right:12px;top:50%;width:7px;height:7px;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);transform:translateY(-70%) rotate(45deg)}
.mksel.open .mksel-btn,.mksel-btn:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
.mksel-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mksel-txt.placeholder{color:var(--text-muted)}
.mksel-sum{flex:0 0 auto;color:var(--text-muted);font-size:12.5px;font-variant-numeric:tabular-nums}
.mksel-menu{display:none;position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:50;background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;box-shadow:var(--shadow-lg);max-height:260px;overflow-y:auto;padding:4px}
.mksel.open .mksel-menu{display:block}
.mksel-opt{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:6px;cursor:pointer;font-size:13.5px;color:var(--text)}
.mksel-opt:hover{background:var(--bg-accent)}
.mksel-opt input{width:15px;height:15px;flex:0 0 auto;accent-color:var(--accent);pointer-events:none}
.mksel-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mksel-v{flex:0 0 auto;color:var(--text-muted);font-size:12.5px;font-variant-numeric:tabular-nums}
.modal-compact .field .mksel-btn{padding:5px 28px 5px 9px;font-size:12.5px}

/* Info-Hinweis (z. B. 52-Wochen-Regel) */
.form-alert{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:8px 11px;border-radius:8px;background:var(--accent-soft);border:1px solid var(--accent-light);color:var(--text-secondary);font-size:11.5px}
.form-alert svg{width:15px;height:15px;flex-shrink:0;color:var(--accent);margin-top:1px}
.check-row{display:flex;align-items:center;gap:9px;padding-top:24px}
.check-row input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--accent)}
.check-row label{font-size:13px;color:var(--text-secondary);cursor:pointer}
.alert{display:flex;align-items:flex-start;gap:9px;padding:9px 12px;border-radius:7px;font-size:12px;margin-top:11px}
.alert.info{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-light)}
.alert svg{width:14px;height:14px;flex-shrink:0;margin-top:1px}

/* PLACEHOLDER */
.placeholder-module{flex:1;display:flex;align-items:center;justify-content:center;padding:40px}
.placeholder-card{text-align:center;max-width:480px;padding:36px;background:var(--surface);border:1px solid var(--border);border-radius:14px}
.placeholder-icon{width:56px;height:56px;border-radius:14px;background:var(--accent-light);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:var(--accent)}
.placeholder-icon svg{width:26px;height:26px}
.placeholder-title{font-family:'Fraunces',Georgia,serif;font-size:22px;font-weight:500;margin-bottom:5px;letter-spacing:-.01em}
.placeholder-text{font-size:13px;color:var(--text-secondary);line-height:1.6}
.placeholder-tag{display:inline-flex;margin-top:18px;padding:5px 12px;border-radius:14px;background:var(--warning-bg);color:var(--warning);font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--warning-border)}

/* MOCKUP BANNER */
.mockup-banner{position:fixed;bottom:14px;right:14px;z-index:90;background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:9px 13px;font-size:11px;color:var(--text-muted);box-shadow:var(--shadow);display:flex;align-items:center;gap:7px}
.mockup-banner .dot{width:6px;height:6px;border-radius:50%;background:var(--warning);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.mockup-banner strong{color:var(--text);font-weight:500}

/* CHECKBOXES in table */
.objects .c-check-row{width:34px;text-align:center;padding:0!important}
.objects .c-check-row input[type=checkbox]{cursor:pointer;accent-color:var(--accent);width:14px;height:14px;vertical-align:middle}
table.objects tbody tr.row-selected td{background:var(--accent-soft)!important}
table.objects tbody tr.row-selected:hover td{background:var(--accent-light)!important}
.th-sub.checkall{text-align:center;padding:7px 0!important}
.th-sub.checkall input[type=checkbox]{cursor:pointer;accent-color:var(--accent);width:14px;height:14px;vertical-align:middle}

/* BULK ACTION BAR */
.bulk-bar{
  position:sticky;bottom:0;left:0;right:0;z-index:10;
  background:var(--text);color:var(--surface);
  border-radius:10px;padding:11px 14px 11px 18px;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin-top:14px;
  box-shadow:0 8px 24px rgba(20,18,12,.18);
  animation:bulkIn .18s ease-out;
}
@keyframes bulkIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.bulk-bar-count{font-size:13px;font-weight:500;display:flex;align-items:center;gap:9px}
.bulk-bar-count-num{font-family:'DM Mono',monospace;background:rgba(255,255,255,.14);padding:2px 9px;border-radius:11px;font-size:12px}
.bulk-bar-divider{width:1px;height:18px;background:rgba(255,255,255,.18)}
.bulk-bar-actions{display:flex;gap:5px;flex-wrap:wrap}
.bulk-bar .btn{background:rgba(255,255,255,.08);color:var(--surface);border-color:transparent;font-size:12px;padding:6px 11px}
.bulk-bar .btn:hover{background:rgba(255,255,255,.14)}
.bulk-bar .btn.danger{color:#FF9A9A;background:rgba(255,154,154,.08)}
.bulk-bar .btn.danger:hover{background:rgba(255,154,154,.16)}
.bulk-bar-close{margin-left:auto;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;color:rgba(255,255,255,.6);transition:all .12s}
.bulk-bar-close:hover{background:rgba(255,255,255,.08);color:var(--surface)}
.bulk-bar-close svg{width:14px;height:14px}

/* CSV UPLOAD */
.upload-zone{border:2px dashed var(--border-strong);border-radius:10px;padding:32px 20px;text-align:center;background:var(--surface-2);transition:all .12s;cursor:pointer}
.upload-zone:hover{border-color:var(--accent);background:var(--accent-soft)}
.upload-zone.has-file{border-style:solid;border-color:var(--success);background:var(--success-bg)}
.upload-icon{width:46px;height:46px;border-radius:50%;background:var(--accent-light);color:var(--accent);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.upload-icon svg{width:22px;height:22px}
.upload-zone.has-file .upload-icon{background:var(--success-border);color:var(--success)}
.upload-title{font-size:14px;font-weight:500;margin-bottom:5px}
.upload-desc{font-size:12px;color:var(--text-muted);line-height:1.5}
.upload-link{color:var(--accent);font-weight:500;text-decoration:underline}

.csv-preview{margin-top:18px;border:1px solid var(--border);border-radius:9px;overflow:hidden}
.csv-preview-header{padding:10px 14px;background:var(--surface-2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:12px}
.csv-preview-header-info{color:var(--text-secondary)}
.csv-preview-status-ok{color:var(--success);font-family:'DM Mono',monospace;font-size:11px}
.csv-preview-status-warn{color:var(--warning);font-family:'DM Mono',monospace;font-size:11px}
.csv-preview-table{overflow-x:auto;max-height:240px;overflow-y:auto}
.csv-preview-table table{width:100%;border-collapse:collapse;font-size:11px;min-width:600px}
.csv-preview-table th{position:sticky;top:0;background:var(--surface-2);font-weight:500;padding:7px 10px;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:1px solid var(--border)}
.csv-preview-table td{padding:6px 10px;border-bottom:1px solid var(--border);font-family:'DM Mono',monospace;font-size:11px;color:var(--text-secondary)}
.csv-preview-table tr.invalid td{background:var(--danger-bg)}
.csv-preview-table tr.invalid td:first-child{color:var(--danger);font-weight:500}

.csv-template-row{display:flex;align-items:center;gap:11px;padding:13px 16px;background:var(--accent-soft);border:1px solid var(--accent-light);border-radius:9px;margin-bottom:14px}
.csv-template-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:9px;background:var(--surface);color:var(--accent);flex-shrink:0}
.csv-template-icon svg{width:18px;height:18px}
.csv-template-info{flex:1;min-width:0}
.csv-template-name{font-size:13px;font-weight:500}
.csv-template-meta{font-size:11.5px;color:var(--text-muted);margin-top:1px}

/* INHERITANCE BANNER */
.inherit-banner{display:flex;align-items:flex-start;gap:11px;background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:9px;padding:13px 16px;margin-top:14px}
.inherit-banner-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;background:var(--surface);color:var(--warning);flex-shrink:0}
.inherit-banner-icon svg{width:15px;height:15px}
.inherit-banner-content{flex:1;min-width:0}
.inherit-banner-title{font-size:13.5px;font-weight:500;color:var(--warning);margin-bottom:3px}
.inherit-banner-desc{font-size:12px;color:var(--text-secondary);line-height:1.5}

.inherit-option{display:flex;gap:11px;padding:14px;border:1px solid var(--border);border-radius:9px;cursor:pointer;transition:all .12s;margin-bottom:8px}
.inherit-option:hover{border-color:var(--border-strong);background:var(--surface-2)}
.inherit-option.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.inherit-option-radio{width:18px;height:18px;border:2px solid var(--border-strong);border-radius:50%;flex-shrink:0;margin-top:2px;position:relative;transition:all .12s}
.inherit-option.selected .inherit-option-radio{border-color:var(--accent)}
.inherit-option.selected .inherit-option-radio::after{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--accent)}
.inherit-option-info{flex:1;min-width:0}
.inherit-option-title{font-size:13.5px;font-weight:500}
.inherit-option-desc{font-size:12px;color:var(--text-muted);margin-top:2px;line-height:1.4}
.inherit-option-count{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted);background:var(--bg-accent);padding:2px 8px;border-radius:4px;margin-top:6px;display:inline-block}
.inherit-option.selected .inherit-option-count{background:var(--accent-light);color:var(--accent)}

::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:5px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}

@media(max-width:900px){.dashboard-grid{grid-template-columns:1fr 1fr}.stammdaten-layout{flex-direction:column}.std-sidebar{width:100%}}
/* ========== WOCHENPLANUNG ========== */
.wp-header{padding:16px 24px 0;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}
.wp-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:14px}
.wp-header-left{flex:1;min-width:0}
.wp-id-row{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
.wp-import-pill{font-family:'DM Mono',monospace;font-size:11px;color:var(--success);background:var(--success-bg);padding:2px 8px;border-radius:5px;font-weight:500;letter-spacing:.04em;display:inline-flex;align-items:center;gap:5px}
.wp-import-pill svg{width:11px;height:11px}
.wp-name{font-family:'Fraunces',Georgia,serif;font-size:24px;font-weight:500;letter-spacing:-.015em;line-height:1.2}
.wp-meta{font-size:12px;color:var(--text-muted);margin-top:4px}
.wp-actions{display:flex;gap:7px;align-items:center;flex-shrink:0}
.wp-actions select{padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:12px;color:var(--text);font-family:inherit}

.wp-toolbar{display:flex;align-items:center;gap:8px;padding:11px 24px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}
.wp-toolbar-divider{width:1px;height:18px;background:var(--border)}
.wp-summary{display:flex;gap:18px;margin-left:auto;font-size:11.5px;color:var(--text-muted)}
.wp-summary strong{color:var(--text);font-family:'DM Mono',monospace;font-weight:500}

.wp-layout{flex:1;display:flex;overflow:hidden}
.wp-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.wp-grid-wrap{flex:1;overflow:auto;padding:18px 24px;background:var(--bg)}

/* Matrix table */
.wp-grid{
  width:100%;border-collapse:separate;border-spacing:0;
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  overflow:hidden;
}
.wp-grid th,.wp-grid td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);vertical-align:top}
.wp-grid th:last-child,.wp-grid td:last-child{border-right:none}
.wp-grid tr:last-child td{border-bottom:none}

.wp-grid thead th{
  position:sticky;top:0;z-index:5;
  background:var(--surface-2);padding:11px 12px;
  font-size:10.5px;font-weight:600;color:var(--text-muted);
  letter-spacing:.08em;text-transform:uppercase;text-align:center;
}
.wp-grid thead th.tag-col{min-width:130px;text-align:center}
.wp-grid thead th.total-col{background:var(--accent-soft);color:var(--accent);min-width:90px}
.wp-grid thead th.ma-col{text-align:left;min-width:200px;background:var(--surface-2)}
.wp-grid thead th .day-name{font-size:11px;font-weight:600;color:var(--text);letter-spacing:0;text-transform:none;margin-top:2px}

.wp-ma-cell{padding:14px 14px!important;background:var(--surface-2);min-width:200px}
.wp-ma-row{display:flex;align-items:center;gap:11px}
.wp-ma-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#5A8FCF,#15407A);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:12px;flex-shrink:0}
.wp-ma-avatar.vacant{background:var(--bg-accent);color:var(--text-muted);border:1.5px dashed var(--border-strong);font-size:14px}
.wp-ma-info{flex:1;min-width:0}
.wp-ma-name{font-size:13px;font-weight:500;line-height:1.2}
.wp-ma-meta{font-size:10.5px;color:var(--text-muted);margin-top:1px;font-family:'DM Mono',monospace}

.wp-cell{padding:7px 8px!important;min-width:130px;vertical-align:top;background:var(--surface);position:relative}
.wp-cell:hover{background:var(--surface-2)}
.wp-cell.empty{background:repeating-linear-gradient(45deg,transparent,transparent 6px,var(--surface-2) 6px,var(--surface-2) 12px)}
.wp-cell.weekend{background:var(--bg-accent)}
.wp-cell.weekend.empty{background:var(--bg-accent)}

.wp-task{
  display:flex;flex-direction:column;
  background:var(--accent-soft);border:1px solid var(--accent-light);
  border-left:3px solid var(--accent);
  border-radius:5px;padding:5px 7px;margin-bottom:4px;
  font-size:11px;line-height:1.3;cursor:grab;
  transition:all .12s;
}
.wp-task:hover{background:var(--accent-light);transform:translateX(1px)}
.wp-task:last-child{margin-bottom:0}
.wp-task.art-A{background:rgba(122,184,64,.08);border-color:rgba(122,184,64,.25);border-left-color:var(--success)}
.wp-task.art-A:hover{background:rgba(122,184,64,.15)}
.wp-task.art-S{background:rgba(216,155,74,.08);border-color:rgba(216,155,74,.25);border-left-color:var(--warning)}
.wp-task.art-S:hover{background:rgba(216,155,74,.15)}
.wp-task-name{font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wp-task-meta{display:flex;justify-content:space-between;align-items:center;gap:4px;margin-top:2px;font-size:10px}
.wp-task-ort{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.wp-task-h{font-family:'DM Mono',monospace;font-weight:500;color:var(--accent);flex-shrink:0}
.wp-task.art-A .wp-task-h{color:var(--success)}
.wp-task.art-S .wp-task-h{color:var(--warning)}

.wp-cell-add{
  display:flex;align-items:center;justify-content:center;
  padding:5px;font-size:11px;color:var(--text-faint);
  border:1px dashed transparent;border-radius:5px;cursor:pointer;
  transition:all .12s;margin-top:2px;
}
.wp-cell:hover .wp-cell-add{border-color:var(--border-strong);color:var(--text-muted)}
.wp-cell-add:hover{background:var(--accent-soft);border-color:var(--accent)!important;color:var(--accent)!important}
.wp-cell-add svg{width:11px;height:11px;margin-right:3px}

/* Daily totals row */
.wp-cell-total{
  padding:5px 8px 0!important;text-align:right;
  font-family:'DM Mono',monospace;font-size:10.5px;color:var(--text-muted);
  border-top:1px dashed var(--border);margin-top:3px;
}
.wp-cell-total.warning{color:var(--warning);font-weight:500}
.wp-cell-total.danger{color:var(--danger);font-weight:500}

.wp-ma-total{
  font-family:'DM Mono',monospace;font-size:13px;font-weight:500;
  padding:14px 12px!important;text-align:center;background:var(--accent-soft);
  color:var(--accent);
}
.wp-ma-total-soll{font-size:10px;font-weight:400;color:var(--text-muted);font-family:'DM Sans',sans-serif;margin-top:2px}
.wp-ma-total-bar{height:4px;background:var(--bg-accent);border-radius:2px;margin-top:5px;overflow:hidden}
.wp-ma-total-bar-fill{height:100%;background:var(--accent);transition:width .3s}
.wp-ma-total-bar-fill.ok{background:var(--success)}
.wp-ma-total-bar-fill.warning{background:var(--warning)}
.wp-ma-total-bar-fill.danger{background:var(--danger)}

/* Footer row with daily totals */
.wp-grid tfoot td{
  background:var(--surface-2);padding:12px 12px;
  font-family:'DM Mono',monospace;font-size:12px;font-weight:500;
  border-top:2px solid var(--border-strong)!important;
  text-align:right;
}
.wp-grid tfoot td.tot-label{text-align:left;color:var(--text-muted);font-family:'DM Sans',sans-serif;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.wp-grid tfoot td.tot-grand{background:var(--accent-soft);color:var(--accent);font-weight:600;text-align:center}

/* Right panel - unassigned */
.wp-side{
  width:300px;background:var(--surface);border-left:1px solid var(--border);
  display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;
}
.wp-side.collapsed{width:0;border-left:none}
.wp-side-header{padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.wp-side-title{font-size:11px;font-weight:600;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;margin-bottom:3px}
.wp-side-desc{font-size:12px;color:var(--text-muted);line-height:1.4}
.wp-side-body{flex:1;overflow-y:auto;padding:12px}
.wp-unassigned{
  background:var(--warning-bg);border:1px dashed var(--warning-border);
  border-radius:7px;padding:10px 12px;margin-bottom:8px;cursor:grab;
  transition:all .12s;
}
.wp-unassigned:hover{border-style:solid;background:rgba(216,155,74,.18)}
.wp-unassigned-name{font-size:12.5px;font-weight:500;color:var(--text)}
.wp-unassigned-meta{display:flex;justify-content:space-between;font-size:10.5px;margin-top:3px}
.wp-unassigned-ort{color:var(--text-muted)}
.wp-unassigned-h{font-family:'DM Mono',monospace;font-weight:500;color:var(--warning)}

.wp-side-section-title{font-size:10px;font-weight:600;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;padding:6px 4px;margin-top:6px}
.wp-side-section-title:first-child{margin-top:0}

/* Legend */
.wp-legend{display:flex;align-items:center;gap:14px;font-size:11px;color:var(--text-muted)}
.wp-legend-item{display:flex;align-items:center;gap:6px}
.wp-legend-dot{width:10px;height:10px;border-radius:2px;border-left:3px solid var(--accent);background:var(--accent-soft)}
.wp-legend-dot.a{border-left-color:var(--success);background:rgba(122,184,64,.08)}
.wp-legend-dot.s{border-left-color:var(--warning);background:rgba(216,155,74,.08)}

/* ========== PROJECT LIST (Row-based) ========== */
.project-list{
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  overflow:hidden;
}
.project-list-head{
  display:grid;
  grid-template-columns:110px 100px 1fr 1fr 150px 90px 80px 80px 80px 120px 40px;
  gap:0;
  padding:11px 16px;background:var(--surface-2);
  border-bottom:1px solid var(--border);
  font-size:10.5px;font-weight:600;color:var(--text-muted);
  letter-spacing:.06em;text-transform:uppercase;
}
.project-list-row{
  display:grid;
  grid-template-columns:110px 100px 1fr 1fr 150px 90px 80px 80px 80px 120px 40px;
  gap:0;
  padding:13px 16px;
  border-bottom:1px solid var(--border);
  cursor:pointer;transition:background .12s;
  align-items:center;
}
.project-list-row:hover{background:var(--surface-2)}
.project-list-row:last-child{border-bottom:none}
.pl-col{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:12px;text-align:left}
.pl-col.mono{font-family:'DM Mono',monospace;font-size:12px;color:var(--text-secondary)}
.pl-col-id{padding-right:14px}
.pl-col-name{display:flex;align-items:center;gap:9px}
.project-emoji-sm{font-size:17px;flex-shrink:0}
.project-name-inline{font-weight:500;overflow:hidden;text-overflow:ellipsis}
.pl-col-cust{color:var(--text-muted);font-size:12.5px}
.pl-col-loc{white-space:normal;line-height:1.35}
.pl-col-num{text-align:left;padding-right:12px}
.pl-col-ver{font-family:'DM Mono',monospace;font-size:12px}
.pl-col-saved{color:var(--text-muted);font-family:'DM Mono',monospace;font-size:12px}

@media(max-width:1100px){
  .project-list-head, .project-list-row{
    grid-template-columns:90px 90px 1fr 1fr 110px 80px 60px;
  }
  .pl-col-ver, .pl-col-saved, .pl-col-loc{display:none}
}

/* Navigation Customizer */
.nav-cust-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border);cursor:pointer}
.nav-cust-row:last-child{border-bottom:none}
.nav-cust-info{display:flex;align-items:center;gap:11px;flex:1}
.nav-cust-icon{width:32px;height:32px;border-radius:7px;background:var(--bg-accent);display:flex;align-items:center;justify-content:center;color:var(--text-muted);flex-shrink:0}
.nav-cust-icon svg{width:16px;height:16px}
.nav-cust-name{font-size:13.5px;font-weight:500}
.nav-cust-section{font-size:11px;color:var(--text-muted);margin-top:1px;letter-spacing:.04em;text-transform:uppercase}
.nav-cust-row input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--accent)}
.nav-cust-row input[type=checkbox]:disabled{opacity:.4;cursor:not-allowed}

/* SIA 416 Tags */
.tag.sia-HNF{background:#E6F0FA;color:#1A4778;font-family:'DM Mono',monospace;font-weight:500}
.tag.sia-NNF{background:#EDE6F4;color:#5B2A85;font-family:'DM Mono',monospace;font-weight:500}
.tag.sia-VF{background:#FBE9CC;color:#854F0B;font-family:'DM Mono',monospace;font-weight:500}
.tag.sia-FF{background:#E7F3D8;color:#3B6D11;font-family:'DM Mono',monospace;font-weight:500}
.tag.sia-KF{background:#F7E0E0;color:#8B2828;font-family:'DM Mono',monospace;font-weight:500}
.tag.sia-AUSSEN{background:#D4E8DC;color:#1F5A33;font-family:'DM Mono',monospace;font-weight:500}
.tag.sia-TECHNIK{background:#E0E5EB;color:#3A4A5C;font-family:'DM Mono',monospace;font-weight:500}
[data-theme="dark"] .tag.sia-HNF{background:rgba(107,159,224,.15);color:#85B5EE}
[data-theme="dark"] .tag.sia-NNF{background:rgba(159,138,180,.2);color:#C7A8DD}
[data-theme="dark"] .tag.sia-VF{background:rgba(216,155,74,.15);color:#E0B978}
[data-theme="dark"] .tag.sia-FF{background:rgba(122,184,64,.15);color:#9ECF6F}
[data-theme="dark"] .tag.sia-KF{background:rgba(160,72,72,.2);color:#E07878}
[data-theme="dark"] .tag.sia-AUSSEN{background:rgba(72,120,80,.2);color:#9ECF6F}
[data-theme="dark"] .tag.sia-TECHNIK{background:rgba(140,150,165,.15);color:#A8B5C5}

/* Primary Contact */
.contact-card{position:relative}
.contact-card.primary{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 2px 6px rgba(15,64,122,.08)}
.contact-primary-tag{
  position:absolute;top:-8px;right:14px;
  background:var(--accent);color:#fff;
  padding:2px 9px;border-radius:5px;
  font-size:10px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;
  display:flex;align-items:center;gap:4px;
}
.contact-primary-tag svg{width:11px;height:11px}
.contact-actions{display:flex;gap:5px;margin-top:11px;padding-top:11px;border-top:1px solid var(--border)}
.contact-set-primary{
  font-size:11.5px;color:var(--text-muted);
  background:none;border:1px solid var(--border);
  padding:5px 10px;border-radius:5px;cursor:pointer;
  transition:all .12s;
}
.contact-set-primary:hover{border-color:var(--accent);color:var(--accent)}
.contact-edit{font-size:11.5px;color:var(--text-muted);background:none;border:1px solid var(--border);padding:5px 10px;border-radius:5px;cursor:pointer;transition:all .12s}
.contact-edit:hover{border-color:var(--accent);color:var(--accent)}

/* PDF Export Options */
.pdf-export-option{
  display:flex;align-items:center;gap:13px;
  padding:14px 16px;margin-bottom:8px;
  border:1px solid var(--border);border-radius:9px;
  cursor:pointer;transition:all .12s;
}
.pdf-export-option:hover{border-color:var(--border-strong);background:var(--surface-2)}
.pdf-export-option.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.pdf-export-radio{width:18px;height:18px;border:2px solid var(--border-strong);border-radius:50%;flex-shrink:0;position:relative;transition:all .12s}
.pdf-export-option.selected .pdf-export-radio{border-color:var(--accent)}
.pdf-export-option.selected .pdf-export-radio::after{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--accent)}
.pdf-export-icon{width:38px;height:38px;border-radius:8px;background:var(--bg-accent);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pdf-export-icon svg{width:18px;height:18px}
.pdf-export-info{flex:1;min-width:0}
/* PDF-Export: Abschnitts-Auswahl als Liste mit Toggle rechts (wie Einstellungs-Zeilen) */
.pdf-abschnitt-list{border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-top:8px;background:var(--surface)}
.pdf-abschnitt-list .settings-row{cursor:pointer}
.switch-input{display:none}
.settings-row input.switch-input:checked ~ .switch{background:var(--accent)}
.settings-row input.switch-input:checked ~ .switch::after{transform:translateX(16px)}
.pdf-export-name{font-size:13.5px;font-weight:500}
.pdf-export-desc{font-size:11.5px;color:var(--text-muted);margin-top:2px;line-height:1.4}
.pdf-export-tag{font-family:'DM Mono',monospace;font-size:10.5px;background:var(--bg-accent);color:var(--text-secondary);padding:3px 9px;border-radius:5px;flex-shrink:0;font-weight:500}

.building-check{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);cursor:pointer}
.building-check:last-of-type{border-bottom:none}
.building-check input[type=checkbox]{margin-top:3px;accent-color:var(--accent);width:15px;height:15px;cursor:pointer}
.building-check span{flex:1;font-size:13px;display:flex;flex-direction:column}
.building-stats{display:block;font-size:11px;color:var(--text-muted);font-family:'DM Mono',monospace;margin-top:2px}

/* ZUTEILUNG LIST */
.zut-list-item{
  display:flex;align-items:flex-start;gap:18px;
  padding:18px 20px;margin-bottom:9px;
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  cursor:pointer;transition:all .12s;
}
.zut-list-item:hover{border-color:var(--accent);box-shadow:0 2px 6px rgba(15,64,122,.06)}
.zut-list-item.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.zut-list-main{flex:1;min-width:0}
.zut-list-top{display:flex;align-items:center;gap:7px;margin-bottom:6px;flex-wrap:wrap}
.zut-list-id{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted);background:var(--bg-accent);padding:2px 8px;border-radius:5px;font-weight:500;letter-spacing:.04em}
.zut-active-pill{font-size:10.5px;font-weight:600;background:var(--accent);color:#fff;padding:2px 8px;border-radius:5px;letter-spacing:.04em;text-transform:uppercase}
.zut-saved-pill{font-size:10.5px;font-weight:500;background:var(--success-bg);color:var(--success);padding:2px 8px;border-radius:5px}
.zut-unsaved-pill{font-size:10.5px;font-weight:500;background:var(--warning-bg);color:var(--warning);padding:2px 8px;border-radius:5px}
.zut-list-name{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500;letter-spacing:-.01em;margin-bottom:4px;line-height:1.2}
.zut-list-note{font-size:12.5px;color:var(--text-muted);margin-bottom:10px;line-height:1.45}
.zut-list-basis{display:flex;gap:8px;flex-wrap:wrap}
.zut-basis-tag{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11.5px;color:var(--text-secondary);
  background:var(--bg-accent);padding:4px 9px;border-radius:5px;
  font-family:'DM Mono',monospace;font-weight:500;
}
.zut-basis-tag svg{width:11px;height:11px;color:var(--accent)}
.zut-basis-meta{color:var(--text-muted);font-weight:400}
.zut-list-stats{flex-shrink:0;width:200px;display:flex;flex-direction:column;gap:9px;align-items:stretch}
.zut-stat-coverage{text-align:right}
.zut-stat-val{font-family:'DM Mono',monospace;font-size:24px;font-weight:600;line-height:1}
.zut-stat-val.success{color:var(--success)}
.zut-stat-val.warning{color:var(--warning)}
.zut-stat-val.danger{color:var(--danger)}
.zut-stat-lbl{font-size:11px;color:var(--text-muted);margin-top:2px;letter-spacing:.04em;text-transform:uppercase;font-weight:500}
.zut-stat-bar{height:5px;background:var(--bg-accent);border-radius:3px;margin-top:7px;overflow:hidden}
.zut-stat-bar-fill{height:100%;border-radius:3px;transition:width .3s}
.zut-stat-bar-fill.success{background:var(--success)}
.zut-stat-bar-fill.warning{background:var(--warning)}
.zut-stat-bar-fill.danger{background:var(--danger)}
.zut-stat-row{display:flex;justify-content:space-between;gap:11px}
.zut-stat-item{display:flex;flex-direction:column;align-items:flex-end}
.zut-stat-num{font-family:'DM Mono',monospace;font-size:12px;font-weight:500}
.zut-stat-num.warning{color:var(--warning)}
.zut-stat-tag{font-size:10px;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin-top:1px}
.zut-list-meta{font-size:11px;color:var(--text-muted);font-family:'DM Mono',monospace;text-align:right;display:flex;align-items:center;justify-content:flex-end;gap:4px}

/* ZUTEILUNG DETAIL */
.zut-detail-header{padding:16px 24px 18px;background:var(--surface);border-bottom:1px solid var(--border)}
.zut-detail-breadcrumb{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted);margin-bottom:11px}
.zut-detail-breadcrumb a{cursor:pointer;color:var(--accent);text-decoration:none}
.zut-detail-breadcrumb a:hover{text-decoration:underline}
.zut-detail-breadcrumb .sep{color:var(--text-faint)}
.zut-detail-breadcrumb .current{color:var(--text);font-weight:500}
.zut-detail-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:13px}
.zut-detail-id-row{display:flex;align-items:center;gap:7px;margin-bottom:5px;flex-wrap:wrap}
.zut-detail-name{font-family:'Fraunces',Georgia,serif;font-size:22px;font-weight:500;letter-spacing:-.015em;line-height:1.2}
.zut-detail-meta{font-size:12px;color:var(--text-muted);margin-top:4px}
.zut-detail-basis{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.zut-basis-card{display:flex;align-items:center;gap:11px;padding:11px 14px;background:var(--bg-accent);border:1px solid var(--border);border-radius:9px}
.zut-basis-card-icon{width:32px;height:32px;border-radius:7px;background:var(--surface);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.zut-basis-card-icon svg{width:16px;height:16px}
.zut-basis-card-title{font-size:13px;font-weight:500}
.zut-basis-card-meta{font-size:11.5px;color:var(--text-muted);margin-top:2px;font-family:'DM Mono',monospace}

/* CREATE MODAL */
.zut-create-option{
  display:flex;align-items:flex-start;gap:11px;
  padding:12px 14px;margin-bottom:7px;
  border:1px solid var(--border);border-radius:8px;
  cursor:pointer;transition:all .12s;
}
.zut-create-option:hover{border-color:var(--border-strong);background:var(--surface-2)}
.zut-create-option.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.zut-create-radio{width:16px;height:16px;border:2px solid var(--border-strong);border-radius:50%;flex-shrink:0;margin-top:2px;position:relative;transition:all .12s}
.zut-create-option.selected .zut-create-radio{border-color:var(--accent)}
.zut-create-option.selected .zut-create-radio::after{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--accent)}
.zut-create-info{flex:1;min-width:0}
.zut-create-name{font-size:13.5px;font-weight:500;display:flex;align-items:center;gap:7px}
.zut-create-meta{font-size:11.5px;color:var(--text-secondary);margin-top:2px;font-family:'DM Mono',monospace}
.zut-create-note{font-size:11px;color:var(--text-muted);margin-top:3px;font-style:italic}

/* VERSION BAR */
.version-bar{
  display:flex;align-items:center;justify-content:space-between;gap:11px;
  padding:9px 20px;
  background:var(--accent-soft);
  border-bottom:1px solid var(--accent-light);
  flex-shrink:0;flex-wrap:wrap;
}
.version-bar.outdated{background:var(--warning-bg);border-bottom-color:var(--warning-border)}
.version-bar-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.version-bar-left > svg{width:16px;height:16px;color:var(--accent);flex-shrink:0}
.version-bar.outdated .version-bar-left > svg{color:var(--warning)}
.version-bar-label{font-size:11.5px;font-weight:600;color:var(--text);letter-spacing:.04em;text-transform:uppercase}
.version-bar-select{
  padding:5px 10px;border:1px solid var(--accent-light);
  border-radius:6px;background:var(--surface);
  font-size:12.5px;color:var(--text);font-family:'DM Mono',monospace;
  cursor:pointer;font-weight:500;
  min-width:260px;
}
.version-bar.outdated .version-bar-select{border-color:var(--warning-border)}
.version-bar-warning{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11.5px;color:var(--warning);font-weight:500;
  background:var(--surface);padding:3px 9px;border-radius:5px;
  border:1px solid var(--warning-border);
  margin-left:8px;
}
.version-bar-warning svg{width:11px;height:11px}
.version-bar-right{display:flex;align-items:center;gap:5px}
.version-bar-action{
  display:inline-flex;align-items:center;gap:5px;
  padding:5px 10px;background:var(--surface);
  border:1px solid var(--border);border-radius:6px;
  font-size:11.5px;color:var(--text-secondary);
  cursor:pointer;transition:all .12s;font-weight:500;
}
.version-bar-action:hover{border-color:var(--accent);color:var(--accent)}
.version-bar-action svg{width:11px;height:11px}

/* Version History Modal */
.version-history-list{display:flex;flex-direction:column;gap:0}
.version-history-item{
  display:flex;align-items:flex-start;gap:13px;
  padding:14px 0;border-bottom:1px solid var(--border);
}
.version-history-item:last-child{border-bottom:none}
.version-history-marker{
  width:24px;height:24px;border-radius:50%;
  background:var(--accent-soft);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
  font-family:'DM Mono',monospace;font-size:11px;font-weight:600;
  flex-shrink:0;border:2px solid var(--accent-light);
}
.version-history-item.current .version-history-marker{
  background:var(--accent);color:#fff;border-color:var(--accent);
}
.version-history-info{flex:1;min-width:0}
.version-history-title{font-size:13.5px;font-weight:500;display:flex;align-items:center;gap:8px}
.version-history-meta{font-size:11.5px;color:var(--text-muted);margin-top:2px;font-family:'DM Mono',monospace}
.version-history-changes{
  margin-top:7px;font-size:12px;color:var(--text-secondary);
  background:var(--bg-accent);padding:7px 10px;border-radius:6px;
  border-left:2px solid var(--accent);
}
.version-history-changes ul{margin:3px 0 0 18px;padding:0}
.version-history-changes li{margin-bottom:1px;line-height:1.4}
.version-history-actions{display:flex;gap:6px;align-items:flex-start;flex-shrink:0}

/* ========== FIELD VALIDATION ========== */
.field label .required{color:var(--danger);margin-left:2px;font-weight:600}
.field-error-msg{
  display:flex;align-items:center;gap:5px;
  margin-top:5px;font-size:11.5px;color:var(--danger);
  line-height:1.4;
}
.field-error-msg svg{width:12px;height:12px;flex-shrink:0}
.field-warning-msg{
  display:flex;align-items:center;gap:5px;
  margin-top:5px;font-size:11.5px;color:var(--warning);
  line-height:1.4;
}
.field-warning-msg svg{width:12px;height:12px;flex-shrink:0}

/* Error state for inputs/selects */
.field.error .input,
.field.error input,
.field.error select,
.field.error textarea,
.input.error,
input.error,
select.error{
  border-color:var(--danger)!important;
  background:var(--danger-bg)!important;
  box-shadow:0 0 0 3px rgba(168,85,75,.08);
}
.field.error .input:focus,
.field.error input:focus,
.field.error select:focus,
input.error:focus{
  box-shadow:0 0 0 3px rgba(168,85,75,.16);
}

/* Warning state */
.field.warning .input,
.field.warning input,
.field.warning select{
  border-color:var(--warning)!important;
  background:var(--warning-bg)!important;
}

/* Success state (subtle) */
.field.success .input,
.field.success input,
.field.success select{
  border-color:var(--success-border)!important;
}

/* Disabled save button styling */
.btn.disabled,
.btn:disabled{
  opacity:.45;cursor:not-allowed;
  background:var(--bg-accent)!important;
  color:var(--text-muted)!important;
  border-color:var(--border)!important;
}
.btn.disabled:hover,
.btn:disabled:hover{
  background:var(--bg-accent)!important;
  color:var(--text-muted)!important;
}

/* Validation summary panel */
.validation-summary{
  background:var(--danger-bg);border:1px solid var(--danger-border);
  border-radius:8px;padding:11px 14px;margin-bottom:14px;
  display:flex;align-items:flex-start;gap:10px;
}
.validation-summary.hidden{display:none}
.validation-summary-icon{
  width:24px;height:24px;border-radius:6px;
  background:var(--danger);color:#fff;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.validation-summary-icon svg{width:14px;height:14px}
.validation-summary-content{flex:1;min-width:0}
.validation-summary-title{
  font-size:13px;font-weight:600;color:var(--danger);
  margin-bottom:3px;
}
.validation-summary-list{
  font-size:12px;color:var(--text-secondary);
  margin:0;padding:0;list-style:none;line-height:1.6;
}
.validation-summary-list li::before{
  content:'•';color:var(--danger);font-weight:600;margin-right:6px;
}

/* PDF Preview – multi-page enhancements */
.pdf-preview-pages{font-size:11px;color:var(--text-muted);font-family:'DM Mono',monospace}
.pdf-preview-pages .mono{color:var(--text)}
.pdf-preview-doc + .pdf-preview-doc{margin-top:14px}
.pdf-page-num{
  position:absolute;top:-9px;left:14px;
  background:var(--surface);
  padding:1px 8px;border-radius:4px;
  font-size:9px;font-weight:600;
  color:var(--accent);
  letter-spacing:.04em;
  border:1px solid var(--accent-light);
}
.pdf-preview-doc{position:relative}

/* ========== KAPAZITÄTSANALYSE / IST-SOLL-VERGLEICH ========== */
.kap-section{
  margin-top:20px;padding:18px 20px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:11px;
}
.kap-header{
  display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  padding-bottom:14px;margin-bottom:14px;
  border-bottom:1px solid var(--border);
}
.kap-title{font-family:'Fraunces',Georgia,serif;font-size:17px;font-weight:500;letter-spacing:-.01em}
.kap-subtitle{font-size:12px;color:var(--text-muted);margin-top:3px;line-height:1.45}
.kap-status-pill{
  font-size:11.5px;font-weight:600;
  padding:5px 11px;border-radius:6px;flex-shrink:0;
  font-family:'DM Mono',monospace;letter-spacing:.02em;
}
.kap-status-pill.success{background:var(--success-bg);color:var(--success)}
.kap-status-pill.warning{background:var(--warning-bg);color:var(--warning)}
.kap-status-pill.danger{background:var(--danger-bg);color:var(--danger)}

.kap-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.kap-col-title{
  display:flex;align-items:center;gap:8px;
  font-size:11.5px;font-weight:600;color:var(--text);
  letter-spacing:.04em;text-transform:uppercase;
  margin-bottom:10px;
}
.kap-col-dot{
  width:9px;height:9px;border-radius:2px;display:inline-block;flex-shrink:0;
}
.kap-col-dot.ist{background:var(--success)}
.kap-col-dot.soll{background:var(--accent)}

.kap-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:7px 0;border-bottom:1px dashed var(--border);
  font-size:12.5px;
}
.kap-row:last-child{border-bottom:none}
.kap-row-lbl{color:var(--text-secondary);flex:1;min-width:0;padding-right:11px;line-height:1.4}
.kap-row-val{flex-shrink:0;font-size:13px;color:var(--text)}
.kap-row.negative .kap-row-val{color:var(--danger)}
.kap-row.positive .kap-row-val{color:var(--text)}
.kap-row.total{
  padding-top:11px;margin-top:5px;
  border-top:2px solid var(--text);border-bottom:none;
  font-weight:500;
}
.kap-row.total .kap-row-lbl{font-weight:600;color:var(--text)}
.kap-row.total .kap-row-val{font-size:16px;font-weight:600}
.kap-row.total.ist .kap-row-val{color:var(--success)}
.kap-row.total.soll .kap-row-val{color:var(--accent)}

/* Compare bars */
.kap-compare{
  background:var(--bg-accent);
  border:1px solid var(--border);
  border-radius:9px;padding:14px 16px;
}
.kap-compare-row{display:flex;align-items:center;gap:13px;margin-bottom:11px}
.kap-compare-lbl{
  font-size:11.5px;color:var(--text-secondary);
  width:200px;flex-shrink:0;
  display:flex;align-items:center;gap:7px;font-weight:500;
}
.kap-compare-bar-wrap{
  flex:1;height:28px;background:var(--surface);
  border-radius:5px;overflow:hidden;border:1px solid var(--border);
}
.kap-compare-bar{
  height:100%;display:flex;align-items:center;justify-content:flex-end;
  padding:0 11px;color:#fff;font-family:'DM Mono',monospace;
  font-size:12px;font-weight:600;
  border-radius:4px;
}
.kap-compare-bar.ist{background:var(--success)}
.kap-compare-bar.soll{background:var(--accent)}

.kap-result{
  display:flex;align-items:flex-start;gap:11px;
  padding:12px 14px;margin-top:11px;
  background:var(--surface);
  border:1px solid var(--warning-border);
  border-left:3px solid var(--warning);
  border-radius:7px;
}
.kap-result-icon{
  width:30px;height:30px;border-radius:7px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.kap-result-icon.warning{background:var(--warning-bg);color:var(--warning)}
.kap-result-icon.success{background:var(--success-bg);color:var(--success)}
.kap-result-icon.danger{background:var(--danger-bg);color:var(--danger)}
.kap-result-icon svg{width:16px;height:16px}
.kap-result-title{font-size:13.5px;font-weight:600;color:var(--text);margin-bottom:2px}
.kap-result-desc{font-size:12px;color:var(--text-secondary);line-height:1.5}

@media(max-width:1100px){
  .kap-layout{grid-template-columns:1fr}
  .kap-compare-lbl{width:140px;font-size:11px}
}

/* ========== UNIFIED TAG SYSTEM ========== */
/* Override existing tag styles for consistency */
.tag,
.project-status,
.zut-active-pill,
.zut-saved-pill,
.zut-unsaved-pill,
.proj-status-tag,
.role-tag{
  display:inline-flex;align-items:center;
  height:20px;padding:0 8px;
  border-radius:5px;
  font-size:10.5px;font-weight:500;
  letter-spacing:.04em;
  line-height:1;
  white-space:nowrap;
  border:1px solid transparent;
}
.tag.kuerzel,
.tag[class*="sia-"]{font-family:'DM Mono',monospace;font-weight:500;letter-spacing:.04em}

/* Status colors - unified */
.tag.success,.project-status.active,.zut-saved-pill,.proj-status-tag.active{
  background:var(--success-bg);color:var(--success);border-color:var(--success-border)
}
.tag.warning,.zut-unsaved-pill,.project-status.draft{
  background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)
}
.tag.danger{
  background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)
}
.tag.info,.zut-active-pill{
  background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600
}
.tag.muted,.project-status.archived{
  background:var(--bg-accent);color:var(--text-muted);border-color:var(--border)
}

/* Heights for slightly larger pills (in headers) */
.proj-status-tag,.zut-active-pill{height:22px;padding:0 10px;text-transform:uppercase;font-size:10px;font-weight:600}

/* ========== TOASTS / NOTIFICATIONS ========== */
.toast-container{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  z-index:200;display:flex;flex-direction:column;gap:8px;
  pointer-events:none;
}
.toast{
  display:flex;align-items:center;gap:11px;
  background:var(--text);color:var(--surface);
  padding:11px 16px 11px 14px;border-radius:9px;
  box-shadow:0 8px 24px rgba(20,18,12,.22);
  font-size:13px;font-weight:500;
  min-width:280px;max-width:480px;
  pointer-events:auto;
  animation:toastIn .25s ease-out;
}
.toast.fade-out{animation:toastOut .25s ease-in forwards}
@keyframes toastIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes toastOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(8px)}}
.toast-icon{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.toast-icon svg{width:13px;height:13px}
.toast.success .toast-icon{background:var(--success);color:#fff}
.toast.error .toast-icon{background:var(--danger);color:#fff}
.toast.info .toast-icon{background:var(--accent);color:#fff}
.toast-content{flex:1;min-width:0}
.toast-title{font-weight:500}
.toast-detail{font-size:11.5px;color:rgba(255,255,255,.65);margin-top:1px;font-weight:400}
.toast-close{
  background:none;border:none;color:rgba(255,255,255,.5);
  cursor:pointer;padding:3px;margin-left:5px;
  display:flex;align-items:center;justify-content:center;
}
.toast-close:hover{color:#fff}
.toast-close svg{width:12px;height:12px}

/* ========== LOADING BUTTON ========== */
.btn.loading{position:relative;pointer-events:none;color:transparent!important}
.btn.loading::after{
  content:'';position:absolute;left:50%;top:50%;
  width:14px;height:14px;margin-left:-7px;margin-top:-7px;
  border:2px solid currentColor;border-top-color:transparent;
  border-radius:50%;animation:spin .6s linear infinite;
  color:var(--surface);
}
.btn.btn-secondary.loading::after,.btn.btn-ghost.loading::after{color:var(--text)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ========== INLINE SPINNER ========== */
.spinner{
  display:inline-block;
  width:14px;height:14px;
  border:2px solid var(--border-strong);border-top-color:var(--accent);
  border-radius:50%;animation:spin .6s linear infinite;
  vertical-align:-3px;
}
.spinner.lg{width:24px;height:24px;border-width:3px}

/* Saving indicator next to a label */
.save-indicator{
  display:inline-flex;align-items:center;gap:6px;
  font-size:12px;color:var(--text-muted);
  font-weight:500;
}
.save-indicator.saved{color:var(--success)}
.save-indicator.saving{color:var(--accent)}
.save-indicator.error{color:var(--danger)}

/* ========== EMPTY STATES ========== */
.empty-state{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:48px 24px;text-align:center;
}
.empty-state-icon{
  width:64px;height:64px;border-radius:50%;
  background:var(--bg-accent);color:var(--text-muted);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:18px;
}
.empty-state-icon svg{width:30px;height:30px}
.empty-state-title{
  font-family:'Fraunces',Georgia,serif;
  font-size:18px;font-weight:500;
  color:var(--text);margin-bottom:6px;
}
.empty-state-desc{
  font-size:13px;color:var(--text-muted);
  max-width:340px;line-height:1.5;
  margin-bottom:18px;
}
.empty-state-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.empty-state.compact{padding:24px 16px}
.empty-state.compact .empty-state-icon{width:44px;height:44px;margin-bottom:11px}
.empty-state.compact .empty-state-icon svg{width:20px;height:20px}
.empty-state.compact .empty-state-title{font-size:14px;font-family:'DM Sans',sans-serif;font-weight:500}
.empty-state.compact .empty-state-desc{font-size:12px;margin-bottom:11px}

/* ========== KEYBOARD NAVIGATION ========== */
/* Sichtbarere Focus-States für Tastatur-Navigation */
.input:focus,
input:focus,
select:focus,
textarea:focus{
  outline:none;
  border-color:var(--accent)!important;
  box-shadow:0 0 0 3px rgba(15,64,122,.14)!important;
}
.btn:focus-visible{
  outline:none;
  box-shadow:0 0 0 3px rgba(15,64,122,.18);
}
.nav-item:focus-visible,
.proj-tab:focus-visible{
  outline:none;
  box-shadow:inset 0 0 0 2px var(--accent);
}

/* Hint for keyboard shortcut in modals */
.modal-kbd-hint{
  font-size:10.5px;color:var(--text-faint);
  display:inline-flex;align-items:center;gap:5px;
  margin-left:11px;
}
.kbd{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;
  background:var(--bg-accent);border:1px solid var(--border-strong);border-bottom-width:2px;
  border-radius:4px;
  font-family:'DM Mono',monospace;font-size:10px;font-weight:500;
  color:var(--text-secondary);
}

/* ========== TOOLTIPS ========== */
[data-tooltip]{position:relative;cursor:help}
[data-tooltip]:hover::after{
  content:attr(data-tooltip);
  position:absolute;bottom:calc(100% + 7px);left:50%;
  transform:translateX(-50%);
  background:var(--text);color:var(--surface);
  padding:7px 10px;border-radius:6px;
  font-size:11.5px;font-weight:400;line-height:1.4;letter-spacing:0;
  text-transform:none;
  white-space:normal;
  width:max-content;max-width:240px;
  z-index:1000;pointer-events:none;
  box-shadow:0 4px 12px rgba(20,18,12,.18);
  animation:tooltipIn .15s ease-out;
}
[data-tooltip]:hover::before{
  content:'';
  position:absolute;bottom:calc(100% + 1px);left:50%;
  transform:translateX(-50%);
  border:5px solid transparent;
  border-top-color:var(--text);
  z-index:1000;pointer-events:none;
}
@keyframes tooltipIn{from{opacity:0;transform:translateX(-50%) translateY(3px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* Help icon */
.help-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:13px;height:13px;border-radius:50%;
  background:var(--bg-accent);color:var(--text-muted);
  font-size:9px;font-weight:600;
  margin-left:4px;vertical-align:1px;
  cursor:help;font-family:'DM Sans',sans-serif;
}
.help-icon:hover{background:var(--accent-light);color:var(--accent)}

/* WP List page wrapper */
.wp-page{display:flex;flex-direction:column;flex:1;overflow:auto}
.wp-page .page-header{padding:24px 24px 18px;background:var(--surface);border-bottom:1px solid var(--border)}
.wp-page .page-body{padding:24px;overflow:auto}

/* WP Detail breadcrumb (similar to zuteilung) */
.wp-detail-breadcrumb{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted);margin-bottom:11px}
.wp-detail-breadcrumb a{cursor:pointer;color:var(--accent);text-decoration:none}
.wp-detail-breadcrumb a:hover{text-decoration:underline}
.wp-detail-breadcrumb .sep{color:var(--text-faint)}
.wp-detail-breadcrumb .current{color:var(--text);font-weight:500}

/* ========== GLOBAL SEARCH ========== */
.header-search{position:relative}
.search-dropdown{
  position:absolute;top:calc(100% + 7px);left:0;right:0;
  background:var(--surface);
  border:1px solid var(--border);border-radius:9px;
  box-shadow:0 8px 24px rgba(20,18,12,.14);
  max-height:480px;overflow-y:auto;
  z-index:100;
  display:none;
}
.search-dropdown.open{display:block;animation:searchIn .15s ease-out}
@keyframes searchIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}
.search-section{padding:8px 0;border-bottom:1px solid var(--border)}
.search-section:last-child{border-bottom:none}
.search-section-title{
  padding:6px 14px 4px;
  font-size:10px;font-weight:600;
  color:var(--text-faint);
  letter-spacing:.08em;text-transform:uppercase;
}
.search-item{
  display:flex;align-items:center;gap:11px;
  padding:8px 14px;cursor:pointer;
  transition:background .1s;
}
.search-item:hover, .search-item.kbd-focus{background:var(--accent-soft)}
.search-item-icon{
  width:28px;height:28px;border-radius:6px;
  background:var(--bg-accent);color:var(--text-muted);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.search-item-icon svg{width:14px;height:14px}
.search-item-icon.proj{background:var(--accent-light);color:var(--accent)}
.search-item-icon.obj{background:rgba(15,64,122,.08);color:var(--accent)}
.search-item-icon.pensum{background:#EDE6F4;color:#5B2A85}
.search-item-icon.stamm{background:var(--bg-accent);color:var(--text-secondary)}
.search-item-info{flex:1;min-width:0}
.search-item-title{font-size:13px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-item-meta{font-size:11px;color:var(--text-muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-item-kbd{
  font-family:'DM Mono',monospace;font-size:10px;
  color:var(--text-faint);background:var(--bg-accent);
  padding:2px 7px;border-radius:4px;flex-shrink:0;
}
.search-empty{padding:24px 14px;text-align:center;color:var(--text-muted);font-size:12px}
.search-hint{padding:9px 14px;font-size:10.5px;color:var(--text-faint);text-align:center;background:var(--bg-accent);display:flex;justify-content:center;gap:14px}
.search-hint .kbd{font-size:9px;background:var(--surface);border-color:var(--border)}
mark.search-hl{background:rgba(216,155,74,.32);color:var(--text);padding:0 1px;border-radius:2px}

/* ========== VERSION POPOVER (Header) ========== */
.version-popover-wrap{position:relative;display:inline-block}
.proj-version-btn{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--accent-soft);border:1px solid var(--accent-light);
  color:var(--accent);
  padding:3px 9px;border-radius:6px;cursor:pointer;
  font-family:'DM Mono',monospace;font-size:11px;font-weight:500;
  letter-spacing:.02em;transition:all .12s;
}
.proj-version-btn:hover{background:var(--accent-light);border-color:var(--accent)}
.proj-version-btn svg{width:11px;height:11px}
.proj-version-btn svg.chev{transition:transform .15s}
.version-popover-wrap .version-popover.open ~ .proj-version-btn svg.chev,
.proj-version-btn.open svg.chev{transform:rotate(180deg)}
.proj-version-btn.outdated{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}

.version-popover{
  position:absolute;top:calc(100% + 7px);left:0;
  width:340px;background:var(--surface);
  border:1px solid var(--border);border-radius:9px;
  box-shadow:0 8px 24px rgba(20,18,12,.16);
  padding:13px 15px;z-index:100;
  display:none;
}
.version-popover.open{display:block;animation:searchIn .15s ease-out}
.version-popover-title{
  font-size:10px;font-weight:600;
  color:var(--text-faint);
  letter-spacing:.08em;text-transform:uppercase;
  margin-bottom:9px;
}
.version-popover-row{margin-bottom:9px}
.version-popover-row label{
  display:block;font-size:11px;font-weight:500;
  color:var(--text-secondary);margin-bottom:3px;letter-spacing:.02em;
}
.version-popover-row select{
  width:100%;padding:6px 9px;
  border:1px solid var(--border);border-radius:6px;
  font-size:11.5px;font-family:'DM Mono',monospace;
  background:var(--surface);color:var(--text);cursor:pointer;
}
.version-popover-divider{border-top:1px solid var(--border);margin:11px -15px}
.version-popover-actions{display:flex;gap:5px;justify-content:space-between;margin-bottom:6px}
.version-popover-hint{
  font-size:10.5px;color:var(--text-muted);
  margin-top:6px;line-height:1.4;font-style:italic;
}

/* ========== ABO PAGE ========== */
.abo-modules{display:flex;flex-direction:column;gap:9px;margin-bottom:24px}
.abo-module-card{
  display:flex;align-items:center;gap:14px;
  padding:14px 16px;
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  transition:all .12s;
}
.abo-module-card.cancelled{opacity:.7;background:var(--warning-bg);border-color:var(--warning-border)}
.abo-module-card.add{background:var(--bg-accent);border-style:dashed}
.abo-module-icon{
  width:42px;height:42px;border-radius:9px;
  background:var(--accent-soft);color:var(--accent);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.abo-module-icon svg{width:20px;height:20px}
.abo-module-info{flex:1;min-width:0}
.abo-module-top{display:flex;align-items:center;gap:7px;margin-bottom:3px;flex-wrap:wrap}
.abo-module-name{font-family:'Fraunces',Georgia,serif;font-size:16px;font-weight:500;letter-spacing:-.01em}
.abo-module-meta{font-size:11.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.abo-module-note{font-size:11.5px;color:var(--text-secondary);margin-top:3px;font-style:italic}
.abo-module-price{text-align:right;flex-shrink:0;min-width:120px}
.abo-module-price-val{font-family:'DM Mono',monospace;font-size:16px;font-weight:600;color:var(--text)}
.abo-module-price-period{font-size:10.5px;color:var(--text-muted);letter-spacing:.02em;margin-top:1px}
.abo-module-actions{display:flex;gap:5px;flex-shrink:0}
.abo-module-add-icon{
  width:42px;height:42px;border-radius:9px;
  background:var(--accent);color:#fff;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  font-size:22px;font-weight:300;
}
.abo-module-add-text{flex:1}
.abo-module-add-title{font-size:14px;font-weight:500}
.abo-module-add-desc{font-size:11.5px;color:var(--text-muted);margin-top:2px}

.abo-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}
.abo-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:10px;
}
.abo-card-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:13px 16px;border-bottom:1px solid var(--border);
}
.abo-card-title{font-size:13px;font-weight:600;color:var(--text);letter-spacing:.02em}
.abo-card-body{padding:14px 16px}
.abo-billing-line{font-size:13px;color:var(--text);line-height:1.55}
.abo-billing-line.muted{color:var(--text-muted);font-size:11.5px}

.abo-payment{display:flex;align-items:center;gap:11px}
.abo-payment-icon{
  width:38px;height:24px;
  background:linear-gradient(135deg,#15407A,#1A4778);
  color:#fff;border-radius:5px;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.abo-payment-icon svg{width:18px;height:18px}
.abo-payment-name{font-size:14px;font-weight:500;font-family:'DM Mono',monospace}
.abo-payment-meta{font-size:11.5px;color:var(--text-muted);margin-top:2px}

/* Pläne Tab */
.abo-rabatt-banner{
  display:flex;align-items:center;gap:13px;
  padding:14px 18px;margin-bottom:18px;
  background:linear-gradient(135deg,#FBE9CC 0%,#F5E1B8 100%);
  border:1px solid #D89B4A;border-radius:10px;
}
.abo-rabatt-icon{font-size:28px;flex-shrink:0}
.abo-rabatt-title{font-size:15px;font-weight:600;color:#5C3700}
.abo-rabatt-desc{font-size:12.5px;color:#704400;margin-top:2px;line-height:1.4}

.abo-billing-toggle{
  display:inline-flex;background:var(--bg-accent);
  border:1px solid var(--border);border-radius:8px;padding:3px;
}
.abo-billing-toggle button{
  background:none;border:none;padding:6px 13px;
  font-size:12px;font-weight:500;color:var(--text-secondary);
  border-radius:5px;cursor:pointer;transition:all .12s;
  display:inline-flex;align-items:center;gap:5px;
  font-family:'DM Sans',sans-serif;
}
.abo-billing-toggle button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.06)}
.abo-billing-savings{
  background:var(--success);color:#fff;
  padding:1px 5px;border-radius:3px;
  font-size:9.5px;font-weight:600;letter-spacing:.04em;
}

.abo-plan-section{margin-bottom:22px}
.abo-plan-header{display:flex;align-items:center;gap:11px;margin-bottom:11px}
.abo-plan-icon{
  width:38px;height:38px;border-radius:8px;
  background:var(--accent-soft);color:var(--accent);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.abo-plan-icon svg{width:18px;height:18px}
.abo-plan-name{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500;letter-spacing:-.01em}
.abo-plan-desc{font-size:12.5px;color:var(--text-muted);margin-top:2px}

.abo-plan-tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}
.abo-tier-card{
  position:relative;
  background:var(--surface);
  border:1px solid var(--border);border-radius:10px;
  padding:18px 16px;
  transition:all .12s;
}
.abo-tier-card.recommended{border-color:var(--accent);border-width:2px;padding:17px 15px;box-shadow:0 4px 12px rgba(15,64,122,.08)}
.abo-tier-card.current{background:var(--success-bg);border-color:var(--success)}
.abo-tier-badge{
  position:absolute;top:-9px;left:14px;
  background:var(--accent);color:#fff;
  font-size:9.5px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;
  padding:2px 9px;border-radius:5px;
}
.abo-tier-badge.current{background:var(--success);right:14px;left:auto}
.abo-tier-head{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.abo-tier-code{
  width:34px;height:34px;border-radius:7px;
  background:var(--bg-accent);color:var(--text);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  font-family:'DM Mono',monospace;font-size:16px;font-weight:600;
}
.abo-tier-card.recommended .abo-tier-code{background:var(--accent);color:#fff}
.abo-tier-name{font-size:14px;font-weight:600}
.abo-tier-target{font-size:11px;color:var(--text-muted);margin-top:1px;line-height:1.3}

.abo-tier-price{display:flex;align-items:baseline;gap:5px;margin-top:11px}
.abo-tier-price-val{font-family:'DM Mono',monospace;font-size:28px;font-weight:600;color:var(--text);letter-spacing:-.02em;line-height:1}
.abo-tier-price-unit{font-size:11.5px;color:var(--text-muted);font-weight:500}
.abo-tier-price-sub{font-size:11px;color:var(--text-muted);margin-top:3px}

.abo-tier-features{display:flex;flex-direction:column;gap:6px;margin:14px 0;padding:11px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.abo-tier-feature{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-secondary)}
.abo-tier-feature svg{width:12px;height:12px;color:var(--success);flex-shrink:0}
.abo-tier-feature strong{color:var(--text);font-weight:600}

.abo-plan-special{
  display:flex;align-items:center;gap:18px;
  padding:18px 20px;
  background:linear-gradient(135deg,#FBE9CC 0%,#F5E1B8 50%);
  border:1px solid #D89B4A;border-radius:10px;
}
.abo-plan-special-info{flex:1}
.abo-plan-special-title{font-family:'Fraunces',Georgia,serif;font-size:17px;font-weight:500;color:#5C3700;margin-bottom:4px}
.abo-plan-special-desc{font-size:12.5px;color:#704400;line-height:1.5}

/* Book Summary modal */
.book-summary{
  background:var(--bg-accent);
  border:1px solid var(--border);
  border-radius:8px;padding:13px 16px;
}
.book-summary-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:5px 0;font-size:13px;
}
.book-summary-row span:first-child{color:var(--text-muted)}
.book-summary-row.total{
  border-top:1px solid var(--border);
  margin-top:5px;padding-top:11px;
  font-size:16px;
}
.book-summary-row.total span:first-child{color:var(--text);font-weight:500}
.book-summary-row.total strong{font-family:'DM Mono',monospace;color:var(--accent);font-size:18px}
.abo-book-discount{
  margin-top:11px;padding:9px 13px;
  background:linear-gradient(135deg,#FBE9CC 0%,#F5E1B8 100%);
  border:1px solid #D89B4A;border-radius:6px;
  font-size:12px;color:#704400;font-weight:500;text-align:center;
}

/* Payment option (for change payment modal) */
.pay-option{
  display:flex;align-items:center;gap:11px;
  padding:11px 14px;
  border:1px solid var(--border);border-radius:8px;
  cursor:pointer;transition:all .12s;
}
.pay-option:hover{border-color:var(--border-strong)}
.pay-option.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.pay-option-radio{width:16px;height:16px;border:2px solid var(--border-strong);border-radius:50%;flex-shrink:0;position:relative}
.pay-option.selected .pay-option-radio{border-color:var(--accent)}
.pay-option.selected .pay-option-radio::after{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--accent)}
.pay-option-icon{width:32px;height:24px;background:var(--accent-light);color:var(--accent);border-radius:5px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pay-option-icon svg{width:16px;height:16px}
.pay-option-name{font-size:13.5px;font-weight:500}
.pay-option-desc{font-size:11.5px;color:var(--text-muted);margin-top:1px}

@media(max-width:1100px){
  .abo-plan-tiers{grid-template-columns:1fr}
  .abo-grid{grid-template-columns:1fr}
}

/* Demo Role Banner */
.demo-role-banner{
  display:flex;align-items:center;gap:8px;
  padding:9px 14px;margin-bottom:18px;
  background:var(--accent-soft);border:1px solid var(--accent-light);
  border-radius:8px;
  font-size:12.5px;color:var(--text-secondary);
}
.demo-role-banner svg{color:var(--accent);flex-shrink:0}
.demo-role-banner strong{color:var(--accent)}

/* Permission checkboxes */
.perm-check{display:inline-flex;cursor:pointer}
.perm-check input[type="checkbox"]{
  width:17px;height:17px;
  accent-color:var(--accent);
  cursor:pointer;
}

/* ========== OBJEKTE BASIS-MODUL ========== */
.obj-project-card{
  display:flex;align-items:flex-start;gap:18px;
  padding:18px 20px;margin-bottom:9px;
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  cursor:pointer;transition:all .12s;
}
.obj-project-card:hover{border-color:var(--accent);box-shadow:0 2px 6px rgba(15,64,122,.06)}
.obj-project-main{flex:1;min-width:0}
.obj-project-top{display:flex;align-items:center;gap:7px;margin-bottom:6px;flex-wrap:wrap}
.obj-project-name{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500;letter-spacing:-.01em;margin-bottom:3px}
.obj-project-meta{font-size:12.5px;color:var(--text-muted);margin-bottom:11px}
.obj-project-modules{display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.obj-project-stats{display:flex;flex-direction:column;gap:7px;align-items:flex-end;flex-shrink:0;min-width:180px}
.obj-project-stat{text-align:right}
.obj-project-stat-val{font-family:'DM Mono',monospace;font-size:20px;font-weight:600;line-height:1}
.obj-project-stat-lbl{font-size:10px;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;font-weight:500;margin-top:1px}
.obj-project-meta-date{font-size:11px;color:var(--text-muted);font-family:'DM Mono',monospace;display:flex;align-items:center;gap:4px;margin-top:5px}

.obj-detail-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}
.obj-summary-card{
  background:var(--surface);border:1px solid var(--border);border-radius:9px;
  padding:14px 16px;
}
.obj-summary-val{font-family:'DM Mono',monospace;font-size:24px;font-weight:600;line-height:1}
.obj-summary-lbl{font-size:11px;color:var(--text-muted);margin-top:4px;letter-spacing:.04em;text-transform:uppercase;font-weight:500}

/* Type selection in create modal */
.obj-type-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.obj-type-card{
  position:relative;
  display:flex;flex-direction:column;
  padding:13px 14px;
  border:1px solid var(--border);border-radius:9px;
  cursor:pointer;transition:all .12s;
}
.obj-type-card input[type="radio"]{position:absolute;opacity:0}
.obj-type-card.selected,.obj-type-card:has(input:checked){border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.obj-type-card:hover{border-color:var(--border-strong)}
.obj-type-icon{width:32px;height:32px;border-radius:7px;display:flex;align-items:center;justify-content:center;margin-bottom:9px}
.obj-type-icon svg{width:16px;height:16px}
.obj-type-name{font-size:13px;font-weight:500;margin-bottom:2px}
.obj-type-desc{font-size:11px;color:var(--text-muted);line-height:1.3}

/* Propagate Modal items */
.propagate-item{
  display:flex;align-items:flex-start;gap:11px;
  padding:13px 14px;margin-bottom:8px;
  border:1px solid var(--border);border-radius:8px;
  cursor:pointer;transition:all .12s;
}
.propagate-item:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.propagate-item input[type="checkbox"]{margin-top:9px;width:16px;height:16px;accent-color:var(--accent);flex-shrink:0}
.propagate-icon{width:34px;height:34px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.propagate-icon svg{width:16px;height:16px}
.propagate-info{flex:1;min-width:0}
.propagate-name{font-size:13.5px;font-weight:500;margin-bottom:2px}
.propagate-meta{font-size:11.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.propagate-warning{
  display:inline-flex;align-items:center;gap:4px;
  margin-top:5px;font-size:11px;color:var(--warning);font-weight:500;
}
.propagate-hint{font-size:11px;color:var(--text-muted);margin-top:5px;font-style:italic}

.abo-plan-included{
  display:flex;align-items:flex-start;gap:13px;
  padding:18px 20px;
  background:var(--success-bg);
  border:1px solid var(--success-border);border-radius:10px;
}
.abo-plan-included-title{font-size:14px;font-weight:500;color:var(--text);margin-bottom:5px;line-height:1.4}
.abo-plan-included-desc{font-size:12px;color:var(--text-secondary);line-height:1.5}

/* Objekte table - grouped headers */
.obj-table-wrap{overflow-x:auto}
.obj-group-row th{padding:0!important}
.obj-group-header{
  font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  padding:7px 12px!important;border-bottom:1px solid var(--border);
  text-align:left!important;
}
.obj-group-header.stamm{background:var(--bg-accent);color:var(--text-secondary)}
.obj-group-header.berechnung{background:var(--accent-soft);color:var(--accent)}
.obj-table-wrap th.sep-l{border-left:2px solid var(--accent-light)}
.obj-table-wrap td.sep-l{border-left:2px solid var(--accent-light)}

/* Upgrade banner */
.obj-upgrade-banner{
  display:flex;align-items:center;gap:13px;
  padding:14px 18px;margin-bottom:14px;
  background:linear-gradient(135deg,#FBE9CC 0%,#F5E1B8 100%);
  border:1px solid #D89B4A;border-radius:9px;
}
.obj-upgrade-banner-icon{
  width:36px;height:36px;border-radius:8px;
  background:#D89B4A;color:#fff;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.obj-upgrade-banner-icon svg{width:18px;height:18px}
.obj-upgrade-banner-content{flex:1}
.obj-upgrade-banner-title{font-size:14px;font-weight:600;color:#5C3700}
.obj-upgrade-banner-desc{font-size:12px;color:#704400;margin-top:2px;line-height:1.4}

.obj-summary-card.upgrade-card{
  background:#FBE9CC;border-color:#D89B4A;
  border-style:dashed;
}

/* Read-only Banner */
.readonly-banner{
  display:flex;align-items:center;gap:13px;
  padding:11px 16px;
  background:var(--bg-accent);
  border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.readonly-banner-icon{
  width:32px;height:32px;border-radius:7px;
  background:var(--surface);color:var(--text-muted);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;border:1px solid var(--border);
}
.readonly-banner-icon svg{width:15px;height:15px}
.readonly-banner-content{flex:1;min-width:0}
.readonly-banner-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:1px}
.readonly-banner-desc{font-size:11.5px;color:var(--text-secondary);line-height:1.4}

/* ========== ANHÄNGE / ATTACHMENTS ========== */
.attachments-section{margin-top:18px}
.attachments-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:11px;
}
.attachments-title{
  display:flex;align-items:center;gap:8px;
  font-family:'Fraunces',Georgia,serif;
  font-size:16px;font-weight:500;letter-spacing:-.01em;
}
.attachments-title svg{width:16px;height:16px;color:var(--text-secondary)}
.attachments-count{
  font-family:'DM Mono',monospace;font-size:11px;
  background:var(--bg-accent);color:var(--text-secondary);
  padding:2px 8px;border-radius:5px;font-weight:500;
}

.attachments-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:9px;
}

.attachment-card{
  display:flex;align-items:center;gap:10px;
  padding:11px 13px;
  background:var(--surface);
  border:1px solid var(--border);border-radius:9px;
  transition:all .12s;cursor:pointer;position:relative;
}
.attachment-card:hover{border-color:var(--accent);box-shadow:0 2px 6px rgba(15,64,122,.06)}
.attachment-card.confidential{border-left:3px solid var(--warning)}

.attachment-icon{
  width:38px;height:46px;border-radius:5px;
  background:var(--bg-accent);color:var(--text-muted);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  flex-shrink:0;font-family:'DM Mono',monospace;font-size:9px;font-weight:600;
  letter-spacing:.04em;position:relative;
  border:1px solid var(--border);
}
.attachment-icon::before{
  content:'';position:absolute;top:0;right:0;
  width:9px;height:9px;
  background:var(--surface);
  border-bottom:1px solid var(--border);border-left:1px solid var(--border);
  border-bottom-left-radius:2px;
}
.attachment-icon-ext{
  font-size:9px;font-weight:700;letter-spacing:.04em;color:var(--text-secondary);
  margin-top:3px;
}
.attachment-icon.pdf{background:#FAE6E4;color:#A8554F;border-color:#F0C9C6}
.attachment-icon.jpg,.attachment-icon.jpeg,.attachment-icon.png,.attachment-icon.heic{background:#E7F3D8;color:#3B6D11;border-color:#D0E5B8}
.attachment-icon.doc,.attachment-icon.docx{background:#E6F0FA;color:#15407A;border-color:#C7DEF2}
.attachment-icon.xls,.attachment-icon.xlsx{background:#D6EAD7;color:#2A6B3B;border-color:#B8D9BA}
.attachment-icon.dwg{background:#FBE9CC;color:#854F0B;border-color:#F0D4A0}
.attachment-icon.txt{background:#F1EFE7;color:#6F6A5C;border-color:var(--border)}

.attachment-info{flex:1;min-width:0}
.attachment-name{
  font-size:12.5px;font-weight:500;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  margin-bottom:3px;line-height:1.3;
}
.attachment-meta{
  display:flex;align-items:center;gap:5px;
  font-size:10.5px;color:var(--text-muted);
  font-family:'DM Mono',monospace;
}
.attachment-cat-tag{
  font-size:9.5px;font-weight:500;
  padding:1px 6px;border-radius:4px;
  letter-spacing:.02em;
  font-family:'DM Sans',sans-serif;
}
.attachment-version{
  font-family:'DM Mono',monospace;
  background:var(--accent-soft);color:var(--accent);
  padding:1px 5px;border-radius:3px;font-size:9.5px;font-weight:600;
}
.attachment-confidential-badge{
  position:absolute;top:5px;right:5px;
  background:var(--warning);color:#fff;
  padding:1px 5px;border-radius:3px;
  font-size:8.5px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;
}
.attachment-actions{display:flex;gap:3px;flex-shrink:0;opacity:0;transition:opacity .12s}
.attachment-card:hover .attachment-actions{opacity:1}
.attachment-action-btn{
  width:26px;height:26px;border-radius:5px;
  background:var(--bg-accent);border:none;
  color:var(--text-secondary);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .1s;
}
.attachment-action-btn:hover{background:var(--accent-soft);color:var(--accent)}
.attachment-action-btn svg{width:13px;height:13px}

/* Upload area */
.upload-dropzone{
  border:2px dashed var(--border-strong);
  border-radius:11px;
  padding:32px 24px;text-align:center;
  background:var(--bg-accent);
  transition:all .15s;cursor:pointer;
}
.upload-dropzone:hover,.upload-dropzone.dragover{
  border-color:var(--accent);
  background:var(--accent-soft);
}
.upload-dropzone-icon{
  width:48px;height:48px;border-radius:50%;
  background:var(--surface);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 11px;
  border:1px solid var(--accent-light);
}
.upload-dropzone-icon svg{width:22px;height:22px}
.upload-dropzone-title{font-size:14px;font-weight:500;color:var(--text)}
.upload-dropzone-desc{font-size:12px;color:var(--text-muted);margin-top:4px}
.upload-dropzone-formats{
  display:inline-flex;flex-wrap:wrap;gap:4px;
  margin-top:11px;justify-content:center;
}
.upload-format-tag{
  font-family:'DM Mono',monospace;font-size:9.5px;font-weight:500;
  background:var(--surface);color:var(--text-muted);
  padding:1px 6px;border-radius:3px;
  border:1px solid var(--border);
}

/* Anhang-Indikator in Listen */
.attachment-indicator{
  display:inline-flex;align-items:center;gap:3px;
  font-size:10.5px;color:var(--text-muted);
  background:var(--bg-accent);
  padding:2px 6px;border-radius:4px;
  font-family:'DM Mono',monospace;
}
.attachment-indicator svg{width:11px;height:11px}

/* Empty state for attachments */
.attachments-empty{
  padding:24px;text-align:center;
  color:var(--text-muted);
  background:var(--bg-accent);
  border:1px dashed var(--border);border-radius:9px;
  font-size:12.5px;
}

/* ========== ACTIVITY / AUDIT TRAIL ========== */
.activity-section{margin-top:20px}
.activity-section-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:13px;
}
.activity-section-title{
  display:flex;align-items:center;gap:8px;
  font-family:'Fraunces',Georgia,serif;
  font-size:16px;font-weight:500;letter-spacing:-.01em;
}
.activity-section-title svg{width:15px;height:15px;color:var(--text-secondary)}

.activity-timeline{
  position:relative;
  padding-left:0;
}
.activity-timeline::before{
  content:'';position:absolute;
  left:14px;top:14px;bottom:14px;
  width:1px;background:var(--border);
}

.activity-item{
  display:flex;align-items:flex-start;gap:11px;
  padding:9px 0;position:relative;
}
.activity-item:hover .activity-meta-time{color:var(--accent)}

.activity-marker{
  width:29px;height:29px;border-radius:50%;
  background:var(--surface);
  border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;position:relative;z-index:1;
  font-family:'DM Mono',monospace;font-size:10px;font-weight:600;
  color:var(--text-secondary);
}
.activity-marker.create{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}
.activity-marker.edit{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-light)}
.activity-marker.delete{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}
.activity-marker.upload{background:#FBE9CC;color:#854F0B;border-color:#F0D4A0}
.activity-marker.version{background:#EDE6F4;color:#5B2A85;border-color:#D9C8E8}

.activity-content{flex:1;min-width:0;padding-top:1px}
.activity-headline{
  font-size:13px;line-height:1.45;color:var(--text);
}
.activity-headline strong{font-weight:500}
.activity-headline .target{
  font-family:'DM Mono',monospace;font-size:12px;
  background:var(--bg-accent);color:var(--text-secondary);
  padding:1px 6px;border-radius:4px;
  margin:0 1px;
}
.activity-diff{
  display:inline-flex;align-items:center;gap:5px;
  margin-left:3px;font-size:11.5px;
}
.activity-diff-old{
  text-decoration:line-through;color:var(--text-muted);
  font-family:'DM Mono',monospace;
}
.activity-diff-arrow{color:var(--text-faint);font-size:10px}
.activity-diff-new{
  color:var(--success);font-weight:500;
  font-family:'DM Mono',monospace;
}

.activity-meta{
  display:flex;align-items:center;gap:9px;
  margin-top:3px;font-size:11px;color:var(--text-muted);
}
.activity-meta-user{display:flex;align-items:center;gap:5px}
.activity-meta-avatar{
  width:16px;height:16px;border-radius:50%;
  background:linear-gradient(135deg,#5A8FCF,#15407A);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:8.5px;font-weight:600;letter-spacing:.04em;
}
.activity-meta-time{
  font-family:'DM Mono',monospace;font-size:10.5px;
  letter-spacing:.02em;transition:color .12s;
}
.activity-meta-sep{color:var(--text-faint)}
.activity-meta-context{
  font-family:'DM Mono',monospace;font-size:10.5px;
  background:var(--bg-accent);padding:1px 6px;border-radius:4px;
  color:var(--text-secondary);
}

.activity-actions-bar{
  display:flex;gap:9px;align-items:center;
  padding:11px 0;margin-bottom:14px;
  border-bottom:1px solid var(--border);
}
.activity-filter-pill{
  display:inline-flex;align-items:center;gap:5px;
  padding:5px 11px;font-size:11.5px;font-weight:500;
  background:var(--bg-accent);color:var(--text-secondary);
  border:1px solid transparent;border-radius:6px;
  cursor:pointer;transition:all .12s;
}
.activity-filter-pill:hover{background:var(--accent-soft);color:var(--accent)}
.activity-filter-pill.active{background:var(--accent);color:#fff}
.activity-filter-pill svg{width:11px;height:11px}

.activity-day-divider{
  display:flex;align-items:center;gap:11px;
  margin:18px 0 7px;
  font-size:10.5px;font-weight:600;
  color:var(--text-faint);
  letter-spacing:.06em;text-transform:uppercase;
}
.activity-day-divider::before,.activity-day-divider::after{
  content:'';flex:1;height:1px;background:var(--border);
}

.activity-empty{
  padding:24px;text-align:center;
  background:var(--bg-accent);
  border:1px dashed var(--border);border-radius:9px;
  color:var(--text-muted);font-size:12.5px;
}

/* Activity dropdown in header */
.header-bell-wrap{position:relative}
.header-bell-dot{
  position:absolute;top:6px;right:7px;
  width:7px;height:7px;border-radius:50%;
  background:var(--danger);
  border:1.5px solid var(--surface);
}
.activity-dropdown{
  position:absolute;top:calc(100% + 7px);right:0;
  width:420px;
  background:var(--surface);
  border:1px solid var(--border);border-radius:9px;
  box-shadow:0 8px 24px rgba(20,18,12,.14);
  z-index:100;
  display:none;max-height:520px;overflow-y:auto;
}
.activity-dropdown.open{display:block;animation:searchIn .15s ease-out}
.activity-dropdown-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:11px 14px;border-bottom:1px solid var(--border);
  font-size:11px;font-weight:600;color:var(--text-secondary);
  letter-spacing:.04em;text-transform:uppercase;
}
.activity-dropdown-body{padding:6px 14px 11px}
.activity-dropdown-body .activity-timeline::before{display:none}
.activity-dropdown-body .activity-item{padding:7px 0;border-bottom:1px solid var(--border)}
.activity-dropdown-body .activity-item:last-child{border-bottom:none}

/* ========== JAHRESPLANUNG ========== */
.jp-header{padding:16px 24px;background:var(--surface);border-bottom:1px solid var(--border)}
.jp-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-top:11px}
.jp-id-row{display:flex;align-items:center;gap:7px;margin-bottom:5px;flex-wrap:wrap}
.jp-name{font-family:'Fraunces',Georgia,serif;font-size:22px;font-weight:500;letter-spacing:-.015em;line-height:1.2}
.jp-meta{font-size:12px;color:var(--text-muted);margin-top:4px}

.jp-toolbar{
  display:flex;align-items:center;gap:11px;
  padding:11px 24px;background:var(--surface);
  border-bottom:1px solid var(--border);
  flex-wrap:wrap;
}
.jp-nav{display:flex;align-items:center;gap:5px}
.jp-nav-btn{
  width:30px;height:30px;border-radius:6px;
  background:var(--bg-accent);border:1px solid var(--border);
  color:var(--text-secondary);cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:all .12s;
}
.jp-nav-btn:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-light)}
.jp-nav-btn svg{width:14px;height:14px}
.jp-period-label{
  font-family:'Fraunces',Georgia,serif;font-size:17px;font-weight:500;
  letter-spacing:-.01em;margin-left:11px;color:var(--text);
}

.jp-view-switch{
  display:inline-flex;background:var(--bg-accent);
  border:1px solid var(--border);border-radius:8px;padding:3px;
  margin-left:14px;
}
.jp-view-switch button{
  background:none;border:none;padding:5px 13px;
  font-size:12px;font-weight:500;color:var(--text-secondary);
  border-radius:5px;cursor:pointer;transition:all .12s;
  font-family:'DM Sans',sans-serif;
}
.jp-view-switch button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.06)}

.jp-ma-filter{
  padding:6px 11px;border:1px solid var(--border);border-radius:6px;
  background:var(--surface);font-size:12.5px;color:var(--text);
  cursor:pointer;
}

.jp-legend-bar{
  display:flex;align-items:center;gap:13px;
  padding:7px 24px;background:var(--bg-accent);
  border-bottom:1px solid var(--border);
  font-size:11px;color:var(--text-secondary);flex-wrap:wrap;
}
.jp-legend-item{
  display:inline-flex;align-items:center;gap:5px;
  background:var(--bg);padding:2px 8px;border-radius:5px;
  border:1px solid var(--border);
  color:var(--col);
}
.jp-legend-dot{
  width:8px;height:8px;border-radius:50%;
  background:var(--col);
}

.jp-layout{
  display:flex;flex:1;min-height:0;overflow:hidden;
}
.jp-main{
  flex:1;min-width:0;overflow:auto;
  background:var(--bg);
}
.jp-side{
  width:300px;background:var(--surface);
  border-left:1px solid var(--border);
  display:flex;flex-direction:column;flex-shrink:0;
}
.jp-side-header{padding:14px 16px;border-bottom:1px solid var(--border)}
.jp-side-title{font-size:13px;font-weight:600;color:var(--text)}
.jp-side-desc{font-size:11.5px;color:var(--text-muted);margin-top:3px;line-height:1.4}
.jp-side-body{padding:14px 16px;overflow-y:auto;flex:1}
.jp-side-ma{margin-bottom:11px;padding-bottom:11px;border-bottom:1px solid var(--border)}
.jp-side-ma:last-of-type{border-bottom:none}
.jp-side-ma-row{display:flex;align-items:center;gap:9px;margin-bottom:6px}
.jp-side-ma-info{flex:1;min-width:0}
.jp-side-ma-name{font-size:12.5px;font-weight:500}
.jp-side-ma-meta{font-size:10.5px;color:var(--text-muted);font-family:'DM Mono',monospace;margin-top:1px}
.jp-side-bar{
  height:6px;background:var(--bg-accent);
  border-radius:3px;overflow:hidden;
  position:relative;
}
.jp-side-bar-fill{height:100%;border-radius:3px;transition:width .3s}
.jp-side-bar-fill.success{background:var(--success)}
.jp-side-bar-fill.warning{background:var(--warning)}
.jp-side-bar-fill.danger{background:var(--danger)}
.jp-side-bar-fill.muted{background:var(--text-faint)}
.jp-side-bar-overflow{
  position:absolute;right:0;top:0;height:100%;
  background:repeating-linear-gradient(45deg,var(--danger),var(--danger) 3px,#bd6e68 3px,#bd6e68 6px);
}
.jp-side-section-title{
  font-size:10.5px;font-weight:600;color:var(--text-faint);
  letter-spacing:.08em;text-transform:uppercase;
  margin:18px 0 9px;
}

/* MONTH VIEW */
.jp-month{padding:18px 24px;background:var(--bg)}
.jp-month-header{
  display:grid;grid-template-columns:repeat(7,1fr);gap:5px;
  margin-bottom:5px;
}
.jp-month-day-name{
  font-size:10.5px;font-weight:600;
  color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;
  padding:6px 9px;
}
.jp-month-grid{
  display:grid;grid-template-columns:repeat(7,1fr);
  grid-auto-rows:120px;gap:5px;
}
.jp-month-cell{
  background:var(--surface);border:1px solid var(--border);border-radius:7px;
  padding:6px;cursor:pointer;transition:all .12s;
  display:flex;flex-direction:column;overflow:hidden;
}
.jp-month-cell:hover{border-color:var(--accent);box-shadow:0 2px 6px rgba(15,64,122,.06)}
.jp-month-cell.other-month{background:var(--bg-accent);opacity:.5}
.jp-month-cell.weekend{background:#f9f8f3}
.jp-month-cell.today{border-color:var(--accent);background:var(--accent-soft)}
.jp-month-cell-date{
  font-family:'DM Mono',monospace;font-size:12px;font-weight:600;
  color:var(--text);margin-bottom:5px;
}
.jp-month-cell.today .jp-month-cell-date{color:var(--accent)}
.jp-month-cell-tasks{display:flex;flex-direction:column;gap:2px;overflow:hidden}
.jp-day-task{
  display:flex;align-items:center;gap:5px;
  padding:2px 5px;border-radius:3px;
  font-size:9.5px;font-weight:500;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.jp-day-task-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}
.jp-day-task-h{margin-left:auto;font-family:'DM Mono',monospace;font-size:9px;opacity:.75;flex-shrink:0}
.jp-day-more{font-size:9.5px;color:var(--text-muted);padding:1px 5px;font-style:italic}

/* WEEK VIEW */
.jp-week{background:var(--surface);border-bottom:1px solid var(--border)}
.jp-week-header{
  display:grid;grid-template-columns:60px repeat(7,1fr);
  background:var(--bg-accent);border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:2;
}
.jp-week-time-col{
  padding:9px;font-size:10px;font-weight:500;
  color:var(--text-muted);font-family:'DM Mono',monospace;
  text-align:right;
  border-right:1px solid var(--border);
}
.jp-week-day-head{
  padding:9px 11px;text-align:center;
  border-right:1px solid var(--border);
}
.jp-week-day-head:last-child{border-right:none}
.jp-week-day-head.weekend{background:#f9f8f3}
.jp-week-day-name{font-size:10.5px;font-weight:600;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase}
.jp-week-day-num{font-family:'DM Mono',monospace;font-size:14px;font-weight:600;color:var(--text);margin-top:2px}
.jp-week-body{position:relative}
.jp-week-row{
  display:grid;grid-template-columns:60px repeat(7,1fr);
  height:50px;border-bottom:1px solid var(--border);
}
.jp-week-cell{
  position:relative;border-right:1px solid var(--border);
}
.jp-week-cell:last-child{border-right:none}
.jp-week-cell.weekend{background:#f9f8f3}
.jp-week-task{
  position:absolute;left:2px;right:2px;
  padding:3px 5px;border-radius:4px;
  font-size:10px;line-height:1.25;
  overflow:hidden;cursor:pointer;
  transition:transform .12s,box-shadow .12s;z-index:1;
}
.jp-week-task:hover{transform:scale(1.02);box-shadow:0 4px 8px rgba(0,0,0,.12);z-index:2}
.jp-week-task-time{font-family:'DM Mono',monospace;font-size:9px;font-weight:600;opacity:.8}
.jp-week-task-title{font-weight:500;font-size:10px;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jp-week-task-meta{font-size:9px;opacity:.7;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* LIST VIEW */
.jp-list{padding:18px 24px}
.jp-list-day{margin-bottom:18px}
.jp-list-day-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:9px 13px;background:var(--bg-accent);
  border:1px solid var(--border);border-radius:7px 7px 0 0;
}
.jp-list-day-date{display:flex;align-items:center;gap:11px}
.jp-list-day-dow{font-size:10.5px;font-weight:600;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase}
.jp-list-day-num{font-family:'Fraunces',Georgia,serif;font-size:15px;font-weight:500;letter-spacing:-.01em}
.jp-list-day-total{font-size:11.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.jp-list-items{background:var(--surface);border:1px solid var(--border);border-top:none;border-radius:0 0 7px 7px}
.jp-list-task{
  display:flex;align-items:center;gap:13px;
  padding:11px 13px;border-bottom:1px solid var(--border);
  cursor:pointer;transition:background .1s;
}
.jp-list-task:last-child{border-bottom:none}
.jp-list-task:hover{background:var(--accent-soft)}
.jp-list-task-time{font-family:'DM Mono',monospace;font-size:11.5px;color:var(--text-secondary);width:90px;flex-shrink:0}
.jp-list-task-type{
  font-family:'DM Mono',monospace;font-size:10.5px;font-weight:600;
  padding:2px 7px;border-radius:4px;
  flex-shrink:0;width:42px;text-align:center;
}
.jp-list-task-info{flex:1;min-width:0}
.jp-list-task-title{font-size:13px;font-weight:500;margin-bottom:1px}
.jp-list-task-meta{font-size:11px;color:var(--text-muted)}
.jp-list-task-ma{display:flex;align-items:center;gap:7px;flex-shrink:0;font-size:12px;color:var(--text-secondary)}
.jp-list-task-h{font-family:'DM Mono',monospace;font-size:12px;font-weight:500;color:var(--text);width:60px;text-align:right;flex-shrink:0}

@media(max-width:1100px){
  .jp-side{display:none}
  .jp-month-grid{grid-auto-rows:90px}
}

/* ========== INFO ICON TOOLTIP ========== */
.info-icon-tooltip {
  display:inline-flex;align-items:center;
  color:var(--text-muted);cursor:help;
  position:relative;
}
.info-icon-tooltip:hover::after {
  content: attr(title);
  position:absolute;left:50%;transform:translateX(-50%);
  top:calc(100% + 7px);
  background:#29251A;color:#fff;
  padding:9px 13px;border-radius:7px;
  font-size:12px;font-weight:400;line-height:1.5;
  white-space:normal;width:340px;
  z-index:999;
  pointer-events:none;
  font-family:'DM Sans',sans-serif;
  letter-spacing:0;text-transform:none;
}
.info-icon-tooltip:hover::before {
  content:'';position:absolute;
  top:calc(100% + 1px);left:50%;transform:translateX(-50%);
  border:5px solid transparent;
  border-bottom-color:#29251A;
  z-index:999;pointer-events:none;
}

/* ========== WOCHENPLANUNG NEU (Objekt-Grid) ========== */
.wp2-layout{display:flex;flex:1;overflow:hidden;min-height:0}
.wp2-sidebar{
  width:260px;flex-shrink:0;
  background:var(--surface);border-right:1px solid var(--border);
  display:flex;flex-direction:column;overflow:hidden;
}
.wp2-sidebar-header{
  padding:10px 12px;border-bottom:1px solid var(--border);
  font-size:11px;font-weight:600;color:var(--text-faint);
  letter-spacing:.06em;text-transform:uppercase;
  display:flex;align-items:center;justify-content:space-between;
}
.wp2-sidebar-scroll{flex:1;overflow-y:auto}

/* Person selector */
.wp2-person-bar{
  display:flex;align-items:center;gap:8px;
  padding:10px 16px;
  background:var(--surface);border-bottom:1px solid var(--border);
  flex-wrap:wrap;flex-shrink:0;
}
.wp2-person-label{font-size:11px;font-weight:600;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;margin-right:4px}
.wp2-person-pill{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px 5px 7px;
  border:2px solid transparent;border-radius:20px;
  cursor:pointer;transition:all .12s;
  font-size:12px;font-weight:500;
  background:var(--bg-accent);color:var(--text-secondary);
}
.wp2-person-pill:hover{border-color:currentColor;opacity:1}
.wp2-person-pill.active{background:var(--pill-bg,#E6F0FA);color:var(--pill-col,#15407A);border-color:var(--pill-col,#15407A)}
.wp2-person-avatar{
  width:20px;height:20px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:9px;font-weight:700;color:#fff;
  flex-shrink:0;
}
.wp2-person-none{
  font-size:11.5px;color:var(--text-muted);
  padding:5px 10px;border:1px dashed var(--border);border-radius:20px;cursor:pointer;
}
.wp2-person-none.active{border-color:var(--danger);color:var(--danger);background:var(--danger-bg)}

/* Capacity bars */
.wp2-capacity-wrap{
  display:flex;align-items:center;gap:14px;
  padding:8px 16px;
  background:var(--bg-accent);border-bottom:1px solid var(--border);
  overflow-x:auto;flex-shrink:0;
}
.wp2-cap-item{display:flex;align-items:center;gap:7px;flex-shrink:0}
.wp2-cap-avatar{
  width:22px;height:22px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:9.5px;font-weight:700;color:#fff;flex-shrink:0;
}
.wp2-cap-info{min-width:80px}
.wp2-cap-name{font-size:11px;font-weight:500;color:var(--text);white-space:nowrap}
.wp2-cap-nums{font-size:10px;font-family:'DM Mono',monospace;color:var(--text-muted)}
.wp2-cap-bar{
  width:80px;height:7px;background:var(--border);border-radius:4px;overflow:visible;position:relative;
}
.wp2-cap-bar-fill{
  height:100%;border-radius:4px;transition:width .3s;
  max-width:100%;
}
.wp2-cap-bar-fill.ok{background:var(--success)}
.wp2-cap-bar-fill.warn{background:var(--warning)}
.wp2-cap-bar-fill.over{background:var(--danger)}
.wp2-cap-divider{width:1px;height:32px;background:var(--border);flex-shrink:0}

/* Grid */
.wp2-grid-wrap{flex:1;overflow:auto;min-height:0}
.wp2-grid{border-collapse:collapse;min-width:100%}
.wp2-grid th,.wp2-grid td{border:1px solid var(--border)}
.wp2-grid thead tr:first-child th{
  background:var(--bg-accent);
  padding:7px 10px;
  font-size:11px;font-weight:600;
  color:var(--text-secondary);
  text-align:center;
  white-space:nowrap;
  position:sticky;top:0;z-index:2;
}
.wp2-grid thead tr:first-child th.obj-head{
  text-align:left;min-width:220px;background:var(--surface);
  position:sticky;left:0;z-index:3;
}
.wp2-grid thead tr:first-child th.weekend{background:#f7f5ee}
.wp2-day-total{
  font-family:'DM Mono',monospace;font-size:11px;
  color:var(--accent);font-weight:600;margin-top:2px;
}
.wp2-day-total.over{color:var(--danger)}

/* Object rows */
.wp2-section-row td{
  background:var(--bg-accent);
  padding:5px 10px;
  font-size:10.5px;font-weight:600;color:var(--text-faint);
  letter-spacing:.06em;text-transform:uppercase;
  position:sticky;left:0;
}
.wp2-obj-info-cell{
  background:var(--surface);padding:6px 10px;
  position:sticky;left:0;z-index:1;
  min-width:220px;max-width:220px;
}
.wp2-obj-info-cell .name{font-size:12px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wp2-obj-info-cell .meta{font-size:10px;color:var(--text-muted);font-family:'DM Mono',monospace;margin-top:1px;display:flex;gap:6px}
.wp2-obj-info-cell .tag-int{color:var(--accent);font-weight:500}
.wp2-day-cell{
  width:80px;min-width:70px;
  text-align:center;vertical-align:middle;
  padding:0;
  cursor:pointer;transition:background .1s;
  position:relative;
}
.wp2-day-cell.weekend{background:#f9f8f3}
.wp2-day-cell:hover:not(.done):not(.inactive){background:var(--accent-soft)}
.wp2-day-cell.done{cursor:default;background:var(--bg-accent)}
.wp2-day-cell.inactive{cursor:not-allowed;background:repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(0,0,0,.04) 4px,rgba(0,0,0,.04) 8px)}
.wp2-cell-inner{
  display:flex;flex-direction:column;gap:2px;
  padding:4px 3px;min-height:38px;align-items:center;justify-content:center;
}
.wp2-cell-slot{
  display:inline-flex;align-items:center;gap:3px;
  padding:2px 6px;border-radius:4px;
  font-size:10.5px;font-weight:600;
  width:100%;justify-content:center;
}
.wp2-cell-slot svg{width:9px;height:9px}
.wp2-cell-empty{
  width:20px;height:20px;border-radius:50%;
  border:1.5px dashed var(--border-strong);
  display:flex;align-items:center;justify-content:center;
}
.wp2-cell-empty svg{width:10px;height:10px;color:var(--text-faint)}

/* Context menu */
.wp2-ctx-menu{
  position:fixed;
  background:var(--surface);border:1px solid var(--border);
  border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.12);
  padding:4px;z-index:9999;min-width:160px;
}
.wp2-ctx-item{
  padding:7px 12px;font-size:12.5px;border-radius:5px;
  cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--text);
  transition:background .1s;
}
.wp2-ctx-item:hover{background:var(--accent-soft)}
.wp2-ctx-item.danger{color:var(--danger)}
.wp2-ctx-item.danger:hover{background:var(--danger-bg)}
.wp2-ctx-item svg{width:13px;height:13px}

/* Tfoot totals */
.wp2-grid tfoot td{
  background:var(--bg-accent);
  padding:6px 8px;
  font-size:11.5px;font-family:'DM Mono',monospace;
  text-align:center;font-weight:600;color:var(--text);
  position:sticky;bottom:0;z-index:1;
  border-top:2px solid var(--border);
}
.wp2-grid tfoot td:first-child{
  text-align:left;position:sticky;left:0;z-index:2;
  font-family:'DM Sans',sans-serif;font-size:11px;
  color:var(--text-faint);letter-spacing:.05em;text-transform:uppercase;
}

/* ===== Anlage Menu Button ===== */
.anlage-menu-btn{
  width:28px;height:28px;border-radius:6px;border:none;
  background:transparent;color:var(--text-muted);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:background .1s;
}
.anlage-menu-btn:hover{background:var(--bg-accent);color:var(--text)}
.anlage-ctx-menu{
  position:fixed;background:var(--surface);
  border:1px solid var(--border);border-radius:8px;
  box-shadow:0 4px 16px rgba(0,0,0,.12);
  padding:4px;z-index:9999;min-width:170px;
}
.anlage-ctx-item{
  padding:7px 12px;font-size:12.5px;border-radius:5px;
  cursor:pointer;display:flex;align-items:center;gap:9px;
  color:var(--text);transition:background .1s;
}
.anlage-ctx-item:hover{background:var(--accent-soft)}
.anlage-ctx-item.danger{color:var(--danger)}
.anlage-ctx-item.danger:hover{background:var(--danger-bg)}
.anlage-ctx-item svg{width:13px;height:13px;flex-shrink:0}
.anlage-ctx-divider{height:1px;background:var(--border);margin:3px 0}

/* ========== COLUMN GROUP PICKER ========== */
.col-picker-wrap{position:relative;display:inline-block}
.col-picker{
  display:none;
  position:absolute;
  top:calc(100% + 6px);
  left:0;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:12px;
  box-shadow:0 8px 32px rgba(0,0,0,.14);
  width:296px;
  z-index:300;
  overflow:hidden;
  animation:searchIn .12s ease-out;
}
.col-picker.open{display:block}
.col-picker-header{
  padding:11px 14px 9px;
  border-bottom:1px solid var(--border);
}
.col-picker-title{font-size:12.5px;font-weight:600;color:var(--text);display:block}
.col-picker-hint{font-size:10.5px;color:var(--text-muted);margin-top:2px;display:block}
.col-picker-groups{padding:5px 0}
.col-picker-item{
  display:flex;
  align-items:center;
  gap:10px;
  padding:7px 14px;
  cursor:pointer;
  transition:background .1s;
}
.col-picker-item:hover{background:var(--surface-2)}
.col-picker-item.disabled{opacity:.42;cursor:not-allowed}
.col-picker-item.disabled:hover{background:transparent}
.col-picker-item-info{flex:1;min-width:0}
.col-picker-item-label{font-size:12px;font-weight:500;color:var(--text);display:block}
.col-picker-item-desc{font-size:10.5px;color:var(--text-muted);margin-top:1px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.col-picker-restricted{font-size:10px;color:var(--danger);margin-top:2px;display:block}
.col-picker-footer{
  padding:7px 14px;
  border-top:1px solid var(--border);
  display:flex;
  justify-content:flex-end;
}
.col-group-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:16px;
  height:16px;
  padding:0 4px;
  border-radius:100px;
  font-size:9.5px;
  font-weight:600;
  background:var(--accent);
  color:#fff;
  margin-left:3px;
  vertical-align:middle;
}

/* ========== SUBFOLDER LIST TABLE ========== */
.subfolder-list{width:100%;border-collapse:collapse;font-size:12.5px}
.subfolder-list thead tr{border-bottom:1px solid var(--border)}
.subfolder-list thead th{padding:6px 10px;font-size:10.5px;font-weight:500;color:var(--text-faint);text-transform:uppercase;letter-spacing:.07em;white-space:nowrap}
.subfolder-list tbody tr.subfolder-row{cursor:pointer;border-bottom:1px solid var(--border)}
.subfolder-list tbody tr.subfolder-row:last-child{border-bottom:none}
.subfolder-list tbody tr.subfolder-row:hover{background:var(--surface-2)}
.subfolder-list tbody tr.subfolder-row:hover .sf-arrow{opacity:1;color:var(--accent)}
.sf-icon-name{display:flex;align-items:center;gap:9px;padding:9px 0 9px 10px}
.sf-icon{font-size:16px;flex-shrink:0;width:22px;text-align:center}
.sf-name{font-weight:500;font-size:13px;color:var(--text)}
.sf-summe td{border-top:2px solid var(--border);padding-top:8px;padding-bottom:8px;color:var(--text)}
.leer-tag{margin-left:8px;font-size:9.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--text-faint);border:1px solid var(--border);border-radius:6px;padding:1px 5px;vertical-align:middle}
.tree-count.empty{opacity:.4}
.warn-badge{cursor:help;font-size:12px;color:var(--warning);vertical-align:middle}
.c-dup-btn{background:none;border:0;color:var(--text-muted);cursor:pointer;font-size:13px;padding:0;line-height:1}
.c-dup-btn:hover{color:var(--accent)}
.feld-fehler .fsel-btn,.feld-fehler input,.feld-fehler select,.feld-fehler textarea{border-color:var(--danger) !important}
.feld-fehler-text{color:var(--danger);font-size:11px;margin-top:4px}
.sektion-summen{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0 16px}
.sektion-karte{flex:1 1 180px;border:1px solid var(--border);border-radius:10px;padding:11px 14px;background:var(--surface)}
.sektion-karte-titel{font-size:12px;font-weight:600;color:var(--text);margin-bottom:6px}
.sektion-karte-werte{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-muted)}
.sektion-karte-werte b{color:var(--text);font-variant-numeric:tabular-nums}
.sektion-karte.art-G{border-left:3px solid var(--accent)}
.sektion-karte.art-A{border-left:3px solid var(--success)}
.sektion-karte.art-S{border-left:3px solid var(--warning)}
@media print{
  .app-header,.sidebar,.proj-sidebar,.obj-toolbar,.version-bar,.ordner-breadcrumb form,.drag-handle,.c-action,.sf-action,.sf-arrow,.no-print{display:none !important}
  .app-body,.objekte-main,.obj-content,.obj-list{display:block !important;overflow:visible !important;width:auto !important}
  body,.app-body,.objekte-main{background:#fff !important;color:#000 !important}
  .objects,.subfolder-list{width:100% !important;font-size:9.5px !important}
  .objects th,.objects td,.subfolder-list th,.subfolder-list td,.ordner-breadcrumb{color:#000 !important}
  a{color:#000 !important;text-decoration:none !important}
  @page{margin:12mm}
}
.ordner-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:8px 4px 2px;font-size:12px;color:var(--text-muted)}
.ordner-breadcrumb a{color:var(--text-muted);text-decoration:none}
.ordner-breadcrumb a:hover{color:var(--accent);text-decoration:underline}
.ordner-breadcrumb .bc-sep{color:var(--text-faint)}
.ordner-breadcrumb .bc-current{color:var(--text);font-weight:500}
.inline-rename{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--accent);border-radius:5px;padding:1px 5px;width:100%;max-width:220px;box-sizing:border-box}
.ctx-menu{position:fixed;z-index:2000;background:var(--surface);border:1px solid var(--border);border-radius:9px;box-shadow:0 8px 28px rgba(0,0,0,.28);padding:5px;min-width:170px;display:flex;flex-direction:column}
.ctx-menu button{display:block;width:100%;text-align:left;background:none;border:0;border-radius:6px;padding:7px 10px;font-size:12.5px;color:var(--text);cursor:pointer}
.ctx-menu button:hover{background:var(--surface-2)}
.ctx-menu button.danger{color:var(--danger)}
.sf-num{font-family:'DM Mono',monospace;text-align:right;color:var(--text-muted);font-size:11.5px;padding:0 10px;white-space:nowrap}
.sf-num.strong{color:var(--text);font-weight:500}
.sf-arrow{text-align:center;color:var(--text-faint);opacity:0;transition:opacity .12s;font-size:16px;padding-right:8px;white-space:nowrap}


/* ===== Drag & Drop Sortierung (Objekte-Modul) ===== */
.tree-row[draggable="true"] { cursor: grab; }
.tree-row[draggable="true"]:active { cursor: grabbing; }
.tree-row.drag-over { box-shadow: inset 0 2px 0 0 var(--accent); background: var(--accent-soft); border-radius: 6px; }
table.objects tbody tr[draggable="true"] { cursor: grab; }
table.objects tbody tr[draggable="true"]:active { cursor: grabbing; }
table.objects tbody tr.drag-over > td { box-shadow: inset 0 2px 0 0 var(--accent); }


/* ===== Spalten-Picker: Gruppen-Ueberschriften + scrollbar bei vielen Spalten ===== */
.col-picker-grouphead{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:8px 14px 3px;background:var(--surface-2);position:sticky;top:0}
.col-picker-groups{max-height:56vh;overflow-y:auto}
.col-picker-footer{gap:6px}


/* ===== Ordner-Tabelle: editierbare Wochen + Bemerkung ===== */
.subfolder-list input.sf-wk-input{width:46px;text-align:right;border:1px solid transparent;background:transparent;font-family:'DM Mono',monospace;font-size:11px;border-radius:4px;padding:2px 4px}
.subfolder-list input.sf-wk-input:hover,.subfolder-list input.sf-wk-input:focus{border-color:var(--border);background:var(--surface);outline:none}
.subfolder-list td.sf-bem{min-width:150px}
.subfolder-list input.sf-bem-input{width:100%;min-width:130px;border:1px solid transparent;background:transparent;font-size:11.5px;color:var(--text-secondary);border-radius:4px;padding:2px 6px}
.subfolder-list input.sf-bem-input:hover,.subfolder-list input.sf-bem-input:focus{border-color:var(--border);background:var(--surface);outline:none}


/* ===== Zeilen-Aktion: Bearbeiten-Stift ===== */
.c-action{text-align:center;width:38px}
.subfolder-list td.sf-action{text-align:center;width:38px}
.row-edit-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:3px;border-radius:5px;opacity:0;transition:opacity .15s,background .15s,color .15s;display:inline-flex;align-items:center;justify-content:center}
table.objects tbody tr:hover .row-edit-btn,.subfolder-list tbody tr:hover .row-edit-btn{opacity:1}
.row-edit-btn:hover{background:var(--surface-2);color:var(--accent)}


/* ===== Ordner loeschen (Papierkorb) ===== */
.subfolder-list td.sf-action{width:94px;white-space:nowrap}
.subfolder-list td.sf-action form{margin:0}
.row-del-btn:hover{background:var(--danger-bg);color:var(--danger)}


/* ===== Zuteilungs-Workspace ===== */
#zut-workspace{padding:2px 24px 24px}
.zut-pensen-bar{padding:12px 0 6px}
.zut-pensen-bar-hint{font-size:12px;color:var(--text-muted);margin-bottom:8px}
.zut-pensen-chips{display:flex;flex-wrap:wrap;gap:8px}
.zut-chip{min-width:150px;border:1px solid var(--border);border-radius:9px;padding:8px 10px;cursor:pointer;background:var(--surface);transition:border-color .15s,box-shadow .15s}
.zut-chip:hover{border-color:var(--pcol)}
.zut-chip.active{border-color:var(--pcol);box-shadow:0 0 0 2px var(--pcol)}
.zut-chip-top{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:500}
.zut-chip-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.zut-chip-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}
.zut-chip-bar{height:6px;border-radius:3px;background:var(--surface-2);margin:6px 0 4px;overflow:hidden}
.zut-chip-bar-fill{height:100%;border-radius:3px;transition:width .2s}
.zut-chip-bar-fill.over{background:var(--danger)!important}
.zut-chip-meta{font-size:10.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.zut-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;margin-top:6px}
.zut-table{width:100%;border-collapse:collapse;font-size:11.5px;min-width:900px}
.zut-table th{background:var(--surface-2);border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:5px 7px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);text-align:center;white-space:nowrap}
.zut-table th.zt-name-h{text-align:left}
.zut-table th.zt-sub.nb{color:var(--success)}
.zut-table th.zt-sub.neb{color:var(--warning)}
.zut-table td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:4px 7px}
.zut-table .zt-name{white-space:nowrap;font-size:11.5px}
.zut-table .zt-obj-row .zt-name{color:var(--text-secondary)}
.zut-obj-nr{font-family:'DM Mono',monospace;font-size:10px;color:var(--text-muted);margin-right:5px}
.zt-icon{margin:0 5px 0 2px}
.zt-toggle{display:inline-block;width:14px;cursor:pointer;color:var(--text-muted);transition:transform .12s}
.zt-toggle.open{transform:rotate(90deg)}
.zt-toggle-leaf{display:inline-block;width:14px}
.zut-table .zt-cell{text-align:center;font-family:'DM Mono',monospace;cursor:pointer}
.zut-table .zt-cell.zt-empty{color:var(--text-faint);cursor:default}
.zut-table .zt-cell.zt-has:hover{outline:2px solid var(--accent);outline-offset:-2px}
.zut-table .zt-cell.mixed{background:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 4px,transparent 4px,transparent 8px)}
.zut-table .zt-total{text-align:right;font-family:'DM Mono',monospace;font-weight:500;color:var(--text-secondary)}
.zut-table .zt-folder-row>.zt-name{font-weight:500}
.zut-status{display:flex;align-items:center;gap:14px;margin-top:12px;padding:10px 14px;border-radius:9px;background:var(--surface-2)}
.zut-status.success{background:var(--success-bg)}
.zut-status.warning{background:var(--warning-bg)}
.zut-status-pill{font-weight:600;font-size:13px}
.zut-status.success .zut-status-pill{color:var(--success)}
.zut-status.warning .zut-status-pill{color:var(--warning)}
.zut-status-meta{font-size:12px;color:var(--text-secondary);font-family:'DM Mono',monospace}


/* ===== Zuteilung v2: Reststunden, Zustaende, Edit-Icon, Toast ===== */
.zut-table .zt-cell{position:relative;text-align:center;font-family:'DM Mono',monospace;cursor:pointer;white-space:nowrap}
.zut-table .zt-cell.open{color:var(--text-secondary)}
.zut-table .zt-cell.partial{background:var(--warning-bg);color:var(--warning);font-weight:600}
.zut-table .zt-cell.done{background:var(--success-bg);color:var(--success);font-weight:600}
.zut-table .zt-cell.zt-has:hover{outline:2px solid var(--accent);outline-offset:-2px}
.zt-cell-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-left:4px;vertical-align:middle}
.zt-cell-edit{opacity:.3;margin-left:5px;cursor:pointer;color:var(--text-muted);font-size:11px;transition:opacity .12s,color .12s}
.zut-table .zt-cell:hover .zt-cell-edit{opacity:.85}
.zt-cell-edit:hover{opacity:1;color:var(--accent)}
.zut-chip.full{border-color:var(--success)}
.zut-chip-full{margin-left:auto;font-size:9.5px;font-weight:600;color:var(--success);text-transform:uppercase;letter-spacing:.04em}
.zut-chip-top{justify-content:flex-start}
.zut-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(10px);background:var(--text);color:var(--surface);padding:9px 16px;border-radius:9px;font-size:12.5px;font-weight:500;box-shadow:0 6px 24px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:9999;max-width:80vw;text-align:center}
.zut-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}


/* ===== Zuteilung: Pensen-Chip mit Soll/Abzuege/Kapazitaet ===== */
.zut-chip{min-width:186px}
.zut-chip-grid{display:grid;grid-template-columns:auto 1fr;gap:1px 10px;margin:7px 0 6px;font-size:10.5px;line-height:1.5}
.zut-chip-grid .zc-l{color:var(--text-muted);white-space:nowrap}
.zut-chip-grid .zc-v{text-align:right;font-family:'DM Mono',monospace;color:var(--text-secondary);white-space:nowrap}
.zut-chip-grid .zc-strong{color:var(--text);font-weight:600}
.zut-chip-top{display:flex;align-items:center;gap:6px}
.zut-chip-tag{margin-left:auto;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);border:1px solid var(--border);border-radius:5px;padding:1px 5px}
.zut-chip-meta.zc-flex{color:var(--text-muted);font-style:italic}


/* ===== Zuteilung: Pane scrollbar + In-App-Popover ===== */
#tab-zuteilung{overflow-y:auto}
.zut-pensen-bar{position:sticky;top:0;z-index:6;background:var(--surface);border-bottom:1px solid var(--border)}
.zut-pop{position:fixed;z-index:10000;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.22);padding:12px 13px;width:238px;font-family:'DM Sans',sans-serif}
.zut-pop-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:2px}
.zut-pop-sub{font-size:11px;color:var(--text-muted);margin-bottom:10px}
.zut-pop-row{display:flex;align-items:center;gap:7px;margin-bottom:11px}
.zut-pop-row input{flex:1;min-width:0;padding:6px 8px;border:1px solid var(--border);border-radius:7px;font-family:'DM Mono',monospace;font-size:13px;background:var(--surface);color:var(--text)}
.zut-pop-row input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)}
.zut-pop-unit{font-size:11px;color:var(--text-muted);white-space:nowrap}
.zut-pop-btns{display:flex;justify-content:flex-end;gap:7px}


/* ===== Zuteilung: Gruppen-Trenner in der Stundentabelle ===== */
.zut-table th.zt-grp-start, .zut-table td.zt-grp-start{border-left:2px solid var(--border-strong, var(--border))}


/* ===== Zuteilung: Aktionen je Listeneintrag ===== */
.zut-list-actions{display:flex;flex-direction:column;justify-content:center;gap:6px;padding-left:10px;margin-left:2px;border-left:1px solid var(--border);flex-shrink:0}


/* ===== IST/SOLL-Vergleich Pensen ===== */
.vgl-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.vgl-title{font-family:'Fraunces',Georgia,serif;font-size:18px;font-weight:500}
.vgl-sub{font-size:12px;color:var(--text-muted);margin-top:2px;max-width:560px;line-height:1.5}
.vgl-select-wrap{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--text-muted);font-weight:500}
.vgl-select{padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:13px;font-family:'DM Sans',sans-serif;min-width:230px}
.vgl-status-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;flex-wrap:wrap}
.vgl-legend{display:flex;gap:14px;font-size:11.5px;color:var(--text-muted)}
.vgl-legend-item{display:flex;align-items:center;gap:5px}
.vgl-dot{width:10px;height:10px;border-radius:3px;display:inline-block}
.vgl-dot.ist{background:var(--text-muted)}
.vgl-dot.soll{background:var(--accent)}
.vgl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:14px}
.vgl-metric{border:1px solid var(--border);border-radius:11px;padding:14px 16px;background:var(--surface)}
.vgl-metric-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}
.vgl-metric-name{font-size:13px;font-weight:600;color:var(--text)}
.vgl-metric-diff{font-size:12px;font-weight:600;font-family:'DM Mono',monospace;padding:2px 9px;border-radius:20px}
.vgl-metric-diff.up{color:var(--warning);background:var(--warning-bg)}
.vgl-metric-diff.down{color:var(--success);background:var(--success-bg)}
.vgl-metric-diff.zero{color:var(--text-muted);background:var(--surface-2)}
.vgl-bar-row{display:flex;align-items:center;gap:9px;margin:6px 0}
.vgl-bar-lbl{width:36px;font-size:10.5px;font-weight:600;color:var(--text-muted);letter-spacing:.03em}
.vgl-bar-track{flex:1;height:14px;background:var(--surface-2);border-radius:7px;overflow:hidden}
.vgl-bar-fill{height:100%;border-radius:7px;transition:width .3s}
.vgl-bar-fill.ist{background:var(--text-muted)}
.vgl-bar-fill.soll{background:var(--accent)}
.vgl-bar-val{width:92px;text-align:right;font-size:11.5px;font-family:'DM Mono',monospace;color:var(--text-secondary)}


/* ===== Vergleich: Tabellen-Layout + Differenz gruen/rot ===== */
.vgl-table{margin-top:2px}
.vgl-table td.vgl-row-name{font-weight:500}
.vgl-table td.vgl-soll{font-weight:600}
.vgl-table td.vgl-diff{font-family:'DM Mono',monospace;font-weight:600}
.vgl-table td.vgl-diff.pos{color:var(--success)}
.vgl-table td.vgl-diff.neg{color:var(--danger)}
.vgl-table td.vgl-diff.neu{color:var(--text-muted)}
.vgl-arrow{font-size:10px}


/* ===== Standard-Werte: Objekttyp-Tabelle ===== */
.stdwerte-toolbar{display:flex;align-items:center;gap:12px;padding:0 20px 10px}
.stdwerte-search{padding:7px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;background:var(--surface);color:var(--text);width:250px;font-family:'DM Sans',sans-serif}
.stdwerte-search:focus{outline:none;border-color:var(--accent)}
.stdwerte-count{font-size:12px;color:var(--text-muted);font-family:'DM Mono',monospace}
.stdwerte-table-wrap{max-height:440px;overflow-y:auto;margin:0 20px 18px;border:1px solid var(--border);border-radius:9px}
.stdwerte-table{width:100%;border-collapse:collapse;font-size:12.5px}
.stdwerte-table th{position:sticky;top:0;background:var(--surface-2);border-bottom:1px solid var(--border);padding:8px 12px;text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600;z-index:1}
.stdwerte-table td{border-bottom:1px solid var(--border);padding:6px 12px;vertical-align:middle}
.stdwerte-table tr:last-child td{border-bottom:none}
.stdw-name{font-weight:500}
.stdw-interval{display:flex;align-items:center;gap:7px}
.stdw-num{width:64px;padding:5px 7px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:12.5px}
.stdw-sel{padding:5px 7px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:12.5px;font-family:'DM Sans',sans-serif}
.stdw-num:focus,.stdw-sel:focus{outline:none;border-color:var(--accent)}
.stdw-x{color:var(--text-muted)}


/* ===== Standard-Werte: Herkunft (geerbt/ueberschrieben) ===== */
.stdw-herkunft{white-space:nowrap}
.stdw-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:11px;text-transform:uppercase;letter-spacing:.03em}
.stdw-badge.inherit{background:var(--surface-2);color:var(--text-muted)}
.stdw-badge.over{background:var(--accent-soft);color:var(--accent)}
.stdw-reset{margin-left:9px;background:none;border:none;color:var(--accent);cursor:pointer;font-size:11px;font-family:'DM Sans',sans-serif;padding:0}
.stdw-reset:hover{text-decoration:underline}


/* ===== PDF-Export: Spalten-Picker + Querformat ===== */
.pdf-col-picker{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:2px}
.pdf-col-chk{font-size:11px;display:flex;align-items:center;gap:5px;color:var(--text-secondary);cursor:pointer}
.pdf-col-chk input{accent-color:var(--accent);width:13px;height:13px}
.pdf-preview-doc.landscape{border-left:3px solid var(--accent)}


/* ===== PDF Objektliste-Spalten: Gruppenkopf ===== */
.pdf-col-grouphead{flex-basis:100%;font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600;margin:7px 0 1px}


/* ===== Rollen-Editor + Master-Rolle ===== */
.role-tag.master{background:#F6E7C1;color:#7A5200;border:1px solid #E5CE93}
[data-theme="dark"] .role-tag.master{background:#3A2E12;color:#E5CE93;border-color:#55461F}
.roles-layout{display:flex;min-height:430px}
.roles-sidebar{width:212px;border-right:1px solid var(--border);padding:10px;flex-shrink:0;background:var(--surface-2)}
.roles-side-item{padding:9px 10px;border-radius:8px;cursor:pointer;margin-bottom:5px;border:1px solid transparent}
.roles-side-item:hover{background:var(--surface)}
.roles-side-item.active{background:var(--surface);border-color:var(--accent-light)}
.roles-side-desc{font-size:10.5px;color:var(--text-muted);margin-top:4px;line-height:1.4}
.roles-config{flex:1;padding:16px 18px;overflow-y:auto;max-height:62vh}
.roles-config-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.roles-config-desc{font-size:12px;color:var(--text-muted)}
.roles-lock-note{font-size:12px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-light);border-radius:8px;padding:8px 11px;margin-bottom:8px}
.roles-block-title{font-size:12px;font-weight:600;color:var(--text);margin:16px 0 8px;text-transform:uppercase;letter-spacing:.03em}
.roles-block-hint{text-transform:none;font-weight:400;color:var(--text-muted);font-size:11px;letter-spacing:0;margin-left:6px}
.roles-perm-table{width:100%;border-collapse:collapse;font-size:12.5px}
.roles-perm-table th{text-align:center;font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);padding:5px 6px;border-bottom:1px solid var(--border)}
.roles-perm-table th:first-child{text-align:left}
.roles-perm-table td{padding:5px 6px;border-bottom:1px solid var(--border)}
.roles-perm-table td.center{text-align:center}
.roles-perm-table input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent)}
.roles-feats{display:flex;flex-direction:column}
.roles-feat-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 2px;border-bottom:1px solid var(--border)}
.roles-feat-name{font-size:12.5px;font-weight:500}
.roles-feat-desc{font-size:11px;color:var(--text-muted);margin-top:1px}
.roles-cols{display:flex;flex-wrap:wrap;gap:7px 16px;margin-top:2px}
.roles-col-chk{font-size:12px;display:flex;align-items:center;gap:6px;color:var(--text-secondary);cursor:pointer}
.roles-col-chk input{accent-color:var(--accent);width:14px;height:14px}
.switch.disabled{opacity:.5;pointer-events:none}


/* ===== Sprach-Umschalter (Header) ===== */
.header-lang-wrap{position:relative}
#header-lang-btn{width:auto;padding:0 9px;display:inline-flex;align-items:center;gap:3px}
#header-lang-code{font-size:11px;font-weight:600}
.lang-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:186px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.16);padding:5px;display:none;z-index:300}
.lang-dropdown.open{display:block}
.lang-dropdown-head{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:6px 9px 4px}
.lang-item{display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--text)}
.lang-item:hover{background:var(--surface-2)}
.lang-item.active{background:var(--accent-soft);color:var(--accent);font-weight:500}
.lang-item .lang-code{margin-left:auto;font-family:'DM Mono',monospace;font-size:10px;color:var(--text-muted)}
.lang-item.active .lang-code{color:var(--accent)}

/* ---- Aufgaben-Modul ---------------------------------------------------- */
.au-badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap;border:1px solid transparent}
.au-st-offen{background:var(--bg-accent);color:var(--text-muted);border-color:var(--border-strong)}
.au-st-in_bearbeitung{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-light)}
.au-st-erledigt{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}
.au-st-storniert{background:var(--danger-bg);color:var(--text-muted);border-color:var(--border-strong);text-decoration:line-through}
.au-prio{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted)}
.au-prio .dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong);flex-shrink:0}
.au-prio.niedrig .dot{background:var(--text-faint)}
.au-prio.normal .dot{background:var(--accent)}
.au-prio.hoch .dot{background:var(--warning)}
.au-prio.dringend .dot{background:var(--danger)}
.au-prio.dringend{color:var(--danger);font-weight:600}
.au-filter{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.au-quelle{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:1px 6px;border-radius:4px;background:var(--warning-bg);color:var(--warning)}
.au-inline-status{font-size:11px;padding:2px 6px;border-radius:6px;border:1px solid var(--border);background:var(--surface)}

/* ---- Offerten: Status-Badges ---- */
.au-st-entwurf{background:var(--bg-accent);color:var(--text-muted);border-color:var(--border-strong)}
.au-st-versendet{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-light)}
.au-st-angenommen{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}
.au-st-abgelehnt{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}
.au-st-bezahlt{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}

/* Aussenanlage-Erfassung: Parameter-Auswahl einer Objekttyp-Variante (z. B. Rasen) */
.variante-params{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.variante-params .vparam{display:flex;flex-direction:column;gap:3px;flex:1 1 130px;min-width:120px}
.variante-params .vparam label{display:block;font-size:10px;font-weight:500;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin:0}

/* Änderungsprotokoll (Aktivität): Aktions-Badges */
.prot-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}
.prot-neu{background:var(--success-bg,#e6f5ec);color:var(--success,#1a7f43)}
.prot-mod{background:var(--accent-light);color:var(--accent)}
.prot-del{background:var(--danger-bg,#fdeaea);color:var(--danger,#c0392b)}

/* toolsuisse-Import: Objekt ohne Objekttyp -> gut sichtbare Warnzeile (amber) */
.obj-row.row-needs-typ{ background:rgba(245,158,11,.14); box-shadow:inset 3px 0 0 #e0a800; }
.obj-row.row-needs-typ:hover{ background:rgba(245,158,11,.24); }
