:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #fafbfc;--surface-3: #f0f2f5;--border: #e2e5ea;--border-strong: #cfd4dc;--text: #15181d;--text-2: #5a616d;--text-3: #8b929e;--accent: #2f5bea;--accent-soft: #e8edfd;--accent-text: #1d3fae;--red: #d4323a;--red-soft: #fdeaeb;--amber: #b06c00;--amber-soft: #fdf2dc;--green: #1a7f52;--green-soft: #e4f4ec;--violet: #6b40c4;--violet-soft: #f0eafc;--slate-soft: #eef0f3;--radius: 8px;--radius-sm: 5px;--shadow-sm: 0 1px 2px rgba(16, 20, 30, .05);--shadow: 0 1px 3px rgba(16, 20, 30, .07), 0 6px 20px -8px rgba(16, 20, 30, .14);--shadow-lg: 0 10px 40px -10px rgba(16, 20, 30, .3);--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}:root[data-theme=dark]{--bg: #0e1116;--surface: #161a21;--surface-2: #1b2029;--surface-3: #212832;--border: #272e39;--border-strong: #38414f;--text: #e6e9ef;--text-2: #a0a8b6;--text-3: #727b8a;--accent: #6d8dff;--accent-soft: #1d2740;--accent-text: #a8bcff;--red: #ff6b73;--red-soft: #2e181b;--amber: #e0a33a;--amber-soft: #2b2314;--green: #4fc48b;--green-soft: #15291f;--violet: #a98cf0;--violet-soft: #241c38;--slate-soft: #212832;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 8px 24px -10px rgba(0, 0, 0, .6);--shadow-lg: 0 16px 50px -12px rgba(0, 0, 0, .8)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--sans);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px;border:2px solid var(--bg)}.shell{display:grid;grid-template-columns:228px 1fr;min-height:100%}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{padding:18px 18px 14px;display:flex;align-items:center;gap:10px}.brand-mark{width:28px;height:28px;border-radius:7px;flex:none;background:linear-gradient(135deg,var(--accent),var(--violet));display:grid;place-items:center;color:#fff;font-weight:700;font-size:13px}.brand-name{font-weight:650;letter-spacing:-.01em}.brand-sub{font-size:11px;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase}.nav{padding:6px 10px;overflow-y:auto;flex:1}.nav-group{margin:14px 0 6px;padding:0 8px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-weight:600}.nav a{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:var(--radius-sm);color:var(--text-2);font-weight:500;text-decoration:none}.nav a:hover{background:var(--surface-3);color:var(--text);text-decoration:none}.nav a.active{background:var(--accent-soft);color:var(--accent-text);font-weight:600}.nav .ico{width:16px;text-align:center;font-size:13px;opacity:.85}.nav .pill{margin-left:auto;font-size:11px;padding:1px 6px;border-radius:10px;background:var(--red-soft);color:var(--red);font-weight:650}.sidebar-foot{padding:12px;border-top:1px solid var(--border);font-size:12px;color:var(--text-3)}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:12px 22px;background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.topbar h1{margin:0;font-size:17px;font-weight:650;letter-spacing:-.015em}.topbar .sub{color:var(--text-3);font-size:12.5px}.spacer{flex:1}.content{padding:22px;max-width:1680px;width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--border)}.card-head h2{margin:0;font-size:13px;font-weight:650;letter-spacing:.02em;text-transform:uppercase;color:var(--text-2)}.card-body{padding:16px}.card-body.flush{padding:0}.grid{display:grid;gap:14px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:14px}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);font-weight:550;cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-3)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.07)}.btn.danger{color:var(--red);border-color:color-mix(in srgb,var(--red) 40%,var(--border))}.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--surface-3);color:var(--text)}.btn.sm{padding:4px 9px;font-size:12.5px}.btn.lg{padding:10px 18px;font-size:15px}.input,select.input,textarea.input{width:100%;padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);outline:none}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea.input{min-height:72px;resize:vertical}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:11.5px;font-weight:600;color:var(--text-2);letter-spacing:.02em}.hint{font-size:12px;color:var(--text-3)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:650;letter-spacing:.02em;white-space:nowrap;background:var(--slate-soft);color:var(--text-2)}.badge.red{background:var(--red-soft);color:var(--red)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.green{background:var(--green-soft);color:var(--green)}.badge.blue{background:var(--accent-soft);color:var(--accent-text)}.badge.violet{background:var(--violet-soft);color:var(--violet)}.badge.outline{background:transparent;border:1px solid var(--border-strong);color:var(--text-2)}.ref{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--text-2)}.muted{color:var(--text-3)}.small{font-size:12.5px}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 15px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;cursor:pointer;text-align:left;display:block;width:100%}.kpi:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--border-strong)}.kpi.red:before{background:var(--red)}.kpi.amber:before{background:var(--amber)}.kpi.green:before{background:var(--green)}.kpi.blue:before{background:var(--accent)}.kpi.violet:before{background:var(--violet)}.kpi-label{font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-weight:650}.kpi-value{font-size:30px;font-weight:680;letter-spacing:-.03em;line-height:1.1;margin-top:4px}.kpi.red .kpi-value{color:var(--red)}.kpi.amber .kpi-value{color:var(--amber)}.kpi.green .kpi-value{color:var(--green)}.kpi-note{font-size:11.5px;color:var(--text-3);margin-top:2px}.health{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;padding:18px 20px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-sm)}.health-light{display:flex;flex-direction:column;gap:6px;align-items:center}.lamp{width:15px;height:15px;border-radius:50%;background:var(--border)}.lamp.on.rot{background:var(--red);box-shadow:0 0 0 4px var(--red-soft)}.lamp.on.gelb{background:var(--amber);box-shadow:0 0 0 4px var(--amber-soft)}.lamp.on.gruen{background:var(--green);box-shadow:0 0 0 4px var(--green-soft)}.health-title{font-size:22px;font-weight:700;letter-spacing:-.02em}.health.rot .health-title{color:var(--red)}.health.gelb .health-title{color:var(--amber)}.health.gruen .health-title{color:var(--green)}.health-reasons{margin:8px 0 0;padding-left:18px;color:var(--text-2)}.health-reasons li{margin:2px 0}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}table.data th{position:sticky;top:0;z-index:2;text-align:left;padding:8px 10px;background:var(--surface-2);border-bottom:1px solid var(--border);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);font-weight:650;white-space:nowrap}table.data td{padding:7px 10px;border-bottom:1px solid var(--border);vertical-align:top}table.data tbody tr:hover{background:var(--surface-2)}table.data tbody tr.selected{background:var(--accent-soft)}table.data tbody tr.urgent td:first-child{box-shadow:inset 3px 0 0 var(--red)}table.data tbody tr.warn td:first-child{box-shadow:inset 3px 0 0 var(--amber)}table.data tbody tr.done{opacity:.6}table.data td.cell-edit{padding:2px 4px}table.data .link{font-weight:550;color:var(--text);cursor:pointer}table.data .link:hover{color:var(--accent);text-decoration:underline}.cellselect{width:100%;border:1px solid transparent;background:transparent;padding:5px 6px;border-radius:4px;cursor:pointer;font-size:12.5px}.cellselect:hover{border-color:var(--border-strong);background:var(--surface)}.cellselect:focus{border-color:var(--accent);background:var(--surface);outline:none}.celldate{font-family:var(--mono);font-size:12px}.empty{padding:40px 20px;text-align:center;color:var(--text-3)}.empty .big{font-size:15px;color:var(--text-2);font-weight:550;margin-bottom:4px}.att{display:flex;flex-direction:column}.att-row{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:start;padding:11px 16px;border-bottom:1px solid var(--border);cursor:pointer}.att-row:hover{background:var(--surface-2)}.att-row:last-child{border-bottom:none}.att-title{font-weight:550}.att-meta{font-size:12px;color:var(--text-3);margin-top:3px;display:flex;gap:8px;flex-wrap:wrap}.att-labels{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;max-width:320px}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0d1273;z-index:50}.drawer{position:fixed;right:0;top:0;bottom:0;width:min(760px,100%);background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:51;display:flex;flex-direction:column}.drawer-head{padding:16px 20px;border-bottom:1px solid var(--border)}.drawer-body{padding:18px 20px;overflow-y:auto;flex:1}.drawer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.drawer-grid .full{grid-column:1 / -1}.section-title{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-weight:650;margin:20px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--border)}.timeline-list{display:flex;flex-direction:column;gap:0}.tl-item{display:grid;grid-template-columns:112px 1fr;gap:12px;padding:8px 0;border-bottom:1px dashed var(--border);font-size:12.5px}.tl-when{color:var(--text-3);font-family:var(--mono);font-size:11.5px}.tl-what strong{font-weight:600}.tl-reason{color:var(--amber);font-size:12px;margin-top:2px}.diffval{font-family:var(--mono);font-size:12px}.diffval.old{color:var(--text-3);text-decoration:line-through}.diffval.new{color:var(--text);font-weight:600}.jf-steps{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.jf-step{padding:6px 11px;border-radius:20px;border:1px solid var(--border-strong);background:var(--surface);font-size:12.5px;cursor:pointer;font-weight:550;display:flex;gap:6px;align-items:center}.jf-step.active{background:var(--accent);border-color:var(--accent);color:#fff}.jf-step .n{opacity:.6;font-family:var(--mono);font-size:11px}.jf-step .cnt{font-size:11px;padding:0 5px;border-radius:8px;background:var(--surface-3)}.jf-step.active .cnt{background:#ffffff38}.jf-step.has-issue{border-color:color-mix(in srgb,var(--red) 50%,var(--border))}.jf-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:10px}.jf-card-head{display:flex;gap:10px;align-items:flex-start;padding:12px 14px}.jf-card-body{padding:0 14px 12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.gantt{overflow-x:auto}.gantt-inner{min-width:900px;position:relative}.gantt-head{display:flex;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:3}.gantt-label-col{width:290px;flex:none;border-right:1px solid var(--border);padding:8px 10px;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:650}.gantt-months{flex:1;display:flex}.gantt-month{border-left:1px solid var(--border);padding:8px;font-size:11px;color:var(--text-2);font-weight:600;white-space:nowrap;overflow:hidden}.gantt-row{display:flex;border-bottom:1px solid var(--border);min-height:34px}.gantt-row:hover{background:var(--surface-2)}.gantt-row-label{width:290px;flex:none;border-right:1px solid var(--border);padding:7px 10px;display:flex;gap:7px;align-items:center;overflow:hidden}.gantt-track{flex:1;position:relative}.gantt-bar{position:absolute;top:8px;height:17px;border-radius:4px;background:var(--accent);display:flex;align-items:center;padding:0 6px;font-size:10.5px;color:#fff;font-weight:600;overflow:hidden;cursor:pointer}.gantt-bar.blockiert{background:var(--amber)}.gantt-bar.erledigt{background:var(--green)}.gantt-bar.zurueckgestellt{background:var(--text-3)}.gantt-bar.overdue{background:var(--red)}.gantt-bar.point{width:10px!important;height:10px;border-radius:50%;top:11px;padding:0}.gantt-ms{position:absolute;top:4px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center}.gantt-diamond{width:13px;height:13px;background:var(--violet);transform:rotate(45deg);border-radius:2px}.gantt-diamond.rot{background:var(--red)}.gantt-diamond.gelb{background:var(--amber)}.gantt-diamond.gruen{background:var(--green)}.gantt-today{position:absolute;top:0;bottom:0;width:2px;background:color-mix(in srgb,var(--red) 70%,transparent);z-index:2}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 50% -10%,var(--accent-soft),var(--bg))}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:28px}.login-card h1{margin:14px 0 4px;font-size:20px;letter-spacing:-.02em}.alert{padding:9px 12px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:12px}.alert.error{background:var(--red-soft);color:var(--red)}.alert.warn{background:var(--amber-soft);color:var(--amber)}.alert.ok{background:var(--green-soft);color:var(--green)}.progress{height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden;min-width:60px}.progress>span{display:block;height:100%;background:var(--accent)}.progress.rot>span{background:var(--red)}.progress.gelb>span{background:var(--amber)}.progress.gruen>span{background:var(--green)}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:3px 8px;border-radius:20px;border:1px solid var(--border-strong);font-size:12px;cursor:pointer;background:var(--surface)}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.toast-host{position:fixed;bottom:18px;left:50%;transform:translate(-50%);z-index:100;display:flex;flex-direction:column;gap:8px}.toast{padding:10px 16px;border-radius:var(--radius);background:var(--text);color:var(--bg);box-shadow:var(--shadow-lg);font-size:13px;max-width:520px}.toast.error{background:var(--red);color:#fff}.toast.ok{background:var(--green);color:#fff}.loading{padding:60px;text-align:center;color:var(--text-3)}kbd{font-family:var(--mono);font-size:11px;padding:1px 5px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:4px;background:var(--surface-2)}@media (max-width: 900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;align-items:center;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border)}.brand{padding:10px 14px}.brand-sub{display:none}.nav{display:flex;gap:4px;padding:8px;flex:1}.nav-group,.sidebar-foot{display:none}.nav a{white-space:nowrap}.nav a span.lbl{display:none}.content{padding:14px}.drawer-grid{grid-template-columns:1fr}.gantt-label-col,.gantt-row-label{width:160px}}
