:root{--ink:#1d1d1f;--mut:#6b6f76;--line:#d9dbe0;--bg:#f3f4f6;--card:#fff;--acc:#2f5597;--acc2:#1f3864;--red:#b4232c;--blue:#0000d0}
*{box-sizing:border-box}
body{margin:0;font:14px/1.4 Arial,Helvetica,sans-serif;color:var(--ink);background:var(--bg)}
header.top{display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:2px solid var(--ink);padding:10px 24px}
.brand{display:flex;align-items:flex-start;gap:0;color:var(--ink);text-decoration:none;outline:none}
.brand .logo{height:38px;width:auto;display:block}
.brand .app{font-size:19px;font-weight:600;line-height:1;margin:5px 0 0 14px;padding-left:14px;border-left:1px solid var(--line);height:19px;display:flex;align-items:center}
nav a{margin-left:18px;color:var(--ink);text-decoration:none;font-weight:600}
nav a:hover{color:var(--acc)}
main{max-width:1400px;margin:0 auto;padding:18px 24px 60px}
h1{font-size:24px;margin:6px 0 14px}h1 .muted{font-weight:400;font-size:18px}
h2{font-size:15px;text-transform:uppercase;letter-spacing:.04em;margin:0 0 10px;padding-bottom:5px;border-bottom:1px solid var(--line)}
h3{font-size:14px;margin:0 0 8px}
.muted{color:var(--mut)}.r{text-align:right}.nowrap{white-space:nowrap}.mt{margin-top:12px}
.head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.actions{display:flex;gap:8px;flex-wrap:wrap}.actions.bottom{justify-content:flex-end;margin-top:10px}
.card{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:14px 16px;margin-bottom:14px}
.cols{display:flex;gap:16px;align-items:flex-start}.cols.wrap{flex-wrap:wrap}.cols>.card{min-width:300px}
.grow{flex:1 1 auto;min-width:0}.side{flex:0 0 340px}
.btn{display:inline-block;border:1px solid var(--acc);background:#fff;color:var(--acc);padding:6px 12px;border-radius:4px;text-decoration:none;font-size:13px;cursor:pointer;line-height:1.2}
.btn:hover{background:#eef2fa}.btn.primary{background:var(--acc);color:#fff}.btn.primary:hover{background:var(--acc2)}
.btn.small{padding:2px 7px;font-size:12px}.btn.danger{border-color:#c99;color:var(--red)}.btn.danger:hover{background:#fbeeee}
form.inl{display:inline}
.flash{background:#e8f1e8;border:1px solid #9c9;padding:8px 12px;border-radius:4px;margin-bottom:12px}
table{border-collapse:collapse;width:100%}
table.list th{text-align:left;font-size:12px;color:var(--mut);border-bottom:1px solid var(--line);padding:6px 8px}
table.list td{padding:6px 8px;border-bottom:1px solid #eee;vertical-align:middle}
table.list.tight td{padding:3px 6px}
table.list a{color:var(--ink);text-decoration:none}table.list a:hover{color:var(--acc)}
.w60{width:60px}.w80{width:80px}.w120{width:120px}.w160{width:160px}
tr.inactive td{color:#aaa}
.tree-geb{font-weight:700;margin:12px 0 2px;font-size:15px}.tree-ges{font-weight:600;margin:6px 0 2px 10px;color:var(--acc2)}.tree-whg{margin:4px 0 2px 20px;color:var(--mut);font-size:13px}
.tree-whg+table{margin-left:20px;width:calc(100% - 20px)}
input,select,textarea{font:inherit;color:var(--blue);border:1px solid var(--line);border-radius:3px;padding:4px 6px;background:#fff;width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid #cdd8ee;border-color:var(--acc)}
input.num{text-align:right;width:70px}input.short{width:80px}input.big{font-weight:700;font-size:16px}
input.plain{border-color:transparent;background:transparent;color:var(--ink)}input.plain:hover,input.plain:focus{border-color:var(--line);background:#fff}
textarea{resize:vertical}
.form label{display:block;margin-bottom:8px;font-size:12px;color:var(--mut)}
.form label input,.form label select{display:block;margin-top:2px}
form.inline{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}form.inline label{font-size:12px;color:var(--mut)}
form.inline input,form.inline select{display:block;width:auto;min-width:160px;margin-top:2px}
.hint{font-size:12px;color:var(--mut);margin:8px 0 0}
.grid5{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 2fr;gap:12px}.grid5 label{font-size:12px;color:var(--mut)}.grid5 input{display:block;margin-top:2px}
table.kv td{padding:2px 6px;white-space:nowrap}table.kv td:first-child{min-width:130px}
table.kv input:not(.num){width:170px}
table.pos th{text-align:left;font-size:12px;color:var(--mut);padding:4px 5px;border-bottom:1px solid var(--line)}
table.pos td{padding:2px 5px;border-bottom:1px solid #f0f0f0;white-space:nowrap}table.pos td:first-child{min-width:150px}
table.pos input:not(.num):not(.short){min-width:120px}
.scroll{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:6px}
table.mengen{font-size:13px;min-width:600px}
table.mengen th{position:sticky;top:0;background:#f7f7f8;text-align:left;padding:6px 8px;border-bottom:2px solid var(--line);vertical-align:bottom;white-space:nowrap}
table.mengen th.room{text-align:right;min-width:90px}table.mengen th.room small{display:block;font-weight:400;color:var(--mut);font-size:11px}
table.mengen th.room a{color:var(--ink);text-decoration:none}
table.mengen td{padding:3px 8px;border-bottom:1px solid #eee;white-space:nowrap}
table.mengen .sum{background:#f3f6fb;font-weight:700}table.mengen tr.first td{border-top:1px solid var(--line)}
table.mengen td.b{font-weight:700}
@media (max-width:900px){.cols{flex-direction:column}.side{flex:1 1 auto;width:100%}.grid5{grid-template-columns:1fr 1fr}}
nav .who{margin-left:24px;color:var(--mut);font-weight:400}nav .who a{margin-left:0;font-weight:400}
body.login{display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0}
.loginbox{width:340px;padding:24px}.loginbox .brand{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:18px}.loginbox .logo.big{height:52px}
.loginbox .brand .app{border:0;padding:0;margin:0;font-size:16px;color:var(--mut);height:auto}
.loginbox label{display:block;font-size:12px;color:var(--mut);margin-bottom:10px}.loginbox input{display:block;margin-top:2px}
.btn.wide{width:100%;padding:8px}.flash.err{background:#fbeeee;border-color:#d99}
.form.narrow{max-width:360px}
select.auswahl{color:var(--blue);min-width:120px}table.kv select.auswahl{width:170px}select.auswahl.big{font-weight:700;font-size:16px}
select.auswahl.short{min-width:80px;width:85px}input.frei{min-width:120px}input.frei.short{width:85px}
td.small{font-size:11px}

.form label.chk{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:13px}.form label.chk input{width:auto;margin:0}
th.c,td.c{text-align:center}td.c input{width:auto}

nav .langs{margin-left:18px;font-size:12px}nav .langs a{margin-left:6px;color:var(--mut);font-weight:400;padding:2px 5px;border-radius:3px}nav .langs a.on{background:var(--acc);color:#fff}
.langs.center{margin-top:14px;text-align:center;font-size:12px}.langs.center a{margin:0 6px;color:var(--mut);text-decoration:none}.langs.center a.on{color:var(--acc);font-weight:600}
.btngroup{display:inline-flex;gap:3px;align-items:stretch}.btngroup .btn.small{padding:2px 6px;align-self:center}
.hilfe{max-width:860px}.hilfe p{margin:0 0 10px;line-height:1.55}.hilfe h2{text-transform:none;letter-spacing:0;font-size:16px}
/* Bauzeiten */
.gantt .scroll{overflow-x:auto;border:0}.gantt svg{display:block}
.phase-head{display:flex;align-items:center;gap:8px;background:#F3F6FB;padding:6px 10px;margin:14px 0 2px;border-radius:4px}
.phase-head input.bold{font-weight:700;font-size:14px;color:var(--ink);max-width:320px}.phase-head .grow{flex:1}
select.farbe{width:70px;color:#fff;font-size:11px}
table.vorg th{font-size:11px}table.vorg td{padding:2px 4px}table.vorg input.num{width:56px;text-align:right}table.vorg input.dt{width:128px}
table.vorg select.plain{max-width:160px;color:var(--ink)}table.vorg tr.neu td{background:#fafafa}
tr.st-verzug td:first-child input{color:var(--red);font-weight:600}tr.st-fertig td:first-child input{color:#3A8A4C}
.bar{display:inline-block;width:80px;height:8px;background:#e6e8ec;border-radius:4px;vertical-align:middle;margin-right:6px}.bar span{display:block;height:8px;background:var(--acc);border-radius:4px}
.update .urow{display:grid;grid-template-columns:1fr 2fr 60px;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid #eee}
.update .urow.st-verzug .uname{color:var(--red)}.update input[type=range]{width:100%}.update output{text-align:right;font-weight:600}
.update h3{margin:16px 0 4px}
@media (max-width:700px){.update .urow{grid-template-columns:1fr 50px}.update .urow input{grid-column:1/3}}
