:root{color-scheme:dark;--bg:#0a0e15;--panel:#131d2a;--soft:#1b2939;--border:#304055;--text:#eaf1f8;--muted:#99acc0;--green:#8de3b9;--red:#ff858f;--yellow:#fac27c;--blue:#96bff9}*{box-sizing:border-box}body{font:14px/1.5 Inter,system-ui,-apple-system,'Segoe UI',sans-serif;color:var(--text);background:radial-gradient(circle at 85% 0%,#17283b,transparent 35%),var(--bg);margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:2px}button{border-radius:9px;border:1px solid var(--border);background:var(--soft);color:var(--text);padding:7px 10px}button:hover{background:#283b51}button.primary{background:var(--green);color:#0c231b;font-weight:800;border-color:var(--green)}button.flat{background:transparent;border-color:transparent;color:var(--muted)}button.iconbtn{padding:4px 7px;min-width:29px}button.danger{color:#ffabb0}.shell{max-width:1500px;margin:auto;padding:26px 26px 70px}header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;flex-wrap:wrap}h1{font-size:clamp(28px,4vw,43px);letter-spacing:-.045em;line-height:1.1;margin:7px 0}h2{font-size:19px;margin:0 0 10px}h3{font-size:15px;margin:0}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.18em;font-weight:800;color:var(--green)}.muted{color:var(--muted)}.small{font-size:12px}.lead{margin:5px 0;color:var(--muted);max-width:830px}.toolbar{display:flex;gap:7px;flex-wrap:wrap}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:25px 0 15px}.card,.panel,.module{background:var(--panel);border:1px solid var(--border);border-radius:14px}.card{padding:16px}.card .number{font-weight:850;font-size:30px;margin:4px 0;letter-spacing:-.04em}.card .label{font-size:12px;color:var(--muted)}.card.warn .number{color:var(--red)}.card.good .number{color:var(--green)}.settings{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 18px}.dateinput,input[type=text],input[type=number],textarea,select{background:#0c1520;color:var(--text);border:1px solid #45576b;border-radius:8px;padding:8px;max-width:100%}.dateinput{width:151px}.tabs{display:flex;gap:6px;margin-bottom:17px;flex-wrap:wrap}.tab.active{background:#33536a;border-color:#52758b}.view{display:none}.view.active{display:block}.two{display:grid;grid-template-columns:1fr 320px;gap:15px}.panel{padding:16px;margin-bottom:13px}.module{margin:0 0 12px;overflow:hidden}.modhead{display:flex;align-items:center;gap:12px;padding:14px;cursor:pointer}.modhead:hover{background:#1a2938}.modhead .number{display:grid;place-items:center;width:33px;height:33px;border:1px solid #446078;background:#20374b;border-radius:9px;color:var(--blue);font-weight:800;flex-shrink:0}.flex{flex:1;min-width:0}.strong{font-weight:750}.subtle{color:var(--muted);font-size:12px}.progress{height:8px;border-radius:100px;background:#29394b;overflow:hidden;margin-top:7px}.progress>span{display:block;height:100%;background:var(--green);transition:width .2s}.progress>span.late{background:var(--red)}.modbody{border-top:1px solid var(--border);padding:8px 16px 15px}.pack{border-bottom:1px solid #2a394a;padding:10px 0}.pack:last-child{border:0}.packhead{display:flex;align-items:center;gap:8px}.packbody{padding-left:28px}.task{display:flex;align-items:center;gap:7px;border-radius:8px;padding:7px 3px;margin:2px 0;min-height:38px}.task:hover,.packhead:hover{background:#1c2b3a}.task input[type=checkbox]{accent-color:var(--green);height:18px;width:18px;flex:none}.task.done .taskname{text-decoration:line-through;color:#8396a9}.taskname{flex:1;min-width:0;overflow-wrap:anywhere}.badge{display:inline-block;font-size:11px;border:1px solid #435469;border-radius:99px;padding:2px 7px;color:#b9cade;white-space:nowrap}.badge.red{color:#ffb3ba;background:#4b2731;border-color:#76404a}.badge.yellow{color:#ffe0ad}.badge.green{color:var(--green)}.itemactions{display:flex;align-items:center;gap:3px;flex-wrap:wrap}.move{cursor:grab;color:#9eb0c4}.dragging{opacity:.45}.dropTarget{outline:2px dashed var(--green);background:#1c3b36!important}.note{background:#162536;border:1px solid #2e4860;border-radius:10px;padding:11px 13px;color:#b8ccdf;font-size:12px;margin:8px 0}.sectionhead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:0 0 10px;flex-wrap:wrap}.listrow{display:flex;justify-content:space-between;gap:9px;padding:10px 0;border-bottom:1px solid #29394a}.listrow:last-child{border:0}.buttons{display:flex;gap:6px;flex-wrap:wrap}.ganttbox{overflow:auto;border:1px solid var(--border);border-radius:11px}.gantt{min-width:1060px}.growgrid{display:grid;grid-template-columns:300px repeat(13,minmax(54px,1fr))}.glabel,.week,.cell{border-bottom:1px solid #2c3949;border-right:1px solid #253649}.glabel{padding:9px 11px;background:#1a293b;font-size:12px}.week{padding:8px 0;text-align:center;background:#1a293b;color:#bdcede;font-size:11px}.cell{height:45px;position:relative;background:#101c2a}.cell.today{background:#273648}.overlay{grid-column:2/-1;grid-row:1;align-self:center;position:relative;height:18px;pointer-events:none}.bar{position:absolute;top:0;height:18px;background:#375578;border:1px solid #6487a9;border-radius:5px;overflow:hidden}.bar.late{border-color:#b46a71;background:#58363b}.bar>span{display:block;background:var(--green);height:100%}.bar.late>span{background:var(--red)}.gtitle{font-weight:700;font-size:12px}.moduleg{padding:10px 12px;font-size:12px;font-weight:800;background:#253a51}.footer{font-size:12px;color:#8da0b3;margin:25px 0}.kbd{border:1px solid #485b6b;padding:1px 5px;border-radius:5px;font-size:11px}.modal{border:1px solid #51677d;border-radius:16px;background:#172433;color:var(--text);padding:23px;width:min(96vw,520px)}.modal::backdrop{background:#020813c9}.field{display:grid;gap:5px;margin:10px 0}.field input,.field select,.field textarea{width:100%}.modalfooter{display:flex;gap:7px;justify-content:flex-end;margin-top:20px}.right{text-align:right}.mini{font-size:10px;color:var(--muted)}.checkonly{display:flex;gap:8px;align-items:center}.checkonly input{accent-color:var(--green)}@media(max-width:1000px){.two{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.shell{padding:15px 11px 50px}.modhead{padding:11px}.modbody{padding:5px 8px}.packbody{padding-left:5px}.task{gap:5px;flex-wrap:wrap}.taskname{min-width:45%}.itemactions{margin-left:auto}.card{padding:12px}.card .number{font-size:25px}.toolbar{width:100%}.toolbar button{flex:1}.badge{font-size:10px}.move{display:none}}
[hidden]{display:none!important}
.glabel{position:sticky;left:0;z-index:2}
.ganttbox{overscroll-behavior-x:contain}
@media(max-width:600px){
  .modhead,.packhead{flex-wrap:wrap}
  .modhead>.flex,.packhead>.flex{flex:1 1 calc(100% - 120px)}
  .modhead>.itemactions,.packhead>.itemactions,.task>.itemactions{width:100%;justify-content:flex-end;margin-left:0}
  .taskname{flex:1 1 calc(100% - 32px);min-width:0}
  .itemactions .iconbtn,.modhead button[data-toggle],.packhead button[data-toggle]{min-width:40px;min-height:40px}
  .task input[type=checkbox]{width:22px;height:22px}
  .gantt{min-width:900px}
  .growgrid{grid-template-columns:190px repeat(13,minmax(54px,1fr))}
}
