*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{color:#1f2937;overscroll-behavior:none;background:#f9fafb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px}button,input,textarea,select{font-family:inherit}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}:root{--g-arrow-color:#1f2937;--g-bar-color:#fff;--g-bar-border:#fff;--g-tick-color-thick:#ededed;--g-tick-color:#f3f3f3;--g-actions-background:#f3f3f3;--g-border-color:#ebeff2;--g-text-muted:#7c7c7c;--g-text-light:#fff;--g-text-dark:#171717;--g-progress-color:#dbdbdb;--g-handle-color:#37352f;--g-weekend-label-color:#dcdce4;--g-expected-progress:#c4c4e9;--g-header-background:#fff;--g-row-color:#fdfdfd;--g-row-border-color:#c7c7c7;--g-today-highlight:#37352f;--g-popup-actions:#ebeff2;--g-weekend-highlight-color:#f7f7f7}html[data-theme=dark]{--g-arrow-color:#e5e5e5;--g-bar-color:#2a2a2a;--g-bar-border:#3a3a3a;--g-tick-color-thick:#1a1a1a;--g-tick-color:#0a0a0a;--g-actions-background:#1a1a1a;--g-border-color:#2a2a2a;--g-text-muted:#999;--g-text-light:#fff;--g-text-dark:#f5f5f5;--g-progress-color:#4a4a4a;--g-handle-color:#d0d0d0;--g-weekend-label-color:#3a3a3a;--g-expected-progress:#5a5a5a;--g-header-background:#0a0a0a;--g-row-color:#141414;--g-row-border-color:#2a2a2a;--g-today-highlight:#999;--g-popup-actions:#1a1a1a;--g-weekend-highlight-color:#0f0f0f}.gantt-container{height:var(--gv-grid-height);isolation:isolate;border-radius:8px;width:100%;font-size:12px;line-height:14.5px;position:relative;overflow:auto}.gantt-container .popup-wrapper{background:var(--g-header-background);z-index:1000;border-radius:5px;width:max-content;padding:10px;position:absolute;top:0;left:0;box-shadow:0 10px 24px -3px #0003}.gantt-container .popup-wrapper .title{color:var(--g-text-dark);margin-bottom:2px;font-size:.85rem;font-weight:650;line-height:15px}.gantt-container .popup-wrapper .subtitle{color:var(--g-text-dark);margin-bottom:5px;font-size:.8rem}.gantt-container .popup-wrapper .details{color:var(--g-text-muted);font-size:.7rem}.gantt-container .popup-wrapper .actions{margin-top:10px;margin-left:3px}.gantt-container .popup-wrapper .action-btn{background-color:var(--g-popup-actions);border:none;border-right:1px solid var(--g-border-color);padding:5px 8px}.gantt-container .popup-wrapper .action-btn:hover{filter:brightness(97%)}.gantt-container .popup-wrapper .action-btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt-container .popup-wrapper .action-btn:last-child{border-right:none;border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt-container .grid-header{height:calc(var(--gv-lower-header-height) + var(--gv-upper-header-height) + 10px);background-color:var(--g-header-background);border-bottom:1px solid var(--g-row-border-color);z-index:1000;position:sticky;top:0;left:0}.gantt-container .lower-text,.gantt-container .upper-text{text-anchor:middle}.gantt-container .upper-header{height:var(--gv-upper-header-height)}.gantt-container .lower-header{height:var(--gv-lower-header-height)}.gantt-container .lower-text{width:calc(var(--gv-column-width) * .8);height:calc(var(--gv-lower-header-height) * .8);margin:0 calc(var(--gv-column-width) * .1);text-align:center;color:var(--g-text-muted);align-content:center;font-size:12px;position:absolute}.gantt-container .upper-text{width:fit-content;color:var(--g-text-dark);height:calc(var(--gv-lower-header-height) * .66);font-size:14px;font-weight:500;position:absolute}.gantt-container .current-upper{background:var(--g-header-background);padding-left:17px;position:sticky;left:0!important}.gantt-container .side-header{float:right;z-index:1000;background:var(--g-header-background);width:max-content;margin-left:auto;padding-top:10px;padding-right:10px;font-weight:400;line-height:20px;display:flex;position:sticky;top:0;right:0}.gantt-container .side-header *{background-color:var(--g-actions-background);color:var(--g-text-dark);letter-spacing:.02em;box-sizing:content-box;border:none;border-radius:.5rem;margin-right:5px;padding:5px 8px;font-size:14px;font-weight:420;transition-property:background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.gantt-container .side-header :last-child{margin-right:0}.gantt-container .side-header :hover{filter:brightness(97.5%)}.gantt-container .side-header select{width:60px;padding-top:2px;padding-bottom:2px}.gantt-container .side-header select:focus{outline:none}.gantt-container .date-range-highlight{background-color:var(--g-progress-color);height:calc(var(--gv-lower-header-height) - 6px);top:calc(var(--gv-upper-header-height) + 5px);border-radius:12px;position:absolute}.gantt-container .current-highlight{background:var(--g-today-highlight);z-index:999;width:1px;position:absolute}.gantt-container .current-ball-highlight{background:var(--g-today-highlight);z-index:1001;border-radius:50%;position:absolute}.gantt-container .current-date-highlight{background:var(--g-today-highlight);color:var(--g-text-light);border-radius:5px}.gantt-container .holiday-label{opacity:0;z-index:1000;background:var(--g-weekend-label-color);border-radius:5px;padding:2px 5px;position:absolute;top:0;left:0}.gantt-container .holiday-label.show{opacity:100}.gantt-container .extras{position:sticky;left:0}.gantt-container .extras .adjust{left:8px;top:calc(var(--gv-grid-height) - 60px);background-color:var(--g-actions-background);color:var(--g-text-light);border:none;border-radius:3px;padding:8px;position:absolute}.gantt-container .hide{display:none}.gantt{-webkit-user-select:none;user-select:none;position:absolute}.gantt .grid-background{fill:none}.gantt .grid-row{fill:var(--g-row-color)}.gantt .row-line{stroke:var(--g-border-color)}.gantt .tick{stroke:var(--g-tick-color);stroke-width:.4px}.gantt .tick.thick{stroke:var(--g-tick-color-thick);stroke-width:.7px}.gantt .arrow{fill:none;stroke:var(--g-arrow-color);stroke-width:1.5px}.gantt .bar-wrapper .bar{fill:var(--g-bar-color);stroke:var(--g-bar-border);stroke-width:0;transition:stroke-width .3s}.gantt .bar-progress{fill:var(--g-progress-color);border-radius:4px}.gantt .bar-expected-progress{fill:var(--g-expected-progress)}.gantt .bar-invalid{fill:#0000;stroke:var(--g-bar-border);stroke-width:1px;stroke-dasharray:5}:is(.gantt .bar-invalid)~.bar-label{fill:var(--g-text-light)}.gantt .bar-label{fill:var(--g-text-dark);dominant-baseline:central;font-family:Helvetica;font-size:13px;font-weight:400}.gantt .bar-label.big{fill:var(--g-text-dark);text-anchor:start}.gantt .handle{fill:var(--g-handle-color);opacity:0;transition:opacity .3s}.gantt .handle.active,.gantt .handle.visible{cursor:ew-resize;opacity:1}.gantt .handle.progress{fill:var(--g-text-muted)}.gantt .bar-wrapper{cursor:pointer}.gantt .bar-wrapper .bar{outline:1px solid var(--g-row-border-color);border-radius:3px}.gantt .bar-wrapper:hover .bar{transition:transform .3s}.gantt .bar-wrapper:hover .date-range-highlight{display:block}.gantt .grid-column{fill:#0000;pointer-events:all}.gantt .grid-column:hover{fill:var(--g-weekend-highlight-color);transition:fill .1s}.app-layout{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{color:#fff;z-index:30;background:#1e1b4b;flex-shrink:0;align-items:center;gap:10px;padding:10px 14px;display:flex}.app-header h1{white-space:nowrap;margin:0;font-size:17px;font-weight:600}.app-subtitle{opacity:.7;font-size:12px;display:none}.app-body{flex:1;display:flex;position:relative;overflow:hidden}.main-content{background:#fff;flex-direction:column;flex:1;display:flex;overflow:hidden}.menu-btn{color:#fff;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;transition:background .15s;display:flex}.menu-btn:hover,.menu-btn:focus-visible{background:#ffffff1f;outline:none}.error-bar{color:#dc2626;cursor:pointer;background:#fef2f2;flex-shrink:0;padding:8px 14px;font-size:13px}.sidebar-backdrop{z-index:20;-webkit-tap-highlight-color:transparent;background:#00000073;display:none;position:fixed;inset:0}.sidebar-backdrop.open{display:block}.sidebar{z-index:25;-webkit-overflow-scrolling:touch;background:#f9fafb;border-right:1px solid #e5e7eb;flex-direction:column;width:320px;max-width:85vw;transition:transform .22s;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-header{border-bottom:1px solid #e5e7eb;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.sidebar-header h2{color:#374151;margin:0;font-size:14px;font-weight:600}.sidebar-close{color:#6b7280}.panel{border-bottom:1px solid #e5e7eb;padding:10px 14px}.panel-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.panel-header h2{text-transform:uppercase;letter-spacing:.4px;color:#6b7280;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:13px;font-weight:600;overflow:hidden}.btn{cursor:pointer;color:#fff;white-space:nowrap;background:#4f46e5;border:none;border-radius:8px;min-height:36px;padding:8px 16px;font-size:13px;font-weight:500;transition:background .15s}.btn:hover{background:#4338ca}.btn:active{background:#3730a3}.btn-secondary{color:#374151;background:#e5e7eb}.btn-secondary:hover{background:#d1d5db}.btn-sm{min-height:32px;padding:6px 12px;font-size:12px}.btn-icon{cursor:pointer;color:#6b7280;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;font-size:15px;transition:background .1s;display:inline-flex}.btn-icon:hover,.btn-icon:focus-visible{background:#e5e7eb;outline:none}.panel-form{background:#fff;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:10px;padding:14px}.panel-form label{color:#6b7280;margin-bottom:10px;font-size:12px;display:block}.panel-form input,.panel-form textarea,.panel-form select{box-sizing:border-box;border:1px solid #d1d5db;border-radius:6px;width:100%;min-height:38px;margin-top:4px;padding:8px 10px;font-size:14px}.panel-form textarea{resize:vertical;min-height:60px}.form-row{gap:8px;display:flex}.form-row label{flex:1}.color-picker{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.color-btn{cursor:pointer;border:2px solid #0000;border-radius:50%;flex-shrink:0;width:28px;height:28px;padding:0}.color-btn.active{border-color:#1f2937}.form-actions{gap:8px;margin-top:14px;display:flex}.form-actions .btn{flex:1}.panel-list{max-height:40vh;overflow-y:auto}.empty{text-align:center;color:#9ca3af;padding:16px 0;font-size:13px}.project-item{cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:8px;align-items:center;gap:10px;margin-bottom:2px;padding:10px;transition:background .1s;display:flex}.project-item:hover{background:#f3f4f6}.project-item.selected{background:#eef2ff}.project-color{border-radius:50%;flex-shrink:0;width:14px;height:14px}.project-info{flex:1;min-width:0}.project-name{color:#1f2937;font-size:13px;font-weight:500;display:block}.project-dates{color:#9ca3af;margin-top:1px;font-size:11px;display:block}.project-actions{flex-shrink:0;gap:2px;display:flex}.task-item{cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:8px;margin-bottom:2px;padding:10px;transition:background .1s}.task-item:hover{background:#f3f4f6}.task-item.selected{background:#eef2ff}.task-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.task-name{color:#1f2937;font-size:13px;font-weight:500}.task-meta{color:#9ca3af;flex-wrap:wrap;gap:8px;margin-top:2px;font-size:11px;display:flex}.task-progress-bar{background:#e5e7eb;border-radius:3px;height:5px;margin-top:6px;overflow:hidden}.task-progress-fill{background:#4f46e5;border-radius:3px;height:100%;transition:width .2s}.task-progress-text{color:#9ca3af;margin-top:2px;font-size:11px;display:block}.task-actions{flex-shrink:0;gap:2px;display:flex}.gantt-wrapper{flex-direction:column;flex:1;min-height:0;display:flex}.gantt-toolbar{flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:10px 12px 0;display:flex}.gantt-nav-btn{color:#374151;cursor:pointer;background:#f3f4f6;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:13px;transition:background .15s;display:inline-flex}.gantt-nav-btn:hover{background:#e5e7eb}.gantt-toolbar-group{background:#f3f4f6;border-radius:10px;gap:2px;padding:3px;display:flex}.gantt-view-btn{cursor:pointer;color:#6b7280;white-space:nowrap;background:0 0;border:none;border-radius:7px;min-height:32px;padding:6px 14px;font-size:12px;font-weight:500;transition:all .15s}.gantt-view-btn:hover{color:#374151}.gantt-view-btn.active{color:#1f2937;background:#fff;font-weight:600;box-shadow:0 1px 3px #0000001f}.gantt-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.gantt-vscroll{flex:1;min-height:0;overflow:hidden auto}.gantt-hscroll{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;padding:12px;overflow:auto}.gantt-hscroll::-webkit-scrollbar{display:none}.gantt-scrollbar{scrollbar-width:auto;background:#fff;border-top:1px solid #e5e7eb;flex-shrink:0;overflow:auto hidden}.gantt-scrollbar-track{height:1px}.gantt-container{min-width:600px;min-height:380px;width:auto!important;overflow:visible!important}.gantt-empty{color:#9ca3af;text-align:center;justify-content:center;align-items:center;min-height:380px;padding:20px;font-size:14px;display:flex}.gantt .bar-progress{fill:#4f46e5}.gantt .bar-label{fill:#fff;font-size:11px}@media (width>=640px){.app-header{gap:12px;padding:10px 20px}.app-subtitle{display:inline}.panel-list{max-height:35vh}.gantt-toolbar{gap:10px;padding:12px 16px 0}.gantt-nav-btn{width:38px;height:38px;font-size:14px}.gantt-view-btn{padding:7px 18px;font-size:13px}.gantt-hscroll{padding:16px}.gantt-container{min-width:700px}}@media (width>=1024px){.sidebar{z-index:auto;border-right:1px solid #e5e7eb;width:340px;min-width:340px;max-width:340px;transition:none;position:relative;top:auto;bottom:auto;left:auto;transform:none!important}.sidebar.open{transform:none}.sidebar-backdrop{display:none!important}.sidebar-header,.menu-btn{display:none}.app-header h1{font-size:20px}.app-header{padding:12px 24px}.panel{padding:12px 16px}.panel-list{max-height:40vh}.gantt-container{min-width:auto}}
