:root{--green:#267315;--green-dark:#174d0c;--green-soft:#eaf5e6;--navy:#102840;--ink:#172433;--muted:#637184;--line:#dce3e8;--bg:#f3f6f8;--danger:#bd3a35;--warning:#d9901a;--day:24px;--row:58px;--task-pane:500px;--shadow:0 18px 46px rgba(16,40,64,.11)}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{margin:0;min-width:320px}button,input,select{font:inherit}button,a{transition:.18s ease}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}a{color:inherit}
.topbar{height:64px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(16px,3vw,38px);box-shadow:0 6px 22px rgba(16,40,64,.22)}.brand{display:flex;align-items:center;gap:15px;text-decoration:none;font-weight:750}.brand img{width:118px;height:auto}.brand span{padding-left:15px;border-left:1px solid rgba(255,255,255,.28);color:#d8e5ef;font-size:.88rem}.top-actions{display:flex;align-items:center;gap:10px}.top-actions label{font-size:.8rem;color:#d7e4ec}.top-actions select{background:#fff;color:var(--ink);border:0;border-radius:7px;padding:8px 32px 8px 11px;font-weight:700}.icon-button,.close-button{border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;border-radius:50%;width:34px;height:34px;font-weight:800}.icon-button:hover{background:rgba(255,255,255,.12)}
main{padding:28px clamp(16px,3vw,40px) 42px;max-width:1800px;margin:auto}.project-head{display:flex;justify-content:space-between;gap:30px;align-items:flex-end;margin-bottom:22px}.eyebrow{margin:0 0 6px;color:var(--green);text-transform:uppercase;letter-spacing:.08em;font-size:.76rem;font-weight:900}.project-head h1{font-size:clamp(1.8rem,3vw,2.55rem);margin:0;letter-spacing:-.035em}.subtitle{margin:7px 0 0;color:var(--muted)}.headline-actions{display:flex;gap:10px;flex-wrap:wrap}
.button{border:0;border-radius:8px;padding:10px 15px;font-weight:800;white-space:nowrap}.button.primary{background:var(--green);color:#fff;box-shadow:0 8px 18px rgba(38,115,21,.2)}.button.primary:hover{background:var(--green-dark);transform:translateY(-1px)}.button.secondary{background:#fff;color:var(--navy);border:1px solid #bdc8d1}.button.secondary:hover,.button.ghost:hover{border-color:var(--green);color:var(--green)}.button.ghost{background:#fff;color:#4b5968;border:1px solid var(--line);padding:8px 12px}.button.danger{background:#fff2f1;color:var(--danger);border:1px solid #efc9c6}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpis article{background:#fff;border:1px solid var(--line);border-radius:11px;padding:16px 19px;box-shadow:0 5px 16px rgba(16,40,64,.04);position:relative;overflow:hidden}.kpis article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--green)}.kpis span,.kpis small{display:block;color:var(--muted)}.kpis span{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.kpis strong{display:block;font-size:1.55rem;margin:4px 0 1px}.kpis small{font-size:.76rem}
.workspace-card{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);overflow:hidden}.toolbar{min-height:66px;display:flex;align-items:center;gap:12px;padding:12px 15px;border-bottom:1px solid var(--line);flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:8px}.filter-group label{font-size:.75rem;font-weight:800;color:var(--muted)}.filter-group select,.filter-group input{border:1px solid #c7d0d8;border-radius:7px;padding:8px 9px;background:#fff;color:var(--ink)}.search-wrap{position:relative}.search-wrap span{position:absolute;left:10px;color:#7a8794;font-size:1.2rem}.search-wrap input{padding-left:31px;width:215px}.toolbar-spacer{flex:1}.zoom{display:flex;border:1px solid #c7d0d8;border-radius:7px;overflow:hidden}.zoom button{border:0;border-right:1px solid #d9e0e5;background:#fff;padding:8px 10px;color:#566575;font-size:.8rem;font-weight:750}.zoom button:last-child{border-right:0}.zoom button.active{background:var(--green);color:#fff}.selection-bar{min-height:40px;padding:9px 15px;background:#f7fafb;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:20px;color:var(--muted);font-size:.8rem}.selection-bar strong{color:var(--ink)}.legend{margin-left:auto;display:flex;align-items:center;gap:6px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-left:7px}.dot.green{background:var(--green)}.dot.red{background:var(--danger)}.diamond{width:9px;height:9px;background:var(--navy);transform:rotate(45deg);display:inline-block;margin-left:7px}
.gantt-shell{display:grid;grid-template-columns:var(--task-pane) minmax(0,1fr);height:min(590px,68vh);min-height:430px}.task-pane{position:relative;z-index:5;border-right:1px solid #c9d2da;background:#fff;box-shadow:8px 0 18px rgba(16,40,64,.05)}.task-header,.task-row{display:grid;grid-template-columns:minmax(190px,1fr) 120px 105px;align-items:center}.task-header{height:63px;background:#f4f7f9;border-bottom:1px solid #cbd4dc;color:#536273;text-transform:uppercase;letter-spacing:.045em;font-size:.72rem;font-weight:900;padding:0 15px}.task-row{height:var(--row);border-bottom:1px solid #e8edf0;padding:0 15px;cursor:pointer}.task-row:hover,.task-row.active{background:var(--green-soft)}.task-title{min-width:0;padding-right:12px}.task-title strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.89rem}.task-title small{display:block;color:var(--muted);font-size:.7rem;margin-top:3px}.owner{font-size:.78rem;color:#405064;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-cell{display:flex;align-items:center;gap:7px;font-size:.75rem;font-weight:800}.progress-track{width:55px;height:6px;border-radius:5px;background:#e3e9ed;overflow:hidden}.progress-track i{display:block;height:100%;background:var(--green);border-radius:5px}.empty-row{height:180px;display:grid;place-items:center;color:var(--muted);text-align:center;padding:20px}
.timeline-scroller{overflow:auto;background:#fff;scrollbar-color:#b7c3cc #edf1f3}.timeline{position:relative;min-width:720px}.timeline-header{height:63px;position:relative;display:flex;border-bottom:1px solid #cbd4dc;background:#f4f7f9}.month-block{position:absolute;top:0;height:31px;border-right:1px solid #cbd4dc;text-align:center;font-size:.72rem;font-weight:900;color:#445567;padding-top:7px}.day-cell{position:absolute;top:31px;height:32px;border-right:1px solid #e2e7eb;text-align:center;font-size:.65rem;color:#667586;padding-top:7px}.day-cell.weekend{background:#e9eef2;color:#84919c}.day-cell.week-start{border-left:1px solid #aebbc5}.chart-body{position:relative}.chart-row{height:var(--row);border-bottom:1px solid #e8edf0;position:relative;background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(var(--day) - 1px),#edf1f3 calc(var(--day) - 1px),#edf1f3 var(--day))}.chart-row:nth-child(even){background-color:#fbfcfd}.bar{position:absolute;top:15px;height:28px;border-radius:5px;background:var(--green);box-shadow:0 5px 12px rgba(38,115,21,.22);color:#fff;min-width:12px;cursor:grab;overflow:visible;z-index:3}.bar:active{cursor:grabbing}.bar.critical{background:var(--danger);box-shadow:0 5px 12px rgba(189,58,53,.2)}.bar.blocked{background:var(--warning)}.bar.readonly{cursor:pointer}.bar-progress{position:absolute;left:0;top:0;bottom:0;background:rgba(0,0,0,.18);border-radius:5px 0 0 5px;pointer-events:none}.bar-label{position:absolute;left:8px;top:5px;font-size:.69rem;font-weight:850;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.32);pointer-events:none}.resize-handle{position:absolute;right:-3px;top:4px;width:8px;height:20px;border-radius:3px;background:rgba(255,255,255,.65);cursor:ew-resize}.milestone-bar{position:absolute;top:18px;width:22px;height:22px;background:var(--navy);transform:rotate(45deg);border:3px solid #fff;box-shadow:0 4px 12px rgba(16,40,64,.32);z-index:4;cursor:grab}.milestone-bar.critical{background:var(--danger)}.milestone-label{position:absolute;left:21px;top:-7px;transform:rotate(-45deg);font-size:.68rem;font-weight:850;color:var(--ink);white-space:nowrap;text-shadow:none}.today-line{position:absolute;top:0;bottom:0;border-left:2px solid #f05a47;z-index:2;pointer-events:none}.today-line span{position:absolute;top:5px;left:4px;background:#f05a47;color:#fff;font-size:.62rem;font-weight:850;padding:2px 5px;border-radius:3px}.today-line.outside{display:none}#dependencyLayer{position:absolute;inset:0;overflow:visible;z-index:2;pointer-events:none}.dependency-path{fill:none;stroke:#7e8e9e;stroke-width:1.5;marker-end:url(#arrow)}
.demo-footer{display:flex;justify-content:space-between;gap:20px;align-items:center;background:var(--navy);color:#dbe7ef;padding:20px clamp(16px,3vw,40px);font-size:.84rem}.demo-footer p{margin:0}.demo-footer a{color:#fff;font-weight:800}.drawer{position:fixed;inset:0;z-index:50;display:none}.drawer.open{display:block}.drawer-backdrop{position:absolute;inset:0;background:rgba(9,25,40,.47);backdrop-filter:blur(2px)}.drawer-panel{position:absolute;right:0;top:0;bottom:0;width:min(520px,100%);background:#fff;box-shadow:-18px 0 50px rgba(16,40,64,.2);padding:25px;overflow:auto;animation:slide-in .2s ease}.drawer-head{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:20px}.drawer-head h2{margin:0;font-size:1.45rem}.close-button{color:var(--ink);border-color:var(--line);font-size:1.5rem;line-height:1}#taskForm{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field.full{grid-column:1/-1}.field label{display:flex;justify-content:space-between;font-size:.78rem;color:#455467;font-weight:800;margin-bottom:6px}.field input,.field select{width:100%;border:1px solid #bdc8d1;border-radius:7px;padding:10px;background:#fff}.field input:focus,.field select:focus{outline:3px solid rgba(38,115,21,.17);border-color:var(--green)}.field input:disabled,.field select:disabled{background:#edf1f3;color:#72808d}.check{grid-column:1/-1;display:flex;align-items:center;gap:9px;font-size:.84rem;font-weight:700}.check input{accent-color:var(--green);width:17px;height:17px}.form-note{grid-column:1/-1;background:#f3f6f8;border-radius:7px;padding:10px 12px;color:var(--muted);font-size:.78rem}.form-actions{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr auto auto;gap:9px;padding-top:12px;border-top:1px solid var(--line)}
dialog{border:0;border-radius:14px;max-width:520px;width:calc(100% - 32px);padding:28px;box-shadow:0 24px 70px rgba(16,40,64,.3)}dialog::backdrop{background:rgba(9,25,40,.5)}dialog h2{margin:0 35px 12px 0}dialog li{margin:9px 0;color:#506071}.dialog-close{position:absolute;right:16px;top:13px;border:0;background:transparent;font-size:1.7rem}.dialog-ok{display:block;margin:18px 0 0 auto}.toast{position:fixed;left:50%;bottom:24px;z-index:90;transform:translate(-50%,20px);background:var(--navy);color:#fff;padding:11px 17px;border-radius:8px;box-shadow:0 12px 32px rgba(16,40,64,.3);font-size:.84rem;font-weight:750;opacity:0;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:#8b2926}@keyframes slide-in{from{transform:translateX(40px);opacity:.7}to{transform:none;opacity:1}}
@media(max-width:1100px){:root{--task-pane:420px}.task-header,.task-row{grid-template-columns:minmax(170px,1fr) 105px 85px}.progress-track{width:38px}.kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.topbar{height:auto;min-height:64px;padding:10px 14px;gap:10px}.brand span,.top-actions label{display:none}.brand img{width:102px}.top-actions select{max-width:155px}.project-head{align-items:start;flex-direction:column}.headline-actions{width:100%}.headline-actions .button{flex:1}.kpis{grid-template-columns:1fr 1fr}.kpis article{padding:13px}.toolbar{align-items:stretch}.filter-group{flex:1;min-width:135px;flex-direction:column;align-items:stretch;gap:4px}.search-wrap{min-width:100%;display:block}.search-wrap span{top:7px}.search-wrap input{width:100%}.toolbar-spacer{display:none}.zoom{order:4}.selection-hint,.legend{display:none}.gantt-shell{display:block;height:auto}.task-pane{display:none}.timeline-scroller{height:540px}.demo-footer{align-items:flex-start;flex-direction:column}.drawer-panel{padding:20px}#taskForm{grid-template-columns:1fr}.field.full,.check,.form-note,.form-actions{grid-column:1}.form-actions{grid-template-columns:1fr 1fr}.form-actions span{display:none}.form-actions .danger{grid-column:1/-1;order:3}}
@media(max-width:430px){.kpis{grid-template-columns:1fr}.kpis article{display:grid;grid-template-columns:1fr auto;align-items:center}.kpis strong{grid-row:1/3;grid-column:2}.kpis small{grid-column:1}.button{padding:9px 11px}.selection-bar{padding:8px 12px}}
