:root{--bg: #0d0d0d;--panel: #1a1a1a;--panel-2: #242424;--border: #2e2e2e;--accent: #c1121f;--accent-hover: #e01523;--text: #e8e8e8;--text-dim: #9a9a9a;--ok: #2e9e5b;--warn: #d98e04;--radius: 8px;--font: "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px}a{color:inherit;text-decoration:none}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at top,rgba(193,18,31,.08),transparent 60%),var(--bg)}.login-card{width:380px;background:var(--panel);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius);padding:36px}.login-logo{display:block;height:110px;margin:-10px auto 8px}.login-card h1{margin:0 0 4px;font-size:22px;letter-spacing:2px;text-align:center}.login-card p.sub{text-align:center}.login-card h1 span{color:var(--accent)}.login-card p.sub{margin:0 0 24px;color:var(--text-dim);font-size:12px;letter-spacing:1px;text-transform:uppercase}label{display:block;margin-bottom:6px;color:var(--text-dim);font-size:12px}input{width:100%;padding:10px 12px;margin-bottom:16px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:14px}input:focus{outline:none;border-color:var(--accent)}button.primary{width:100%;padding:11px;background:var(--accent);border:none;border-radius:var(--radius);color:#fff;font-size:14px;font-weight:600;cursor:pointer}button.primary:hover{background:var(--accent-hover)}button.primary:disabled{opacity:.6;cursor:default}.error{background:#c1121f1f;border:1px solid var(--accent);border-radius:var(--radius);padding:10px 12px;margin-bottom:16px;font-size:13px}.app{display:flex;min-height:100vh}.sidebar{width:230px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar .brand{padding:16px 18px;border-bottom:1px solid var(--border);font-size:17px;font-weight:700;letter-spacing:2px;display:flex;align-items:center;gap:10px}.sidebar .brand img{height:30px}.sidebar .brand .dot{color:var(--accent)}.sidebar nav{flex:1;padding:10px 0;overflow-y:auto}.sidebar .group{padding:14px 18px 6px;color:var(--text-dim);font-size:10px;letter-spacing:1.5px;text-transform:uppercase}.sidebar a.item{display:block;padding:8px 18px;color:var(--text-dim);border-left:3px solid transparent}.sidebar a.item:hover{color:var(--text);background:var(--panel-2)}.sidebar a.item.active{color:var(--text);border-left-color:var(--accent);background:var(--panel-2)}.sidebar .user{padding:14px 18px;border-top:1px solid var(--border);font-size:12px}.sidebar .user .name{font-weight:600}.sidebar .user .role{color:var(--text-dim)}.sidebar .user button{margin-top:8px;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);padding:5px 10px;cursor:pointer;font-size:12px}.sidebar .user button:hover{border-color:var(--accent);color:var(--text)}.content{flex:1;padding:28px 32px;min-width:0}.content h2{margin:0 0 4px;font-size:20px}.content p.crumb{margin:0 0 24px;color:var(--text-dim);font-size:12px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.card .label{color:var(--text-dim);font-size:12px;margin-bottom:6px}.card .value{font-size:24px;font-weight:700}.placeholder{background:var(--panel);border:1px dashed var(--border);border-radius:var(--radius);padding:48px;text-align:center;color:var(--text-dim)}.placeholder .phase{color:var(--accent);font-weight:600}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px}table.data{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}table.data th{text-align:left;padding:10px 12px;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);border-bottom:2px solid var(--accent)}table.data td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}table.data tbody tr:hover,table.data tbody tr.active{background:var(--panel-2)}.num{text-align:right;white-space:nowrap}.overdue{color:var(--accent-hover);font-weight:600}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;border:1px solid var(--border);color:var(--text-dim)}.badge.ok{border-color:var(--ok);color:var(--ok)}.badge.warn{border-color:var(--warn);color:var(--warn)}.badge.danger{border-color:var(--accent);color:var(--accent-hover)}.row-actions{text-align:right;white-space:nowrap}button.ghost{background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);padding:4px 10px;cursor:pointer;font-size:12px;margin-left:6px}button.ghost:hover{border-color:var(--accent);color:var(--text)}button.ghost.danger:hover{border-color:var(--accent);color:var(--accent-hover)}button.ghost.ok:hover{border-color:var(--ok);color:var(--ok)}button.primary.slim{width:auto;padding:8px 16px}.panel{background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);padding:20px;margin-bottom:20px}.panel h3{margin:0 0 14px;font-size:15px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 16px}.actions{display:flex;gap:10px;margin-top:8px}select,textarea{width:100%;padding:10px 12px;margin-bottom:16px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:14px;font-family:var(--font)}select:focus,textarea:focus{outline:none;border-color:var(--accent)}table.items-edit input,table.items-edit select{margin-bottom:0;padding:6px 8px}.total-line{margin:12px 0;font-size:15px}.crumb-inline{color:var(--text-dim);font-size:12px}.contact-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}.contact-row:last-of-type{margin-bottom:12px}.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}.kanban-col{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:10px;min-height:220px}.kanban-head{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);padding:4px 6px 10px;border-bottom:2px solid var(--accent);margin-bottom:10px;display:flex;justify-content:space-between}.kanban-card{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px;cursor:grab}.kanban-card:hover{border-color:var(--accent)}.kanban-title{font-weight:600;margin-bottom:6px}.kanban-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--text-dim);font-size:11px;margin-bottom:6px}.link{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent)}.timer-running{display:flex;justify-content:space-between;align-items:center;gap:16px}.timer-running button{width:auto}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-head{text-align:center;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);padding:6px 0}.cal-cell{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-height:92px;padding:6px;cursor:pointer}.cal-cell:hover{border-color:var(--accent)}.cal-cell.empty{background:transparent;border-color:transparent;cursor:default}.cal-cell.today{border-color:var(--accent);border-width:2px}.cal-day{font-size:12px;color:var(--text-dim);margin-bottom:4px}.cal-cell.today .cal-day{color:var(--accent-hover);font-weight:700}.cal-event{background:var(--panel-2);border-left:3px solid var(--text-dim);border-radius:4px;font-size:11px;padding:2px 5px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-event.ok{border-left-color:var(--ok)}.cal-event.warn{border-left-color:var(--warn)}.cal-event.danger{border-left-color:var(--accent)}.cal-time{color:var(--text-dim)}.chart{display:flex;gap:8px;align-items:flex-end;height:220px;padding:10px 0}.chart-col{flex:1;display:flex;flex-direction:column;height:100%}.chart-bars{flex:1;display:flex;gap:3px;align-items:flex-end;justify-content:center}.chart .bar{width:45%;min-height:1px;border-radius:3px 3px 0 0}.chart .bar.income{background:var(--ok)}.chart .bar.expense{background:var(--accent)}.chart-label{text-align:center;color:var(--text-dim);font-size:11px;margin-top:6px}.progress-bar{height:10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:hidden;margin:8px 0 6px}.progress-bar div{height:100%;background:var(--accent);transition:width .3s}.md-preview{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;margin-bottom:16px;min-height:200px;line-height:1.6}.md-preview h1,.md-preview h2,.md-preview h3{color:var(--text)}.md-preview h1{border-bottom:2px solid var(--accent);padding-bottom:4px}.md-preview code{background:var(--panel-2);padding:2px 5px;border-radius:4px;font-size:13px}.md-preview pre{background:var(--panel-2);padding:12px;border-radius:var(--radius);overflow-x:auto}.md-preview a{color:var(--accent-hover);text-decoration:underline}.md-preview table{border-collapse:collapse}.md-preview th,.md-preview td{border:1px solid var(--border);padding:6px 10px}.md-preview blockquote{border-left:3px solid var(--accent);margin-left:0;padding-left:12px;color:var(--text-dim)}
