:root{font-family:Segoe UI,Arial,sans-serif;color:#23313c;background:#f4f6f8;font-size:14px;--red:#b71f2f;--line:#e0e5e9}*{box-sizing:border-box}body{margin:0;display:flex;min-height:100vh}aside{width:245px;position:fixed;inset:0 auto 0 0;background:#192730;color:white;padding:25px 16px;display:flex;flex-direction:column}.brand{display:flex;gap:11px;align-items:center;margin-bottom:35px}.brand>span{display:grid;place-items:center;background:var(--red);font-size:27px;font-weight:800;width:44px;height:44px;border-radius:10px}.brand small{display:block;color:#aebec7;font-size:10px;margin-top:5px}nav{display:grid;gap:7px}nav button{color:#d3dee4;text-align:left;background:transparent;border:0;padding:13px}nav button.active{background:#35454f;color:white}.aside-bottom{margin-top:auto;font-size:11px;color:#aebec7;line-height:1.9}main{margin-left:245px;width:calc(100% - 245px)}header{display:flex;justify-content:space-between;gap:15px;align-items:center;background:white;border-bottom:1px solid var(--line);padding:24px 32px}header small{font-size:10px;letter-spacing:2px;color:var(--red);font-weight:800}h1{font-size:25px;margin:6px 0 0}h2{font-size:19px;margin:0 0 15px}h3{font-size:15px}.tools{display:flex;align-items:end;gap:8px}.tools label{font-size:10px}input,select,textarea{width:100%;border:1px solid #c6d0d7;padding:10px;border-radius:6px;background:white;color:#23313c;font:inherit}textarea{min-height:75px}button,.button{border:1px solid #ced6dc;background:white;padding:10px 14px;border-radius:6px;font:inherit;color:#293e4c;cursor:pointer;text-decoration:none;display:inline-block}button:hover,.button:hover{background:#edf1f3}button.primary{background:var(--red);color:white;border-color:var(--red)}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #76bdde;outline-offset:2px}.notice{background:#fff6df;padding:11px 32px;color:#76602f;font-size:12px}#content{padding:25px 32px;max-width:1650px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.card,.panel{background:white;border:1px solid var(--line);border-radius:10px;padding:20px}.card strong{display:block;font-size:29px;margin-top:10px}.card small,.muted{color:#697d89}.panel{margin-bottom:20px}.actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:17px;align-items:center}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;padding:12px 10px;background:#f5f7f9;color:#6b7d89;font-size:10px;text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}td{padding:13px 10px;border-bottom:1px solid #e9edf0;vertical-align:top}td button{padding:6px 9px;font-size:11px;margin:2px}.badge{padding:4px 7px;border-radius:5px;background:#e9f0f4;white-space:nowrap;font-size:11px;display:inline-block}.good{background:#e1f2e9;color:#246746}.warn{background:#fff1d9;color:#88601f}.empty{text-align:center;padding:45px 20px;color:#6e808c}.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}label.field{display:block;font-size:12px;color:#536875}.field input,.field select,.field textarea{margin-top:6px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.full{grid-column:1/-1}dialog{border:0;border-radius:12px;max-width:900px;width:94%;padding:25px;box-shadow:0 20px 90px #0005}dialog::backdrop{background:#13232e88}.dialog-head{display:flex;justify-content:space-between;align-items:start}.dialog-head button{border:0;font-size:20px;padding:0 8px}#message{padding:0 32px}#message:not(:empty){padding:13px 32px;background:#e6f1ee}.error{color:#a91d2b!important;background:#ffedf0!important}footer{padding:10px 32px 25px;color:#718390;font-size:11px}.search{max-width:350px}.amount{text-align:right;font-variant-numeric:tabular-nums}.board{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:12px}.board article{background:#f6f8fa;border-radius:9px;padding:15px}.job{background:white;border:1px solid var(--line);border-left:3px solid var(--red);padding:12px;margin-top:9px;border-radius:5px}.job p{font-size:12px}pre{white-space:pre-wrap;word-break:break-word}@media(max-width:1000px){aside{width:190px}main{margin-left:190px;width:calc(100% - 190px)}header{flex-wrap:wrap}.cards,.board{grid-template-columns:repeat(2,1fr)}.two{grid-template-columns:1fr}}@media(max-width:650px){body{display:block}aside{position:static;width:100%;padding:15px}.brand{margin-bottom:12px}nav{display:flex;overflow:auto}nav button{white-space:nowrap}.aside-bottom{display:none}main{margin:0;width:100%}header,#content{padding:20px}.tools{flex-wrap:wrap}.grid{grid-template-columns:1fr}.board{grid-template-columns:1fr}.notice{padding:10px 20px}}@media print{aside,header,.notice,footer,.actions,#message,.dialog-head button{display:none!important}main{margin:0;width:100%}dialog{position:static;display:block;max-width:none;width:100%;box-shadow:none;padding:0}body>main{display:none}body:has(dialog[open])>dialog{display:block}dialog:not([open]){display:none!important}}
.login-main{margin:0;width:100%;display:grid;place-items:center;min-height:100vh;padding:25px}.login-panel{max-width:500px;width:100%}.login-panel .brand{color:#243540;gap:15px;margin-bottom:20px}.week-board{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));gap:10px;overflow:auto}.week-day{min-height:220px;padding:10px;background:#f2f5f7;border:1px solid #d5dee4;border-radius:8px}.week-day h3{font-size:12px}.week-day .job{cursor:grab}.estimate-line{border-bottom:1px solid #dce4e9;padding:14px 0}dialog:has(.week-board){max-width:1250px}.tools input[readonly]{background:#edf3f6;max-width:270px}@media(max-width:650px){.login-panel{padding:20px}.tools{width:100%}.tools label{width:100%}.tools input{max-width:none}.grid{min-width:0}th,td{padding:9px 6px}.dialog-head h2{font-size:17px}dialog{padding:17px}}@media print{body{background:white;color:black}dialog{border-radius:0}.table-wrap{overflow:visible}table{font-size:10pt}tr{break-inside:avoid}h2{break-after:avoid}a{color:black;text-decoration:none}@page{size:letter;margin:0.55in}}
.tools label{display:grid;gap:5px}header .tools{max-width:100%}.field{min-width:0}.field input,.field textarea{min-width:0}.panel{overflow-wrap:anywhere}
