:root{--a:#3273dc;--a-dark:#255eb8;--a-soft:#edf4ff;--bg:#f6f8fb;--ink:#18202c;--muted:#687386;--line:#e3e8ef;--paper:#fff;--r:16px;--day:56px;--shadow:0 12px 32px rgba(25,45,75,.07)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.login{min-height:100dvh;display:grid;place-items:center;padding:32px 18px;background:radial-gradient(circle at 20% 10%,var(--a-soft),transparent 34%),var(--bg)}.login form{width:min(440px,100%);background:#fff;padding:34px;border:1px solid var(--line);border-radius:22px;display:grid;gap:18px;box-shadow:0 24px 70px rgba(35,54,78,.12)}.login h1{margin:0;font-size:30px}.login p{margin:-10px 0 0;color:var(--muted)}label{display:grid;gap:7px;color:#334054;font-size:13px;font-weight:650}input,select,textarea{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid #cbdcf4;border-color:#809bc0}textarea{min-height:75px}button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 13px;color:#334054;font-weight:650;transition:.16s ease}button:hover{border-color:#b9c5d4;background:#f9fafc}button.primary,.login form>button{background:var(--a);color:#fff;border-color:var(--a)}button.primary:hover,.login form>button:hover{background:var(--a-dark)}.error{display:none;color:#b54444;background:#fff0f0;padding:9px;border-radius:8px}header{height:68px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 30px;position:sticky;top:0;z-index:20}header>b{white-space:nowrap;font-size:15px}nav{display:flex;height:100%;align-items:stretch;flex:1}nav button{border:0;border-bottom:3px solid transparent;border-radius:0;color:#4f5d70;padding:0 14px;background:transparent}nav button:hover{color:var(--a-dark);background:var(--a-soft)}nav button.active{color:var(--a-dark);border-bottom-color:var(--a);font-weight:700}header>span{font-size:13px;color:var(--muted)}main{max-width:1440px;margin:auto;padding:38px 28px 64px}.head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:26px}.head h1{margin:0;font-size:34px;letter-spacing:-.04em}.head p{margin:7px 0;color:var(--muted)}.actions{display:flex;gap:10px}.metrics{display:grid;grid-template-columns:1.3fr repeat(3,1fr);gap:14px}.metric,.panel,.tablebox{background:#fff;border:1px solid var(--line);border-radius:13px}.metric{padding:19px 20px;min-height:128px}.metric:first-child{background:#fff;color:var(--ink)}.metric span{color:var(--muted)}.metric:first-child span{color:var(--muted)}.metric strong{display:block;font-size:27px;letter-spacing:-.035em;margin-top:10px}.dash{display:grid;grid-template-columns:1.5fr 1fr;gap:14px;margin-top:18px}.panel{padding:20px;box-shadow:0 4px 14px rgba(31,50,76,.035)}.bars{display:grid;gap:13px}.bar{display:grid;grid-template-columns:160px 1fr 55px;gap:10px;align-items:center}.track{height:8px;background:#eef1f5;border-radius:8px;overflow:hidden}.track i{display:block;height:100%;background:var(--a)}.track i.over{background:#b54444}.tablebox{overflow:auto}.tools{padding:17px 20px;border-bottom:1px solid var(--line)}.tools input{width:340px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid #edf0f4}th{font-size:12px;color:#7e8795;background:#fafbfc}.rowtitle{font-weight:700}.sub{display:block;font-size:12px;color:var(--muted)}.rowactions{display:flex;justify-content:flex-end;gap:6px}.badge{background:var(--a-soft);color:var(--a-dark);padding:4px 8px;border-radius:20px;font-size:11px}.toolbar{display:flex;gap:10px;margin-bottom:18px}.toolbar .grow{flex:1}.ganttbox{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:auto;min-height:430px;box-shadow:var(--shadow)}.gantt{min-width:1460px}.ghead,.growx{display:grid;grid-template-columns:280px repeat(21,var(--day));position:relative}.ghead{position:sticky;top:0;background:#fff;z-index:8}.ghead div{padding:11px;text-align:center;border-bottom:1px solid var(--line);border-left:1px solid #edf0f4;color:#7e8795}.growx{min-height:78px;border-top:1px solid #edf0f4}.glabel{grid-column:1;grid-row:1;padding:15px!important;background:#fff;z-index:2}.ggrid{grid-column:2/23;grid-row:1;background:repeating-linear-gradient(90deg,transparent 0,transparent 55px,#edf0f4 55px,#edf0f4 56px)}.island{grid-row:1;align-self:center;height:52px;z-index:4;background:var(--a-soft);color:var(--a-dark);border:1px solid #d3e2f7;border-left:4px solid var(--a);position:relative;text-align:left;overflow:hidden}.island strong,.island small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.island small{color:#58749a}.handle{position:absolute;top:0;bottom:0;width:10px;cursor:ew-resize}.handle.left{left:0}.handle.right{right:0}.empty{padding:60px;text-align:center;color:var(--muted)}.overlay{display:none;position:fixed;inset:0;background:rgba(22,31,44,.38);backdrop-filter:blur(2px);z-index:50;place-items:center;padding:20px}.overlay.open{display:grid}.modal{width:min(720px,95vw);max-height:90dvh;overflow:auto;background:#fff;border-radius:16px;padding:24px;box-shadow:0 24px 70px rgba(20,35,55,.22)}.modal>.close{float:right}.form{display:grid;grid-template-columns:1fr 1fr;gap:13px}.wide{grid-column:1/-1}.formactions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;margin-top:12px}.checks{display:grid;grid-template-columns:1fr 1fr;gap:9px}.check{display:flex;gap:8px;border:1px solid #edf0f4;padding:12px;border-radius:10px;background:#f9fafc}.check input{width:auto}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#18202c;color:#fff;padding:10px 15px;border-radius:9px;display:none;z-index:70;box-shadow:var(--shadow)}@media(max-width:900px){header{height:auto;flex-wrap:wrap;padding:12px 16px}nav{order:3;width:100%;overflow:auto}nav button{height:42px}main{padding:24px 16px}.metrics{grid-template-columns:1fr 1fr}.dash{grid-template-columns:1fr}.form,.checks{grid-template-columns:1fr}.wide{grid-column:auto}}
