:root{--bg: #f6f7f9;--surface: #ffffff;--text: #1d2330;--muted: #6b7280;--border: #d5d9e0;--accent: #2563eb;--danger: #c62828;--line: #111;--node-none: lightblue;--node-started: yellow;--node-done: gray;--ms-none: peachpuff;--ms-started: limegreen;--ms-done: gray;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0}button,.button{font:inherit;padding:.35rem .8rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);cursor:pointer}button:hover:not(:disabled),.button:hover{border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{border-color:var(--danger);color:var(--danger)}input,textarea{font:inherit;padding:.35rem .5rem;border:1px solid var(--border);border-radius:6px;width:100%}a{color:var(--accent)}.muted{color:var(--muted)}.error{color:var(--danger)}.topbar{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--surface);border-bottom:1px solid var(--border)}.topbar .brand{font-weight:700;text-decoration:none;color:var(--text)}.spacer{flex:1}.page{padding:1rem}.page h1{margin:.2rem 0 1rem;font-size:1.4rem}.login{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:15vh 1rem 0}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.inline-form{display:flex;gap:.5rem}.inline-form input{width:16rem;max-width:100%}.table-wrap{overflow-x:auto}table.projects{border-collapse:collapse;background:var(--surface);min-width:100%}table.projects th,table.projects td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--border);white-space:nowrap}table.projects .actions{text-align:right;display:flex;gap:.5rem;justify-content:flex-end}.project-head{display:flex;align-items:baseline;gap:1rem}.project-head h1{margin:0}.hint{margin:.25rem 0 .75rem;font-size:.85rem}.diagram-scroll{overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:6px;height:calc(100vh - 12rem)}.diagram{position:relative;min-width:100%;min-height:100%}.connectors{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.connectors path{fill:none;stroke:var(--line);stroke-width:2}.node{position:absolute;display:flex;flex-direction:column;justify-content:space-between;padding:2px 6px;font-size:12px;line-height:1.25;border:1px solid #555;background:var(--node-none);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.node:active{cursor:grabbing}.node.status-angefangen{background:var(--node-started)}.node.status-done{background:var(--node-done)}.node.selected{outline:3px solid var(--accent);outline-offset:1px}.node .nr{font-weight:600}.node .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node .dates{text-align:center;font-size:11px}.node.milestone{border:none;background:var(--ms-none);clip-path:polygon(20px 0,calc(100% - 20px) 0,100% 50%,calc(100% - 20px) 100%,20px 100%,0 50%);padding:2px 22px;text-align:center}.node.milestone.status-angefangen{background:var(--ms-started)}.node.milestone.status-done{background:var(--ms-done)}.node.milestone.selected{outline:none;box-shadow:inset 0 0 0 3px var(--accent)}.context-menu{position:fixed;z-index:10;margin:0;padding:4px 0;list-style:none;min-width:13rem;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px #00000026}.context-menu .separator{height:1px;margin:4px 0;background:var(--border)}.context-menu button{display:flex;justify-content:space-between;gap:1.5rem;width:100%;border:none;border-radius:0;padding:.3rem .9rem;text-align:left;background:none}.context-menu button:hover:not(:disabled){background:#e8efff}.context-menu kbd{color:var(--muted);font:inherit;font-size:.8rem}.modal{border:1px solid var(--border);border-radius:8px;padding:1.25rem;width:min(30rem,calc(100vw - 2rem))}.modal::backdrop{background:#0000004d}.modal h2{margin:0 0 1rem;font-size:1.1rem}.form-grid{display:grid;grid-template-columns:max-content 1fr;gap:.5rem .75rem;align-items:center}.text-form{display:flex;flex-direction:column;gap:.75rem}.dialog-buttons{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}@media(max-width:480px){.form-grid{grid-template-columns:1fr}}.view-tabs{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;margin:.5rem 0 .75rem}.view-tabs button{font-weight:600;font-size:.85rem}.view-tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}.view-tabs .hint{margin:0 0 0 .75rem}.cost-settings{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.5rem}.cost-settings label{display:flex;align-items:center;gap:.4rem}.cost-settings .cell-input{width:6rem;border:1px solid var(--border)}.table-scroll{overflow:auto;max-height:calc(100vh - 14rem);background:var(--surface);border:1px solid var(--border);border-radius:6px}.cost-table{border-collapse:collapse;font-size:12px;width:100%}.cost-table th{position:sticky;top:0;z-index:1;background:var(--surface);font-weight:400;text-align:left;vertical-align:bottom;padding:4px 6px;border-bottom:2px solid #999;white-space:nowrap}.cost-table td{padding:0 6px;height:22px;border-bottom:1px solid #e4e6ea;border-right:1px solid #e4e6ea;white-space:nowrap}.cost-table .num{text-align:right}.cost-table td.editable{padding:0}.cost-table td.wide{min-width:22rem}.cost-table tr.sum td{font-weight:700;background:#f3f4f6}.cost-table tr.selected td,.cost-table tr.selected .cell-input{background:#0a74da;color:#fff}.cell-input{width:100%;min-width:4rem;height:21px;padding:0 6px;border:1px solid transparent;border-radius:0;background:transparent;font:inherit;color:inherit}.cell-input.num{text-align:right}.cell-input:hover{border-color:var(--border)}.cell-input:focus,.cost-table tr.selected .cell-input:focus{outline:none;border-color:var(--accent);background:#fff;color:var(--text)}.gantt-toolbar{display:flex;align-items:center;gap:.4rem;margin-bottom:.5rem;font-size:.85rem}.gantt-scroll{overflow:auto;max-height:calc(100vh - 14rem);background:var(--surface);border:1px solid var(--border);border-radius:6px}.gantt{display:flex;font-size:12px}.gantt-labels{position:sticky;left:0;z-index:3;flex:none;background:var(--surface);border-right:1px solid var(--border)}.gantt-corner{position:sticky;top:0;z-index:1;background:var(--surface);border-bottom:1px solid var(--border)}.gantt-label{display:flex;align-items:center;gap:.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default;-webkit-user-select:none;user-select:none}.gantt-label.sum{font-weight:700}.gantt-label .nr{flex:none}.gantt-label.selected,.gantt-row.selected{background:#0a74da;color:#fff}.gantt-timeline{position:relative;flex:none;background:#e9eaec}.gantt-header{position:sticky;top:0;z-index:2;background:#e9eaec;border-bottom:1px solid var(--border)}.gantt-header .month,.gantt-header .week{position:absolute;white-space:nowrap;color:#444}.gantt-header .month{top:4px;padding-left:3px;border-left:1px dashed #333}.gantt-header .week{top:22px;font-size:10px;text-align:center;color:var(--muted)}.gantt-body{position:relative}.month-line{position:absolute;top:0;bottom:0;border-left:1px dashed #333;pointer-events:none}.gantt-row{position:absolute;left:0;right:0;opacity:.25}.gantt-frame{position:absolute;border:1px solid #222;pointer-events:none}.gantt-bar{position:absolute;border:1px solid #333;border-radius:3px;background:linear-gradient(to right,#d32f2f,#7f0000);cursor:grab;touch-action:none}.gantt-bar.status-done{background:linear-gradient(to right,#c8c8c8,#5a5a5a)}.gantt-bar:active{cursor:grabbing}.gantt-bar .resize-handle{position:absolute;top:0;right:-3px;bottom:0;width:8px;cursor:ew-resize}.gantt-milestone{position:absolute;width:12px;height:12px;transform:rotate(45deg);border:1px solid #333;background:#d32f2f;cursor:grab;touch-action:none}.gantt-milestone.status-done{background:#777}.span-all{grid-column:1 / -1;margin:0;font-size:.85rem}
