:root{--paper: #ece9e2;--panel: #ffffff;--panel-2: #f5f5f2;--ink: #1a1d1f;--ink-soft: #5b6063;--ink-faint: #8a8e90;--border: #d7d8d3;--border-strong: #b9bbb5;--accent-site: #5b7fbf;--accent-structural: #e0632e;--font-body: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:14px}button,input,select{font-family:inherit;font-size:inherit;color:inherit}.btn{font-weight:600;font-size:13px;border-radius:6px;border:1px solid var(--border-strong);background:var(--panel);color:var(--ink);padding:8px 14px;cursor:pointer}.btn:hover{background:var(--panel-2)}.btn.active,.btn-primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-structural{background:var(--accent-structural);color:#fff;border-color:var(--accent-structural)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label,.field-label{font-size:12px;font-weight:600;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.field input,.field select,.field textarea{border:1px solid var(--border-strong);border-radius:4px;padding:8px 10px;background:var(--panel);font-family:var(--font-mono);font-size:13px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:20px 22px;margin-bottom:18px}.card-title{font-size:15px;font-weight:700;margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--border)}.stat-row{display:flex;justify-content:space-between;font-size:12.5px;padding:4px 0;border-bottom:1px dashed var(--border)}.stat-row .k{color:var(--ink-soft)}.stat-row .v{font-family:var(--font-mono);font-weight:600}.setup-wrap{max-width:1100px;margin:0 auto;padding:40px 24px 100px}.setup-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:24px;align-items:start}.setup-title{font-size:30px;font-weight:700;margin:0 0 8px}.setup-sub{color:var(--ink-soft);max-width:640px;margin:0 0 32px}.setup-footer{position:sticky;bottom:0;background:linear-gradient(to top,var(--paper) 60%,transparent);padding:20px 0 0;display:flex;justify-content:flex-end}.poly-svg{width:100%;height:220px;background:#14171a;border-radius:6px}#main-screen{height:100%;display:grid;grid-template-rows:auto auto 1fr}.topbar,.floorbar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border)}.topbar{justify-content:space-between}.topbar-title{font-weight:700;font-size:15px}.topbar-sub{font-size:12px;color:var(--ink-faint)}.floor-tab{padding:6px 12px;border-radius:5px;border:1px solid transparent;background:transparent;cursor:pointer;font-weight:600;font-size:13px}.floor-tab.active{background:var(--panel-2);border-color:var(--border)}.workspace{display:grid;grid-template-columns:56px 1fr 280px;min-height:0}.tool-rail{display:flex;flex-direction:column;gap:6px;padding:10px 8px;background:var(--panel);border-right:1px solid var(--border)}.tool-btn{width:38px;height:38px;border-radius:6px;border:1px solid var(--border-strong);background:var(--panel);cursor:pointer;font-size:12px}.tool-btn.active{background:var(--ink);color:#fff}.viewport-host{position:relative;background:#14171a}.viewport-label{position:absolute;top:12px;left:12px;z-index:5;color:#e8e9e6;font-family:var(--font-mono);font-size:11px;background:#14171a99;padding:4px 8px;border-radius:4px}.side-panel{background:var(--panel);border-left:1px solid var(--border);padding:16px;overflow-y:auto}.side-panel h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin:0 0 12px}.empty-hint{color:var(--ink-faint);font-size:12.5px}.auth-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:40px 20px}.auth-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:32px;width:100%;max-width:420px}.auth-eyebrow,.setup-eyebrow{font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--accent-structural);margin-bottom:8px}.auth-title{font-size:24px;font-weight:700;margin:0 0 6px}.auth-sub{color:var(--ink-soft);font-size:13.5px;margin:0 0 22px}.field .hint{font-size:11.5px;color:var(--ink-faint);font-weight:400;text-transform:none;letter-spacing:0}.form-error{background:#fdecea;border:1px solid #f3b5ac;color:#9b2c1c;border-radius:5px;padding:9px 11px;font-size:12.5px;margin-bottom:14px}.btn-block{width:100%;justify-content:center}.btn-link{background:transparent;border-color:transparent;color:var(--accent-site);text-decoration:underline;padding:8px 0}.btn-link:hover{background:transparent;color:var(--ink)}.btn-sm{padding:5px 9px;font-size:12px}.list-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:28px}.project-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:14px 0;border-bottom:1px solid var(--border)}.project-row:last-child{border-bottom:none}.project-name{background:none;border:none;padding:0;font-size:15px;font-weight:600;color:var(--ink);cursor:pointer;text-align:left}.project-name:hover{color:var(--accent-site);text-decoration:underline}.project-adresse{font-size:12.5px;color:var(--ink-soft);margin-top:2px}.project-meta{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-faint);margin-top:4px}.project-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.status-chip{font-family:var(--font-mono);font-size:11px;font-weight:600;padding:3px 8px;border-radius:3px;white-space:nowrap;border:1px solid transparent}.status-neutral{background:var(--panel-2);color:var(--ink-soft);border-color:var(--border)}.status-aktiv{background:#fbe9e1;color:#9a3e1c;border-color:#f0c3ac}.status-fertig{background:#e3f1eb;color:#245e48;border-color:#b7decc}.status-abgebrochen{background:#f1f1ef;color:#8a8e90;border-color:var(--border)}.save-hint{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-faint);white-space:nowrap}.save-error{color:#c7402e}.kosten-tabelle{width:100%;border-collapse:collapse;font-size:12.5px}.kosten-tabelle th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);border-bottom:1px solid var(--border-strong);padding:6px 8px 6px 0}.kosten-tabelle td{padding:7px 8px 7px 0;border-bottom:1px solid var(--border);vertical-align:top}.kosten-tabelle .num{text-align:right;padding-right:0;white-space:nowrap}.kosten-tabelle .mono{font-family:var(--font-mono)}.kosten-tabelle tfoot td{border-bottom:none;padding-top:8px;color:var(--ink-soft)}.kosten-tabelle tfoot .summe td{font-weight:700;font-size:14px;color:var(--ink);border-top:2px solid var(--ink);padding-top:10px}.hinweis-box{margin-top:16px;background:var(--panel-2);border-left:3px solid var(--accent-structural);border-radius:0 5px 5px 0;padding:12px 14px;font-size:12.5px;line-height:1.55;color:var(--ink-soft)}.hinweis-box strong{color:var(--ink)}.zustimmung{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;line-height:1.5;color:var(--ink-soft);margin-bottom:14px;cursor:pointer}.zustimmung input{margin-top:2px;flex-shrink:0;width:16px;height:16px;cursor:pointer}.standort-box{background:var(--panel-2);border:1px solid var(--border);border-radius:5px;padding:10px 12px;font-size:12.5px;color:var(--ink);margin:-4px 0 14px}.standort-hinweis{color:var(--ink-faint);font-size:11.5px;margin-top:4px;line-height:1.5}.reiter{display:flex;gap:8px;margin-bottom:20px}.badge{display:inline-block;margin-left:6px;background:var(--accent-structural);color:#fff;border-radius:9px;padding:1px 7px;font-size:11px;font-family:var(--font-mono)}.verwaltung-projekt{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:8px}.verwaltung-projekt:last-child{border-bottom:none}.zuweisung-karte{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:14px 16px;margin:4px 0 14px}.zuweisung-spalten{display:grid;grid-template-columns:1fr 1.4fr;gap:20px}.zuweisung-titel{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-bottom:10px}.bewerber-zeile{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}.bewerber-zeile:last-child{border-bottom:none}.pruef-karte{border-bottom:1px solid var(--border);padding-bottom:14px;margin-bottom:14px}.pruef-karte:last-child{border-bottom:none;margin-bottom:0}.nachweis-liste{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.nachweis-chip{font-family:var(--font-mono);font-size:11px;background:var(--panel-2);border:1px solid var(--border);border-radius:3px;padding:4px 8px;color:var(--ink-soft);text-decoration:none}a.nachweis-chip:hover{border-color:var(--accent-site);color:var(--accent-site)}.ablehnung-grund{width:100%;border:1px solid var(--border-strong);border-radius:4px;padding:8px 10px;margin-bottom:10px;font-size:13px}.statik-aktionen{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;flex-wrap:wrap}.statik-kennzahl{font-size:13px;color:var(--ink-soft)}.statik-kennzahl strong{font-size:18px;color:var(--ink);font-family:var(--font-mono)}.statik-tabelle tbody tr.statik-zeile{cursor:pointer}.statik-tabelle tbody tr.statik-zeile:hover td{background:var(--panel-2)}.statik-pfeil{color:var(--ink-faint);width:18px;text-align:right}.statik-detail td{background:var(--panel-2);padding:10px 12px 12px 0}.statik-detail-inhalt{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ink-soft);line-height:1.5;padding-left:12px;border-left:2px solid var(--border-strong)}.statik-label{display:inline-block;min-width:72px;font-weight:700;color:var(--ink);text-transform:uppercase;font-size:10px;letter-spacing:.04em;margin-right:8px}.statik-hinweis{color:#9a3e1c}.hinweis-liste{margin:0;padding-left:18px;font-size:12.5px;color:var(--ink-soft);line-height:1.6}.statik-tabelle th,.statik-tabelle td{padding-right:14px}.statik-tabelle .num{padding-right:14px;white-space:nowrap}.statik-tabelle td:last-child,.statik-tabelle th:last-child{padding-right:0}.statik-tabelle th:nth-child(5),.statik-tabelle td:nth-child(5){padding-left:6px}.viewport-overlay{position:absolute;bottom:14px;left:14px;z-index:5;background:#14171ad1;border:1px solid rgba(232,233,230,.14);border-radius:6px;padding:8px 10px}.viewport-overlay-titel{display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#9ca0a2;margin-bottom:6px}.viewport-overlay-knoepfe{display:flex;gap:4px}.overlay-btn{background:transparent;border:1px solid rgba(232,233,230,.22);color:#e8e9e6;border-radius:4px;padding:4px 9px;font-size:12px;cursor:pointer}.overlay-btn:hover:not(:disabled){border-color:var(--accent-structural)}.overlay-btn.active{background:var(--accent-structural);border-color:var(--accent-structural);color:#fff;font-weight:600}.overlay-btn:disabled{opacity:.45;cursor:not-allowed}.aufbau-block{border-bottom:1px solid var(--border);padding-bottom:10px;margin-bottom:10px}.aufbau-block:last-child{border-bottom:none}.aufbau-kopf{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;background:none;border:none;padding:8px 0;cursor:pointer;text-align:left;font-size:13.5px;color:var(--ink)}.aufbau-kopf:hover{color:var(--accent-site)}.aufbau-kopf .mono{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-faint);white-space:nowrap}.schichten{padding:6px 0 4px}.schicht-tabelle th,.schicht-tabelle td{padding-right:12px}.schicht-feld{border:1px solid var(--border);border-radius:3px;padding:4px 6px;font-size:12.5px;font-family:var(--font-body);width:100%;max-width:260px}.schicht-feld.num{font-family:var(--font-mono);text-align:right;max-width:80px}.schicht-feld:disabled{background:var(--panel-2);color:var(--ink-faint)}.schicht-reihenfolge{white-space:nowrap;width:44px}.schicht-reihenfolge button{background:none;border:1px solid var(--border);border-radius:3px;width:18px;height:18px;line-height:1;cursor:pointer;color:var(--ink-soft);padding:0}.schicht-reihenfolge button:disabled{opacity:.3;cursor:not-allowed}.schicht-marke{display:inline-block;margin-left:8px;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#9a3e1c;background:#fbe9e1;border:1px solid #f0c3ac;border-radius:3px;padding:1px 5px}.einheit{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint);margin-left:4px}.fassaden-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}.fassade-kachel{display:flex;align-items:center;gap:10px;border:1px solid var(--border-strong);border-radius:6px;background:var(--panel);padding:9px 12px;cursor:pointer;font-size:13px;text-align:left}.fassade-kachel:hover:not(:disabled){border-color:var(--accent-site)}.fassade-kachel.active{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);font-weight:600}.fassade-probe{width:26px;height:26px;border-radius:4px;border:1px solid var(--border-strong);flex-shrink:0}.kennzahl-gitter{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.kennzahl{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}.kennzahl strong{font-family:var(--font-mono);font-size:20px;color:var(--ink)}.kennzahl span{font-size:11.5px;color:var(--ink-soft)}.vba-zeile{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:12px 0;border-bottom:1px solid var(--border)}.vba-zeile:last-child{border-bottom:none}.vba-zeile.inaktiv{opacity:.55}.preis-eingabe{width:88px;text-align:right;font-family:var(--font-mono, ui-monospace, monospace);padding:3px 6px}tr.inaktiv{opacity:.5}.bim-4d-szene{position:relative;height:380px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#11161a}.bim-4d-marke{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;gap:2px;padding:8px 12px;border-radius:6px;background:#11161ad1;color:#f3f2ee;font-family:var(--font-mono);font-size:12px;line-height:1.35}.bim-4d-marke strong{font-size:15px}.bim-4d-marke span{color:#b6bcc0}.bim-4d-steuerung{display:flex;align-items:center;gap:10px;margin-top:12px}.bim-4d-steuerung input[type=range]{flex:1;accent-color:var(--accent-structural)}.bim-4d-status{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;min-height:26px}.bim-baubeginn{display:flex;align-items:flex-end;gap:12px;margin-bottom:14px}.bim-baubeginn .field{margin-bottom:0}.bim-ampel{padding:10px 12px;border-radius:6px;border-left:3px solid var(--border-strong);background:var(--panel-2);font-size:13px;line-height:1.5}.bim-ampel.gut{border-left-color:#3f7d52}.bim-ampel.schlecht{border-left-color:var(--accent-structural)}td.gut,.num.gut{color:#3f7d52}td.schlecht,.num.schlecht{color:var(--accent-structural)}.gantt{font-size:12px}.gantt-skala{position:relative;height:18px;margin-left:210px;margin-right:56px;border-bottom:1px solid var(--border)}.gantt-marke{position:absolute;top:0;transform:translate(-50%);color:var(--ink-faint);font-family:var(--font-mono);font-size:10px}.gantt-zeile{display:flex;align-items:center;gap:8px;padding:3px 0}.gantt-name{width:202px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-spur{position:relative;flex:1;height:16px;background:var(--panel-2);border-radius:3px}.gantt-balken{position:absolute;top:2px;height:12px;border-radius:3px;background:var(--accent-site)}.gantt-balken.kritisch{background:var(--accent-structural)}.gantt-warten{position:absolute;top:2px;height:12px;border-radius:3px;background:repeating-linear-gradient(45deg,var(--border-strong),var(--border-strong) 3px,var(--panel-2) 3px,var(--panel-2) 6px)}.gantt-dauer{width:48px;flex:none;text-align:right;color:var(--ink-soft);font-size:11px}.gantt-legende{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px;color:var(--ink-soft);font-size:11px}.gantt-probe{display:inline-block;width:14px;height:9px;margin-right:5px;border-radius:2px;background:var(--accent-site);vertical-align:middle}.gantt-probe.kritisch{background:var(--accent-structural)}.gantt-probe.warten{background:repeating-linear-gradient(45deg,var(--border-strong),var(--border-strong) 3px,var(--panel-2) 3px,var(--panel-2) 6px)}.kostenkurve svg{width:100%;height:auto}.kk-achse{stroke:var(--border-strong);stroke-width:1}.kk-saeule{fill:var(--accent-site);opacity:.85}.kk-saeule.spitze{fill:var(--accent-structural);opacity:1}.kk-linie{stroke:var(--ink);stroke-width:1.6;stroke-linejoin:round}.kk-beschriftung{fill:var(--ink-soft);font-family:var(--font-mono);font-size:10px}.kk-kumuliert{fill:var(--ink)}.pflicht-ja{font-weight:600;color:var(--ink)}
